顧啟元,王俊祥
(重慶文理學(xué)院 軟件工程學(xué)院,重慶 402160) E-mail:cqwu_gqy@126.com
群體智能算法為實(shí)際工程中復(fù)雜的優(yōu)化問(wèn)題提供了一個(gè)有效的解決方案.近年來(lái),群體智能算法受到了更多研究者的關(guān)注,繼粒子群優(yōu)化算法、蟻群優(yōu)化算法、人工蜂群算法提出后,先后涌現(xiàn)出了更多的群體智能范式,如螢火蟲(chóng)優(yōu)化算法[1]、果蠅優(yōu)化算法[2]、灰狼搜索算法[3],水波優(yōu)化算法[4]等.
受淺水波理論的啟發(fā),國(guó)內(nèi)學(xué)者鄭宇軍于2015年首次提出水波優(yōu)化算法(Water Wave Optimization,WWO),該算法通過(guò)模擬傳播、折射、碎浪等水波運(yùn)動(dòng)方式在高維解空間中進(jìn)行高效搜索[4].WWO算法具有操作簡(jiǎn)易、計(jì)算開(kāi)銷(xiāo)小、控制參數(shù)較少、種群規(guī)模小等優(yōu)點(diǎn).文獻(xiàn)[4]指出在CEC2014基準(zhǔn)測(cè)試函數(shù)集上的實(shí)驗(yàn)結(jié)果表明WWO整體優(yōu)化性能要優(yōu)越于種子算法[5]、生物地理學(xué)優(yōu)化算法[6]、蝙蝠優(yōu)化算法[7].在工程應(yīng)用方面,WWO 已在軟件形式化開(kāi)發(fā)關(guān)鍵部件選取[8]和車(chē)輛路徑[9]等優(yōu)化問(wèn)題中得到了應(yīng)用,并且取得了較好的效果.
WWO自提出以來(lái),受到到了研究者的關(guān)注.文獻(xiàn)[10]從理論上討論了WWO算法的收斂性條件,證明了WWO只執(zhí)行傳播操作或只執(zhí)行折射操作,個(gè)體均可以收斂.數(shù)值仿真實(shí)驗(yàn)驗(yàn)證了論述的兩種收斂性條件.
針對(duì)WWO算法收斂速度慢缺點(diǎn),文獻(xiàn)[11]提出了基于種群規(guī)??勺兊腤WO算法,在改進(jìn)的WWO算法中,對(duì)折射操作引入了學(xué)習(xí)機(jī)制以提高算法的性能.文獻(xiàn)[12]提出了一種模擬退火的自適應(yīng)WWO算法,算法中依據(jù)水波進(jìn)化狀態(tài)性能指標(biāo)來(lái)自適應(yīng)調(diào)整波長(zhǎng)的系數(shù),以提高搜索效率;同時(shí),在算法后期引入模擬退火的操作避免算法陷入局部最優(yōu).文獻(xiàn)[13]提出了基于混沌和單純形法的WWO算法,算法中通過(guò)引入混沌優(yōu)化策略來(lái)避免群體對(duì)初值敏感性,從而降低種群初始化隨機(jī)性對(duì)收斂速度和精度的影響,同時(shí)引入了單純形法來(lái)提高WWO算法局部搜索能力.文獻(xiàn)[14]提出基于自適應(yīng)控制參數(shù)的WWO算法,在算法討論了衰減系數(shù)α 的取值范圍,同時(shí)設(shè)計(jì)碎浪系數(shù)β隨著迭代次數(shù)變化的非線(xiàn)性函數(shù).時(shí)變的碎浪系數(shù)β可以使種群在進(jìn)化前段有較大值能更好地實(shí)現(xiàn)全局探索;而在在進(jìn)化后期,能更多地進(jìn)行局部開(kāi)發(fā),文獻(xiàn)[15]也提出了一種自適應(yīng)參數(shù)調(diào)整的WWO算法,通過(guò)設(shè)計(jì)合適的碎浪系數(shù)β和衰減系數(shù)來(lái)改善群體的探索與開(kāi)發(fā)之間的平衡.
上述的改進(jìn)算法從一定程度上提高WWO優(yōu)化性能,但是對(duì)于復(fù)雜多模優(yōu)化問(wèn)題,算法的收斂精度和速度仍需進(jìn)一步提高.為了提高WWO求解復(fù)雜多模優(yōu)化問(wèn)題的性能,本文提出一種自適應(yīng)協(xié)同學(xué)習(xí)WWO算法.算法中采用雙種群進(jìn)化結(jié)構(gòu),其中主種群負(fù)責(zé)全局搜索,子種群負(fù)責(zé)局部開(kāi)發(fā),雙群的協(xié)同學(xué)習(xí)以達(dá)到探索和開(kāi)發(fā)之間的平衡.主種群采用一種自適應(yīng)學(xué)習(xí)策略,在維持種群多樣性同時(shí)有效增強(qiáng)個(gè)體學(xué)習(xí)的效率.主群和子群的交互機(jī)制,可以使子群擺脫局部最優(yōu),提高算法的收斂精度.
標(biāo)準(zhǔn)WWO算法將待求問(wèn)題的解空間類(lèi)比為海床,每一個(gè)潛在解Xi類(lèi)比為一個(gè)水波,其中水波的波長(zhǎng)為λi且高度為hi.水波的適應(yīng)度f(wàn)(Xi)與其到海平面的垂直距離成反比:水波距離海平面越近,適應(yīng)度越高,對(duì)應(yīng)的解越優(yōu);適應(yīng)度越高的水波,其波長(zhǎng)越小,波高越大[4].算法采用3個(gè)操作算子進(jìn)行尋優(yōu)求解分別為傳播、碎浪和折射.
水波能量的積聚是水波在運(yùn)動(dòng)過(guò)程中不間斷執(zhí)行傳播操作來(lái)完成的.對(duì)于第t代中第i個(gè)水波Xi(t)依據(jù)下列公式進(jìn)行更新
(1)
式中,r1是在[-1,1]范圍內(nèi)服從均勻分布的隨機(jī)數(shù);λi表示第i個(gè)水波長(zhǎng)度;Ld為搜索空間第d維長(zhǎng)度;d∈1,2,…,D(D為問(wèn)題解的維度);i∈1,2,…,N(N為種群規(guī)模).在初始化種群時(shí),水波的波高設(shè)定為hmax,波長(zhǎng)λi一般設(shè)為 0.5.
λi=λiα-(f(Xi)-fmin+ε)/(fmax-fmin+ε)
(2)
公式(2)中,fmax和fmin分別代表當(dāng)前種群中的最大適應(yīng)度和最小適應(yīng)度值;f(Xi)為當(dāng)前個(gè)體Xi的適應(yīng)度;α為波長(zhǎng)衰減系數(shù),通常設(shè)置為1.001~1.01[10];ε是一個(gè)極小的正數(shù)(避免分母為零).
隨著能量的增加,波峰變得越來(lái)越陡峭,最終破碎成一連串獨(dú)立的水波.在WWO算法只對(duì)新找到的最優(yōu)解進(jìn)行碎浪操作,模擬水波碎浪現(xiàn)象,在潛在最優(yōu)解周?chē)鷧^(qū)域進(jìn)行精細(xì)搜索.碎浪具體操作是在[1,D]維范圍內(nèi)隨機(jī)選擇一個(gè)整數(shù)K.被選擇的每一維按下列公式進(jìn)行搜索得到一個(gè)孤立的波.
(3)
公式(3)中,d∈1,2,…,K(K為隨機(jī)選擇的正整數(shù));K通常選取為min(12,D/2)[10];Xbest(t)為當(dāng)前種群最優(yōu)個(gè)體;β是碎浪系數(shù),通常取值范圍在[0.001,0.01]之間;如果產(chǎn)生的獨(dú)立波X′(t+1)優(yōu)于Xbest(t),則用X′(t+1)代替Xbest(t);否則不更新Xbest(t).
水波在進(jìn)行傳播操作后,如果水波的沒(méi)有得到更新,該水波的高度減1.當(dāng)水波的高度減為0時(shí),說(shuō)明該水波已經(jīng)多次沒(méi)有得到更新,進(jìn)化停滯了.為了改善水波搜索停滯現(xiàn)象,水波算法會(huì)下式進(jìn)行折射操作:
(4)
公式(4)中N(u,v)表示均值為u、方差為v的高斯隨機(jī)數(shù).完成折射操作后的水波Xi(t)的高度h重置為hmax,同時(shí)其波長(zhǎng)按下式更新.
(5)
標(biāo)準(zhǔn)WWO算法的流程結(jié)構(gòu)如算法1所示.
算法1.標(biāo)準(zhǔn)WWO
輸入:待求解的優(yōu)化問(wèn)題特征(問(wèn)題維度D、搜索范圍、適應(yīng)度函數(shù)f、種群規(guī)模、迭代總次數(shù))
輸出:算法找到的最優(yōu)解Xbest
Step 1.初始化相關(guān)參數(shù),在搜索范圍內(nèi)隨機(jī)初始化一個(gè)種群規(guī)模為N水波種群,計(jì)算每個(gè)水波的的適應(yīng)度f(wàn)(X),找出種群當(dāng)前最優(yōu)解Xbest;
Step 2.對(duì)每個(gè)水波實(shí)施傳播操作;
Step 2.4.根據(jù)式(2)更新波長(zhǎng);
Step 3.當(dāng)終止條件不滿(mǎn)足時(shí),轉(zhuǎn)向Step 2;滿(mǎn)足終止條件則算法結(jié)束,返回算法找到的最優(yōu)解Xbest.
WWO搜索機(jī)制包括3個(gè)算子,即傳播、碎浪和折射.碎浪和折射算子只有在滿(mǎn)足一定的條件才執(zhí)行,因此搜索過(guò)程主要依賴(lài)水波的傳播算子.在水波的傳播算子中,水波位置的更新依賴(lài)搜索寬度Ld.當(dāng)問(wèn)題的解空間大時(shí),水波在前期進(jìn)化的過(guò)程中需要花費(fèi)大量的時(shí)間探索,致使水波更新的速度很慢,甚至更新停滯現(xiàn)象出現(xiàn).傳播算子雖然提供了強(qiáng)的探索能力,但是由于缺乏必要的群體個(gè)體間的學(xué)習(xí),從而導(dǎo)致了群體進(jìn)化的遲緩.在群體智能算法中,過(guò)多的探索影響收斂速度,而過(guò)多的進(jìn)行群體間學(xué)習(xí)也會(huì)導(dǎo)致早期收斂,如何平衡探索和利用是核心問(wèn)題.為了協(xié)調(diào)群體進(jìn)化過(guò)程中探索和利用,本文采用雙種的群進(jìn)化結(jié)構(gòu),實(shí)現(xiàn)主種群的探索和子種群的開(kāi)采.主種群采用一種自適應(yīng)學(xué)習(xí)策略,可以兼顧探索學(xué)習(xí)和群體間學(xué)習(xí),有效提高個(gè)體學(xué)習(xí)的效率.子種群采用改進(jìn)的折射算子,充分利用子群最優(yōu)個(gè)體引領(lǐng)群體進(jìn)化的策略,同時(shí)采用群體監(jiān)測(cè)機(jī)制,當(dāng)群體更新緩慢時(shí),及時(shí)與主種群進(jìn)行交互以幫助子群擺脫當(dāng)前的局部極值.
主種群中水波個(gè)體以δ概率采用傳播算子學(xué)習(xí),以1-δ概率向群體中其他個(gè)體學(xué)習(xí).δ為隨迭代次數(shù)增加遞減的參數(shù).隨著δ值的變化,水波個(gè)體由進(jìn)化初期加強(qiáng)全局勘探,逐漸轉(zhuǎn)化為增強(qiáng)個(gè)體間的相互學(xué)習(xí),從而有效平衡群體學(xué)習(xí)中的探索和利用.主種群的水波個(gè)體按下式進(jìn)行更新:
(6)
公式(6)中r2和r3是在[-1,1]范圍內(nèi)服從均勻分布的隨機(jī)數(shù);j∈1,2,…,N;i≠j.δ為學(xué)習(xí)率,按下式更新:
δ=1-δmin·t/Tmax
(7)
公式(7)中t為迭代步數(shù),Tmax為總的迭代步數(shù);δmin為最小學(xué)習(xí)率.
完成一步傳播操作后,判斷水波的寬度是否越界,如果越界按下式進(jìn)行修正:
Ld=Lbd+r4(Ubd-Lbd)
(8)
公式(8)中,Lbd和Ubd分別為搜索范圍第d維下界和上界.r4為服從[0,1]分布內(nèi)的隨機(jī)數(shù).
為了進(jìn)一步平衡群體在進(jìn)化過(guò)程中勘探和利用,主種群中的碎波系數(shù)采用了線(xiàn)性遞減策略.
β=βmax-βmin·t/Tmax
(9)
公式(9)中βmax和βmin分別為碎波系數(shù)的最大值和最小值.
子種群主要用于局部利用學(xué)習(xí),采用的學(xué)習(xí)策略為改進(jìn)的折射算子,更新方程如公式(10):
(10)