1. 算法簡介
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
哈里斯鷹算法是受哈里斯鷹捕食兔子過程啟發而提出的優化算法。算法提出與2019年,提出時間不長。
哈里斯鷹算法非常的復雜,其位置更新公式就有7個,并且使用了許多條件來判斷何時使用哪一個公式來計算新位置。該算法更像是數個算法拼接而成,與哈里斯鷹沒有太大的關系。不多近年多數算法都是這樣,算法與其名字相關的動物并沒有太大的關系,應該是先寫好了算法,再去尋找與之相似,能夠套用的動物,才造成了這樣的結果。
2. 算法流程
本期的主角就是哈里斯鷹了(其實兔子才是主角,不過就理解兔子是鷹所在位置的適應度函數也行)。
哈里斯鷹算法中的種群數量為N,每只鷹的位置為,該位置的優劣由其適應度函數
計算得出。
下面看看該算法的位置更新公式。
公式(1)-公式(7)為位置更新公式。
其中rand為[0,1]內的均勻隨機數,rand2為[-2,2]內的均勻隨機數,J為[-1,1]內的均勻隨機數,
先來解析一下各個公式的含義。
先說說公式(1)(3)(5)(6)(7)這4個相似的公式
公式(1),在當前位置附近進行搜索,搜索范圍較大。
公式(3)(5)(6)則是在當前最優位置附近搜索,其搜索范圍由公式(8)決定,可見隨著迭代次數的增大,它們的搜索范圍會越來越小。
公式(7)則是在得到的新位置處進行小范圍levy飛行。
下面看看公式(2)和公式(4)。
公式(2)的含義是在解空間的中心區域進行搜索。隨著迭代次數增加,和
會越來越近,此時公式(2)前半部分取值近似于0,后半部分其實就是解空間內隨機初始化并乘上了一個隨機數,[0,1]內均勻隨機數可取其期望為0.5,故該公式會在解空間中心區域進行搜索。
公式(4),個人覺得有點問題。當群體較為集中后,可以理解為與
幾乎重合,次數公式(4)退化成如下公式:
易知公式(9)所表示的是當前最優位置與原點(每個維度都是0的點)連成的直線,該直線過原點,所以,當適應度函數的正解在0處時,算法的結果會非常的好,反之,效果稍差。
算法中選擇哪個階段來更新位子主要由E的值決定。
從條件中可以看出,算法的前期使用公式(1)(2)的概率較大,而在后期則是(3)(4)(5)(6)的使用概率較大。
其中公式(5)(6)(7)在使用后需要通過貪心算法來判斷是否保留該值,公式(1)(2)(3)(4)則是無論結果好壞,都會飛行到新位置。
算法流程圖如下
流程圖屬實給我整不會了T^T
3. 實驗
適應度函數。
實驗一:
問題維度(維度) | 2 |
總群數量(種群數) | 20 |
最大迭代次數 | 50 |
取值范圍 | (-100,100) |
實驗次數 | 10 |
從圖像可以看出,算法收斂性還是不錯的,局部搜索能力也不錯。在算法中后期,我們可以看到群體的軌跡慢慢變成了一條線。這是由公式(4)造成的,由于公式(4)的步驟沒有貪心算法,會讓群體出現在當前最優位置與原點(值為0的點)所確定的直線上。
值 | |
---|---|
最優值 | 3.825638232062466E-4 |
最差值 | 0.3058783621115111 |
平均值 | 0.04628947420338882 |
我們看看結果,結果中規中矩,不太出色,并且不太穩定。看來算法的性能不一定和其復雜程度成正比。
有沒有可能是公式(4)讓大部分應該收斂的個體去了較遠的位置,而使得算法的精度不高呢?實驗二將去掉公式(4)再看看效果
實驗二:將公式(4)替換為公式(3)
從圖像上看,比實驗一好了一點,群體不再像實驗一中那樣會集中到一條直線上,其他看上去與實驗一沒有太大的差別。
值 | |
---|---|
最優值 | 4.067659511451527E-6 |
最差值 | 0.04826967148053276 |
平均值 | 0.013061678816358727 |
從結果來看,實驗二的結果比實驗一也只是好了一點,說明公式(4)對其影響也不算太大,總體來說算法還是有一定的穩定性,單獨修改某一個公式對算法的結果的影響不顯著。
4.總結
哈里斯鷹算法是根據哈里斯鷹捕食兔子的過程提出的優化算法。算法流程非常非常復雜,公式也非常非常多,雖然這些公式的相似度很高,但看起來仍然很恐怖。算法的效果并沒有因為其流程的復雜而變得出眾。看來算法的效果并不是與算法的復雜程度正相關,優秀的算法通常看起來也都很簡潔。
參考文獻
Aaha B , Sm C , Hf D , et al. Harris hawks optimization: Algorithm and applications[J]. Future Generation Computer Systems, 2019, 97:849-872. 提取碼:luuq
原文代碼提取碼:luuq
以下指標純屬個人yy,僅供參考
指標 | 星數 |
---|---|
復雜度 | ★★★★★★☆☆☆☆ |
收斂速度 | ★★★☆☆☆☆☆☆☆ |
全局搜索 | ★★★☆☆☆☆☆☆☆ |
局部搜索 | ★★★★★☆☆☆☆☆ |
優化性能 | ★★★★☆☆☆☆☆☆ |
跳出局部最優 | ★★★☆☆☆☆☆☆☆ |
改進點 | ★★★☆☆☆☆☆☆☆ |