智能優(yōu)化算法:飛蛾撲火優(yōu)化算法

智能優(yōu)化算法:飛蛾撲火優(yōu)化算法-附代碼

@[toc]
摘要:飛餓撲火優(yōu) 化 算 法 ( Moth-flame optimization algorithm,MFO) 是Seyedali Mirjalili等于2015年提出的一種新型智能優(yōu)化算法[1]。該算法具有并行優(yōu)化能力強,全局性優(yōu)且不易落入局部極值的性能特征,逐漸引起了學術界和工程界的關注。

1.算法原理

飛蛾在夜間飛行時采用橫向定位的特殊導航機制。在這種機制中,飛蛾通過維持自身相對月亮的角度固定進行飛行,由于月亮距離飛蛾非常遙遠,飛蛾利用這種近似的平行光可以保持直線飛行。雖然這種導航機制對飛蛾非常有效,但實際中存在許多人工或自然點光源,這種光源與月亮相比距離飛蛾非常近,當飛蛾依然與光源保持固定的角度飛行時,就會導致導航失效并且產(chǎn)生致命的螺旋式飛行路徑。

在 MFO 算法中,假設飛蛾是求解問題的候選解,待求變量是飛蛾在空間的位置。因此,通過改變其自身的位置向量,飛蛾可以飛行在一維、二維、三維、甚至更高維度的空間。由于 MFO 算法本質(zhì)上是一種群體智能優(yōu)化算法,所以飛蛾種群在矩陣中可以表示如下:
M = \left[ \begin{matrix} m_{1,1},m_{1,2},...,m_{1,d}\\ m_{1,1},m_{1,2},...,m_{1,d}\\ .........\\ m_{n,1},m_{n,2},...,m_{n,d}\end{matrix} \right]\tag{1}
其中:n代表飛蛾的個數(shù);d代表待求控制變量的個數(shù)(問題的維度)。對于這些飛蛾,同樣假設存在與之對應的一列適應度值向量,表示如下:
O_{M}=\left[\begin{matrix} O_{M1}\\ O_{M2}\\ ...\\ O_{Mn}\end{matrix} \right]\tag{2}
MFO 算法中要求每只飛蛾僅利用與之對應的唯一火焰更新其自身位置,從而避免算法陷入局部極值情況,大大增強了算法的全局搜索能力。因此,搜索空間中飛蛾位置與火焰位置是相同維度的變量矩陣:
F = \left[ \begin{matrix} F_{1,1},F_{1,2},...,F_{1,d}\\ F_{1,1},F_{1,2},...,F_{1,d}\\ .........\\ F_{n,1},F_{n,2},...,F_{n,d}\end{matrix} \right]\tag{3}

O_{F}=\left[\begin{matrix} O_{F1}\\ O_{F2}\\ ...\\ O_{Fn}\end{matrix} \right]\tag{4}

在迭代過程中,2 個矩陣中變量的更新策略有所不同。飛蛾實際上是在搜索空間內(nèi)移動的搜索個體,而火焰則是目前為止所對應的飛蛾能夠達到的最優(yōu)位置。每一只飛蛾個體環(huán)繞在一個火焰的周圍,一旦搜索到更好的解,便更新為下一代中火焰的位置。

為了對飛蛾撲火的飛行行為進行數(shù)學建模,每只飛蛾相對火焰的位置更新機制可采用方程表示 :
M_{i}=S(M_{i},F_{j})\tag{5}
其中:M_{i}表示第 i 只飛蛾;F_{j}表示第j個火焰;S表示螺旋函數(shù)。該函數(shù)滿足以下條件:

1)螺旋函數(shù)的初始點應從飛蛾開始;
2)螺旋的終點為火焰的位置;
3)螺旋的波動范圍不應超過其搜索空間。
S(M_{i},F_{j})=D_{i}.e^{bt}.cos(2\pi t)+F_{j}\tag{6}
其中:D_{i}表示第 i 只飛蛾與第 j 個火焰之間的距離;b 為所定義的對數(shù)螺旋形狀常數(shù),路徑系數(shù)t為[-1,1]中的隨機數(shù)。D 的表達式如下:
D_{i}=|F_{j}-M_{i}|\tag{7}
其中:M_{i}代表第i 只飛蛾;F_{j}代表第j 個火焰;D_{i}表示第i 只飛蛾與第 j 個火焰的距離。

圖1.對數(shù)螺旋以及火焰周圍的空間

式(6)模擬了飛蛾螺旋飛行的路徑,可以看出,飛蛾更新的下一個位置由其圍繞的火焰確定。如 圖 1 所示,螺旋函數(shù)中系數(shù) t 表示飛蛾下一個位置與火焰接近的距離(t=-1 表示與火焰最近的位置,而 t=1 表示最遠的位置)。螺旋方程表明飛蛾可以環(huán)繞在火焰的周圍而不僅僅是在它們之間的空間飛行,從而保障了算法的全局搜索能力與局部開發(fā)能力。圖2 為飛蛾圍繞一個火焰時位置更新模型。當一只飛蛾(藍色水平線)圍繞一個火焰(綠色水平線)飛行時,若更新后飛蛾位置(黑色水平線)的適應度值優(yōu)于當代所對應的火焰,則其更新后的位置將被選擇為下一代火焰的位置(例如標號 2 所示),因此該飛蛾具有局部開發(fā)能力。采用該模型時具有以下特征:

