一個由蜂羣行爲啓發的算法!node
本文主要內容:web
-
什麼是人工蜂羣算法? -
蜜蜂的採蜜機制 -
蜂羣算法的原理及流程 -
小結
1. 什麼是人工蜂羣算法?
人工蜂羣算法是模仿蜜蜂行爲提出的一種優化方法,是集羣智能思想的一個具體應用,它的主要特色是不須要了解問題的特殊信息,只須要對問題進行優劣的比較,經過各人工蜂個體的局部尋優行爲,最終在羣體中使全局最優值突現出來,有着較快的收斂速度。爲了解決多變量函數優化問題,Karaboga
提出了人工蜂羣算法ABC
模型(artificial bee colony algorithm
)。算法
人工蜂羣算法屬於羣智能算法的一種,其受啓發於蜜蜂的尋蜜和採蜜過程,相比於常見的啓發式算法,它的優勢在於其使用了較少的控制參數,而且魯棒性強,在每次迭代過程當中都會進行全局和局部的最優解搜索,所以可以找到最優解的機率大大增長。微信
相比於遺傳算法來講,人工蜂羣算法在局部的收斂和尋優能力上要更爲出色,不會出現遺傳算法的「早熟」現象,而且算法的複雜度也較低。但因爲遺傳算法有交叉以及變異的操做,所以遺傳算法在全局最優值的搜索上要優於人工蜂羣算法。此外,人工蜂羣算法適用於進行連續函數的全局優化問題,而不適用於一些離散函數。編輯器
2. 蜜蜂的採蜜機制
蜜蜂具備羣智能應必備的兩個條件:自組織性和分工合做性。雖然單個蜜蜂的行爲很簡單,可是由單個蜜蜂所組成的羣體卻可以表現出極其複雜的行爲,它們能夠在任何複雜的環境下以很高的效率從花朵中採集花蜜,同時還可以很快的適應環境的改變。svg
任務分工
人工蜂羣算法就是模擬蜜蜂的採蜜過程而提出的一種新型智能優化算法,它也是由食物源、僱傭蜂和非僱傭蜂三部分組成。函數
食物源:食物源即爲蜜源。在任何一個優化問題中,問題的可行解都是以必定形式給出的。在人工蜂羣算法中,食物源就是待求優化問題的可行解,是人工蜂羣算法中所要處理的基本對象。食物源的優劣便可行解的好壞是用蜜源花蜜量的大小即適應度來評價的。flex
僱傭蜂:僱傭蜂即爲引領蜂(採蜜蜂)與食物源的位置相對應,一個食物源對應一個引領蜂。在人工蜂羣算法中,食物源的個數與引領蜂的個數相等;引領蜂的任務是發現食物源信息並以必定的機率與跟隨蜂分享;機率的計算即爲人工蜂羣算法中的選擇策略,通常是根據適應度值以輪盤賭的方法計算。優化
非僱傭蜂:非僱傭蜂包括跟隨蜂(觀察蜂)和偵査蜂跟隨蜂在蜂巢的招募區內根據引領蜂提供的蜜源信息來選擇食物源,而偵查蜂是在蜂巢附近尋找新的食物源。在人工蜂羣算法中,跟隨蜂依據引領蜂傳遞的信息,在食物源附近搜索新食物源,並進行貪婪選擇。若一個食物源在通過次後仍未被更新,則此引領蜂變成偵査蜂,偵查蜂尋找新的食物源代替原來的食物源。spa
採蜜機制
在蜜蜂羣體智能造成的過程當中,蜜蜂之間的信息交流是最重要的環節,而舞蹈區是蜂巢中最重要的信息交換地。採蜜蜂在舞蹈區經過跳搖擺舞與其餘蜜蜂共同分享食物源的信息,觀察蜂則是經過採蜜蜂所跳的搖擺舞來得到當前食物源的信息的,因此,觀察蜂要以最小的資源耗費來選擇到哪一個食物源採蜜。所以,蜜蜂被招募到某個食物源的機率與食物源的收益率成正比。
初始時刻,蜜蜂的搜索不受任何先驗知識的決定,是徹底隨機的。此時的蜜蜂有如下兩種選擇:
-
它轉變成爲偵察蜂,而且因爲一些內部動機或可能的外部環境自發地在蜂巢附近搜索食物源; -
在觀看了搖擺舞以後,它可能被招募到某個食物源,而且開始開採食物源。
在蜜蜂肯定食物源後,它們利用本身自己的存儲能力來記憶位置信息並開始採集花蜜。此時,蜜蜂將轉變爲「僱傭蜂」。蜜蜂在食物源處採集完花蜜,回到蜂巢並卸下花蜜後有以下選擇:
-
放棄食物源成爲非僱傭蜂; -
跳搖擺舞爲所對應的食物源招募更多的蜜蜂,而後回到食物源採蜜; -
繼續在同一食物源採蜜而不進行招募。
蜜蜂在採蜜時所表現出來的這種自組織性和合理分配性主要由其自身的基本性質所決定的,它們所特有的基本性質以下:
-
正反饋性:食物源的花蜜量與食物源被選擇的可能性成正比; -
負反饋性:蜜蜂中止對較差食物源的開採過程; -
波動性:在某個食物源被放棄時,隨機搜索一個食物源替代原食物源; -
互動性:蜜蜂在舞蹈區與其餘蜜蜂共同分享食物源的相關信息。
3. 蜂羣算法的原理及流程
標準的ABC
算法經過模擬實際蜜蜂的採蜜機制將人工蜂羣分爲3
類: 採蜜蜂、觀察蜂和偵察蜂。整個蜂羣的目標是尋找花蜜量最大的蜜源。在標準的ABC
算法中,採蜜蜂利用先前的蜜源信息尋找新的蜜源並與觀察蜂分享蜜源信息;觀察蜂在蜂房中等待並依據採蜜蜂分享的信息尋找新的蜜源;偵查蜂的任務是尋找一個新的有價值的蜜源,它們在蜂房附近隨機地尋找蜜源。
算法原理
假設問題的解空間是D
維的,採蜜蜂與觀察蜂的個數都是SN
,採蜜蜂的個數或觀察蜂的個數與蜜源的數量相等。則標準的ABC
算法將優化問題的求解過程當作是在D
維搜索空間中進行搜索。每一個蜜源的位置表明問題的一個可能解,蜜源的花蜜量對應於相應的解的適應度。一個採蜜蜂與一個蜜源是相對應的。與第i
個蜜源相對應的採蜜蜂依據以下公式尋找新的蜜源:
其中,
,
,
是區間上[-1,1]
的隨機數,
。標準的ABC
算法將新生成的可能解與原來的解做比較:
並採用貪婪選擇策略保留較好的解。每個觀察蜂依據機率選擇一個蜜源,機率公式爲:
其中
是可能解
的適應值。對於被選擇的蜜源,觀察蜂根據上面機率公式搜尋新的可能解。當全部的採蜜蜂和觀察蜂都搜索完整個搜索空間時,若是一個蜜源的適應值在給定的步驟內(定義爲控制參數limit
) 沒有被提升, 則丟棄該蜜源,而與該蜜源相對應的採蜜蜂變成偵查蜂,偵查蜂經過如下公式搜索新的可能解。其中,
其中,r
是區間[0,1]
上的隨機數,
和
是第d
維的下界和上界。
算法流程
人工蜂羣算法具體實現步驟:
-
初始化種羣解 ; -
計算種羣中各個蜜蜂的適應值; -
重複一下步驟,知道知足終止條件: -
採蜜蜂根據 (1)
產生新的解 並計算適應值; -
採蜜蜂根據貪心策略選擇蜜源; -
根據 (2)
式計算選擇蜜源 的機率 ; -
觀察蜂根據機率 選擇蜜源 ,根據 (3)
式在該蜜源附近產生新的蜜源 ,並計算新蜜源 的適應值; -
觀察蜂根據貪心策略選擇蜜源; -
決定是否存在須要放棄的蜜源,若是存在,則隨機產生一個蜜源替代它; -
記錄最優解直至知足終止條件輸出最優解;
4.小結
在人工蜂羣算法的基礎上,還發展出了許多混合算法,如基於量子分佈的人工蜂羣算法,禁忌搜索-蜂羣混合優化算法,模擬退火-蜂羣混合優化算法,基於copula
分佈估計的改進人工蜂羣算法等,它們都是針對蜜蜂在尋找新蜜源的過程當中來進行基本人工蜂羣算法的優化。
在應用中,人工蜂羣算法的複雜度較低,所以若是目標函數知足連續或近似連續條件,那麼能夠優先考慮人工蜂羣算法。在編寫算法時,能夠考慮使用遺傳算法中的交叉操做來找到全局中其餘的最優解來避免陷入局部最優。
♥點個贊再走唄♥
[智能算法]公衆號回覆「 蜂羣代碼」便可下載相關代碼。本文分享自微信公衆號 - 智能算法(AI_Algorithm)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。