人工蜂群演算法(ABC)演算法筆記丨matlab實現

2021-10-18 16:41:15 字數 1401 閱讀 8792

二、演算法流程

在乙個n維空間,種群規模為np,即僱傭蜂的個數,僱傭蜂(蜜源)的位置xi = ,那麼其目標函式值指定為fit =,初始化後進入僱傭蜂階段:

其中,φ是擾動因子,通常設定區間[-1,1],i ≠j,在種群np中尋找乙個不等於i的蜜源。更新蜜源並求解目標函式值,將使用貪婪選擇方法將xi替換或保留。選擇結束後,對每個蜜源的目標函式值求解並更新其跟隨度:

得到跟隨概率(選擇概率)pi, 採用輪盤賭的選擇方式來選擇新的蜜源進行更新。

2. 觀察蜂階段。根據定義的觀察蜂數量,以同樣的方式更新觀察蜂:

%

% 觀察蜂階段

for i=

1:gc_size

r=rand;

% 採用輪盤賭隨機選擇乙個蜜源,對該蜜源進行更新

j=find

(r<=p,1,

'first');

k=randi

(gy_size,1)

;%選擇乙個除個體i的其它乙個個體

while k==j

k=randi

(gy_size,1)

; end

fai=rand*2-

1;%加速係數,取值範圍[-1

,1] new_pop=

pops

(j,:

)+fai.*(

pops

(j,:)-

pops

(k,:))

;%更新僱傭蜂的位置

% 邊界處理

new_pop =

min(pop_max,new_pop)

; new_pop =

max(pop_min,new_pop)

;

new_cost=

fun(new_pop,fun_num)

;%更新相應的函式值

if new_cost<

cost

(j)%貪婪方式儲存最佳蜜源,若沒更新,則記錄

pops

(j,:

)=new_pop;

cost

(i)=new_cost;

else

l(i)=l

(i)+1;

%記錄此蜜源的更新停滯次數

endend

偵查蜂階段。如果乙個蜜源達到限定迭代次數limit後,仍沒有進行更新,則進入偵查蜂階段:重新被初始化然後進行探索更新。

三、流程圖

人工蜂群演算法(ABC)

bee colony algorithms 蜂群演算法的分類 基於繁殖行為的演算法 蜜蜂交配優化演算法 蜜蜂進化型遺傳演算法 蜂王演算法 基於採蜜行為的演算法 人工蜂群演算法 abc 虛擬蜜蜂演算法 蜂群優化演算法 生物學機理 1 不同角色之間的交流 轉換及協作來實現 2 採蜜行為包括蜜源 採蜜蜂與...

人工智慧 A演算法

在狀態空間搜尋中,如果每一步都利用估價函式f n g n h n 對open表中的結點進行排序,則稱a演算法。它是一種為啟發式搜尋演算法。演算法型別 把初始結點s0放入open表中,f s0 g s0 h s0 如果open表為空,則問題無解 失敗退出 把open表的第乙個結點取出放入closed表...

《演算法筆記》Dijkstra演算法筆記

今日在華農終於接近完成閱讀演算法筆記,有點點成就感,做下dijkstra跟dfs演算法結合的筆記 簡單狀態 純dijkstra include include include define inf 1000000000 using namespace std const int maxn 1010 ...