哈里斯鹰优化(HHO)算法(含MATLAB代码)
先做一個聲明:文章是由我的個人公眾號中的推送直接復制粘貼而來,因此對智能優化算法感興趣的朋友,可關注我的個人公眾號:啟發式算法討論。我會不定期在公眾號里分享不同的智能優化算法,經典的,或者是近幾年提出的新型智能優化算法,并附帶MATLAB代碼。
這篇文章在這里:點一下
哈里斯鷹優化(HHO)算法:
哈里斯鷹優化(Harris Hawk Optimization, HHO)算法是2019年提出的一種群智能優化算法,由德黑蘭大學的Heidari等人提出。HHO算法的尋優能力強,并且沒有繁瑣的調參環節。它的原始參考文獻如下:
“Heidari A A, Mirjalili S, Faris H, et al. Harris hawks optimization: Algorithm and applications[J]. Future generation computer systems, 2019, 97: 849-872.”
這里先分享一個WOS上的數據,HHO算法在提出的3年時間里,被廣泛引用和研究。如圖1所示,HHO算法是一個被高引的工作,具有廣泛的認可度。所以,這一期的推送,還是值得大家看一下~
圖1 HHO算法在WOS上的引用數據
?
01
靈感來源
哈里斯鷹捕捉獵物的主要戰術是突襲。在這種策略中,幾只鷹試圖從不同的方向合作攻擊。捕殺可能會在幾秒鐘內迅速完成,但考慮到獵物的逃跑能力,捕殺也可能會持續幾分鐘。哈里斯鷹會在獵物附近進行多次短距離的俯沖,如圖1所示。哈里斯鷹可以根據環境的動態性質和獵物的逃跑模式,展示出各種各樣的追逐方式。
圖1 哈里斯鷹短距離俯沖
當最好的鷹(首領)俯沖捕食獵物時,往往會出現轉換策略,追逐將由另一名成員繼續進行。這種轉換有利于迷惑逃跑的獵物。這種戰術的主要優勢是,哈里斯鷹可以將獵物追到筋疲力盡,最后,其中一只鷹(通常是最強大和最有經驗的鷹)毫不費力地抓住了疲憊的獵物,并與其他成員分享。
因此,HHO算法是基于哈里斯鷹捕食獵物的過程而提出的智能優化算法,通過對哈里斯鷹不同捕食策略的數學建模,實現種群的進化。算法設計相對復雜,計算公式較多,但大部分公式是相似的。
02
算法設計
HHO算法主要分為三部分:勘探、勘探與開發的轉換、開發。與往期推送一樣,目前我還不會在公眾號里編輯數學公式。因此,這部分內容在Word文檔里先寫好,然后做成圖片,最后導入。
圖2 HHO算法勘探與開發的轉換方式
由此,作者便通過模擬哈里斯鷹捕食獵物的行為設計出了HHO算法。HHO算法的計算公式較多,但并沒有涉及參數的選取,也就是說,HHO算法的性能基本不受參數的影響,參數靈敏度低。此外,HHO算法的位置更新公式較多,實際上都是高度相似的,看起來確實有點恐怖,但也有效地平衡了算法的勘探與開發。
?
03
計算流程
HHO算法雖然計算公式多,但并沒有增加額外的循壞,只是存在更多的判斷步驟。只要理清楚每個判斷下的具體位置更新方式就能弄清它的計算流程了。這里我用visio繪制了HHO算法的計算流程圖,如圖3所示。大家跟著我的流程圖進行編碼,就很容易了~
圖3 HHO算法的計算流程
04
實驗仿真
HHO算法的設計相對來說,比較復雜,計算公式較多,計算流程也比較繁瑣。這里就來檢驗一下作者通過犧牲一定的計算量是否換來了算法的先進性能。HHO算法的MATLAB程序是嚴格按照它的原始參考文獻進行編碼的。此外,種群規模N我取的50,最大迭代次數T為500,問題維度D為50,基準函數采用的是CEC2005。
這里以多峰函數Ackley、Levy和單峰函數Zakharov為例,展示HHO算法在50維環境下的收斂效果,如圖4所示。這里就不再進一步做分析了。
(a) Ackley
(b) Levy
(c) Zakharov
圖4 HHO算法的收斂曲線
05
MATLAB代碼
HHO算法的MATLAB代碼可關注公眾號獲取。代碼嚴格按照原始參考文獻編寫,附有詳細注釋。我個人建議是自己動手編,在理清算法計算流程后,編碼是非常容易的!
關于其他智能優化算法的介紹,可關注我的個人公眾號:啟發式算法討論
總結
以上是生活随笔為你收集整理的哈里斯鹰优化(HHO)算法(含MATLAB代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java基础】Java开发环境搭建并编
- 下一篇: “2020年嵌入式软件秋招经验和对嵌入式