1. 算法簡(jiǎn)介
(以下描述,均不是學(xué)術(shù)用語(yǔ),僅供大家快樂(lè)的閱讀)
禿鷹優(yōu)化算(bald eagle search optimization algorithm)是根據(jù)禿鷹的捕食過(guò)程提出的優(yōu)化算法。該算法提出(發(fā)表)于2019年,屬于較新的優(yōu)化算法。
禿鷹算法模擬了禿鷹捕食的三個(gè)階段,選擇區(qū)域、搜索獵物、俯沖捕獵。隨著迭代次數(shù)的增加,禿鷹會(huì)改變其搜索方式。總體來(lái)說(shuō)禿鷹算法是綜合了粒子群算法和鯨魚(yú)算法,不過(guò)其性能可以說(shuō)是青出于藍(lán)而勝于藍(lán)了,畢竟每個(gè)個(gè)體搜索了三次。
2. 算法流程
本次的主角就是禿鷹了。禿鷹個(gè)體也是只有位置這一個(gè)屬性,禿鷹種群數(shù)量為N,每只禿鷹的位置為,該位置的優(yōu)劣由其適應(yīng)度函數(shù)
計(jì)算得出。
禿鷹捕食有三個(gè)階段(搜索方式):選擇階段(Select stage),搜索階段(Search stage),俯沖階段(Swooping stage)。
2.1選擇階段
選擇階段,禿鷲會(huì)飛到當(dāng)前最優(yōu)個(gè)體附近,與最優(yōu)個(gè)體的距離由全體個(gè)體的平均位置決定。
公式(1)中
如果新位置優(yōu)于原位置,禿鷹則會(huì)飛行到新位置,否則留在原地。
2.2搜索階段
搜索階段,禿鷹會(huì)圍繞當(dāng)前位置,以阿基米德螺線方式搜索,其具體實(shí)現(xiàn)如下:
其中公式(5)中a為取值在[5,10]中的常數(shù),R是取值在[0.5,2]中的常數(shù),rand為[0,1]內(nèi)的均勻隨機(jī)數(shù)。
從公式(2)可以看出,禿鷹圍繞自身飛行,飛行的距離由自身與群體中心的距離和自身與下一只禿鷹的距離決定。(如果當(dāng)前禿鷹是群體中的最后一只,它的下一只禿鷹則為群體的第一只禿鷹)。
如果搜索得到的新位置優(yōu)于原位置,禿鷹則會(huì)飛行到新位置,否則留在原地。
2.3俯沖階段
俯沖階段則是在當(dāng)前的最優(yōu)位置周?chē)月菥€的方式搜索,其具體公式如下:
公式(6)c1,c2為常數(shù),一般取值為2,rand為[0,1]內(nèi)的均勻隨機(jī)數(shù)。
可以看出次階段,禿鷹會(huì)圍繞著最優(yōu)個(gè)體搜索,但又不是完全圍繞最優(yōu)個(gè)體搜索,公式(6)中,最優(yōu)個(gè)體前有隨機(jī)數(shù)作為系數(shù)。由于隨機(jī)數(shù)的存在,該個(gè)體所圍繞的中心會(huì)漸漸的向0靠近,故當(dāng)0點(diǎn)為最優(yōu)位置時(shí),算法將取得較好的效果。
該階段依然需要貪心算法,如果搜索得到的新位置優(yōu)于原位置,禿鷹則會(huì)飛行到新位置,否則留在原地。
2.4流程圖
可以看出禿鷹算法的每一次迭代過(guò)程中,每只禿鷲進(jìn)行了三次適應(yīng)度值計(jì)算,而其他大多數(shù)算法只進(jìn)行了一次計(jì)算,所以在做對(duì)照實(shí)驗(yàn)時(shí),應(yīng)該將禿鷹算法的最大迭代次數(shù)或者種群數(shù)設(shè)置為其他算法的1/3。
3. 實(shí)驗(yàn)
適應(yīng)度函數(shù)。
實(shí)驗(yàn)一:
問(wèn)題維度(維度) | 2 |
總?cè)簲?shù)量(種群數(shù)) | 20 |
最大迭代次數(shù) | 50 |
取值范圍 | (-100,100) |
實(shí)驗(yàn)次數(shù) | 10 |
C1 | 2 |
C2 | 2 |
alpha公式(1) | 2 |
a公式(5)(9) | 10 |
R公式(5)(9) | 1.5 |
從圖像可以看出,禿鷹算法的收斂速度還是挺快的,在第3代時(shí)就已經(jīng)非常集中了。考慮到它每代計(jì)算三次的作弊行為,也可以認(rèn)為在第9代時(shí)收斂。
值 | |
---|---|
最優(yōu)值 | 1.516652616780882E-23 |
最差值 | 3.311250131703701E-17 |
平均值 | 3.4414438428571417E-18 |
結(jié)果上看,也是非常的好,畢竟是三倍的付出,結(jié)果可以說(shuō)是同等條件下算法中比較優(yōu)秀的了。
由于有貪心步驟的存在,圖像上看不出其俯沖階段向0點(diǎn)靠近的行為。下面移除所有階段的貪心步驟,看看禿鷹的運(yùn)動(dòng)過(guò)程。
實(shí)驗(yàn)二: 移除禿鷹算法的貪心步驟,自由飛翔。
可以看出移除貪心步驟后,種群不再收斂,給我的感覺(jué)是在0點(diǎn)和最優(yōu)點(diǎn)之間的區(qū)域飛行,不過(guò)也不好說(shuō)。
值 | |
---|---|
最優(yōu)值 | 0.030622151048277216 |
最差值 | 0.41104809161705186 |
平均值 | 0.1993553041755197 |
實(shí)驗(yàn)結(jié)果也較為一般,明顯弱于有貪心步驟時(shí)的結(jié)果。
如果算法確實(shí)會(huì)向0收斂,猜測(cè)會(huì)有下面兩種結(jié)果:
(1) 在實(shí)驗(yàn)二的基礎(chǔ)上,將上面適應(yīng)度函數(shù)取值范圍設(shè)置為[50,100]時(shí),種群應(yīng)該會(huì)聚集在左上角部分(最優(yōu)解在右下角)。
(2) 在實(shí)驗(yàn)二的基礎(chǔ)上,將適應(yīng)度函數(shù)的最優(yōu)解設(shè)為0,種群應(yīng)該會(huì)收斂到原點(diǎn)。
實(shí)驗(yàn)三:在實(shí)驗(yàn)二的基礎(chǔ)上將適應(yīng)度函數(shù)取值范圍設(shè)置為[50,100]
從圖像可以看出,種群沒(méi)有在最優(yōu)解附近運(yùn)動(dòng)而是在左上角,甚至因?yàn)槌鲞吔绫煌A粼诹诉吔缟希f(shuō)明種群有著向左上角運(yùn)動(dòng)的趨勢(shì)。
實(shí)驗(yàn)四:在實(shí)驗(yàn)二的基礎(chǔ)上,將最優(yōu)解設(shè)置為a=b=0。
可以看出,這次收斂速度非常的快也非常的集中,幾乎可以認(rèn)為是在同一個(gè)點(diǎn)了。
值 | |
---|---|
最優(yōu)值 | 4.208327662513449E-107 |
最差值 | 4.169966258795712E-89 |
平均值 | 4.170038576285687E-90 |
這個(gè)結(jié)果應(yīng)該是目前所看到最好的結(jié)果了,不過(guò)很可惜是一個(gè)作弊行為得到的。只有當(dāng)最優(yōu)解在0處時(shí)才會(huì)得到。如果事先已知最優(yōu)解為0,那還要算法干什么呢?
從實(shí)驗(yàn)三和實(shí)驗(yàn)四可以看出,與實(shí)驗(yàn)二后的猜想基本一致。
實(shí)驗(yàn)五:在實(shí)驗(yàn)四的基礎(chǔ)上,去掉禿鷹的俯沖階段。
可以看出,去除俯沖階段后的禿鷹算法不再收斂到一個(gè)點(diǎn),而是會(huì)在解空間內(nèi)不斷的搜索。這可以說(shuō)明俯沖階段將會(huì)使禿鷹群體向0點(diǎn)收斂,該階段的實(shí)現(xiàn)公式應(yīng)該進(jìn)行改進(jìn)。
4. 總結(jié)
禿鷹算法是根據(jù)禿鷹的覓食行為而提出的算法。算法的結(jié)構(gòu)有些許復(fù)雜,每次迭代分為選擇、搜索和俯沖三個(gè)階段。主要搜索行為借助了螺線以及群體中心,可以看做是將粒子群算法和鯨魚(yú)算法進(jìn)行了融合,使用螺線來(lái)得到角度,使用自身與群體中心和下一個(gè)禿鷹得到距離,來(lái)計(jì)算新的位置。
由于每代中的各個(gè)個(gè)體計(jì)算了三次適應(yīng)度函數(shù),所有同等條件下其結(jié)果會(huì)優(yōu)于其他算法,在對(duì)照實(shí)驗(yàn)時(shí),應(yīng)當(dāng)將禿鷹算法的迭代次數(shù)或者種群數(shù)削減至原值的1/3。俯沖階段由于最優(yōu)位置前有0-1的隨機(jī)系數(shù),其個(gè)體的位置會(huì)逐漸收斂于0,當(dāng)最優(yōu)解不在0處時(shí),其結(jié)果相對(duì)較差。該階段須改進(jìn)。
參考文獻(xiàn)
Alsattar H A , Zaidan A A , Zaidan B B . Novel meta-heuristic bald eagle search optimisation algorithm[J]. Artificial Intelligence Review, 2020, 53(6). 提取碼:uxsz
原文代碼提取碼:uxsz
以下指標(biāo)純屬個(gè)人yy,僅供參考
指標(biāo) | 星數(shù) |
---|---|
復(fù)雜度 | ★★★★★★☆☆☆☆ |
收斂速度 | ★★★★★★☆☆☆☆ |
全局搜索 | ★★☆☆☆☆☆☆☆☆ |
局部搜索 | ★★★★★☆☆☆☆☆ |
優(yōu)化性能 | ★★★★★☆☆☆☆☆ |
跳出局部最優(yōu) | ★☆☆☆☆☆☆☆☆☆ |
改進(jìn)點(diǎn) | ★★★★☆☆☆☆☆☆ |
目錄
上一篇 優(yōu)化算法筆記(二十八)蝗蟲(chóng)算法
下一篇 優(yōu)化算法筆記(三十)海洋捕食者算法