1. 程式人生 > 實用技巧 >智慧優化演算法:蜉蝣演算法 - 附程式碼

智慧優化演算法:蜉蝣演算法 - 附程式碼

2020 智慧優化演算法:蜉蝣演算法 - 附程式碼

文章目錄


摘要:蜉蝣演算法(mayfly algorithm,MA)是於2020年提出的新型之智慧優化演算法。該演算法具有尋優能力強等優點,具有較強的研究價值。

1.演算法原理

蜉蝣是屬於蜉蝣目的昆蟲,是古翅目昆蟲的一部分。據估計,全世界有超過3000種蜉蝣。它們的名字來源於它們主要出現在英國的五月。從卵中孵化出來後,肉眼可以看到未成熟的蜉蝣,它們花了幾年時間成長為水生若蟲,直到它們準備好成年後上升到水面。一隻成年蜉蝣只存活幾天,直到它完成繁殖的最終目標。為了吸引雌性,大多數雄性成蟲成群結隊地聚集在水面上幾米的地方,通過特有的上下運動模式,表演一場婚禮舞蹈。雌鳥飛入這些蜂群,為了與空中的雄性交配。交配可能只持續幾秒鐘,當交配完成後,雌鳥將卵落在水面上,它們的生命週期就結束了。

它的靈感來源於蜉蝣的社會行為,特別是它們的交配過程。我們假設蜉蝣從卵中孵化出來後,已經是成蟲了,而最適合的蜉蝣存活下來,而不管它們活多久。每個蜉蝣在搜尋空間中的位置代表了問題的潛在解決方案。演算法的工作原理如下。最初,隨機產生兩組蜉蝣,分別代表雄性和雌性種群。也就是說,每個蜉蝣被隨機放置在問題空間中,作為由d維向量表示的候選解 x = ( x 1 , . . . , x d ) x = (x_1,...,x_d) x=(x1,...,xd),並根據預先確定的目標函式 f ( x ) f(x) f(x)對其效能進行評價。蜉蝣的速度 v = ( v 1 , . . . , v d ) v = (v_1,...,v_d)

v=(v1,...,vd)定義為其位置的變化,每個蜉蝣的飛行方向是個體和社會飛行經驗的動態互動作用。特別是,每個蜉蝣都會調整自己的軌跡,使其朝向目前為止的個人最佳位置( p b e s t pbest pbest),以及迄今為止群中任何蜉蝣所獲得的最佳位置( g b e s t gbest gbest)。

1.1 雄性蜉蝣的運動

雄性蜉蝣成群的聚集,意味著每隻雄性蜉蝣的位置都是根據自己和鄰居的經驗來調整的。假設 x i t x_i^t xit是時間步長 t t t時蜉蝣 i i i在搜尋空間中的當前位置,通過在當前位置上新增速度 v i t + 1 v_i^{t+1} vit+1來改變位置。這可以表述為:

x i t + 1 = x i t + v i t + 1 (1) x_i^{t+1}=x_i^t + v_i^{t+1}\tag{1} xit+1=xit+vit+1(1)
考慮到雄性蜉蝣總是在水面上幾米處表演舞蹈,我們假設它們不能發展出很快的速度,而且它們會不斷地移動。因此,雄性蜉蝣的速度計算如下:
v i j t + 1 = v i j t + a 1 e − β r p 2 ( p b e s t i j − x i j t ) + a 2 e − β r g 2 ( g b e s t j − x i j t ) (2) v_{ij}^{t+1}=v_{ij}^{t} + a_1e^{-\beta r_p^2}(pbest_{ij} - x_{ij}^t)+a_2e^{-\beta r_g^2}(gbest_j - x_{ij}^t) \tag{2} vijt+1=vijt+a1eβrp2(pbestijxijt)+a2eβrg2(gbestjxijt)(2)
其中 v i j t v_{ij}^t vijt是蜉蝣 i i i j j j維度 t t t時刻的速度。 x i j t x_{ij}^t xijt代表t時刻的位置。a1和a2是社會作用正吸引係數。pbest程式碼蜉蝣歷史最有位置。gbest代表最佳蜉蝣位置。 β \beta β是蜉蝣的能見度係數,控制蜉蝣的能見範圍。rp代表當前位置與pbest的距離。rg代表當前位置與gbest的距離。距離的計算如下:
∣ ∣ x i − X i ∣ ∣ = ∑ j = 1 n ( x i j − X i j ) 2 (3) ||x_i - X_i||=\sqrt{\sum_{j=1}^n(x_{ij}-X_{ij})^2} \tag{3} xiXi=j=1n(xijXij)2 (3)
對於演算法的執行來說,群中最好的蜉蝣繼續表演他們特有的上下舞蹈是很重要的。因此,最好的蜉蝣必須不斷地改變它們的速度,在這種情況下,計算如下:
v i j t + 1 = v i j t + d ∗ r (4) v_{ij}^{t+1}=v_{ij}^t + d*r \tag{4} vijt+1=vijt+dr(4)
其中d是舞蹈系數,r為[-1,1]之間的隨機數。這種上下移動在演算法中引入了一個隨機元素。

