人工蜂群算法詳解(附代碼下載)
一個(gè)由蜂群行為啟發(fā)的算法!
本文主要內(nèi)容:
什么是人工蜂群算法? 蜜蜂的采蜜機(jī)制 蜂群算法的原理及流程 小結(jié)
1. 什么是人工蜂群算法?
人工蜂群算法是模仿蜜蜂行為提出的一種優(yōu)化方法,是集群智能思想的一個(gè)具體應(yīng)用,它的主要特點(diǎn)是不需要了解問題的特殊信息,只需要對(duì)問題進(jìn)行優(yōu)劣的比較,通過各人工蜂個(gè)體的局部尋優(yōu)行為,最終在群體中使全局最優(yōu)值突現(xiàn)出來,有著較快的收斂速度。為了解決多變量函數(shù)優(yōu)化問題,Karaboga提出了人工蜂群算法ABC模型(artificial bee colony algorithm)。

人工蜂群算法屬于群智能算法的一種,其受啟發(fā)于蜜蜂的尋蜜和采蜜過程,相比于常見的啟發(fā)式算法,它的優(yōu)點(diǎn)在于其使用了較少的控制參數(shù),并且魯棒性強(qiáng),在每次迭代過程中都會(huì)進(jìn)行全局和局部的最優(yōu)解搜索,因此能夠找到最優(yōu)解的概率大大增加。
相比于遺傳算法來說,人工蜂群算法在局部的收斂和尋優(yōu)能力上要更為出色,不會(huì)出現(xiàn)遺傳算法的“早熟”現(xiàn)象,并且算法的復(fù)雜度也較低。但由于遺傳算法有交叉以及變異的操作,因此遺傳算法在全局最優(yōu)值的搜索上要優(yōu)于人工蜂群算法。此外,人工蜂群算法適用于進(jìn)行連續(xù)函數(shù)的全局優(yōu)化問題,而不適用于一些離散函數(shù)。
2. 蜜蜂的采蜜機(jī)制
蜜蜂具有群智能應(yīng)必備的兩個(gè)條件:自組織性和分工合作性。雖然單個(gè)蜜蜂的行為很簡單,但是由單個(gè)蜜蜂所組成的群體卻能夠表現(xiàn)出極其復(fù)雜的行為,它們可以在任何復(fù)雜的環(huán)境下以很高的效率從花朵中采集花蜜,同時(shí)還能夠很快的適應(yīng)環(huán)境的改變。

任務(wù)分工
人工蜂群算法就是模擬蜜蜂的采蜜過程而提出的一種新型智能優(yōu)化算法,它也是由食物源、雇傭蜂和非雇傭蜂三部分組成。
食物源:食物源即為蜜源。在任何一個(gè)優(yōu)化問題中,問題的可行解都是以一定形式給出的。在人工蜂群算法中,食物源就是待求優(yōu)化問題的可行解,是人工蜂群算法中所要處理的基本對(duì)象。食物源的優(yōu)劣即可行解的好壞是用蜜源花蜜量的大小即適應(yīng)度來評(píng)價(jià)的。
雇傭蜂:雇傭蜂即為引領(lǐng)蜂(采蜜蜂)與食物源的位置相對(duì)應(yīng),一個(gè)食物源對(duì)應(yīng)一個(gè)引領(lǐng)蜂。在人工蜂群算法中,食物源的個(gè)數(shù)與引領(lǐng)蜂的個(gè)數(shù)相等;引領(lǐng)蜂的任務(wù)是發(fā)現(xiàn)食物源信息并以一定的概率與跟隨蜂分享;概率的計(jì)算即為人工蜂群算法中的選擇策略,一般是根據(jù)適應(yīng)度值以輪盤賭的方法計(jì)算。
非雇傭蜂:非雇傭蜂包括跟隨蜂(觀察蜂)和偵査蜂跟隨蜂在蜂巢的招募區(qū)內(nèi)根據(jù)引領(lǐng)蜂提供的蜜源信息來選擇食物源,而偵查蜂是在蜂巢附近尋找新的食物源。在人工蜂群算法中,跟隨蜂依據(jù)引領(lǐng)蜂傳遞的信息,在食物源附近搜索新食物源,并進(jìn)行貪婪選擇。若一個(gè)食物源在經(jīng)過次后仍未被更新,則此引領(lǐng)蜂變成偵査蜂,偵查蜂尋找新的食物源代替原來的食物源。
采蜜機(jī)制
在蜜蜂群體智能形成的過程中,蜜蜂之間的信息交流是最重要的環(huán)節(jié),而舞蹈區(qū)是蜂巢中最重要的信息交換地。采蜜蜂在舞蹈區(qū)通過跳搖擺舞與其他蜜蜂共同分享食物源的信息,觀察蜂則是通過采蜜蜂所跳的搖擺舞來獲得當(dāng)前食物源的信息的,所以,觀察蜂要以最小的資源耗費(fèi)來選擇到哪個(gè)食物源采蜜。因此,蜜蜂被招募到某個(gè)食物源的概率與食物源的收益率成正比。

