1. 程式人生 > >人工蜂群演算法(ABC)

人工蜂群演算法(ABC)

Bee colony algorithms

蜂群演算法的分類(基於繁殖行為的演算法、蜜蜂交配優化演算法、蜜蜂進化型遺傳演算法、蜂王演算法)

基於採蜜行為的演算法(人工蜂群演算法(ABC)、虛擬蜜蜂演算法、蜂群優化演算法)

生物學機理

1、不同角色之間的交流、轉換及協作來實現

2、採蜜行為包括蜜源、採蜜蜂與待採蜜蜂

蜂群演算法存在的問題

1、引數設定對演算法效能影響很大

2、容易陷入區域性最優,早熟

3、無理論支援,數學證明

4、平行計算,分散式

5、僅應用在組合優化問題

引數:

蜜源:可能的最優解

角色(role):

引領蜂(leader),偵察蜂(scouter),跟隨蜂(follower)

蜜蜂行為:搜尋(search)蜜源,為蜜源招募(recruit),放棄(abandon)蜜源

蜂群引數:SN(種群規模),maxcycle(迭代次數),limit(全域性和區域性搜尋能力),n(鄰域規模),cycle(迭代次數變數)

引數說明:

引領蜂,跟隨蜂:加快演算法收斂

偵察蜂:增強演算法跳出區域性最優的能力

Limit控制了演算法的收斂性,對演算法跳出區域性最優解有這重要影響;前期比較小,增強全域性搜尋能力,後期較小,加快收斂速度

N鄰域規模:前期比較大,增強區域性搜尋能力,後期較小,加快收斂

演算法步驟:

l初始化

 種群規模SN包含引領蜂和觀察蜂,各取種群數量的一半,初始解數量FN=SN/2。

 trail[i]第i個解的實驗次數初始化為0

 

 

 

 排序:函式優劣,前50%作為引領蜂,後50%作為跟隨蜂

 適應度:

 

引領蜂階段

鄰域搜尋

如果新解優於原先解,則替換,否則不變;

更新trail[i],若大於limit值,則拋棄該解(可以用佇列進行儲存該區域性最優解),同時,引領蜂角色轉化偵察蜂,trail[i]=0;

跟隨蜂階段

計算蜜源Xi被選擇概率P

選擇蜜源後,進行鄰域搜尋,搜尋規則:

貪婪原則,如果該解優於原引領蜂的解,則完成角色互換,跟隨蜂轉變為

引領蜂,否則不變。

直到所有跟隨蜂被分配到蜜源

偵查蜂階段

隨機產生新的解,若優於原先的解,則替代原先區域性最優解,偵察蜂轉變為引領蜂, trail[i] 清零;若不優於原先解,原先解不變;

初始化生成解的方法,隨機化方法

一輪演算法結束後,最優解被記錄,迭代次數cycle++

若cycle=maxcycle,演算法結束;否則跳到引領蜂的階段

--------------------- 本文來自 排山和倒海 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/wangqing008/article/details/11849255?utm_source=copy