本發(fā)明涉及一種基于模擬退火與高斯擾動(dòng)的煙花算法。
背景技術(shù):
:
煙花算法(FWA)是譚營教授于2010年因受到煙花在夜空中爆炸的啟發(fā)而提出的一種群體智能算法。FWA通過模擬煙花在空中爆炸的這種行為建立相應(yīng)的數(shù)學(xué)模型,通過引入隨機(jī)因素和選擇策略形成一種并行爆炸式搜索方式,進(jìn)而發(fā)展為能夠求解復(fù)雜問題最優(yōu)解的全局概率搜索方法。FWA與一般群體智能優(yōu)化算法類似,首先隨機(jī)初始化N個(gè)煙花,然后每個(gè)煙花經(jīng)歷爆炸和變異操作,并應(yīng)用映射規(guī)則保證變異后的個(gè)體仍然在可行域內(nèi),最后保留最優(yōu)的煙花,然后應(yīng)用選擇策略從剩下的煙花中選擇出N-1個(gè)煙花,同最優(yōu)的煙花組成群體進(jìn)行下一次迭代。目前,煙花算法已被應(yīng)用到許多實(shí)際優(yōu)化問題求解中,應(yīng)用領(lǐng)域包括方程組求解、非負(fù)矩陣分解的計(jì)算、垃圾郵件檢測算法中參數(shù)優(yōu)化等。
煙花算法的基本原則:若煙花對應(yīng)的適應(yīng)度函數(shù)值越小,則該煙花爆炸產(chǎn)生的火花數(shù)量越多,爆炸幅度越小;反之,若煙花對應(yīng)的適應(yīng)度函數(shù)值越大,則該煙花爆炸產(chǎn)生的火花數(shù)量越少,且爆炸幅度越大。
一般地,煙花算法由爆炸算子、變異爆炸、映射規(guī)則和選擇策略四部分組成。
基于以上的原則,煙花算法的基本步驟可以概括如下:
步驟1隨機(jī)初始化種群;
步驟2運(yùn)用爆炸算子產(chǎn)生火花;
步驟3運(yùn)用變異算子產(chǎn)生火花;
步驟4運(yùn)用映射規(guī)則將越界的火花拉回可行域內(nèi);
步驟5利用選擇策略從所有的個(gè)體(煙花和火花)選出下一代群體;
步驟6是否滿足終止條件,滿足則停止,不滿足則返回步驟2繼續(xù)搜索。
與其他智能優(yōu)化算法一樣,煙花算法也存在后期收斂速度慢、易陷入局部最優(yōu)解,并且隨著位置偏移的增大,煙花算法的穩(wěn)定性差等問題,本發(fā)明為了解決上述問題,將模擬退火的思想引入到煙花算法中,并對煙花算法中某些單個(gè)的煙花個(gè)體進(jìn)行高斯擾動(dòng),提出了一種基于模擬退火與高斯擾動(dòng)的煙花算法(SAFWA)。
技術(shù)實(shí)現(xiàn)要素:
為了解決煙花算法也存在后期收斂速度慢、易陷入局部最優(yōu)解,并且隨著位置偏移的增大,煙花算法的穩(wěn)定性差等問題,本發(fā)明提出了一種基于模擬退火與高斯擾動(dòng)的煙花算法,在收斂速度和計(jì)算精度以及穩(wěn)定性發(fā)面這種算法均優(yōu)于煙花算法(FWA)、標(biāo)準(zhǔn)粒子群算法(SPSO)、增強(qiáng)煙花算法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于模擬退火與高斯擾動(dòng)的煙花算法,其特征是包括如下步驟:
步驟1:隨機(jī)給煙花的位置賦值,計(jì)算煙花的適應(yīng)度值,生成初始種群;
步驟2:設(shè)置煙花個(gè)數(shù)N,最大火花數(shù)Max,最小火花數(shù)Min,需要求解函數(shù)的可行域D,高斯變異的火花數(shù)Ng,爆炸幅度之和以及最大的函數(shù)評(píng)估次數(shù)Itmax;
步驟3:找出初始種群里面適應(yīng)值最差的個(gè)體,記錄其位置信息Pworst;
步驟4:初始化初始溫度T0、終止溫度Tf、退火系數(shù)a和最大迭代次數(shù)Imax;
步驟5:對當(dāng)前適應(yīng)值最差的個(gè)體進(jìn)行高斯變異,得到一個(gè)新解xnew:
xnewk=pworstk*g,k=1,2,...,d
其中,pworstk表示最差個(gè)體的第k維,g是服從均值和方差都為1的正態(tài)分布,即g~N(1,1),d表示每個(gè)個(gè)體的設(shè)置的維數(shù);
步驟6:比較高斯擾動(dòng)前后的適應(yīng)值的大?。?/p>
步驟7:如果高斯擾動(dòng)后的適應(yīng)度值更優(yōu)(對最小化問題,更優(yōu)就是適應(yīng)度值更小),則接受高斯擾動(dòng)后的解,并且更新相應(yīng)的位置;如果高斯擾動(dòng)后的目標(biāo)值沒有高斯擾動(dòng)前的優(yōu),則以一定的概率p去接受該解:
其中,Δx是高斯擾動(dòng)后的適應(yīng)度值和高斯擾動(dòng)前的適應(yīng)度值的差值,T為當(dāng)前的溫度,r是隨機(jī)產(chǎn)生的一個(gè)0和1之間的隨機(jī)數(shù)。
步驟8:執(zhí)行退溫操作:
T=T*a
其中T的初始值為T0;
步驟9:若滿足停止條件(達(dá)到設(shè)置的最大迭代次數(shù)或者溫度達(dá)到最低溫度),則搜索停止,輸出優(yōu)化后的結(jié)果,否則,轉(zhuǎn)到步驟5繼續(xù)尋找適應(yīng)度值更優(yōu)的位置;
步驟10:通過步驟9,即經(jīng)過模擬退火和高斯擾動(dòng)得到一個(gè)更優(yōu)的解,用得到的新解去替換初始種群的最差煙花個(gè)體,組成一個(gè)新的煙花初始種群,新的煙花種群繼續(xù)執(zhí)行煙花算法流程進(jìn)行迭代尋優(yōu);
步驟11:通過爆炸算子產(chǎn)生相應(yīng)個(gè)數(shù)的火花個(gè)體,最大個(gè)數(shù)不能超過Max,最少不能低于Min;
步驟12:通過變異算子產(chǎn)生Ng個(gè)變異煙花;
步驟13:對超出界限的所有煙花(煙花、火花和變異火花)運(yùn)用映射規(guī)則,將其拉回可行域D內(nèi);
步驟14:然后通過選擇策略(精英-輪盤賭)得到下一代煙花群體,即先選擇當(dāng)前種群最優(yōu)的煙花的進(jìn)入下一次尋優(yōu),然后依據(jù)輪盤賭的方式去選擇剩下的N-1個(gè)煙花進(jìn)入下一次尋優(yōu);
步驟15:若滿足停止條件(達(dá)到設(shè)置的最大的函數(shù)評(píng)估次數(shù)),則搜索停止,輸出最后優(yōu)化的結(jié)果,否則,轉(zhuǎn)到步驟3進(jìn)行繼續(xù)尋優(yōu)。
本發(fā)明的有益效果是:
對煙花算法進(jìn)行了改進(jìn),將模擬退火的思想引入到煙花算法中,運(yùn)用模擬退火進(jìn)行局部搜索,增加煙花算法的局部搜索性能,提高算法的收斂速度。并在煙花算法中對初始種群中的適應(yīng)值最差的煙花進(jìn)行高斯擾動(dòng),從而得到一個(gè)比最差的煙花個(gè)體更好的精英解進(jìn)一步調(diào)整優(yōu)化的種群;隨著溫度的逐漸降低,接受差解得幾率越來越小,從而提高了算法的收斂速度和計(jì)算精度以及穩(wěn)定性。
附圖說明
圖1為本發(fā)明方法的流程圖;
圖2為Sphere函數(shù)穩(wěn)定性曲線對比圖;
圖3為Schwefe函數(shù)穩(wěn)定性曲線對比圖。
具體實(shí)施方式:
現(xiàn)有的煙花算法存在后期收斂速度慢、易陷入局部最優(yōu)解,并且隨著位置偏移的增大,煙花算法的穩(wěn)定性差等問題,針對這些問題,對煙花算法進(jìn)行了改進(jìn),將模擬退火的思想引入到煙花算法中,并對煙花算法中某些單個(gè)的煙花個(gè)體進(jìn)行高斯擾動(dòng)。
步驟1:隨機(jī)給煙花的位置賦值,計(jì)算煙花的適應(yīng)度值,生成初始種群;步驟2:設(shè)置煙花個(gè)數(shù)N=5,最大火花數(shù)Max=40,最小火花數(shù)Min=2,需要求解函數(shù)的可行域D(不同的函數(shù)不一樣),高斯變異的火花數(shù)Ng=5,爆炸幅度之和A=40以及函數(shù)最大評(píng)估次數(shù)Itmax=300000;
步驟3:找出初始種群里面適應(yīng)值最差的個(gè)體,記錄其位置信息Pworst;
步驟4:初始化初始溫度T0=10000、終止溫度Tf=1、退火系數(shù)a=0.99和最大迭代次數(shù)Imax=500;
步驟5:對當(dāng)前適應(yīng)值最差的個(gè)體進(jìn)行高斯變異,得到一個(gè)新解xnew:
xnewk=pworstk*g,k=1,2,...,d
其中,pworstk表示最差個(gè)體的第k維,g是服從均值和方差都為1的正態(tài)分布,即g~N(1,1),d表示每個(gè)個(gè)體的設(shè)置的維數(shù);
步驟6:比較高斯擾動(dòng)前后的適應(yīng)值的大?。?/p>
步驟7:如果高斯擾動(dòng)后的適應(yīng)度值更優(yōu)(對最小化問題,更優(yōu)就是適應(yīng)度值更小),則接受高斯擾動(dòng)后的解,并且更新相應(yīng)的位置;如果高斯擾動(dòng)后的目標(biāo)值沒有高斯擾動(dòng)前的優(yōu),則以一定的概率p去接受該解:
其中,Δx是高斯擾動(dòng)后的適應(yīng)度值和高斯擾動(dòng)前的適應(yīng)度值的差值,T為當(dāng)前的溫度,r是隨機(jī)產(chǎn)生的一個(gè)0和1之間的隨機(jī)數(shù)。
步驟8:執(zhí)行退溫操作:
T=T*a
其中T的初始值為T0;
步驟9:若滿足停止條件(達(dá)到設(shè)置的最大迭代次數(shù)或者溫度達(dá)到最低溫度),則搜索停止,輸出優(yōu)化后的結(jié)果,否則,轉(zhuǎn)到步驟5繼續(xù)尋找適應(yīng)度值更優(yōu)的位置;
步驟10:通過步驟9,即經(jīng)過模擬退火和高斯擾動(dòng)得到一個(gè)更優(yōu)的解,用得到的新解去替換初始種群的最差煙花個(gè)體,組成一個(gè)新的煙花初始種群,新的煙花種群繼續(xù)執(zhí)行煙花算法流程進(jìn)行迭代尋優(yōu);
步驟11:通過爆炸算子產(chǎn)生相應(yīng)個(gè)數(shù)的火花個(gè)體,最大個(gè)數(shù)不能超過Max,最少不能低于Min;
步驟12:通過變異算子產(chǎn)生Ng個(gè)變異煙花;
步驟13:對超出界限的所有煙花(煙花、火花和變異火花)運(yùn)用映射規(guī)則,將其拉回可行域D內(nèi);
步驟14:然后通過選擇策略(精英-輪盤賭)得到下一代煙花群體,即先選擇當(dāng)前種群最優(yōu)的煙花的進(jìn)入下一次尋優(yōu),然后依據(jù)輪盤賭的方式去選擇剩下的N-1個(gè)煙花進(jìn)入下一次尋優(yōu);
步驟15:若滿足停止條件(達(dá)到設(shè)置的最大的迭代次數(shù)),則搜索停止,輸出最后優(yōu)化的結(jié)果,否則,轉(zhuǎn)到步驟3進(jìn)行繼續(xù)尋優(yōu)。
此外,分別把煙花算法(FWA)、標(biāo)準(zhǔn)粒子群算法(SPSO)、增強(qiáng)煙花算法(EFWA)和SAFWA在基準(zhǔn)測試函數(shù)中進(jìn)行仿真對比,結(jié)果表明在收斂速度和計(jì)算精度以及穩(wěn)定性方面SAFWA均優(yōu)于其他三種算法。
四種算法的參數(shù)設(shè)置如表1所示,
表1參數(shù)設(shè)置
由于在測試函數(shù)中,許多函數(shù)的最優(yōu)點(diǎn)在原點(diǎn)位置附近,而基本煙花算法存在這一個(gè)特點(diǎn),即具有非常強(qiáng)大的原點(diǎn)位置附近的搜索能力。因此,實(shí)驗(yàn)在該測試集合上面增加了位置偏移,位置偏移大小與優(yōu)化問題的搜索范圍有關(guān),如表2所示,其中Max、Min為優(yōu)化問題的搜索范圍,SI表示偏移索引,SV表示偏移值大小。
表2基準(zhǔn)測試函數(shù)的位置偏移描述
本實(shí)驗(yàn)采用的2個(gè)典型的基準(zhǔn)測試函數(shù)均來自全局優(yōu)化測試函數(shù)庫。其函數(shù)的基本特征如表3所示:
表3基準(zhǔn)測試函數(shù)基本特征
表4 Sphere函數(shù)全局最優(yōu)平均值對比(SI為偏移索引)
表5 Schwefe函數(shù)全局最優(yōu)平均值對比(SI為偏移索引)
圖2是SAFWA為了與EFWA、SPSO和FWA比較在Sphere函數(shù)上,隨著位置偏移增大的時(shí)候各算法的穩(wěn)定性。
圖3是SAFWA為了與EFWA、SPSO和FWA比較在Schwefel函數(shù)上,隨著位置偏移增大的時(shí)各算法的穩(wěn)定性。
由圖2和表4可知,隨著函數(shù)的位置偏移的變大,SAFWA相對于FWA、EFWA取得了更加明顯的性能優(yōu)勢,但是SPSO比SAFWA性能好。
由圖3和表5可知,隨著函數(shù)的位置偏移的不斷變大,SPSO和FWA相對于EFWA和SAFWA有很差的性能,且全局最優(yōu)值也在不斷的變大,穩(wěn)定性差。SAFWA和EFWA都具有穩(wěn)定性,但是SAFWA比EFWA具有更好的收斂性。
從以上可以得出:本發(fā)明提出將模擬退火算法與煙花算法相結(jié)合,對適應(yīng)值最差的煙花進(jìn)行高斯擾動(dòng),從而得到一個(gè)比最差的煙花個(gè)體更好的精英解;隨著溫度的逐漸降低,接受差解得幾率越來越小,從而提高了算法的收斂性能;通過對2個(gè)基準(zhǔn)測試函數(shù)的仿真實(shí)驗(yàn)表明,SAFWA算法收斂性能和計(jì)算精度在不同程度上優(yōu)于FWA算法、EFWA算法和SPSO算法,且隨著位移位置的不斷增大,SAFWA相對于其他三種算法具有很好的穩(wěn)定性。