国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

飛蛾撲火優(yōu)化算法的研究及改進(jìn)

2021-08-11 08:51汪雪瑩賀興時
河南科學(xué) 2021年7期
關(guān)鍵詞:測試函數(shù)飛蛾全局

汪雪瑩,賀興時

(西安工程大學(xué)理學(xué)院,西安 710600)

優(yōu)化是工程數(shù)學(xué)問題,優(yōu)化過程就是對特定問題找到最優(yōu)解決方案的過程.群智能優(yōu)化算法便屬于隨機(jī)優(yōu)化方法的范疇.群智能算法一般來源于對自然界中一些生物群體行為的模仿,具有操作簡單、易于并行處理、魯棒性強(qiáng)等特點(diǎn),已發(fā)展成為優(yōu)化問題中的研究熱點(diǎn).比較典型的群智能算法有粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)[1]、螢火蟲算法(Firefly Algorithm,F(xiàn)A)[2-3]、花授粉算法[4](Flower Pollination Algorithm,F(xiàn)PA)、布谷鳥優(yōu)化算法(Cuckoo Optimization Algorithm,COA)[5]、人工蜂群算法(Artificial Bee Colony Algorithm,ABC)[6]、人工魚群算法(Artificial Fish Swarms Algorithm,AFSA)[7]等.

飛蛾撲火算法(Moth-Flame Optimization Algorithm,MFO)是Mirjalili[8]于2015年提出的一種新型智能優(yōu)化算法.其靈感來源于一種特殊的導(dǎo)航機(jī)制—橫向定位導(dǎo)航機(jī)制,該算法具有模型簡單、參數(shù)少、局部搜索能力強(qiáng)、并行優(yōu)化能力強(qiáng)、全局性優(yōu)且不易落入局部極值的性能特征,因此在諸多領(lǐng)域有著其他智能優(yōu)化算法不具備的潛力,也逐漸引起了學(xué)術(shù)界和工程界的關(guān)注[9].飛蛾在晚上飛行時,因其與月亮相距較遠(yuǎn),所以飛蛾與月亮保持固定的角度即可保證自己沿直線飛行.文獻(xiàn)[10]通過引入混沌理論,利用Sinusoidal混沌函數(shù)對MFO算法的收斂因子進(jìn)行調(diào)整,分析證明該策略可以更好地平衡算法的全局探索與局部開發(fā)能力.文獻(xiàn)[11]中結(jié)合Levy飛行搜索策略提出了LMFO算法,Levy飛行搜索策略具有多數(shù)小步移動、偶爾大步移動的特點(diǎn),使MFO的搜索范圍擴(kuò)大.文獻(xiàn)[12]提出縱橫交叉混沌捕焰優(yōu)化算法,此算法運(yùn)用了縱橫交叉機(jī)制,使得火焰之間以及火焰的不同維度之間互相結(jié)合,并引入混沌算子,提高算法精確度和跳出局部最優(yōu)能力.文獻(xiàn)[13]提出基于折射原理反向?qū)W習(xí)的飛蛾撲火算法(ROBL-MFO),將歷史最優(yōu)火焰的平均值、反向?qū)W習(xí)策略以及折射操作引入到該算法中,能夠使火焰間的信息相互交流、跳出局部最優(yōu)解,從而提高算法的尋優(yōu)性能.

在求解復(fù)雜的峰值函數(shù)優(yōu)化問題時,對于MFO算法的收斂精度不高、收斂速度慢、易于陷入局部最優(yōu)等特點(diǎn),上述改進(jìn)仍具有局限性,因此需要設(shè)計一種新的改進(jìn)的MFO算法來提高M(jìn)FO的全局優(yōu)化性能.針對以上問題,本文提出自適應(yīng)飛蛾撲火優(yōu)化算法(AMFO),改進(jìn)策略如下:首先,在飛蛾與火焰的距離中加入動態(tài)自適應(yīng)步長因子,提高算法的全局尋優(yōu)的能力;其次,在火焰位置加入動態(tài)自適應(yīng)權(quán)重因子,更新尋優(yōu)方式,從而可以達(dá)到全局尋優(yōu)與局部尋優(yōu)相平衡,解決易于陷入局部最優(yōu)的缺陷,使得飛蛾的更新方式更加具有靈活性,促使算法沿著正確的方向進(jìn)行搜索.通過以上改進(jìn),可以顯著地改善算法的收斂精度和收斂速度以及易于陷入局部最優(yōu)的不足.

