天天看點

群智能算法之人工蜂群算法(ABC算法)蜂群算法簡介

人工蜂群算法(ABC算法)(Artificial Bee Colony)

該算法标準原型代碼下載下傳位址:https://abc.erciyes.edu.tr/index.htm ,包括C、Java、Matlab、僞代碼和python。

或點選此連結在CSDN網下載下傳點選此處

蜂群算法簡介

  • 人工蜂群算法是模仿蜜蜂行為所提出的一種優化方法,是叢集體智能思想的一個具體應用。
  • 主要特點是不需要了解問題的特殊資訊而隻需要對問題進行優劣比較,通過每個人工蜂個體的局部尋優行為,最終在群體中使全局最優值突現出來,有着比較快的收斂速度。
  • 為了解決多變量函數優化問題,Karaboga在2005年提出了人工蜂群算法ABC模型。

1、蜜蜂采蜜機理

蜜蜂是一種群居昆蟲,雖然單個昆蟲的行為極其簡單,但是由單個簡單的個體所組成的群體卻表現出極其複雜的行為。真實的蜜蜂種群能夠在任何環境下,以極高的效率從食物源(花朵)中采集花蜜;同時,它們能适應環境的改變。

群智能算法之人工蜂群算法(ABC算法)蜂群算法簡介

蜂群産生群體智慧的最小搜尋模型包含基本的三個組成要素:食物源、被雇傭的蜜蜂和未被雇傭的蜜蜂。兩種最基本的行為模型:為食物源招募蜜蜂和放棄某個食物源。

(1)   食物源

食物源的價值由多方面因素決定,如:離蜂巢的遠近、包含花蜜的豐富程度和獲得花蜜的難易程度。使用單一的參數,食物源的“收益率”來代表以上各個因素。

(2)   被雇傭的蜜蜂

也稱引領蜂,其與所采集的食物源一一對應。引領蜂儲存有食物源的相關資訊(相對與蜂巢的距離、方向和食物源的豐富程度等)并把這些資訊以一定的機率與其他蜜蜂分享。

(3)   未被雇傭的蜜蜂

其主要任務是尋找和開采食物源。有兩種未被雇傭的蜜蜂:偵查蜂和跟随蜂。偵查蜂搜尋附近的新食物源;跟随蜂等在蜂巢裡面并通過與引領蜂分享相關資訊找到食物源。一般情況下,偵查蜂的數量是蜂群的5%--20%

在群體智慧形成過程中,蜜蜂間交換資訊是最重要的一環。舞蹈區是蜂巢中最為重要的資訊交換地。蜜蜂的舞蹈也叫搖擺舞。食物源的資訊在舞蹈區通過搖擺舞的形式與其他蜜蜂共享,引領蜂通過搖擺舞的持續時間等來表現食物源的收益率,故跟随蜂可以觀察到大量的舞蹈并依據收益率來選擇到哪個食物源采蜜。收益率與食物源被選擇的可能性成正比。因而,蜜蜂被招募到一個食物源的機率與食物源的收益率成正比。

初始時刻,蜜蜂以偵查蜂的方式搜尋。其搜尋可以由系統的先驗知識決定,也可以完全随機。經過一輪偵查後,若蜜蜂找到食物源,蜜蜂利用它本身的存儲能力記錄位置資訊并開始采蜜。此時,蜜蜂将稱為“被雇傭者”。蜜蜂在食物源采蜜後回到蜂巢卸下蜂蜜,然後将有如下選擇:

(1)   放棄食物源而成為非雇傭蜂;

(2)   跳搖擺舞為所對應的食物源招募更多的蜜蜂,然後回到食物源采蜜;

(3)   繼續在食物源采蜜而不進行招募。

對于非雇傭蜂有如下選擇:

(1)   轉變為偵查蜂并搜尋蜂巢附近的食物源,其搜尋可以由先驗知識決定也可以完全随機;

(2)   在觀察完搖擺舞以後,被雇傭成為跟随蜂,開始搜尋對應食物源領域并采蜜。

2、 ABC算法原理

在基本ABC算法中,人工蜂群包含三種個體:雇傭蜂、觀察蜂和偵查蜂

每個雇傭蜂對應一個确定的蜜源(解向量),并在疊代中對蜜源的領域進行搜尋。

根據蜜源的豐富程度(适應值的大小)采用輪盤賭的方式雇傭觀察蜂采蜜(搜尋新蜜源)

如果蜜源多次更新沒有改進,則放棄該蜜源,雇傭蜂轉為偵查蜂随機搜尋新蜜源。

(1)   蜜源初始化

初始化時,随機生成SN個可行解(等于雇傭蜂的數量)并計算适應度函數值。随機産生可行解的公式如下:

群智能算法之人工蜂群算法(ABC算法)蜂群算法簡介

(2)   新蜜源的更新搜尋公式

群智能算法之人工蜂群算法(ABC算法)蜂群算法簡介

(3)   觀察蜂選擇雇傭蜂的機率

群智能算法之人工蜂群算法(ABC算法)蜂群算法簡介

(4)   偵查蜂的産生

為了防止算法陷入局部最優,當蜜源疊代limit次沒有改進時,便放棄該蜜源,并且将該蜜源記錄在禁忌表中,同時該蜜源對應的雇傭蜂轉變為偵查蜂按式(1)随機産生一個新的位置代替原蜜源。

3、 控制參數

(1)   蜜源的個數(與雇傭蜂或觀察蜂相等)SN

(2)   算法終止的最大進化數(maximum evaluation number)MEN

(3)   Limit

基本ABC算法的流程:

(1)   根據式(1)初始化種群解xi,i=1,2,…,SN;

(2)   計算種群中各蜜蜂的适應值

(3)   cycle=1

(4)   repeat

(5)   雇傭蜂根據(2)産生新的解vi并計算适應值

(6)   雇傭蜂根據貪心政策選擇蜜源

(7)   根據(3)式計算選擇蜜源xi的機率pi

(8)   觀察蜂根據機率pi選擇蜜源xi,根據(2)式在該蜜源附近産生新的蜜源vi,并計算新蜜源vi的适應值

(9)   觀察蜂根據貪心算法選擇蜜源

(10)   決定是否存在需要放棄的蜜源,如果存在,根據(1)式随機産生一個蜜源代替它

(11)   記錄最優解

(12)   cycle = cycle + 1

(13)   until cycle=MCN

4、 算法可能的改進方式

(1)   新蜜源的搜尋領域(2)式的改進(如:其他拓撲鄰域)

(2)   觀察蜂選擇雇傭蜂的機率(3)式的改進(如:動态的)

參考文章:文章1、文庫算法介紹

繼續閱讀