1.2 雌性蜉蝣的運動

與雄性不同,雌性蜉蝣不會成群聚集。它們會飛到雄性來繁殖。假設 y i t y_i^t yit為在時刻t時的蜉蝣i,它的位置的更新通過增加速度來更新:
y i t + 1 = y i t + v i t + 1 (5) y_i^{t+1} = y_i^{t} + v_i^{t+1}\tag{5} yit+1=yit+vit+1(5)
鑑於吸引過程是隨機的,我們決定將其建模為一個確定性過程。也就是說,根據它們的健狀屬性,最好的雌性應該被最好的雄性吸引,第二好的雌性應該被第二好的雄性吸引,等等。因此,考慮到極小化問題,速度的計算如下:
v i j t + 1 = { v i j t + a 2 e − β r m f 2 ( x i j t − y i j t ) , i f   f ( y i ) > f ( x i ) v i j t + f l ∗ r i f   f ( y i ) ≤ f ( x i ) (6) v_{ij}^{t+1} = \begin{cases} v_{ij}^{t} + a_2e^{-\beta r_{mf}^2}(x_{ij}^t - y_{ij}^t) , if\, f(y_i)>f(x_i)\\ v_{ij}^t + fl*r if \, f(y_i)\leq f(x_i) \end{cases}\tag{6} vijt+1={vijt+a2eβrmf2(xijtyijt),iff(yi)>f(xi)vijt+flriff(yi)f(xi)(6)
其中 v i j t v_{ij}^t vijt代表速度。 y i j t y_{ij}^t yijt代表蜉蝣的位置。 a 2 a_2 a2是一個正係數。 β \beta β是一個固定的能見係數。 r m f r_{mf} rmf代表雌性蜉蝣距離雄性蜉蝣的距離。 f l fl fl是一個隨機遊走係數,當雌性沒有被雄性攻擊時起作用。r是一個在範圍[-1,1]的隨機數。

1.3 蜉蝣交配

交叉運算元代表了兩個蜉蝣的交配過程:從雄性種群中選擇一個親本,從雌性種群中選擇一個。選擇父母的方式與雄性吸引雌性的方式相同。特別是,選擇可以是隨機的,也可以基於它們的適應度函式。在後者中,最好的雌性與最好的雄性繁殖,次好的雌性與次好的雄性繁殖。交叉的結果是兩個後代,其產生如下:
o f f s p r i n g 1 = L ∗ m a l e + ( 1 − L ) ∗ f e m a l e o f f s p r i n g 2 = L . f e m a l e + ( 1 − L ) ∗ m a l e (7) offspring1 = L*male+(1-L)*female\\ offspring2 = L.female + (1-L)*male \tag{7} offspring1=Lmale+(1L)femaleoffspring2=L.female+(1L)male(7)
其中male是父本,female是母本。L是一個特定範圍的隨機數。

蜉蝣演算法流程如下:

Step1 . 初始化雌性蜉蝣,雄性蜉蝣,設定引數。

Step2 . 計算適應度值,並且排序,獲取pbest和gbest。

Step3.依次跟新雄性蜉蝣,雌性蜉蝣位置,並且交配。

Step4.計算適應度,並更新pbest和gbest

Step5.是否滿足停止條件,如果滿足則退出,輸出結果,否則重複執行Step3-5。

2.演算法結果

在這裡插入圖片描述

3.參考文獻

[1]Konstantinos Zervoudakis,Stelios Tsafarakis. A mayfly optimization algorithm[J]. Computers & Industrial Engineering,2020,145.

4.Matlab程式碼

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