1 標(biāo)準(zhǔn)飛蛾撲火算法

1.1 MFO算法

在MFO算法中,飛蛾個體表示著優(yōu)化問題的候選解,飛蛾在優(yōu)化空間的位置代表求解優(yōu)化問題的變量,通過在優(yōu)化空間中改變位置向量來向全局最佳點(diǎn)靠攏,火焰便是飛蛾到當(dāng)前迭代次數(shù)所找到的最佳位置[14].MFO算法中,矩陣M表示飛蛾的位置.

其中:n代表飛蛾的個數(shù);d代表控制變量的數(shù)量(維度).矩陣OM存儲飛蛾的適應(yīng)度值,表示如下:

其中:n代表飛蛾的個數(shù).

MFO算法中要求每只飛蛾僅利用與之對應(yīng)的唯一火焰更新其自身位置,從而避免算法陷入局部極值情況,大大增強(qiáng)了算法的全局搜索能力.因此,搜索空間中飛蛾位置與火焰位置是相同維度的變量矩陣.矩陣F表示火焰的位置,火焰的適應(yīng)度值存儲在矩陣OF中:

其中:n代表飛蛾的個數(shù);d代表控制變量的數(shù)量(維度).

飛蛾實際上是在搜索空間內(nèi)移動的搜索個體,每一只飛蛾個體環(huán)繞在一個火焰的周圍,一旦搜索到更好的解,便更新為下一代中火焰的位置.

MFO算法是近似于優(yōu)化問題中全局最佳的三元組:

I是產(chǎn)生一個隨機(jī)的飛蛾種群和相應(yīng)的適應(yīng)度值的函數(shù).其系統(tǒng)模型如下:

P是使飛蛾在搜索空間里移動的主函數(shù).P接受矩陣M,并返回更新后的M.

如果滿足終止準(zhǔn)則,T函數(shù)返回真;如果不滿足,則T函數(shù)則返回假.

飛蛾撲火算法的一般框架為:

M=I(),

WhileT(M)is equal to false,

M=P(M),

end.

函數(shù)I初始化后,利用函數(shù)P使飛蛾在搜索空間內(nèi)的位置發(fā)生改變,輸出更新后的飛蛾矩陣,對更新后的飛蛾個體位置做出判斷.繼續(xù)進(jìn)行迭代或者終止算法并輸出結(jié)果,迭代運(yùn)行直至函數(shù)T返回真.

1.2 位置更新機(jī)制

1)撲焰行為.自然界中具有趨光特性的飛蛾Mi會朝著距離自身最近的亮光(火焰)Fj移動[15].飛蛾撲焰的移動軌跡為選取了對數(shù)螺線曲線,算法的對數(shù)螺旋曲線定義如下:

其中:S(Mi,Fj)為飛蛾更新后的位置;Di表示的是第i個飛蛾的位置與第j個火焰的位置之間的距離;b是常量,該常量與螺旋形狀相關(guān);t是隨機(jī)生成的數(shù)字,取值區(qū)間為[-1,1],當(dāng)t=-1時飛蛾離火焰最遠(yuǎn),當(dāng)t=1時飛蛾離火焰最近.

其中:Di為飛蛾Mi與火焰Fj的距離.

2)棄焰行為.MFO算法通過棄焰行為自適應(yīng)減少火焰數(shù)量,直到保持一個最優(yōu)的火焰位置為止,火焰減少過程如式(11)所示:

其中:N為火焰數(shù)量的最大值;l為當(dāng)前迭代次數(shù);T為最大迭代次數(shù).

2 改進(jìn)的飛蛾撲火算法

2.1 動態(tài)自適應(yīng)步長因子