初始時(shí)刻,蜜蜂的搜索不受任何先驗(yàn)知識(shí)的決定,是完全隨機(jī)的。此時(shí)的蜜蜂有以下兩種選擇:
它轉(zhuǎn)變成為偵察蜂,并且由于一些內(nèi)部動(dòng)機(jī)或可能的外部環(huán)境自發(fā)地在蜂巢附近搜索食物源; 在觀看了搖擺舞之后,它可能被招募到某個(gè)食物源,并且開始開采食物源。
在蜜蜂確定食物源后,它們利用自己本身的存儲(chǔ)能力來記憶位置信息并開始采集花蜜。此時(shí),蜜蜂將轉(zhuǎn)變?yōu)椤肮蛡蚍洹薄C鄯湓谑澄镌刺幉杉昊郏氐椒涑膊⑿断禄酆笥腥缦逻x擇:
放棄食物源成為非雇傭蜂; 跳搖擺舞為所對(duì)應(yīng)的食物源招募更多的蜜蜂,然后回到食物源采蜜; 繼續(xù)在同一食物源采蜜而不進(jìn)行招募。
蜜蜂在采蜜時(shí)所表現(xiàn)出來的這種自組織性和合理分配性主要由其自身的基本性質(zhì)所決定的,它們所特有的基本性質(zhì)如下:
正反饋性:食物源的花蜜量與食物源被選擇的可能性成正比; 負(fù)反饋性:蜜蜂停止對(duì)較差食物源的開采過程; 波動(dòng)性:在某個(gè)食物源被放棄時(shí),隨機(jī)搜索一個(gè)食物源替代原食物源; 互動(dòng)性:蜜蜂在舞蹈區(qū)與其他蜜蜂共同分享食物源的相關(guān)信息。
3. 蜂群算法的原理及流程
標(biāo)準(zhǔn)的ABC算法通過模擬實(shí)際蜜蜂的采蜜機(jī)制將人工蜂群分為3類: 采蜜蜂、觀察蜂和偵察蜂。整個(gè)蜂群的目標(biāo)是尋找花蜜量最大的蜜源。在標(biāo)準(zhǔn)的ABC算法中,采蜜蜂利用先前的蜜源信息尋找新的蜜源并與觀察蜂分享蜜源信息;觀察蜂在蜂房中等待并依據(jù)采蜜蜂分享的信息尋找新的蜜源;偵查蜂的任務(wù)是尋找一個(gè)新的有價(jià)值的蜜源,它們?cè)诜浞扛浇S機(jī)地尋找蜜源。
算法原理
假設(shè)問題的解空間是D維的,采蜜蜂與觀察蜂的個(gè)數(shù)都是SN,采蜜蜂的個(gè)數(shù)或觀察蜂的個(gè)數(shù)與蜜源的數(shù)量相等。則標(biāo)準(zhǔn)的ABC算法將優(yōu)化問題的求解過程看成是在D維搜索空間中進(jìn)行搜索。每個(gè)蜜源的位置代表問題的一個(gè)可能解,蜜源的花蜜量對(duì)應(yīng)于相應(yīng)的解的適應(yīng)度。一個(gè)采蜜蜂與一個(gè)蜜源是相對(duì)應(yīng)的。與第i個(gè)蜜源相對(duì)應(yīng)的采蜜蜂依據(jù)如下公式尋找新的蜜源:
其中,, ,是區(qū)間上[-1,1]的隨機(jī)數(shù),。標(biāo)準(zhǔn)的ABC算法將新生成的可能解與原來的解作比較:
并采用貪婪選擇策略保留較好的解。每一個(gè)觀察蜂依據(jù)概率選擇一個(gè)蜜源,概率公式為:
其中是可能解的適應(yīng)值。對(duì)于被選擇的蜜源,觀察蜂根據(jù)上面概率公式搜尋新的可能解。當(dāng)所有的采蜜蜂和觀察蜂都搜索完整個(gè)搜索空間時(shí),如果一個(gè)蜜源的適應(yīng)值在給定的步驟內(nèi)(定義為控制參數(shù)limit) 沒有被提高, 則丟棄該蜜源,而與該蜜源相對(duì)應(yīng)的采蜜蜂變成偵查蜂,偵查蜂通過以下公式搜索新的可能解。其中,
其中,r是區(qū)間[0,1]上的隨機(jī)數(shù),和是第d維的下界和上界。
算法流程
人工蜂群算法具體實(shí)現(xiàn)步驟:
初始化種群解; 計(jì)算種群中各個(gè)蜜蜂的適應(yīng)值; 重復(fù)一下步驟,知道滿足終止條件: 采蜜蜂根據(jù) (1)產(chǎn)生新的解 并計(jì)算適應(yīng)值;采蜜蜂根據(jù)貪心策略選擇蜜源; 根據(jù) (2)式計(jì)算選擇蜜源的概率;觀察蜂根據(jù)概率選擇蜜源,根據(jù) (3)式在該蜜源附近產(chǎn)生新的蜜源 ,并計(jì)算新蜜源的適應(yīng)值;觀察蜂根據(jù)貪心策略選擇蜜源; 決定是否存在需要放棄的蜜源,如果存在,則隨機(jī)產(chǎn)生一個(gè)蜜源替代它; 記錄最優(yōu)解直至滿足終止條件輸出最優(yōu)解;
4.小結(jié)
在人工蜂群算法的基礎(chǔ)上,還發(fā)展出了許多混合算法,如基于量子分布的人工蜂群算法,禁忌搜索-蜂群混合優(yōu)化算法,模擬退火-蜂群混合優(yōu)化算法,基于copula分布估計(jì)的改進(jìn)人工蜂群算法等,它們都是針對(duì)蜜蜂在尋找新蜜源的過程中來進(jìn)行基本人工蜂群算法的優(yōu)化。
在應(yīng)用中,人工蜂群算法的復(fù)雜度較低,因此如果目標(biāo)函數(shù)滿足連續(xù)或近似連續(xù)條件,那么可以優(yōu)先考慮人工蜂群算法。在編寫算法時(shí),可以考慮使用遺傳算法中的交叉操作來找到全局中其他的最優(yōu)解來避免陷入局部最優(yōu)。

?點(diǎn)個(gè)贊再走唄?
[智能算法]公眾號(hào)回復(fù)“蜂群代碼”即可下載相關(guān)代碼。