智能優(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)化算法,所以飛蛾種群在矩陣中可以表示如下:
其中:代表飛蛾的個數(shù);
代表待求控制變量的個數(shù)(問題的維度)。對于這些飛蛾,同樣假設存在與之對應的一列適應度值向量,表示如下:
MFO 算法中要求每只飛蛾僅利用與之對應的唯一火焰更新其自身位置,從而避免算法陷入局部極值情況,大大增強了算法的全局搜索能力。因此,搜索空間中飛蛾位置與火焰位置是相同維度的變量矩陣:
在迭代過程中,2 個矩陣中變量的更新策略有所不同。飛蛾實際上是在搜索空間內(nèi)移動的搜索個體,而火焰則是目前為止所對應的飛蛾能夠達到的最優(yōu)位置。每一只飛蛾個體環(huán)繞在一個火焰的周圍,一旦搜索到更好的解,便更新為下一代中火焰的位置。
為了對飛蛾撲火的飛行行為進行數(shù)學建模,每只飛蛾相對火焰的位置更新機制可采用方程表示 :
其中:表示第 i 只飛蛾;
表示第
個火焰;
表示螺旋函數(shù)。該函數(shù)滿足以下條件:
1)螺旋函數(shù)的初始點應從飛蛾開始;
2)螺旋的終點為火焰的位置;
3)螺旋的波動范圍不應超過其搜索空間。
其中:表示第 i 只飛蛾與第
個火焰之間的距離;
為所定義的對數(shù)螺旋形狀常數(shù),路徑系數(shù)
為[-1,1]中的隨機數(shù)。
的表達式如下:
其中:代表第
只飛蛾;
代表第
個火焰;
表示第
只飛蛾與第
個火焰的距離。
式(6)模擬了飛蛾螺旋飛行的路徑,可以看出,飛蛾更新的下一個位置由其圍繞的火焰確定。如 圖 1 所示,螺旋函數(shù)中系數(shù)
1)通過修改參數(shù) ,一只飛蛾可以收斂到火焰的任意的鄰域范圍內(nèi)。
2) 越小,飛蛾距離火焰越近。
3)隨著飛蛾越來越接近火焰,其在火焰周圍更新的頻率越來越快。
上述的火焰位置更新機制能夠保證飛蛾在火焰周圍的局部開發(fā)能力。為了提高找到更優(yōu)解的概率,將當前找到的最優(yōu)解作為下一代火焰的位置。因此,火焰位置矩陣
若
其中:
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é)果
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.