獲取更多資訊,趕快關注上面的公衆號吧!
文章目錄
一種新的元啓發式優化算法:狩獵搜索(Hunting Search,Hus)
靈感
狩獵搜索是一種模擬羣體動物(獅子,狼等)捕食狩獵行爲地元啓發式算法,這些動物會採取一些策略包圍和捕捉獵物。例如,狼就非常依賴這種捕獵方式,來捕食比自己更大更快的動物,它們選定目標獵物後,整個狼羣就會逐漸向其靠近,狼聰明的地方在於它們不會站在風向上游以免獵物嗅到氣味,而這可以應用到帶有約束的問題中以避開不可行區域。在狩獵搜索算法中,每個捕食者就是特定問題的一個解,捕食者協同尋找和捕食獵物,類似於尋找全局最優點的優化過程,每個捕食者相對於獵物的位置決定了其捕獲獵物的機率,類似地,目標函數值是由一組決策變量的值來決定的。
但是動物的羣體捕食和優化問題也有不同,在動物的羣體捕食中,解(獵物)是動態的,捕食者必須根據根據獵物的當前位置來校正自身位置,而在優化問題中,最優解是靜態的且在優化過程中不會改變自身位置,爲了實現在算法中模擬這種動態性,人工捕食者會朝着領導者移動,領導者是當前階段擁有最優位置的捕食者(當前種羣最優解),如果任意一個捕食者發現了比當前領導者更優的位置,則其成爲下個階段的領導者。
真實的動物不僅會慢慢朝獵物移動還會根據其他捕食者和獵物的位置校正自身位置,因此,算法中如果朝之前的領導者移動後,領導者並未變化,那麼捕食者將根據其他成員的位置調整自身位置,這可以通過引入狩獵羣體考慮率(Hunting Group Consideration Rate,HGCR)和位置校正率(Position Correction Rate,PCR)來實現。
還有,在真實動物的羣體捕食中,如果獵物逃出了包圍圈,捕食者會重新組織起來,再次包圍獵物。在算法中,如果捕食者或解之間的位置太接近,那麼算法就會將其打亂,試圖在下次迭代中找到最優解。
狩獵搜索
通過以上分析,可以得到狩獵搜索算法如下:
Step1:指定優化問題和算法參數。
Step2:初始化捕獵羣體(Hunting Group,HG)。
Step3:朝領導者移動。
Step4:位置校正。
Step5:羣體重組。
Step6:重複Step3~5,直到滿足終止條件。
初始化優化問題和算法參數
狩獵羣體大小(Hunting Group Size,HGS),向領導者的最大移動量(maximum movement toward the Leader,MML),狩獵羣體考慮率(Hunting Group Consideration Rate,HGCR)和位置校正率(Position Correction Rate,PCR)。
初始化狩獵羣體(Hunting Group,HG)
基於狩獵羣體大小HGS,隨機生成對應數量的可行解並計算目標值,根據目標值選擇領導者。
朝領導者移動
通過向領導者移動來生成捕食者新的位置:
其中爲朝着領導者移動的最大量,類似於步長,爲內的隨機數,爲領導者第個維度的位置值。
對於每一個捕食者,如果朝領導者移動後結果變優,那麼捕食者就移動到新的位置,否則返回原來的位置。這樣處理有兩個好處:
- 並沒有和羣體中最差的捕食者進行比較,從而允許弱者搜索其他解;
- 爲了防止過早收斂,捕食者將當前位置和之前的位置進行比較,因而好的位置不會被淘汰。
通常情況下取值範圍爲0.01(對於具有多個自變量的大規模問題)~0.2(對於自變量較少的簡單問題)。
位置校正-成員間協作
在這一步中,對捕食者之間的協作進行建模,以更有效地進行捕食。在朝領導者移動後,捕食者會再根據其他捕食者的位置和隨機擾動選擇其他位置以便找到更優的解,而這只有在前一步中領導者沒有變化的情況下才會執行。新的位置將按照下式生成:
其中HGCR爲從羣體HG中選擇某一維度值的概率,(1-HGCR)爲值域中隨機選擇值的概率。(這其實有點像和聲搜索裏的和聲記憶率),通常情況下HGCR取值範圍爲。
然後再檢查新的位置的每一個維度,以確定是否進行校正:
注意,校正過程只會在從HG中選擇值時執行,這其實和和聲搜索裏的音調調節思想相同。那麼算法選擇鄰域值的概率就是,如果位置校正決策爲YES,那麼按照下式進行校正:
其中爲,爲任意距離帶寬,通常按照指數函數遞減:
和爲常數,'iteration’爲當前迭代次數。
重組
隨着搜索過程的進行,捕食者很可能陷入局部最優,此時捕食者應該進行重組以獲取最優位置。重組過程如下:如果領導者與最差捕食者之間的目標函數值差值小於常量且未終止,那麼按下式對每個捕食者進行重組:
其中表示隨機選擇變量的最大或最小值,爲羣體目前爲止陷入局部最優的代數。參數和用於確定算法的全局收斂率,值越小收斂越慢。通常對於大規模優化問題,這兩個值可以設置相對小一點。