1. 概述
群居昆蟲是高度進(jìn)化的生物,可以執(zhí)行許多單體昆蟲無法完成的復(fù)雜任務(wù)。
溝通、筑造復(fù)雜的巢穴、環(huán)境控制、保護(hù)、和分工只是蜜蜂已進(jìn)化到在社會(huì)性群居地茁壯成長的少數(shù)行為。
蜂群屬于群體生物,在尋找最佳解決方案方面表現(xiàn)出非凡的能力。
在自然界中,它們?cè)诜涑哺浇鼘ふ一ù貋聿杉酆突ǚ邸?br/> 有時(shí)搜索半徑可以增加到幾公里。
返回的蜜蜂則是通過即興舞蹈報(bào)告它們的發(fā)現(xiàn)。
乍一看,這似乎是不可能的,但它們能夠通過有節(jié)奏的運(yùn)動(dòng)相互傳遞有關(guān)地理位置的信息。
取決于它們同胞間的舞蹈強(qiáng)度,蜂群得到有關(guān)指定地點(diǎn)的花朵數(shù)量和估算花蜜量的結(jié)論。
潛在的食物越豐富,舞蹈動(dòng)作就越激烈。
這種不尋常的現(xiàn)象是在 20 世紀(jì)中葉由昆蟲研究員卡爾·馮·弗里施(Karl von Frisch)發(fā)現(xiàn)的。
多年來,蜜蜂覓食方法僅在生物學(xué)家之間研究。
然而,在開發(fā)新的優(yōu)化算法時(shí),應(yīng)用群體行為的興趣正在增長。
在 2005 年,Dervis Karaboga 教授對(duì)研究結(jié)果產(chǎn)生了興趣。
他發(fā)表了一篇科學(xué)論文,是第一個(gè)描述群體智能模型的人,主要受到蜂群舞蹈的啟發(fā)。
該模型被稱為人工蜂群。
2. 算法說明
人工蜂群有許多不同的實(shí)現(xiàn),區(qū)別在于蜂巢中管理蜂群的原則、以及區(qū)域探索規(guī)則上有所不同。
在本文中,我將討論我對(duì)經(jīng)典算法版本的解釋。
該算法的思路是基于蜂群在尋找盡可能多的獲取花蜜的地方時(shí)的行為。
首先,所有的蜜蜂都朝隨機(jī)的方向飛出蜂巢,充當(dāng)偵察員,試圖尋找有花蜜的區(qū)域。
之后,蜜蜂返回蜂巢,并以特殊的方式告訴其它個(gè)體在哪里找到了花蜜、以及發(fā)現(xiàn)了多少花蜜。
工蜂被發(fā)配到發(fā)現(xiàn)的區(qū)域。
在這個(gè)地區(qū)發(fā)現(xiàn)的花蜜越多,向那個(gè)方向飛的蜜蜂就越多。
偵察兵再次飛去尋找其它區(qū)域,但均在已發(fā)現(xiàn)區(qū)域的附近。
因此,所有的蜜蜂被分為兩種:采集花蜜的工蜂,和探索新區(qū)域的偵察蜂。
花蜜采集區(qū)域具有的量值,與其花蜜量相對(duì)應(yīng)。
沿穿過區(qū)域中心的線,較低等級(jí)的區(qū)域由相對(duì)于較高等級(jí)的區(qū)域進(jìn)行置換。
由圖示,工蜂按區(qū)域分布可以在圖例 1 中可視化。
圖例 1. 取決于區(qū)域排名,前往該區(qū)域的蜜蜂數(shù)量
區(qū)域 1 的等級(jí)較高,它包含的花蜜最多,因此更多的蜜蜂傾向于飛往那里。
通過蜜蜂的數(shù)量,我們可以直觀地判定區(qū)域 4 的等級(jí)(值)最低。
蜜蜂以特殊舞蹈的形式報(bào)告有關(guān)每個(gè)區(qū)域價(jià)值的信息。
每個(gè)蜂巢都有自己的舞姿,其中對(duì)該地區(qū)花蜜的方向和數(shù)量進(jìn)行編程。
假設(shè)全局位置的極值是花蜜最多的區(qū)域,并且只有一個(gè)這樣的區(qū)域。
其它地方也有花蜜,盡管數(shù)量較少。
蜜蜂生活在多維空間中,其中每個(gè)坐標(biāo)代表函數(shù)的一個(gè)參數(shù),且其需要優(yōu)化。
如果我們正在尋找全局最大值,則發(fā)現(xiàn)的花蜜量就是此刻目標(biāo)函數(shù)的值。
如果我們正在尋找全局最小值,那么將目標(biāo)函數(shù)乘以 -1 就足夠了。
由于花蜜采集區(qū)域具有確定的價(jià)值,因此只有等級(jí)最高的區(qū)域才有權(quán)移到(中心移位)花蜜濃度最高的地點(diǎn)。
較低等級(jí)的區(qū)域則移至最高濃度的中心,并檢查與其它較高等級(jí)區(qū)域的交叉點(diǎn)。
以這樣的方式,不允許蜜蜂集中在一些狹窄的小區(qū)域內(nèi),并且由工蜂提供的搜索空間服務(wù)應(yīng)盡可能地高效,從而防止食物來源的枯竭。
在優(yōu)化方面,這消除或最大限度地減少了陷入局部極值的情況。
在區(qū)域分散,并沿著等級(jí)鏈相互移動(dòng)到其最優(yōu)位置后,蜜蜂偵察兵將深入偵察它們的鄰域。
許多養(yǎng)蜂人建議將偵察蜂遣派到搜索空間的隨機(jī)區(qū)域,但我的經(jīng)驗(yàn)表明,這種“偵察”的實(shí)際價(jià)值接近于零,并且只對(duì)一、兩個(gè)維度有用。
換言之,如果我們談?wù)摰氖嵌嗑S空間,那么自由度就會(huì)呈幾何級(jí)數(shù)增加,并且很難偶然發(fā)現(xiàn)更有價(jià)值的花蜜來源。
蜂巢的資源只會(huì)被浪費(fèi)。
將偵察兵派往已知搜索區(qū)域的鄰域更有用,這樣坐標(biāo)就不會(huì)分散,而是專門集中在可能的花蜜來源區(qū)域。
如果這些區(qū)域彼此相交,則必須偏轉(zhuǎn)中心,令這些區(qū)域僅接觸邊界。
如圖例 2 所示。
ABCcrossArea
圖例 2. 等級(jí)較低的區(qū)域應(yīng)偏轉(zhuǎn)
區(qū)域的排位并非嚴(yán)格設(shè)定的,而是動(dòng)態(tài)形成的。
偵察蜂的發(fā)現(xiàn)會(huì)被分配到它們飛過區(qū)域的附近地區(qū)。
如果發(fā)現(xiàn)更有價(jià)值的食物來源,該區(qū)域的中心將轉(zhuǎn)移到那里。
它甚至可能成為新的最佳花蜜采集中心。
其余區(qū)域現(xiàn)在將相對(duì)于它偏轉(zhuǎn)。
換言之,它們沿排位鏈并相對(duì)于它偏移。
傳遞信息的方法,稱為蜂之舞,是整個(gè)蜂巢戰(zhàn)略的基本要素。
蜂巢的可用資源理應(yīng)合理地分配到采集區(qū)域,那么遣派的蜜蜂數(shù)量應(yīng)與區(qū)域的價(jià)值成正比。
這意味著相同數(shù)量的蜜蜂將被遣派到同等價(jià)值的區(qū)域。
我們繼續(xù)討論算法本身。
下面列出了執(zhí)行步驟:
所有蜜蜂都作為偵察員沿著搜索空間隨機(jī)飛行。
測量來自每只蜜蜂采集的花蜜量。
分揀蜜蜂。
根據(jù)從蜜蜂獲得的花蜜量信息分配區(qū)域。
將工蜂遣派到該區(qū)域。
該區(qū)域的花蜜越多,遣派的蜜蜂就越多。
在隨機(jī)選擇的區(qū)域附近派遣偵察蜂。
測量來自每只蜜蜂那里采集到的花蜜量。
按花蜜量對(duì)區(qū)域進(jìn)行排名。
重復(fù)上述步驟 直到滿足停止準(zhǔn)則。
為了便于直觀感知,我們制作了算法的框圖,如圖例 3。
ABCsceme
圖例 3. 算法框圖
我們更詳細(xì)地講述蜂群算法代碼。
一只蜜蜂是算法的基本邏輯單元。
它可以通過結(jié)構(gòu)來講述。
您可能還記得,蜜蜂的位置是由坐標(biāo)、與采集的花蜜區(qū)域的隸屬關(guān)系、以及花蜜的數(shù)量來設(shè)置的。
那么,蜂巢的蜜蜂可由一個(gè)數(shù)組表示。
每個(gè)都可以據(jù)其索引來訪問。