傳統(tǒng)的MFO算法中飛蛾位置的更新機(jī)制是通過對數(shù)螺旋線函數(shù)實現(xiàn)的,但此函數(shù)只是對飛蛾飛向燭火進(jìn)行定義,這就易使飛蛾陷入局部最優(yōu),在全局尋優(yōu)時存在一定的不足.本文引進(jìn)文獻(xiàn)[16]采用的非線性動態(tài)自適應(yīng)步長方法,飛蛾在靠近燭火尋找最優(yōu)解時,自適應(yīng)步長的值較大時,表明算法可以搜索的范圍較大,搜索力度也較大從而能夠使飛蛾搜索能力增強(qiáng),提高飛蛾的全局尋優(yōu)能力.自適應(yīng)步長的公式如下:

將公式(12)應(yīng)用于飛蛾Mi與火焰Fj的距離中,其更新后的公式為:

其中:l為當(dāng)前迭代次數(shù);T為最大迭代次數(shù);?為參數(shù).

圖1 非線性變化動態(tài)步長因子α曲線圖Fig.1 Dynamic step size factorαcurve of nonlinear change

2.2 動態(tài)自適應(yīng)權(quán)重因子

慣性權(quán)重ω是一個可以改變搜索范圍的參數(shù),當(dāng)ω減小時,在算法后期的探測能力增強(qiáng),從而能夠在最優(yōu)解附近進(jìn)行仔細(xì)地搜索.

MFO算法采用螺旋函數(shù)作為飛蛾的更新函數(shù),但在解決大規(guī)模高維復(fù)雜優(yōu)化問題時,算法不能保證收斂速度,針對這一問題,采用動態(tài)自適應(yīng)權(quán)重因子.飛蛾在靠近火焰尋找最優(yōu)解時,用動態(tài)自適應(yīng)權(quán)重因子對飛蛾算法進(jìn)行改進(jìn)[17],動態(tài)自適應(yīng)權(quán)重因子ω的表達(dá)式為:

其中:l為當(dāng)前迭代次數(shù);T為最大迭代次數(shù).

通過引入動態(tài)自適應(yīng)權(quán)重因子改變了火焰更新系數(shù)恒為1的狀態(tài),又因為余弦函數(shù)的最大值為1,因而飛蛾算法的速度更新系數(shù)就由恒定值1變?yōu)樵冢?,2]之間動態(tài)變化的值,從而全局搜索和局部搜索得到平衡.將公式(14)應(yīng)用到更新火焰位置的對數(shù)螺旋線函數(shù)中表達(dá)式為:

動態(tài)自適應(yīng)權(quán)重和第j個火焰相乘,是隨著迭代次數(shù)的增加從1到0非線性自適應(yīng)減小的,使得飛蛾朝著正確的搜索方向進(jìn)行,并能夠有效地提高算法的精度.

2.3 改進(jìn)后的算法(AMFO)步驟

Step1:初始化參數(shù):設(shè)置飛蛾的種群大小n、搜索空間的維度d、空間上界ub和下界lb、最大迭代次數(shù)T以及火焰數(shù)量N;

Step2:在可行域空間內(nèi)初始化飛蛾的位置;

Step3:對每只飛蛾的適應(yīng)度值進(jìn)行計算,對得到的適應(yīng)度值按從小到大進(jìn)行排序,找出最優(yōu)的飛蛾位置并將其賦值給火焰;

Step4:利用式(14)更新動態(tài)自適應(yīng)慣性權(quán)重以及火焰的位置;

Step5:利用式(12)更新動態(tài)自適應(yīng)步長,按式(13)更新飛蛾與火焰的距離Di;

Step6:利用式(15)更新飛蛾的位置;

Step7:利用式(11)減少火焰的數(shù)量,迭代次數(shù)l=l+1;

Step8:判斷是否滿足終止條件.若不滿足,則返回Step3繼續(xù)進(jìn)行迭代搜索;若滿足,則輸出整個迭代過程中火焰的最優(yōu)位置以及所對應(yīng)的適應(yīng)度值,停止迭代搜索即算法結(jié)束.

3 仿真實驗

3.1 測試函數(shù)

為了驗證改進(jìn)的算法AMFO的尋優(yōu)效果,本文采用群智能算法常用的8個測試函數(shù)對其仿真實驗.表1給出了這8個測試函數(shù)的表達(dá)式、維度、搜索空間范圍以及最優(yōu)值,其中f1~f4為多峰函數(shù),f5~f8為單峰函數(shù).單峰函數(shù)有且僅有一個全局最優(yōu)值,所以更加適合對算法的收斂程度進(jìn)行檢測;而多峰函數(shù)則存在著大量的局部最優(yōu)值,因此它們對檢測算法的局部最優(yōu)起著極其重要的作用[18-19].實驗中所用的8個測試函數(shù)如表1所示.

