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




Step 2.4.根據(jù)式(2)更新波長;
Step 3.當(dāng)終止條件不滿足時,轉(zhuǎn)向Step 2;滿足終止條件則算法結(jié)束,返回算法找到的最優(yōu)解Xbest.
WWO搜索機制包括3個算子,即傳播、碎浪和折射.碎浪和折射算子只有在滿足一定的條件才執(zhí)行,因此搜索過程主要依賴水波的傳播算子.在水波的傳播算子中,水波位置的更新依賴搜索寬度Ld.當(dāng)問題的解空間大時,水波在前期進(jìn)化的過程中需要花費大量的時間探索,致使水波更新的速度很慢,甚至更新停滯現(xiàn)象出現(xiàn).傳播算子雖然提供了強的探索能力,但是由于缺乏必要的群體個體間的學(xué)習(xí),從而導(dǎo)致了群體進(jìn)化的遲緩.在群體智能算法中,過多的探索影響收斂速度,而過多的進(jìn)行群體間學(xué)習(xí)也會導(dǎo)致早期收斂,如何平衡探索和利用是核心問題.為了協(xié)調(diào)群體進(jìn)化過程中探索和利用,本文采用雙種的群進(jìn)化結(jié)構(gòu),實現(xiàn)主種群的探索和子種群的開采.主種群采用一種自適應(yīng)學(xué)習(xí)策略,可以兼顧探索學(xué)習(xí)和群體間學(xué)習(xí),有效提高個體學(xué)習(xí)的效率.子種群采用改進(jìn)的折射算子,充分利用子群最優(yōu)個體引領(lǐng)群體進(jìn)化的策略,同時采用群體監(jiān)測機制,當(dāng)群體更新緩慢時,及時與主種群進(jìn)行交互以幫助子群擺脫當(dāng)前的局部極值.
主種群中水波個體以δ概率采用傳播算子學(xué)習(xí),以1-δ概率向群體中其他個體學(xué)習(xí).δ為隨迭代次數(shù)增加遞減的參數(shù).隨著δ值的變化,水波個體由進(jìn)化初期加強全局勘探,逐漸轉(zhuǎn)化為增強個體間的相互學(xué)習(xí),從而有效平衡群體學(xué)習(xí)中的探索和利用.主種群的水波個體按下式進(jìn)行更新:

(6)
公式(6)中r2和r3是在[-1,1]范圍內(nèi)服從均勻分布的隨機數(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)的隨機數(shù).
為了進(jìn)一步平衡群體在進(jìn)化過程中勘探和利用,主種群中的碎波系數(shù)采用了線性遞減策略.
β=βmax-βmin·t/Tmax
(9)
公式(9)中βmax和βmin分別為碎波系數(shù)的最大值和最小值.
子種群主要用于局部利用學(xué)習(xí),采用的學(xué)習(xí)策略為改進(jìn)的折射算子,更新方程如公式(10):
(10)