人工蜂群演算法(ABC)

2021-08-28 12:20:38 字數 1897 閱讀 1069

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,演算法結束;否則跳到引領蜂的階段

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

二 演算法流程 在乙個n維空間,種群規模為np,即僱傭蜂的個數,僱傭蜂 蜜源 的位置xi 那麼其目標函式值指定為fit 初始化後進入僱傭蜂階段 其中,是擾動因子,通常設定區間 1,1 i j,在種群np中尋找乙個不等於i的蜜源。更新蜜源並求解目標函式值,將使用貪婪選擇方法將xi替換或保留。選擇結束後...

人工智慧 A演算法

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

演算法基礎2 求abc的全排列

演算法基礎 求abc的全排列有幾種方式 採用遞迴的方式,對abc的排列進行解析 先上 塊 public class demo2 private static voidf char data,int k system.out.println for int i k i data,k 1 回溯 結果 a...