表1 測試函數(shù)Tab.1 Test functions

3.2 測試結(jié)果分析比較

將AMFO算法與基本的MFO算法、基于混沌飛蛾火焰優(yōu)化[20](Chaotic Moth-Flame Optimization Algorithm,CMFO)、布谷鳥算法[21](Cuckoo Search Algorithm,CS)、蝙蝠算法[22](Bat Algorithm,BA)四種不同的算法進(jìn)行對比分析.將算法的參數(shù)設(shè)置為:飛蛾數(shù)量n設(shè)為25,最大迭代次數(shù)設(shè)為1000次,分別將函數(shù)維度設(shè)為10維、50維、100維進(jìn)行測試,且每個測試函數(shù)均獨(dú)立運(yùn)行50次,分別求出標(biāo)準(zhǔn)差(Std.)、最優(yōu)值(best)、平均值(mean)、最劣值(worst)作為測試結(jié)果,然后對AMFO算法進(jìn)行評估,測試對比結(jié)果見表2~表9.

表2 f1函數(shù)測試結(jié)果Tab.2 Test results of f1 function

表3 f2函數(shù)測試結(jié)果Tab.3 Test results of f2 function

表4 f3函數(shù)測試結(jié)果Tab.4 Test results of f3 function

表5 f4函數(shù)測試結(jié)果Tab.5 Test results of f 4 function

表6 f5函數(shù)測試結(jié)果Tab.6 Test results of f5 function

表7 f6函數(shù)測試結(jié)果Tab.7 Test results of f6 function

表8 f7函數(shù)測試結(jié)果Tab.8 Test results of f7 function

表9 f8函數(shù)測試結(jié)果Tab.9 Test results of f8 function

從表2~表9可以看出,無論是多峰函數(shù)還是單峰函數(shù),AMFO算法都比MFO算法具有更好的尋優(yōu)能力,在精度上AMFO也表現(xiàn)得更為顯著.隨著維度的增加,AMFO算法表現(xiàn)出更為卓越的搜索能力和更加穩(wěn)定的收斂能力.CMFO算法、MFO算法、CS算法、BA算法在維度增加的過程中,求解精度會發(fā)生明顯的下降,且無法找到全局的最優(yōu)點(diǎn).CMFO算法與AMFO算法相比較,當(dāng)維度為10維時,有著尋優(yōu)精度上的差別,但是在50維和100維的情況下,CMFO算法則無法找到全局的最優(yōu)點(diǎn).

經(jīng)過1000次迭代,函數(shù)f4和函數(shù)f6沒有收斂到理論最優(yōu)值,但是AMFO算法與CMFO算法、MFO算法、CS算法、BA算法相比較,AMFO算法的精度始終很高,表現(xiàn)出了良好的求解能力.函數(shù)f6在維度50、100時,CS算法的標(biāo)準(zhǔn)差明顯高于AMFO算法,則在單峰函數(shù)f6的情況下維數(shù)越高,CS算法比AMFO算法更穩(wěn)定.與其他算法對比發(fā)現(xiàn),AMFO算法的標(biāo)準(zhǔn)差小于其他四種算法,說明AMFO算法的魯棒性更強(qiáng),且算法的穩(wěn)定性更高.在平均值方面,AMFO算法的平均值最小,可以看出AMFO算法的收斂精度優(yōu)于其他四種算法.

對于多峰函數(shù)f1、f2、f3,AMFO算法直接收斂到了最小值0,但是其他四種算法都容易陷入局部最優(yōu)值.在維度為10維時,對于函數(shù)f4在最優(yōu)解的精度上提高了120個數(shù)量級,函數(shù)f5提高了33個數(shù)量級,函數(shù)f6提高了175個數(shù)量級,函數(shù)f7提高了34個數(shù)量級,函數(shù)f8提高了33個數(shù)量級.

綜上所述,改進(jìn)后的飛蛾算法AMFO算法具有更高的收斂精度、更強(qiáng)的穩(wěn)定性、更快的收斂速度.

3.3 算法收斂曲線分析