1)通過修改參數(shù) t,一只飛蛾可以收斂到火焰的任意的鄰域范圍內(nèi)。
2)t 越小,飛蛾距離火焰越近。
3)隨著飛蛾越來越接近火焰,其在火焰周圍更新的頻率越來越快。

圖2.一只飛蛾根據(jù)對應的火焰利用對數(shù)螺線可以達到的可能位置

上述的火焰位置更新機制能夠保證飛蛾在火焰周圍的局部開發(fā)能力。為了提高找到更優(yōu)解的概率,將當前找到的最優(yōu)解作為下一代火焰的位置。因此,火焰位置矩陣 F 通常包含了當前找到的最優(yōu)解。在優(yōu)化的過程中,每一只飛蛾根據(jù)矩陣 F 更新自身的位置。MFO 算法中存在的路徑系數(shù) t[r,1]內(nèi)的隨機數(shù),變量 r 在優(yōu)化迭代過程中在[-1, -2]按迭代次數(shù)線性減少。通過這種處理,隨著迭代過程的進行,飛蛾將更加精確地趨近于其對應序列中的火焰。每次迭代后,根據(jù)適應度值將火焰位置進行重新排序得到更新后的火焰序列如圖 3 所示。在下一代中,飛蛾根據(jù)與他們所對應序列中的火焰更新自身的位置。

圖3.飛蛾火焰分配圖

n 只飛蛾每一次的位置更新均基于搜索空間中n 個不同的位置,則會降低算法的局部開發(fā)能力。為了解決這個問題,針對火焰的數(shù)量提出了一種自適應機制,使得在迭代過程中火焰的數(shù)量可以自適 應地減少,從而平衡了算法在搜索空間中的全局搜索能力與局部開發(fā)能力,公式如下:
flame.no=round(N-l*\frac{N-1}{T})\tag{8}
其中:l 是當前迭代次數(shù);N 是最大火焰數(shù);T 表示最大迭代次數(shù)。同時,由于火焰的減少,每一代中與序列中所減少的火焰所對應的飛蛾則根據(jù)當前適應度值最差的火焰更新其自身位置。

2.算法流程

1)MFO 算法初始化,設置輸入最優(yōu)潮流控制變量維度 d,飛蛾種群搜索規(guī)模 n,最大迭代次數(shù) T以及對數(shù)螺旋形狀常數(shù) b 等參數(shù)。
2)待求變量初始化,在搜索空間中隨機生成飛蛾位置,并評估每只飛蛾對應的適應度值。
3)將飛蛾空間位置以適應度值遞增的順序排序后賦值給火焰,作為第一代中火焰的空間位置。
4)采用式(5)更新當前代飛蛾的位置。
5)將更新后的飛蛾位置與火焰位置的適應度值重新排序,選取適應度值更優(yōu)的空間位置更新為下一代火焰的位置。
6)以式(8)自適應機制減少火焰的數(shù)量。
7)返回步驟 6)進入下一代,直至迭代次數(shù)滿足算法要求。
10)輸出并顯示優(yōu)化結(jié)果,程序結(jié)束。

3.算法結(jié)果

算法結(jié)果

4.參考文獻

[1]Seyedali Mirjalili. Moth-flame optimization algorithm: A novel nature-inspired heuristic paradigm[J]. Knowledge-Based Systems,2015,89.

[2]王子琪,陳金富,張國芳,楊琪,代宇涵.基于飛蛾撲火優(yōu)化算法的電力系統(tǒng)最優(yōu)潮流計算[J].電網(wǎng)技術,2017,41(11):3641-3647.

5.MATLAB代碼

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

文獻復現(xiàn):基于Levy飛行的飛蛾撲火優(yōu)化算法(LMFO)
[1]李志明,莫愿斌.基于Lévy飛行的飛蛾撲火優(yōu)化算法[J].計算機工程與設計,2017,38(03):807-813.

文獻復現(xiàn):基于交叉算子和非均勻變異算子的飛蛾撲火優(yōu)化算法(CNMFO)
[1]張保東,張亞楠,郭黎明,江進禮,趙嚴振.基于交叉算子和非均勻變異算子的飛蛾撲火優(yōu)化算法[J].計算機與數(shù)字工程,2020,48(11):2622-2627.

文獻復現(xiàn):結(jié)合重心反向變異的飛蛾撲火優(yōu)化算法(IMFO)
[1]宋婷婷,張琳娜.結(jié)合重心反向變異的飛蛾撲火優(yōu)化算法[J].智能計算機與應用,2020,10(12):104-107+115.

6.Python 代碼

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

最后編輯于
?著作權歸作者所有,轉(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)容