周志鵬 謝瑾秋 程佰健
【摘 要】由于原猴群算法中的參數(shù)過多且固定,若設(shè)置不準(zhǔn)確,會喪失猴群多樣性且易陷入局部最優(yōu)值。針對這些不足,本文提出了一種新型的自適應(yīng)猴群算法——基于高斯變異的自適應(yīng)猴群算法(GAMA)。GAMA改變了原本固定的步長及視野,使其隨著迭代次數(shù)的變化而變化,這樣無論在算法的前期或者后期,都有較強的搜索能力。對于猴群算法容易陷入局部最優(yōu)的缺點,本文采用高斯變異的方法,對數(shù)次迭代過程中未改變的局部最優(yōu)值進行高斯變異,不僅使猴群能夠有效擺脫局部極值的束縛,也加強了對局域再搜索能力。最后通過對多峰測試函數(shù)驗證,結(jié)果表明GAMA算法無論在精度,穩(wěn)定性,克服早熟及收斂速度方面都有顯著提高。
【關(guān)鍵詞】猴群算法;自適應(yīng);高斯變異
The Self-Adaptive Monkey Algorithm Based on Gaussian Mutation
ZHOU Zhi-peng XIE Jin-qiu CHEN Bai-jian
(Chaohu University,Chaohu Anhui 238000,China)
【Abstract】Due to so much fixed parametersof the monkey algorithm , if the setting is not accurate, especially makes the loss of diversity,falling into the most superior con- ditions easily. Aiming at this shortcoming, this paper proposes a novel adaptive monkey algorithm ——The Self-Adaptive Monkey Algorithm based on gaussian mutation (GAMA), change the original fixed step length and the field of vision, make its changes with the change of the number of iterations, so no matter early or late in the algorithm, has a strong ability of search; Especially for the algorithm easy to fall into local optimum of faults , this paper USES the method of gauss-ian mutation did not change in the process of this method for several iterations gauss mutation localoptimal value, not only make monkeys can effectively get rid of the bondage of local extremum, but also strengthened the ability of local LAN to search again. Finally by using functions to exam, the resul- ts show that theopyimization precision, algorithm stability ,overcome the premature and convergence speed of GAMA algorithm are improved significantly.
【Key words】Monkey algorithm;Self-adaptive;Gaussian mutation
0 引言
在智能算法不斷推陳出新的現(xiàn)在,猴群算法(Monkey Algorithm,MA)作為新興智能優(yōu)化算法,擺脫了以往啟發(fā)式算法“維數(shù)災(zāi)難”[1-2]的困擾。該算法通過模擬大自然中猴群爬山行為,設(shè)計出爬、望和跳三個過程來求解多維、多峰函數(shù)[3-4]的優(yōu)化問題。但由于MA中的參數(shù)過多、固定,使得算法后期的收斂速度減緩;并且算法的性能跟參數(shù)設(shè)置有很大的關(guān)系,如果參數(shù)設(shè)置不準(zhǔn)確,就會喪失猴群多樣性,易發(fā)生算法過早收斂,陷入局部最優(yōu)的情況[5],從而無法獲得全局最優(yōu)解。針對這個缺點,文獻[6]通過引入歐氏距離來增強猴群的多樣性,并加入和聲算法中的隨機擾動機制,以提高其全局搜索能力;文獻[7]引入望過程參數(shù)遞增機制,提高了算法后期的收斂速度;文獻[8-9]引入混沌搜索,通用參數(shù)避免陷入局部最優(yōu),提高算法性能。但這些方法在搜索性能和尋優(yōu)能力上都不同程度地存在一些不足,鑒于此,本文提出一種基于高斯變異的自適應(yīng)猴群算法(簡稱GAMA)。
1 猴群算法的自適應(yīng)改進過程
1.1 自適應(yīng)步長[9]和視野
原猴群算法采用固定的步長和視野。算法初期具有較快的收斂速度,但在后期,算法的的收斂較慢。為了彌補這一不足,提出了如下改進:
1.1.1 步長衰減變化策略:step=step·θ,其中θ∈(0,1)為衰減因子,隨著迭代的進程而自適應(yīng)地減小步長大小;在算法前期,使用較大的步長,可以增強全局搜索能力;但隨著迭代的進行,如果仍然采用初始步長,會使搜索的結(jié)果不精確,故自適應(yīng)地減小步長,有利于在算法的后期增強局部的搜索能力。
1.1.2 視野遞增變化策略:Visual(new)=Visual(old)+Visual(old)·ρ,其中ρ為遞增因子。因為猴群算法利用跳過程來擺脫局部最優(yōu)的困擾,在算法前期,賦予一個較小的跳半徑,使其能夠保持搜索的精度;但在算法運行后期,如果跳的距離過短,就可能陷入局部最優(yōu)值。
即使猴群算法的跳過程從機制上來講是為了跳出局部最優(yōu),但由于參數(shù)的人工初始化設(shè)置等原因,猴群算法也會陷入局部最優(yōu)值。為此,本文進一步提出了以下改進。
1.2 猴群的高斯變異
什么是高斯變異[11]?高斯變異就是在原有個體的狀態(tài)上加一個服從高斯分布的隨機向量。高斯分布(Gaussian distribution),也稱作為正態(tài)分布(Normal distribution),在數(shù)理統(tǒng)計及其概率論學(xué)科當(dāng)中占有舉足輕重的地位。同樣,在數(shù)學(xué)、物理等諸多領(lǐng)域都有著重大的影響力。若隨機變量X服從一個數(shù)學(xué)期望為μ、方差為σ2的高斯分布,記為N(μ,σ2)。其概率密度函數(shù)為:
f(x)=■exp-■
期望值μ決定了其位置,其標(biāo)準(zhǔn)差σ決定了分布的幅度。由于正態(tài)分布的特征和性質(zhì),在自然界中很多現(xiàn)象和隨機因素均可近似地用正態(tài)分布描述。
針對猴群算法而言,在迭代過程中,處于最優(yōu)位置上的猴子很容易陷入局部最優(yōu)解,以至于在多次迭代過程中,“最優(yōu)值”都不變。例如,函數(shù)f1(x)=■x■■,[-100,100]n,fmin=0。猴群算法(采用固定步長和固定視野)尋優(yōu)就陷入了局部最優(yōu)值69895.516361,出現(xiàn)的次數(shù)占總迭代次數(shù)的52.9%,并且實際尋得的最優(yōu)解0.625722跟理論值0也相差很多。為了避免這一情況的出現(xiàn),使猴群能夠擺脫局部極值的束縛,較早的開始收斂,我們對猴群中的最優(yōu)個體增加一個隨機擾動項,該擾動項服從高斯分布。即對尋優(yōu)過程得出的最優(yōu)值在二十次迭代運算未發(fā)生改變的情況下,對最優(yōu)猴位置采取Gauss變異,表達式為Xbest_new=Xbest_old+Gauss(0,1)·Xbest_old,其中Gauss(0,1)為標(biāo)準(zhǔn)正態(tài)分布。這樣能夠使算法較早跳出局部最優(yōu)值,易實現(xiàn)全局收斂(詳見第3節(jié))。
2 改進的猴群算法
2.1 改進的猴群行為描述
2.1.1 猴群初始化過程
正整數(shù)M表示猴群的群體規(guī)模,猴群的個體位置由Xi=(xi1+xi2,…,xin),i=1,2,…,M表示,x對應(yīng)著優(yōu)化問題中的決策變量,M對應(yīng)著決策變量的個數(shù)。
2.1.2 (步長衰減)爬過程
(1)隨機生成向量Δxi=(Δxi1,Δxi2,…,Δxin),滿足:
■
其中α(α>0)為爬過程中的步長,k(k=1,2,…)表示爬的次數(shù),即爬過程中的迭代次數(shù)。
(2)計算:
■其中向量■為目標(biāo)函數(shù)在點Xi的偽梯度;
(3)令■且y=(y1,y2,…,yn);
(4)如果y滿足函數(shù)條件,則用y來替換xi,否則xi不變;
(5)αk+1=θαk;k=k+1;
其中θ(0<θ<1)表示遞減因子。可以看出每次迭代步長遞減,這樣有利于在算法的后期運行中,保證解得精確度,增強局部搜索能力。
重復(fù)步驟(1)至(5),當(dāng)k滿足條件時循環(huán)結(jié)束。
2.1.3 (視野遞增)望過程
經(jīng)過爬過程,目標(biāo)函數(shù)達到了當(dāng)前最優(yōu)。之后,猴子開始眺望,觀察周圍領(lǐng)域是否存在比當(dāng)前山峰更高的山峰,即是否存在更優(yōu)解。如果存在,則跳到更高的山峰,更新當(dāng)前的位置。望過程如下:
(1)隨機從視野范圍(xij-βIter,xij+βIter)內(nèi)產(chǎn)生實數(shù)y=(y1,y2,…yn)。其中Iter為當(dāng)前的迭代次數(shù);
(2)如果f(y)≥f(xi)時,并且y滿足函數(shù)條件,則用y來替換xi;否則重復(fù)步驟(1)直到找到合適的y或者滿足一定的運行次數(shù)為止;
(3)以y做為初始位置,重復(fù)爬過程。
2.1.4 (在視野范圍內(nèi))跳過程
(1)由于經(jīng)歷過爬過程→望過程→爬過程后,我們假設(shè)猴子已經(jīng)不能再其視野范圍內(nèi)找到更好的位置了,所以沿著指向支點pj= xij-xij的方向,跳到視野范圍內(nèi)的較優(yōu)位置上,即x ,其中β是望過程中的視野參數(shù);
(2)令yi=xij+θ(pj-xij),若y=(y1,y2,…,yn)可用,則令xi=y;否則重復(fù)步驟(1)(2);
爬→望→爬→跳過程完成了一次迭代過程,在每次迭代過程中,視野β隨迭代次數(shù)的增加而遞增,即βIter+1=βIter+βIter·ρ,其中ρ為遞增因子,這就是1.1.2節(jié)所講的視野遞增變化策略,其中Iter為當(dāng)前迭代次數(shù),N為總迭代次數(shù)。
2.2 改進后算法的基本流程
改進后算法的基本流程如下:
(1)計算初始化過程,定義計算所需的初始條件,設(shè)置相關(guān)的參數(shù);
(2)通過2.1節(jié)的猴群行為得出當(dāng)前迭代下的最優(yōu)函數(shù)值;
(3)對該最優(yōu)函數(shù)值進行判斷,判斷其在二十次迭代中都未發(fā)生變化,則跳轉(zhuǎn)步驟5,進行高斯變異;否則,進入下一次循環(huán)迭代;
(4)判斷是否達到最大循環(huán)迭代次數(shù),若滿足,則輸出計算的結(jié)果;不滿足,則返回步驟(2);
(5)對處于最優(yōu)位置的猴子進行Gauss變異,生成的新猴群重復(fù)步驟(2)的操作;
(6)當(dāng)總迭代次數(shù)達到最大設(shè)定次數(shù)時候終止。
說明:步驟(5)就是猴群的高斯變異。
3 GAMA性能測試
為測試改進后猴群算法的性能,這里采用以下五個經(jīng)典驗證函數(shù)對其進行驗證:
MA和GAMA參數(shù)設(shè)置如表1所示。在Microsoft Visual C++平臺上,通過C++編程算法,運行電腦配置為Win7、Intel Core i3 M350 2.27GHz處理器、2G內(nèi)存。尋優(yōu)測試結(jié)果見表2。
表1 MA和GAMA參數(shù)設(shè)置
表2 MA和GAMA測試結(jié)果
對于測試函數(shù)f1~f5,MA和GAMA迭代對比過程見圖1~圖5。
圖1 函數(shù)1 MA和GAMA迭代過程比較
圖2 函數(shù)2 MA和GAMA迭代過程比較
圖6 函數(shù)f1的MA和GAMA算法20次運算結(jié)果比較
對所有函數(shù),算法連續(xù)運算20次。其中函數(shù)f1的尋優(yōu)結(jié)果對比見圖6??梢奙A和GAMA算法運算20次最優(yōu)值都不變,限于篇幅,其余函數(shù)的不同算法對比結(jié)果不再一一列出。
本文還將GAMA算法與遺傳算法(GA)和粒子群算法(PSO)做對比研究,對測試函數(shù)f1~f5的求解結(jié)果見表3。
表3 GAMA、GA、PSO算法的測試結(jié)果統(tǒng)計
此外, GAMA算法還實現(xiàn)在不同維數(shù)下的尋優(yōu)結(jié)果,見表4。
注:測試函數(shù)f4的維數(shù)為5時,迭代總次數(shù)設(shè)置為80次.
4 結(jié)果分析
4.1 GAMA和MA尋優(yōu)性能比較
4.1.1 收斂精度
從表2的測試結(jié)果可以看出,針對測試函數(shù)1~5,GAMA算法找到的值0.004545、0.022183、-1566.646323、-3611.783171和0.004006都要比MA算法找到的最優(yōu)值0.625722、0.686747、-1566.597321、-3472.150206、0.495808更加地接近理論最優(yōu)解。尤其是對函數(shù)f1、f3、f5,在保留小數(shù)點后兩位的情況下,我們可以認(rèn)為GAMA算法成功找到了理論最優(yōu)解。
但MA和GAMA算法對函數(shù)4的尋優(yōu)結(jié)果-3611.783171、-3472.150206并不理想,與理論最優(yōu)值-8379.658相差較遠,這有待進一步改進。但無論如何,在精度方面GAMA算法都要優(yōu)于MA算法。
4.1.2 收斂速度
從圖1~圖5可以看出,除了函數(shù)f4,針對其余函數(shù)GAMA在算法進行高斯變異后就開始收斂,雖然變異后值較大,但開始迭代的時間要快于MA算法。并且觀察圖1~圖5中收斂的區(qū)域,可以發(fā)現(xiàn),GAMA算法在收斂時,迭代圖形的陡峭程度要比MA算法高。換言之,GAMA算法有著較快的收斂速度和“下坡能力”。但對于函數(shù)f4,MA和GAMA的收斂速度相當(dāng)。
4.1.3 穩(wěn)定性
將MA算法與GAMA算法對5個函數(shù)各運行20次,如f1的算法對比結(jié)果見圖6(其他測試函數(shù)對比結(jié)果類似)。由圖可見,對于20次運算結(jié)果,MA和GAMA都保持一致,不會出現(xiàn)偶爾一兩次運算結(jié)果不一樣的情況,這也足以說明GAMA算法較穩(wěn)定。
4.2 GAMA與遺傳算法(GA)和粒子群算法(PSO)尋優(yōu)結(jié)果比較分析
為了較全面地體現(xiàn)GAMA的特性,我們將GAMA算法與GA和PSO算法進行比較,同樣地對函數(shù)f1~f5進行尋優(yōu)測試,結(jié)果如表3所示。可以看出,除了測試函數(shù)4,其余的測試函數(shù)GAMA算法在尋得結(jié)果的精度方面都很大程度地優(yōu)于GA算法。PSO算法一直以其實現(xiàn)容易、精度高、收斂快等優(yōu)點著稱,故在求解函數(shù)f1、f2時找到了理論最優(yōu)值0和局部極值0.0142,要較優(yōu)于GAMA算法尋得的結(jié)果0.004545和0.022183,誤差僅在0.455%~0.80%之間;對于函數(shù)f1、f5,GAMA算法在精度方面的優(yōu)勢就有著較明顯的體現(xiàn),比PSO尋得的結(jié)果更加接近理論值。
4.3 GAMA在不同維數(shù)下尋優(yōu)結(jié)果分析
正如引言所述,一般的算法難以避免維數(shù)的災(zāi)難?;诖?,我們選取不同的維數(shù)5、10、20、30、40、50、60來測試GAMA算法求解高維問題的能力及其穩(wěn)定性。從表4可以看出,不同維數(shù)下的尋優(yōu)結(jié)果,沒有較大的波動。如函數(shù)f1,在不同維數(shù)下尋得的結(jié)果0、0、0.004545、0.012961、0.029157、0.047024、0.073767只有少許的增長幅度;對測試函數(shù)f3、f4的結(jié)果f(3)min=-78.33236n、f(4)min=-418.9829n跟維數(shù)有著直接的關(guān)系,所以尋得的結(jié)果會不同。但如果將最優(yōu)值除以各自的維數(shù),那么不同維數(shù)下尋得的結(jié)果波動性很小。故GAMA算法與MA算法一樣,對維數(shù)的敏感度較低(MA算法維數(shù)敏感度可參考文獻[9]),不會陷入維數(shù)的災(zāi)難。
5 結(jié)束語
本文根據(jù)原猴群算法的特點,改變其原有的固定步長和視野,使其自適應(yīng)增加或遞減,有效地提高了猴群算法尋優(yōu)的精度與收斂速度;并且引入高斯變異隨機擾動機制,使很好地保持了猴群的多樣性,同時也避免算法陷入局部極值和早熟現(xiàn)象。最后我們利用5個經(jīng)典的多峰測試函數(shù)驗證算法的性能,結(jié)果有力地表明了GAMA算法的優(yōu)越性和有效性。
【參考文獻】
[1]T.Back,F(xiàn).Hoffmeister,and H.Schwefel.A survey of evolution strategies[J].Proceedings of the Fourth International Conference on Genetic Algorithms,132-139,san Diego,Academic Press,1991.
[2]H.Beye and H.Schwefel.A comperhensive introdution : Evolution strategies[J].Natural Computing,2002,1(1).
[3]張愛華,曹曉剛,鐘守楠.求多峰函數(shù)全部全局最優(yōu)解的改進遺傳算法[J].數(shù)學(xué)雜志,2009(1):56-60.
[4]朱葛俊.基于人工免疫的多峰函數(shù)優(yōu)化算法研究[J].計算機仿真,2012,29(5):239-243.
[5]Y.Leung and Y.Wang. An orthogonal genetic algorithm with quantization for Global numerical optimization[J].IEEE Transactions on Evolutionary Computation,2001,5(1):41-53.
[6]伊廷華,張旭東,李宏男.基于改進猴群算法的傳感器優(yōu)化布置方法研究[J].計算力學(xué)學(xué)報,2013,30(2):218-223.
[7]王靖然,余貽鑫,曾沅.離散猴群算法及其在輸電網(wǎng)擴展規(guī)劃中的應(yīng)用[J].天津大學(xué)學(xué)報, 2010(9):798-803.
[8]駱晨鐘,邵惠鶴.用混沌搜索求解非線性約束優(yōu)化問題[J].系統(tǒng)工程理論與實踐,2000(8):54-58.
[9]郝士鵬.混沌猴群算法及其應(yīng)用[D].天津大學(xué):天津大學(xué)經(jīng)濟與管理學(xué)部,2010.
[10]歐陽喆,周永權(quán).自適應(yīng)步長螢火蟲優(yōu)化算法[J].計算機應(yīng)用,2011,31(7):1804-1807.
[11]陶楊,韓維,張磊.基于群體行為的自適應(yīng)變異算子魚群算法[J].中國電子科學(xué)研究院學(xué)報,2013,10(5):491-495.
[責(zé)任編輯:湯靜]
表2 MA和GAMA測試結(jié)果
對于測試函數(shù)f1~f5,MA和GAMA迭代對比過程見圖1~圖5。
圖1 函數(shù)1 MA和GAMA迭代過程比較
圖2 函數(shù)2 MA和GAMA迭代過程比較
圖6 函數(shù)f1的MA和GAMA算法20次運算結(jié)果比較
對所有函數(shù),算法連續(xù)運算20次。其中函數(shù)f1的尋優(yōu)結(jié)果對比見圖6??梢奙A和GAMA算法運算20次最優(yōu)值都不變,限于篇幅,其余函數(shù)的不同算法對比結(jié)果不再一一列出。
本文還將GAMA算法與遺傳算法(GA)和粒子群算法(PSO)做對比研究,對測試函數(shù)f1~f5的求解結(jié)果見表3。
表3 GAMA、GA、PSO算法的測試結(jié)果統(tǒng)計
此外, GAMA算法還實現(xiàn)在不同維數(shù)下的尋優(yōu)結(jié)果,見表4。
注:測試函數(shù)f4的維數(shù)為5時,迭代總次數(shù)設(shè)置為80次.
4 結(jié)果分析
4.1 GAMA和MA尋優(yōu)性能比較
4.1.1 收斂精度
從表2的測試結(jié)果可以看出,針對測試函數(shù)1~5,GAMA算法找到的值0.004545、0.022183、-1566.646323、-3611.783171和0.004006都要比MA算法找到的最優(yōu)值0.625722、0.686747、-1566.597321、-3472.150206、0.495808更加地接近理論最優(yōu)解。尤其是對函數(shù)f1、f3、f5,在保留小數(shù)點后兩位的情況下,我們可以認(rèn)為GAMA算法成功找到了理論最優(yōu)解。
但MA和GAMA算法對函數(shù)4的尋優(yōu)結(jié)果-3611.783171、-3472.150206并不理想,與理論最優(yōu)值-8379.658相差較遠,這有待進一步改進。但無論如何,在精度方面GAMA算法都要優(yōu)于MA算法。
4.1.2 收斂速度
從圖1~圖5可以看出,除了函數(shù)f4,針對其余函數(shù)GAMA在算法進行高斯變異后就開始收斂,雖然變異后值較大,但開始迭代的時間要快于MA算法。并且觀察圖1~圖5中收斂的區(qū)域,可以發(fā)現(xiàn),GAMA算法在收斂時,迭代圖形的陡峭程度要比MA算法高。換言之,GAMA算法有著較快的收斂速度和“下坡能力”。但對于函數(shù)f4,MA和GAMA的收斂速度相當(dāng)。
4.1.3 穩(wěn)定性
將MA算法與GAMA算法對5個函數(shù)各運行20次,如f1的算法對比結(jié)果見圖6(其他測試函數(shù)對比結(jié)果類似)。由圖可見,對于20次運算結(jié)果,MA和GAMA都保持一致,不會出現(xiàn)偶爾一兩次運算結(jié)果不一樣的情況,這也足以說明GAMA算法較穩(wěn)定。
4.2 GAMA與遺傳算法(GA)和粒子群算法(PSO)尋優(yōu)結(jié)果比較分析
為了較全面地體現(xiàn)GAMA的特性,我們將GAMA算法與GA和PSO算法進行比較,同樣地對函數(shù)f1~f5進行尋優(yōu)測試,結(jié)果如表3所示??梢钥闯?,除了測試函數(shù)4,其余的測試函數(shù)GAMA算法在尋得結(jié)果的精度方面都很大程度地優(yōu)于GA算法。PSO算法一直以其實現(xiàn)容易、精度高、收斂快等優(yōu)點著稱,故在求解函數(shù)f1、f2時找到了理論最優(yōu)值0和局部極值0.0142,要較優(yōu)于GAMA算法尋得的結(jié)果0.004545和0.022183,誤差僅在0.455%~0.80%之間;對于函數(shù)f1、f5,GAMA算法在精度方面的優(yōu)勢就有著較明顯的體現(xiàn),比PSO尋得的結(jié)果更加接近理論值。
4.3 GAMA在不同維數(shù)下尋優(yōu)結(jié)果分析
正如引言所述,一般的算法難以避免維數(shù)的災(zāi)難?;诖耍覀冞x取不同的維數(shù)5、10、20、30、40、50、60來測試GAMA算法求解高維問題的能力及其穩(wěn)定性。從表4可以看出,不同維數(shù)下的尋優(yōu)結(jié)果,沒有較大的波動。如函數(shù)f1,在不同維數(shù)下尋得的結(jié)果0、0、0.004545、0.012961、0.029157、0.047024、0.073767只有少許的增長幅度;對測試函數(shù)f3、f4的結(jié)果f(3)min=-78.33236n、f(4)min=-418.9829n跟維數(shù)有著直接的關(guān)系,所以尋得的結(jié)果會不同。但如果將最優(yōu)值除以各自的維數(shù),那么不同維數(shù)下尋得的結(jié)果波動性很小。故GAMA算法與MA算法一樣,對維數(shù)的敏感度較低(MA算法維數(shù)敏感度可參考文獻[9]),不會陷入維數(shù)的災(zāi)難。
5 結(jié)束語
本文根據(jù)原猴群算法的特點,改變其原有的固定步長和視野,使其自適應(yīng)增加或遞減,有效地提高了猴群算法尋優(yōu)的精度與收斂速度;并且引入高斯變異隨機擾動機制,使很好地保持了猴群的多樣性,同時也避免算法陷入局部極值和早熟現(xiàn)象。最后我們利用5個經(jīng)典的多峰測試函數(shù)驗證算法的性能,結(jié)果有力地表明了GAMA算法的優(yōu)越性和有效性。
【參考文獻】
[1]T.Back,F(xiàn).Hoffmeister,and H.Schwefel.A survey of evolution strategies[J].Proceedings of the Fourth International Conference on Genetic Algorithms,132-139,san Diego,Academic Press,1991.
[2]H.Beye and H.Schwefel.A comperhensive introdution : Evolution strategies[J].Natural Computing,2002,1(1).
[3]張愛華,曹曉剛,鐘守楠.求多峰函數(shù)全部全局最優(yōu)解的改進遺傳算法[J].數(shù)學(xué)雜志,2009(1):56-60.
[4]朱葛俊.基于人工免疫的多峰函數(shù)優(yōu)化算法研究[J].計算機仿真,2012,29(5):239-243.
[5]Y.Leung and Y.Wang. An orthogonal genetic algorithm with quantization for Global numerical optimization[J].IEEE Transactions on Evolutionary Computation,2001,5(1):41-53.
[6]伊廷華,張旭東,李宏男.基于改進猴群算法的傳感器優(yōu)化布置方法研究[J].計算力學(xué)學(xué)報,2013,30(2):218-223.
[7]王靖然,余貽鑫,曾沅.離散猴群算法及其在輸電網(wǎng)擴展規(guī)劃中的應(yīng)用[J].天津大學(xué)學(xué)報, 2010(9):798-803.
[8]駱晨鐘,邵惠鶴.用混沌搜索求解非線性約束優(yōu)化問題[J].系統(tǒng)工程理論與實踐,2000(8):54-58.
[9]郝士鵬.混沌猴群算法及其應(yīng)用[D].天津大學(xué):天津大學(xué)經(jīng)濟與管理學(xué)部,2010.
[10]歐陽喆,周永權(quán).自適應(yīng)步長螢火蟲優(yōu)化算法[J].計算機應(yīng)用,2011,31(7):1804-1807.
[11]陶楊,韓維,張磊.基于群體行為的自適應(yīng)變異算子魚群算法[J].中國電子科學(xué)研究院學(xué)報,2013,10(5):491-495.
[責(zé)任編輯:湯靜]
表2 MA和GAMA測試結(jié)果
對于測試函數(shù)f1~f5,MA和GAMA迭代對比過程見圖1~圖5。
圖1 函數(shù)1 MA和GAMA迭代過程比較
圖2 函數(shù)2 MA和GAMA迭代過程比較
圖6 函數(shù)f1的MA和GAMA算法20次運算結(jié)果比較
對所有函數(shù),算法連續(xù)運算20次。其中函數(shù)f1的尋優(yōu)結(jié)果對比見圖6??梢奙A和GAMA算法運算20次最優(yōu)值都不變,限于篇幅,其余函數(shù)的不同算法對比結(jié)果不再一一列出。
本文還將GAMA算法與遺傳算法(GA)和粒子群算法(PSO)做對比研究,對測試函數(shù)f1~f5的求解結(jié)果見表3。
表3 GAMA、GA、PSO算法的測試結(jié)果統(tǒng)計
此外, GAMA算法還實現(xiàn)在不同維數(shù)下的尋優(yōu)結(jié)果,見表4。
注:測試函數(shù)f4的維數(shù)為5時,迭代總次數(shù)設(shè)置為80次.
4 結(jié)果分析
4.1 GAMA和MA尋優(yōu)性能比較
4.1.1 收斂精度
從表2的測試結(jié)果可以看出,針對測試函數(shù)1~5,GAMA算法找到的值0.004545、0.022183、-1566.646323、-3611.783171和0.004006都要比MA算法找到的最優(yōu)值0.625722、0.686747、-1566.597321、-3472.150206、0.495808更加地接近理論最優(yōu)解。尤其是對函數(shù)f1、f3、f5,在保留小數(shù)點后兩位的情況下,我們可以認(rèn)為GAMA算法成功找到了理論最優(yōu)解。
但MA和GAMA算法對函數(shù)4的尋優(yōu)結(jié)果-3611.783171、-3472.150206并不理想,與理論最優(yōu)值-8379.658相差較遠,這有待進一步改進。但無論如何,在精度方面GAMA算法都要優(yōu)于MA算法。
4.1.2 收斂速度
從圖1~圖5可以看出,除了函數(shù)f4,針對其余函數(shù)GAMA在算法進行高斯變異后就開始收斂,雖然變異后值較大,但開始迭代的時間要快于MA算法。并且觀察圖1~圖5中收斂的區(qū)域,可以發(fā)現(xiàn),GAMA算法在收斂時,迭代圖形的陡峭程度要比MA算法高。換言之,GAMA算法有著較快的收斂速度和“下坡能力”。但對于函數(shù)f4,MA和GAMA的收斂速度相當(dāng)。
4.1.3 穩(wěn)定性
將MA算法與GAMA算法對5個函數(shù)各運行20次,如f1的算法對比結(jié)果見圖6(其他測試函數(shù)對比結(jié)果類似)。由圖可見,對于20次運算結(jié)果,MA和GAMA都保持一致,不會出現(xiàn)偶爾一兩次運算結(jié)果不一樣的情況,這也足以說明GAMA算法較穩(wěn)定。
4.2 GAMA與遺傳算法(GA)和粒子群算法(PSO)尋優(yōu)結(jié)果比較分析
為了較全面地體現(xiàn)GAMA的特性,我們將GAMA算法與GA和PSO算法進行比較,同樣地對函數(shù)f1~f5進行尋優(yōu)測試,結(jié)果如表3所示??梢钥闯?,除了測試函數(shù)4,其余的測試函數(shù)GAMA算法在尋得結(jié)果的精度方面都很大程度地優(yōu)于GA算法。PSO算法一直以其實現(xiàn)容易、精度高、收斂快等優(yōu)點著稱,故在求解函數(shù)f1、f2時找到了理論最優(yōu)值0和局部極值0.0142,要較優(yōu)于GAMA算法尋得的結(jié)果0.004545和0.022183,誤差僅在0.455%~0.80%之間;對于函數(shù)f1、f5,GAMA算法在精度方面的優(yōu)勢就有著較明顯的體現(xiàn),比PSO尋得的結(jié)果更加接近理論值。
4.3 GAMA在不同維數(shù)下尋優(yōu)結(jié)果分析
正如引言所述,一般的算法難以避免維數(shù)的災(zāi)難?;诖?,我們選取不同的維數(shù)5、10、20、30、40、50、60來測試GAMA算法求解高維問題的能力及其穩(wěn)定性。從表4可以看出,不同維數(shù)下的尋優(yōu)結(jié)果,沒有較大的波動。如函數(shù)f1,在不同維數(shù)下尋得的結(jié)果0、0、0.004545、0.012961、0.029157、0.047024、0.073767只有少許的增長幅度;對測試函數(shù)f3、f4的結(jié)果f(3)min=-78.33236n、f(4)min=-418.9829n跟維數(shù)有著直接的關(guān)系,所以尋得的結(jié)果會不同。但如果將最優(yōu)值除以各自的維數(shù),那么不同維數(shù)下尋得的結(jié)果波動性很小。故GAMA算法與MA算法一樣,對維數(shù)的敏感度較低(MA算法維數(shù)敏感度可參考文獻[9]),不會陷入維數(shù)的災(zāi)難。
5 結(jié)束語
本文根據(jù)原猴群算法的特點,改變其原有的固定步長和視野,使其自適應(yīng)增加或遞減,有效地提高了猴群算法尋優(yōu)的精度與收斂速度;并且引入高斯變異隨機擾動機制,使很好地保持了猴群的多樣性,同時也避免算法陷入局部極值和早熟現(xiàn)象。最后我們利用5個經(jīng)典的多峰測試函數(shù)驗證算法的性能,結(jié)果有力地表明了GAMA算法的優(yōu)越性和有效性。
【參考文獻】
[1]T.Back,F(xiàn).Hoffmeister,and H.Schwefel.A survey of evolution strategies[J].Proceedings of the Fourth International Conference on Genetic Algorithms,132-139,san Diego,Academic Press,1991.
[2]H.Beye and H.Schwefel.A comperhensive introdution : Evolution strategies[J].Natural Computing,2002,1(1).
[3]張愛華,曹曉剛,鐘守楠.求多峰函數(shù)全部全局最優(yōu)解的改進遺傳算法[J].數(shù)學(xué)雜志,2009(1):56-60.
[4]朱葛俊.基于人工免疫的多峰函數(shù)優(yōu)化算法研究[J].計算機仿真,2012,29(5):239-243.
[5]Y.Leung and Y.Wang. An orthogonal genetic algorithm with quantization for Global numerical optimization[J].IEEE Transactions on Evolutionary Computation,2001,5(1):41-53.
[6]伊廷華,張旭東,李宏男.基于改進猴群算法的傳感器優(yōu)化布置方法研究[J].計算力學(xué)學(xué)報,2013,30(2):218-223.
[7]王靖然,余貽鑫,曾沅.離散猴群算法及其在輸電網(wǎng)擴展規(guī)劃中的應(yīng)用[J].天津大學(xué)學(xué)報, 2010(9):798-803.
[8]駱晨鐘,邵惠鶴.用混沌搜索求解非線性約束優(yōu)化問題[J].系統(tǒng)工程理論與實踐,2000(8):54-58.
[9]郝士鵬.混沌猴群算法及其應(yīng)用[D].天津大學(xué):天津大學(xué)經(jīng)濟與管理學(xué)部,2010.
[10]歐陽喆,周永權(quán).自適應(yīng)步長螢火蟲優(yōu)化算法[J].計算機應(yīng)用,2011,31(7):1804-1807.
[11]陶楊,韓維,張磊.基于群體行為的自適應(yīng)變異算子魚群算法[J].中國電子科學(xué)研究院學(xué)報,2013,10(5):491-495.
[責(zé)任編輯:湯靜]