為了方便更加直觀地比較算法的性能,圖2~圖9給出了8個測試函數(shù)下五種算法的收斂曲線.

圖2 函數(shù)f1的收斂曲線圖Fig.2 Convergence curves of f1 function

圖4 函數(shù)f3的收斂曲線圖Fig.4 Convergence curves of f3 function

圖5 函數(shù)f4的收斂曲線圖Fig.5 Convergence curves of f 4 function

圖6 函數(shù)f5的收斂曲線圖Fig.6 Convergence curves of f5 function

圖7 函數(shù)f6的收斂曲線圖Fig.7 Convergence curves of f6 function

圖8 函數(shù)f7的收斂曲線圖Fig.8 Convergence curves of f7 function

圖9 函數(shù)f8的收斂曲線圖Fig.9 Convergence curves of f8 function

以上收斂曲線圖均為函數(shù)在維度為10維時所做的測試.從圖2~圖9可以看出,AMFO算法的收斂速度明顯優(yōu)于其他四種算法,并且基本在迭代100次以內(nèi)均可收斂至全局最優(yōu),由此說明AMFO算法在收斂速度和收斂精度方面要比其他四種算法好得多.如圖2所示,AMFO算法的收斂速度和收斂精度明顯優(yōu)于其他四種算法,并且BA算法的收斂精度最差;從圖3、圖6、圖8和圖9可以看出,在迭代50次時,AMFO算法收斂到最優(yōu)值;在圖4和圖7中,AMFO算法的收斂曲線幾乎垂直,收斂速度非???,在很短的時間內(nèi)找到了全局最優(yōu)的解,因此AMFO算法可以較快的速度獲得高質(zhì)量的解,從而有效地避免了算法早熟和局部收斂的缺陷.

由上述對這五種算法的收斂曲線比對分析能夠看出,無論多峰函數(shù)還是單峰函數(shù),AMFO算法都具有較好的尋優(yōu)能力和較快的收斂速度.

4 結(jié)語

本文在標(biāo)準(zhǔn)的MFO算法的基礎(chǔ)上引入了動態(tài)自適應(yīng)步長因子和動態(tài)自適應(yīng)權(quán)重這兩個優(yōu)化策略,提出了一種自適應(yīng)飛蛾撲火算法(AMFO),有效地避免了飛蛾撲火算法陷入局部最優(yōu)、收斂精度低且收斂速度慢等問題.通過8個測試函數(shù)在不同維度下,對AMFO算法進(jìn)行仿真驗證,可以清楚地看出AMFO算法的尋優(yōu)能力、求解精度以及收斂速度等方面都有大幅度的改進(jìn),能夠克服早熟收斂和陷入局部最優(yōu)等缺陷,對于維數(shù)較高、較復(fù)雜的非線性函數(shù),有著較好的尋優(yōu)精度和收斂速度,并且算法的穩(wěn)定性、魯棒性也相對較好.

猜你喜歡
測試函數(shù)飛蛾全局
基于改進(jìn)空間通道信息的全局煙霧注意網(wǎng)絡(luò)
解信賴域子問題的多折線算法
一種基于精英選擇和反向?qū)W習(xí)的分布估計算法
可愛的你
Trolls World Tour魔發(fā)精靈2
飛蛾說
基于自適應(yīng)調(diào)整權(quán)重和搜索策略的鯨魚優(yōu)化算法
落子山東,意在全局
記憶型非經(jīng)典擴(kuò)散方程在中的全局吸引子
具有收縮因子的自適應(yīng)鴿群算法用于函數(shù)優(yōu)化問題
崇礼县| 南开区| 屏南县| 名山县| 长沙市| 凤冈县| 南漳县| 清水河县| 思茅市| 霞浦县| 闻喜县| 云阳县| 嘉义县| 敖汉旗| 灯塔市| 湘潭县| 玛曲县| 怀来县| 沙田区| 建湖县| 霍林郭勒市| 长武县| 满城县| 特克斯县| 民丰县| 保靖县| 泗洪县| 察隅县| 栖霞市| 三河市| 麻栗坡县| 全椒县| 渭南市| 灯塔市| 浏阳市| 阜城县| 内乡县| 黄陵县| 柳林县| 嘉定区| 曲阜市|