卓宏明,陳倩清
(浙江國(guó)際海運(yùn)職業(yè)技術(shù)學(xué)院 船舶工程學(xué)院,浙江 舟山 316021)
螢火蟲算法Firefly Algorithm(FA)是2008年YANG X S[1-2]提出的一種新型群智能優(yōu)化算法,其操作簡(jiǎn)單、參數(shù)少、易實(shí)現(xiàn),成為眾多學(xué)者研究的熱點(diǎn),在諸多領(lǐng)域得到了較好的應(yīng)用[3-6]。然而決定算法性能的參數(shù)選擇還缺少相關(guān)的深入研究,算法的參數(shù)設(shè)定對(duì)求解性能影響很大,因此,螢火蟲算法的參數(shù)優(yōu)化已成為急需解決的問(wèn)題。
螢火蟲算法基本思想是模擬螢火蟲的發(fā)光特性在一定區(qū)域內(nèi)尋找伙伴,向位置較優(yōu)的螢火蟲移動(dòng),以達(dá)到尋優(yōu)的目的。將問(wèn)題的目標(biāo)函數(shù)定義為螢火蟲所處位置的適應(yīng)度值,將優(yōu)化過(guò)程模擬成螢火蟲個(gè)體的相互吸引而引發(fā)的位置更新的過(guò)程,將個(gè)體的優(yōu)勝劣汰過(guò)程類比為搜索和優(yōu)化過(guò)程中用好的可行解取代較差可行解的迭代過(guò)程。
螢火蟲算法的尋優(yōu)主要由熒光亮度和吸引度兩個(gè)關(guān)鍵要素實(shí)現(xiàn)。主要公式包括相對(duì)相對(duì)螢光亮度公式、相對(duì)吸引度公式和位置更新公式[1-2],如下所示:
螢火蟲的相對(duì)螢光亮度為:
I=I0×e-γrij
(1)
其中,I0為初始光強(qiáng)度,即在光源(r=0)處的光強(qiáng)度,與目標(biāo)函數(shù)值相關(guān),目標(biāo)函數(shù)值越優(yōu)自身亮度越高;γ為光強(qiáng)吸收系數(shù)即吸收因子,以體現(xiàn)光強(qiáng)的減弱特性,一般情況下γ∈[0.01,100];r通常為螢火蟲i與j間的歐氏距離。
螢火蟲的吸引度為:
(2)
其中,β0為最大吸引力,即光源(r=0)處的吸引力。
螢火蟲i被螢火蟲j吸引而向其移動(dòng)的位置更新公式如下:
xj(t+1)=xj(t)+βij(rij)[xi(t)-xj(t)]+αεj
(3)
其中,t為算法迭代次數(shù);α為隨機(jī)步長(zhǎng),一般取值范圍為[0,1];εj通常是由高斯分布、均勻分布或其他分布生成的隨機(jī)數(shù)向量。
根據(jù)螢火蟲算的數(shù)學(xué)模型可知螢火蟲算法的需要設(shè)定的參數(shù)有:螢火蟲數(shù)量n,步長(zhǎng)因子α,光吸收因子γ,最大吸引度β0,最大迭代次數(shù)T,共5個(gè)參數(shù)。而對(duì)于大多數(shù)的應(yīng)用問(wèn)題,β0可取為1,通過(guò)單因素?cái)?shù)值試驗(yàn)測(cè)試經(jīng)典測(cè)試函數(shù)[7-8](見表1)分析螢火蟲算法其他4個(gè)參數(shù)對(duì)算法性能的影響。
表1 測(cè)試函數(shù)[7-8]
算法參數(shù)的經(jīng)驗(yàn)設(shè)置見表2,在進(jìn)行單因素試驗(yàn)時(shí)固定三個(gè)參數(shù),改變一個(gè)參數(shù)進(jìn)行仿真試驗(yàn)。試驗(yàn)環(huán)境為Windows 7,64位操作系統(tǒng),Core i5-4210U處理器,8 GB內(nèi)存,MATLAB 7.11版本。為降低隨機(jī)誤差,每個(gè)測(cè)試函數(shù)每組參數(shù)組合分別獨(dú)立運(yùn)行20次。
表2 算法參數(shù)經(jīng)驗(yàn)設(shè)置
根據(jù)經(jīng)驗(yàn)值,設(shè)置螢火蟲數(shù)量n=10、20、30、…、90、100。對(duì)3個(gè)測(cè)試函數(shù)進(jìn)行獨(dú)立運(yùn)行20次的數(shù)值試驗(yàn)。試驗(yàn)結(jié)果見表3,對(duì)應(yīng)各測(cè)試函數(shù)的平均最優(yōu)解曲線如圖1所示。
圖1螢火蟲數(shù)n對(duì)算法性能的影響
從理論定性地來(lái)看,螢火蟲數(shù)越多找到最優(yōu)解的可能性越大,算法的求解精度也越高,但也會(huì)產(chǎn)生大量重復(fù)解。從表3及圖1分析可以發(fā)現(xiàn)共性的規(guī)律:隨著螢火蟲數(shù)n的增多,對(duì)應(yīng)的平均最優(yōu)解也越精確,越趨于平緩,這與理論定性分析相吻合。但各測(cè)試函數(shù)又有其各自的特點(diǎn)。
Sphere函數(shù)的求解精度很高,并且最優(yōu)解與最差解差距也較小,具有較好的魯棒性。但當(dāng)螢火蟲數(shù)n超過(guò)50時(shí),求解精度已經(jīng)基本穩(wěn)定,過(guò)多的螢火蟲數(shù)反而會(huì)增加計(jì)算開銷,浪費(fèi)資源。根據(jù)圖表綜合考慮求解精度及計(jì)算開銷,對(duì)于Sphere函數(shù),螢火蟲數(shù)n取50時(shí)較為合理。
表3 螢火蟲數(shù)n對(duì)算法性能的影響
Rosenbrock函數(shù)由于其復(fù)雜性,螢火蟲算法對(duì)其求解精度不是非常高,并且最優(yōu)解與最差解差距也較大。根據(jù)圖表綜合考慮求解精度及計(jì)算開銷對(duì)于Rosenbrock函數(shù),螢火蟲數(shù)n取70時(shí)較為合理。
Rastrigin函數(shù)由于其易陷入局部最優(yōu),螢火蟲算法對(duì)其求解精度也不是非常高,最優(yōu)解與最差解差距一般。根據(jù)圖表綜合考慮求解精度及計(jì)算開銷對(duì)于Rastrigin函數(shù),螢火蟲數(shù)n取60時(shí)較為合理。
根據(jù)常用步長(zhǎng)因子取值區(qū)間α= [0,1],設(shè)置步長(zhǎng)因子α=0.1、0.2、0.3、…、0.9、1。對(duì)3個(gè)測(cè)試函數(shù)進(jìn)行獨(dú)立運(yùn)行20次的數(shù)值試驗(yàn)。試驗(yàn)結(jié)果見表4,對(duì)應(yīng)各測(cè)試函數(shù)的平均最優(yōu)解曲線如圖2所示。
表4 步長(zhǎng)因子α對(duì)算法性能的影響
圖2 步長(zhǎng)因子α對(duì)算法性能的影響
從理論角度定性地來(lái)看,步長(zhǎng)因子α直接影響螢火蟲尋優(yōu)移動(dòng)的步長(zhǎng),步長(zhǎng)越小求解越精確,但容易陷入局部最優(yōu),步長(zhǎng)越大收斂的速度越快,但會(huì)降低求解精度。從表4及圖2分析可見步長(zhǎng)因子的大小直接影響了算法的求解精度。各測(cè)試函數(shù)又有其各自的特點(diǎn)。
Sphere函數(shù)隨著步長(zhǎng)因子α的增加,算法的求解精度越差。但從整體來(lái)看平均求解精度在10-6和10-7,求解精度已經(jīng)很高,并且最優(yōu)解與最差解差距也較小,具有較好的魯棒性。步長(zhǎng)因子α越小精度越高,也越趨于平緩。根據(jù)圖表所示,對(duì)于Sphere函數(shù),步長(zhǎng)因子α取0.1時(shí)較為合理。
Rosenbrock函數(shù)隨著步長(zhǎng)因子α的增加,算法的求解精度越高,也越趨于平緩。根據(jù)圖表所示,對(duì)于Rosenbrock函數(shù),步長(zhǎng)因子α取1時(shí)較為合理。
Rastrigin函數(shù)隨著步長(zhǎng)因子α的增加,算法的求解精度越高,但有微小振蕩。根據(jù)圖表所示,對(duì)于Rastrigin函數(shù),步長(zhǎng)因子α取1時(shí)較為合理。
根據(jù)常用經(jīng)驗(yàn)值γ=1及取值區(qū)間γ= [0.01,100],設(shè)置光強(qiáng)吸收因子γ=0.01、0.05、0.1、0.5、1、5、10、50、100。對(duì)3個(gè)測(cè)試函數(shù)進(jìn)行獨(dú)立運(yùn)行20次的數(shù)值試驗(yàn)。試驗(yàn)結(jié)果見表5,對(duì)應(yīng)各測(cè)試函數(shù)的平均最優(yōu)解曲線如圖3所示。
從算法數(shù)學(xué)模型理論定性地來(lái)看,吸收因子γ越小體現(xiàn)光強(qiáng)的減弱越小,從而使得螢火蟲相對(duì)螢光亮度以及吸引度越大,越容易被位置優(yōu)的螢火蟲吸引,從而加速收斂。但也可能會(huì)降低隨機(jī)擾動(dòng)新解的開拓,反而降低求解精度。因此,需要合理設(shè)定吸收因子γ,以獲得較高的求解精度及求解速度。從表5及圖3分析可見其大小直接影響了算法的求解精度。各測(cè)試函數(shù)又有其各自的特點(diǎn)。
Sphere函數(shù)隨著吸收因子γ的增加,算法的求解精度越差,但有微小振蕩。從整體來(lái)看吸收因子在10及以下時(shí),平均求解精度在10-6和10-7,求解精度已經(jīng)很高,并且最優(yōu)解與最差解差距也較小,具有較好的魯棒性。根據(jù)圖表所示,對(duì)于Sphere函數(shù),吸收因子γ取0.5時(shí)較為合理。
Rosenbrock函數(shù)隨著吸收因子γ的增加,算法的求解精度越差。根據(jù)圖表所示,對(duì)于Rosenbrock函數(shù),吸收因子γ取0.01時(shí)較為合理。
Rastrigin函數(shù)隨著吸收因子γ的增加,算法的求解精度越高,但有微小振蕩。根據(jù)圖表所示,對(duì)于Rastrigin函數(shù),吸收因子γ取50時(shí)較為合理。
表5 吸收因子γ對(duì)算法性能的影響
圖3 吸收因子γ對(duì)算法性能的影響
根據(jù)經(jīng)驗(yàn)值,最大迭代次數(shù)T=100、200、300、…、900、1 000。對(duì)3個(gè)測(cè)試函數(shù)進(jìn)行獨(dú)立運(yùn)行20次的數(shù)值試驗(yàn)。試驗(yàn)結(jié)果見表6,對(duì)應(yīng)各測(cè)試函數(shù)的平均最優(yōu)解曲線如圖4所示。
從理論定性地來(lái)看,最大迭代次數(shù)T越大找到最優(yōu)解的可能性越大,算法的求解精度也越高,但會(huì)越趨于平緩,也會(huì)大量增加計(jì)算開銷。從表6及圖4分析可以發(fā)現(xiàn):Sphere函數(shù)和Rosenbrock函數(shù),隨著最大迭代次數(shù)T的增多,對(duì)應(yīng)的平均最優(yōu)解也越精確,越趨于平緩,這與理論定性分析相吻合。但Rastrigin函數(shù)卻處于小幅振蕩中,各測(cè)試函數(shù)有其各自的特點(diǎn)。
Sphere函數(shù)的求解精度很高,并且最優(yōu)解與最差解差距也較小,具有較好的魯棒性。但當(dāng)最大迭代次數(shù)T超過(guò)700時(shí),求解精度已經(jīng)基本穩(wěn)定,過(guò)多的迭代反而會(huì)增加計(jì)算開銷,浪費(fèi)資源,根據(jù)圖表綜合考慮求解精度及計(jì)算開銷,對(duì)于Sphere函數(shù)最大迭代次數(shù)T為700時(shí)較為合理。
Rosenbrock函數(shù)由于其復(fù)雜性,螢火蟲算法對(duì)其求解精度比Sphere函數(shù)低的多,并且最優(yōu)解與最差解差距也較大。根據(jù)圖表綜合考慮求解精度及計(jì)算開銷,對(duì)于Rosenbrock函數(shù)最大迭代次數(shù)T為700時(shí)較為合理。
Rastrigin函數(shù)由于其易陷入局部最優(yōu),螢火蟲算法對(duì)其求解精度也不是非常高,最優(yōu)解與最差解差距也較大。并且從圖表中發(fā)現(xiàn)其處于小幅振蕩,說(shuō)明只增大最大迭代次數(shù)無(wú)法提高其求解精度,需要綜合考慮其他各參數(shù)。綜合考慮求解精度及計(jì)算開銷,對(duì)于Rastrigin函數(shù)最大迭代次數(shù)T為700時(shí)較為合理。
表6 最大迭代次數(shù)T對(duì)算法性能的影響
圖4 最大迭代次數(shù)(T)對(duì)算法性能的影響
根據(jù)前面的算法參數(shù)分析及對(duì)各測(cè)試函數(shù)的仿真試驗(yàn)結(jié)果整理各對(duì)應(yīng)優(yōu)化參數(shù)見表7。
表7 算法參數(shù)優(yōu)化設(shè)置
再根據(jù)優(yōu)化前的經(jīng)驗(yàn)參數(shù)與優(yōu)化后的算法參數(shù)對(duì)各測(cè)試函數(shù)在相同測(cè)試環(huán)境下進(jìn)行對(duì)比數(shù)值實(shí)驗(yàn),各測(cè)試函數(shù)分別獨(dú)立運(yùn)行20次。試驗(yàn)結(jié)果對(duì)應(yīng)各測(cè)試函數(shù)的平均最優(yōu)解收斂曲線如圖5、圖6所示,對(duì)比結(jié)果見表8。
圖5 參數(shù)優(yōu)化前測(cè)試函數(shù)收斂曲線
圖6 參數(shù)優(yōu)化后測(cè)試函數(shù)收斂曲線
表8 算法參數(shù)優(yōu)化前后對(duì)比效果
從圖表中可見參數(shù)優(yōu)化后的3個(gè)測(cè)試函數(shù)隨著迭代次數(shù)的增加都明顯收斂,求解精度提高了1~2個(gè)數(shù)量級(jí),并且收斂代數(shù)也明顯減少,提高了算法的求解精度和速度。
(1)螢火蟲數(shù)n越大,螢火蟲算法的求解精度也越高,但越趨于平緩,也會(huì)產(chǎn)生大量重復(fù)解,增加計(jì)算開銷。步長(zhǎng)因子α越小求解越精確,但容易陷入局部最優(yōu),步長(zhǎng)因子越大收斂的速度越快,但會(huì)降低求解精度。吸收因子γ越小越可加速收斂,但也可能會(huì)降低隨機(jī)擾動(dòng)新解的開拓,降低求解精度。最大迭代次數(shù)T越大找到最優(yōu)解的可能性越大,算法的求解精度也越高,但會(huì)越趨于平緩,也會(huì)大量增加計(jì)算開銷。
(2)合理設(shè)置參數(shù)可以充分發(fā)揮算法的尋優(yōu)性能。螢火蟲算法參數(shù)優(yōu)化后比優(yōu)化前對(duì)各測(cè)試函數(shù)的求解精度和速度都有了明顯提高。求解精度提高了1~2個(gè)數(shù)量級(jí),并且收斂代數(shù)也明顯減少。
下一步將研究考慮各參數(shù)之間的相互影響及算法參數(shù)的動(dòng)態(tài)調(diào)整,并應(yīng)用于具體工程問(wèn)題。