智能優(yōu)化算法:鴿群優(yōu)化算法

智能優(yōu)化算法:鴿群優(yōu)化算法-附代碼

@[toc]
摘要:2014 年 段 海 濱 教 授 通 過 歸 納 總 結(jié) , 提 出 鴿 群 算 法(Pigeon-inspired Optimization PIO),PIO 是模擬鴿子歸巢行為而設計出來的群智能優(yōu)化算法。PIO 具有原理簡明的特點、需要調(diào)整參數(shù)極少、易于被實現(xiàn)。與其他算法比較有著計算相對簡單,魯棒性相對較強等明顯的優(yōu)點。

1.算法原理

鴿子在距離目的地較遠時,是在地磁場和地標建筑的幫助下到達目的地。影響鴿群歸巢的關鍵原因可分為 3 類,第一個原因是太陽,第二個原因是地球的磁場,第三個原因是地貌景觀,而鴿子在飛行的過程中,根據(jù)不同的情況會使用不同的巡航工具。首先通過地磁場來對一個大概的方向進行辨別,然后利用地貌景象對目前的方向?qū)嵤┬拚?,直到到達精確的目的地。所以 PIO 算法中鴿子歸巢有兩個基本部分組成:指南針算子和地標算子。當鴿子距離自己目的地較遠時是利用地磁場來辨別方向,當距離目的地比較近時就利用當?shù)氐貥藖磉M行導航。在 PIO 中地圖和指針算子模型的提出就是基于地磁場和太陽,而地標算子模型的提出是基于地標。

1.1 指南針算子

地圖模型是基于地磁場,我們用x_iv_i來分別表示第 i只鴿子的位置和速度。在二維空間里面,鴿子的位置和鴿子的速度在每次迭代過程中進行更新。第i只鴿子的速度和鴿子的位置將分別用的公式(1)和公式(2)進行相應的迭代計算:
V_i(t) = V_i(t-1)*e^{-Rt} + rand*(X_g - X_i(t-1))\tag{1}

X_i(t) = X_i(t -1) + V_i(t) \tag{2}

第i 只鴿子的速度是由它上一代的速度和當前鴿子最好位置和所在位置共同決定,其中 R 是地圖因子,rand 是一個隨機數(shù),t 為代數(shù)。而第i 只鴿子的位置是由之前位置和當前速度決定。所有鴿子的飛行是通過地圖來保證的,進行比較可以得到鴿子最好位置,即X_g,每一只鴿子將根據(jù)公式(1)向擁有最好位
置的鴿子來進行方向的調(diào)整和飛行,而公式(2)則是進行位置的調(diào)整。

1.2 地標算子

地標模型根據(jù)鴿子利用地標來進行導航而建立。在利用地標導航時,距離目的地的位置比利用地圖導航的距離更近,如果鴿子對現(xiàn)在所處的位置地標不熟悉時,則在附近鴿子的帶領下進行飛行,當找到標志性建筑物或者熟悉位置時,則根據(jù)經(jīng)驗自由飛行。在地標模型中,在每一代中用N_p 來記錄一半鴿子的個數(shù),X_c(t) 為第t 代所有鴿子的中心位置,假如每一只鴿子可以飛直線距離到達目的地,將有如下公式:
Np(t) = \frac{Np(t-1)}{2} \tag{3}

X_c(t) = \frac{\sum X_i(t)*fitness(X_i(t))}{Np*\sum fitness(X_i(t))} \tag{4}

X_i(t) = X_i(t-1) + rand*(X_c(t) - X_i(t -1))\tag{5}

在公式中fitness(x)是每只鴿子的質(zhì)量。

算法流程:

步驟 1:初始化 PIO 算法參數(shù),如解空間的維數(shù)D ,種群規(guī)模PN ,地圖和指南針因子 R,兩算子迭代N_{c1}N_{c2} ,其中要求N_{c1}>N_{c2}

步驟 2:設置每只鴿子的隨機速度和路徑。比較每只鴿子的適應度值,找出目前最好的路徑。
步驟 3:首先,我們通過使用公式(1)和(2)更新每一個鴿子的速度和路徑。然后,比較所有鴿子的適應度值,并找到新的最佳路徑。

步驟 4:如果 NC>NC1,轉(zhuǎn)到下一個操作。否則,轉(zhuǎn)到步驟3。

步驟 5:所有的鴿子根據(jù)它們的適應度排名。一半適應度低的鴿子,將根據(jù)公式(3)減半。然后,根據(jù)方程(4)找到所有鴿子的中心,這個中心是理想的目的地。所有的鴿子將飛到目的地,根據(jù)方程(5)調(diào)整它們的飛行方向。下一步,存儲最佳的解決方案參數(shù)和最佳的成本值.

步驟 6:如果 NC>NC2max,停止操作,并輸出結(jié)果。如果不是,轉(zhuǎn)到步驟 5

2.算法結(jié)果

算法結(jié)果

3.參考文獻

[1]郭瑞. 鴿群優(yōu)化算法及其應用研究[D].廣西民族大學,2017.

4.Matlab代碼

https://mianbaoduo.com/o/bread/aZ6Vkpo=

5.Python代碼

https://mianbaoduo.com/o/bread/aZ6Vkps=

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容