毛清華,王迎港
(燕山大學(xué) 經(jīng)濟(jì)管理學(xué)院,河北 秦皇島 066004)
通過模擬自然界中某些生物的運動或者行為規(guī)律,眾多新型群智能優(yōu)化算法被提出,用以搜索復(fù)雜優(yōu)化問題分布在一定的解空間范圍內(nèi)的最優(yōu)解.如樽海鞘群算法(Salp Swarm Algorithm,SSA)[1]、鯨魚優(yōu)化算法(Whale Optimization Algorithm,WOA)[2]、蝴蝶優(yōu)化算法(Butterfly Optimization Algorithm,BOA)[3]、粒子群算法(Particle Swarm Optimization,PSO)[4]、花粉算法(Flower Pollination algorithm,FPA)[5]、灰狼優(yōu)化算法(Grey Wolf Optimization,GWO)[6],海鷗優(yōu)化算法(Seagull Optimization Algorithm,SOA)[7]等.其中SOA是Dhiman等于2019年提出的一種新型群智能優(yōu)化算法,其結(jié)構(gòu)簡單并且具有相對較好的全局搜索和局部搜索能力,但是也存在諸如多樣性不足、后期收斂速度慢等缺陷.
針對基本海鷗算法存在的缺陷,國內(nèi)外學(xué)者提出了一些改進(jìn)方案:如Cao,Y等[8]使用萊維飛行機(jī)制提高了海鷗算法的收斂速度.Jia,HM等[9]將TEO算法中的熱交換思想融入海鷗算法,通過優(yōu)化位置更新公式增強了算法的局部搜索能力.Jiang,H等[10]基于對立學(xué)習(xí)策略提出了OSOA算法,通過應(yīng)用OBL增強了海鷗種群的多樣性.Dhiman,G等[11]提出了進(jìn)化多目標(biāo)海鷗優(yōu)化算法(EMoSOA),并引入交叉和變異遺傳算子增強算法的收斂性和多樣性.盡管實驗數(shù)值表明以上改進(jìn)海鷗算法具有不錯的性能,但都是對算法單一角度的優(yōu)化,缺少對海鷗算法較為全面的改進(jìn).
隨著對群智能優(yōu)化算法研究的深入,學(xué)者們引入了不同的改進(jìn)策略對算法進(jìn)行優(yōu)化,如陳忠云等[12]應(yīng)用Logistics混沌映射進(jìn)行樽海鞘算法的種群初始化,豐富了種群的多樣性.郝曉弘等[13]引入非線性策略改進(jìn)的收斂因子和慣性權(quán)重,在平衡鯨魚優(yōu)化算法的全局探索與局部開發(fā)能力的同時加快了算法的收斂速度.王依柔等[14]為平衡蝴蝶算法的局部搜索與全局搜索能力,在自身認(rèn)知飛行部分引入正弦余弦算子.寧杰瓊等[15]在花粉算法全局授粉過程中,利用t分布擾動的隨機(jī)個體和萊維飛行共同實現(xiàn)個體位置更新,加快收斂速度同時提高搜索空間的多樣性.王岳等[16]將自適應(yīng)慣性權(quán)重引入粒子群優(yōu)化算法,非線性遞增策略的采用平衡了算法的全局搜索與局部開發(fā)能力.
受上述研究的啟發(fā),本文提出了一種融合改進(jìn)Logistics混沌和正弦余弦算子的自適應(yīng)t分布海鷗算法(ISOA).采用改進(jìn)Logistics混沌映射初始化海鷗種群,使海鷗更加均勻地分布于初始解空間.對參數(shù)A進(jìn)行改進(jìn),用以加快算法的收斂速度.在海鷗迭代過程中引入正弦余弦算子,平衡算法全局搜索和局部開發(fā)能力.在最優(yōu)解附近生成符合自適應(yīng)t分布的新解并以一定的概率接受這個新解,在保留精英個體信息的同時提高算法跳出局部最優(yōu)的能力.
海鷗是地球上具有高等智慧的群居類動物,在全球各地均有分布,其種類較多且體態(tài)不一.海鷗是季節(jié)性遷徙鳥類,會根據(jù)季節(jié)變化為獲取食物進(jìn)行遷徙.海鷗算法的基本思想就是模擬海鷗的遷徙和攻擊行為,通過不斷更新海鷗位置迭代尋求最優(yōu)解.
在進(jìn)行全局搜索時,海鷗算法模擬海鷗群在遷徙途中的位置移動進(jìn)行搜索.海鷗位置移動應(yīng)滿足3個前提條件:
1)避免碰撞:通過海鷗當(dāng)前位置與附加變量A來確定海鷗的新位置,變量A控制避免相鄰海鷗間發(fā)生碰撞.
(1)
A=fc-[t×(fc/Tmax)]
(2)
變量A的取值范圍取決于fc的大小,本文fc的值設(shè)置為2.A的值隨迭代次數(shù)的增加從2線性降低至0,Tmax為最大迭代次數(shù).
2)最佳位置方向:為了避免與相鄰海鷗發(fā)生碰撞,海鷗會向最佳海鷗位置所在的方向移動.
(3)
B=2×A2×rd
(4)
rd在[0,1]區(qū)間內(nèi)隨機(jī)取值.
3)接近最佳海鷗位置:在海鷗個體到達(dá)不與其他海鷗存在沖突的位置后,海鷗會更新位置,從而更接近最佳海鷗位置.
(5)
海鷗攻擊獵物時,通過翅膀和重量保持高度,在空中進(jìn)行螺旋飛行運動,不斷改變攻擊角度和速度.X、Y和Z平面的運動行為描述如下:
(6)
其中r是海鷗進(jìn)行攻擊行為時螺旋飛行的半徑,θ為[0,2π]區(qū)間內(nèi)的隨機(jī)角度值,u和v是常數(shù),e是自然對數(shù)的底數(shù).
(7)
綜上可以得到海鷗算法的迭代公式:
(8)
在海鷗算法中,海鷗初始種群由隨機(jī)生成.由于混沌具有遍歷性和隨機(jī)性的特點,可以使用混沌映射進(jìn)行種群初始化.與隨機(jī)生成的種群相比較,混沌映射生成的初始種群具有更好的多樣性,初始解更均勻地分布在搜索空間,可以有效避免算法早熟和陷入局部最值,從而提高算法的收斂速度與精度.
Logistics混沌映射作為最經(jīng)典的混沌映射方式之一,具有隨機(jī)性、遍歷性、強發(fā)散性等特點而被廣泛應(yīng)用于群智能算法的種群初始化.Logistics混沌映射函數(shù)如公式(9)所示:
xn+1=4xn(1-xn)xn∈(0,1),n=1,2,…
(9)
Logistics混沌映射被廣泛應(yīng)用于改進(jìn)群智能優(yōu)化算法,但是其仍存有分布不夠均勻等缺陷.因此本文擬采用一種改進(jìn)型Logistics映射(ILM)來初始化海鷗種群.設(shè)定目標(biāo)優(yōu)化函數(shù)為:
minf(x1,x2,x3,…,xn),ai (10) 通過公式(11)得到均勻化級聯(lián)混沌序列[yn]: (11) 海鷗的初始位置由[yn]經(jīng)過式(12)進(jìn)行線性變換得到. Zi=ai+(bi-ai)xn (12) 其中,ai和bi表示優(yōu)化變量區(qū)間的最小值和最大值. 設(shè)置迭代次數(shù)t=500,改進(jìn)前后的Logistics混沌映射曲線如圖1(a)和圖1(b)所示. 對比圖1(a)和圖1(b),可以發(fā)現(xiàn)改進(jìn)后的Logistics混沌映射曲線在[0,1]之間有更好的遍歷性,分布更加均勻.改進(jìn)型Logistics混沌相對于經(jīng)典Logistics混沌性能更加卓越,用于初始化海鷗算法種群可以使海鷗更加均勻地分布于初始解空間,因此本文采用改進(jìn)后的Logistics混沌映射進(jìn)行海鷗種群初始化. 圖1 改進(jìn)前后Logistics混沌映射曲線對比圖 海鷗算法通過引入fc控制變量A的頻率,使變量A的值隨迭代從2線性降低至0,fc通常設(shè)置為2.但是算法收斂過程是非線性的,因此線性收斂的參數(shù)A并不能完全適用于SOA的搜索過程.因此本文引入一種新型非線性遞減的改進(jìn)參數(shù)A,為提高算法的全局搜索能力引入符合beta分布的隨機(jī)調(diào)整數(shù)對A進(jìn)行局部擾動,避免算法陷入局部最優(yōu)[17].新型非線性遞減的參數(shù)A如公式(13)所示: A=(Ainitial-Afinal)÷(1+e(20t/Tmax)-10)+ σ*betarnd(p,q) (13) 其中Ainitial表示A的初始值,Afinal表示終止值,t為當(dāng)前迭代次數(shù),Tmax為最大迭代次數(shù).σ為收斂調(diào)整因子,經(jīng)多次實驗發(fā)現(xiàn)σ=0.1時效果最好,betarnd為MATLAB中的隨機(jī)數(shù)生成器,可以生成符合beta分布的隨機(jī)數(shù). 本文的改進(jìn)參數(shù)A呈非線性遞減,迭代前期參數(shù)A在較長時間內(nèi)保持較大值且變化幅度、速度較小,即海鷗長時間以較大的步伐進(jìn)行搜索,可以擴(kuò)大海鷗的搜索范圍;迭代中期改進(jìn)的參數(shù)A下降速度明顯,對于算法收斂速度的提高有重要作用;迭代后期,改進(jìn)的參數(shù)A在較長時間內(nèi)保持較小值且變化幅度和速度也較小,加強了算法的局部搜索能力.同時引入beta隨機(jī)調(diào)整數(shù)對A的取值進(jìn)行了局部擾動,意味著擾動海鷗的搜索步伐大小,增加了解的多樣性.改進(jìn)前后的參數(shù)A對比如圖2所示. 圖2 改進(jìn)前后參數(shù)A對比圖 為了促進(jìn)最優(yōu)海鷗個體信息在種群中的傳遞,提高海鷗算法的性能,本文引入正弦余弦算子用以改變海鷗算法的迭代方式,即在迭代過程中改變原有迭代方式,按照相同的概率對海鷗個體進(jìn)行正弦或者余弦操作,改進(jìn)迭代方式如公式(14)所示: (14) 其中r1=a-t×(a/Tmax),r1的值取決于常數(shù)a,本文a的取值為2.較大的r1值可以提高算法的全局搜索能力,而較小的r1值則有利于算法的局部開發(fā),同時隨著迭代次數(shù)的增加r1的取值逐漸變小,對算法的搜索和開發(fā)能力進(jìn)行了平衡.r2在區(qū)間[0,2π]之間隨機(jī)取值,定義了當(dāng)前解接近或者遠(yuǎn)離最優(yōu)解的距離;r3是[0,1]內(nèi)的隨機(jī)數(shù),并以相同的概率切換正弦和余弦算子. 引入正弦余弦算子完美契合了海鷗算法的尋優(yōu)機(jī)制,進(jìn)一步平衡算法的全局搜索和局部開發(fā)能力.一部分海鷗遵循新的迭代方式遠(yuǎn)離最優(yōu)解,擴(kuò)大了搜索空間,增加了海鷗種群的多樣性,避免原有尋優(yōu)機(jī)制存在的盲點.而另一部分海鷗以更快的速度接近最優(yōu)解,以較少的迭代達(dá)到更佳的尋優(yōu)效果,提高了算法的收斂速度.正弦余弦算子的融入,豐富了海鷗種群的多樣性,提高了算法的收斂速度和精度,極大提升了算法的性能. 在智能優(yōu)化算法中引入柯西變異和高斯變異已被證實可以有效提升算法性能.其中柯西變異可以豐富種群多樣性,而高斯變異可以使算法獲得良好的局部搜索能力.柯西分布和高斯分布都是t分布的兩種特殊形式,隨著迭代次數(shù)的增加,自由度參數(shù)t的增長,t分布曲線由開始的符合柯西分布逐漸接近高斯分布. 在最優(yōu)解位置附近生成符合t分布變異的新解,可以同時結(jié)合高斯分布和柯西分布的優(yōu)點.算法迭代初期,自由度參數(shù)t取值較小,這時候t分布主要呈現(xiàn)出柯西分布的特點,豐富了種群的多樣性,有效提升算法的全局搜索能力;在迭代進(jìn)行到中后期時,自由度參數(shù)t取值較大,t分布無限接近高斯分布,增強的是算法局部開發(fā)能力,提高其收斂精度.為了在前期豐富種群多樣性的同時,在后期保留海鷗種群的精英解,這里同時引入自適應(yīng)參數(shù)ω.在迭代前期ω可以取較大的值,利用t分布變異產(chǎn)生的新解增加種群多樣性.隨著迭代次數(shù)的增加算法逐漸接近最優(yōu)解,自適應(yīng)參數(shù)ω控制t分布對新解的影響逐步降低,充分保留了海鷗種群的精英解.符合t分布變異的新解和ω的表達(dá)式如公式(15)和公式(16)所示: (15) (16) 式中TD(t)表示自由度參數(shù)為t的t分布,a=0.1,b=1,T為最大迭代次數(shù). 按照一定的概率接受自適應(yīng)t分布變異的新解,隨機(jī)生成一個參數(shù)pe∈[0,1],新的最優(yōu)海鷗位置確定如公式(17)所示: (17) 這樣算法進(jìn)行迭代尋優(yōu)時,通過概率pe確定最優(yōu)解時會有兩種選擇:一是繼續(xù)按照原算法進(jìn)行選擇的最優(yōu)解,維持種群多樣性的同時保留了精英解;二是選擇了自適應(yīng)t分布變異擾動后產(chǎn)生的新解,其結(jié)合了高斯分布和柯西分布的優(yōu)點. 改進(jìn)海鷗算法(ISOA)的具體執(zhí)行步驟如下: 步驟1.海鷗種群根據(jù)公式(11)、公式(12)進(jìn)行初始化; 步驟2.設(shè)置算法中的參數(shù)A,B,Tmax,A的初始值A(chǔ)initial和終止值A(chǔ)final.設(shè)置u=1,v=1,rd在[0,1]內(nèi)隨機(jī)取值,θ在[0,2π]內(nèi)隨機(jī)取值.其中A的表達(dá)式如公式(13); 步驟6.更新最佳海鷗位置和適應(yīng)值; 步驟7.根據(jù)公式(15)對最優(yōu)位置進(jìn)行擾動; 步驟8.根據(jù)公式(17)確定最優(yōu)位置; 步驟9.判斷是否達(dá)到結(jié)束條件,若是則進(jìn)行下一步,否則跳轉(zhuǎn)步驟(2); 步驟10.程序結(jié)束,輸出最優(yōu)結(jié)果. 為驗證ISOA算法的有效性,選取遺傳算法(GA)、粒子群算法(PSO)和標(biāo)準(zhǔn)海鷗算法(SOA)進(jìn)行對比.各個算法的種群規(guī)模設(shè)置均為30,最大迭代次數(shù)為100次,算法參數(shù)設(shè)置如表1所示. 表1 4種算法實驗參數(shù)設(shè)置 選擇8個不同的標(biāo)準(zhǔn)測試函數(shù),其中包括4個單峰函數(shù),4個多峰函數(shù),標(biāo)準(zhǔn)測試函數(shù)的具體信息如表2所示. 表2 8個標(biāo)準(zhǔn)測試函數(shù) 本文采用的實驗環(huán)境為:Microsoft Windows 10系統(tǒng),處理器為Inter(R)Core(TM)i5-7200U CPU@2.50GHz 2.70GHz,內(nèi)存為8GB,采用 Matlab2014b進(jìn)行算法的編輯和運行仿真.為減少實驗的偶然誤差,每個算法在每一個標(biāo)準(zhǔn)測試函數(shù)上獨立運行100次.運行結(jié)果如表3所示. 表3中最優(yōu)值和平均值可以反映算法的收斂和尋優(yōu)精度.在4個單峰函數(shù)F1-F4上,ISOA求解函數(shù)F2時獲得了理論最優(yōu)值0,在其余3個單峰函數(shù)上相對于3個對比算法至少提升了10個數(shù)量級,求解函數(shù)F1時更是比標(biāo)準(zhǔn)SOA提升了31個數(shù)量級.對于4個多峰函數(shù)F5-F8,ISOA在函數(shù)F5、F7、F8上均能求得理論最優(yōu)值,同時具有更好的收斂精度,例如求解函數(shù)F7時雖然標(biāo)準(zhǔn)SOA也獲得了理論最優(yōu)值,但其平均值與理論最優(yōu)值有所偏差,而ISOA平均值等于理論最優(yōu)值,說明其尋優(yōu)能力更佳.因此,ISOA在求解單峰、多峰函數(shù)時相對3種對比算法都具有更好的尋優(yōu)效果. 表3 基準(zhǔn)測試函數(shù)優(yōu)化結(jié)果 比較8個標(biāo)準(zhǔn)測試函數(shù)上4種算法的標(biāo)準(zhǔn)差,ISOA始終比其余3種算法小,而標(biāo)準(zhǔn)差可以反映算法的穩(wěn)定性和跳出局部最優(yōu)的能力,這說明ISOA具有較強的穩(wěn)定性.因為多峰函數(shù)具有多個局部最值,一些經(jīng)典算法很容易出現(xiàn)被局部極值吸引出現(xiàn)早熟的現(xiàn)象,從而無法求得全局最優(yōu)解.ISOA在多峰函數(shù)上具有良好的表現(xiàn),證明其具有很強的跳出局部最優(yōu)的能力. 綜上所述,ISOA在各方面都優(yōu)于其余3種算法.為了更加直觀地觀察ISOA算法的收斂性和跳出局部最優(yōu)的能力,圖3-圖11分別展示了4種算法在8個標(biāo)準(zhǔn)測試函數(shù)上的迭代收斂曲線.其中橫坐標(biāo)代表迭代次數(shù),縱坐標(biāo)代表適應(yīng)度的Log值. 圖3 函數(shù)F1迭代收斂曲線 圖4 函數(shù)F2迭代收斂曲線 圖5 函數(shù)F3迭代收斂曲線 圖6 函數(shù)F4迭代收斂曲線 圖7 函數(shù)F5迭代收斂曲線 圖8 函數(shù)F6迭代收斂曲線 圖9 函數(shù)7迭代收斂曲線 圖10 函數(shù)F8迭代收斂曲線 圖3-圖6給出了4種優(yōu)化算法在單峰函數(shù)上的運行結(jié)果.從圖中可以看出,大部分情況下相對于其他3種算法ISOA算法的收斂曲線下降速度更快,距離x軸更近.而其余3種算法都出現(xiàn)了不同程度的停滯,尋優(yōu)精度較低.收斂曲線下降速度快代表其具有更快的收斂速度,距離x軸越近代表其收斂精度越高.這說明應(yīng)用改進(jìn)型Logistics映射初始化種群增加了海鷗種群多樣性,使得初始解分布更加均勻,算法收斂速度加快.而正弦余弦算子的引入,一方面進(jìn)一步加快了算法的收斂速度,另一方面擴(kuò)大了海鷗的搜索空間,避免了海鷗算法搜索機(jī)制存在的盲點,提高了算法的收斂精度. 圖7-圖10是4種優(yōu)化算法在多峰函數(shù)上的收斂曲線.4幅圖中ISOA前期收斂速度明顯更快,進(jìn)一步說明改進(jìn)型Logistics映射的有效性.圖9和圖10中,ISOA可以在很少的迭代中達(dá)到很高的尋優(yōu)精度,說明算法有很好的尋優(yōu)性能.這是因為改進(jìn)參數(shù)A改變了海鷗的搜索步長,大大提高了算法的尋優(yōu)精度和速度.在圖7和圖8中,盡管ISOA存在一定時期的停滯,但很快可以繼續(xù)尋優(yōu),最終可以達(dá)到很高的尋優(yōu)精度,有力證明了算法具有很強的跳出局部最優(yōu)的能力,說明自適應(yīng)t分布變異策略的引入,使ISOA跳出局部最優(yōu)的能力得到極大提升. 綜合以上圖形縱向觀察,在相同的迭代次數(shù)下,ISOA具有更高的收斂速度;橫向觀察,在相同的收斂精度時,ISOA具有更快的收斂速度.因此,本文提出的海鷗算法改進(jìn)策略先進(jìn)有效,ISOA算法在尋優(yōu)精度、收斂速度和跳出局部最優(yōu)解3個方面較SOA等3種算法有明顯的優(yōu)勢. 針對基本海鷗算法存在的缺陷,提出一種融合改進(jìn)Logistics混沌和正弦余弦算子的自適應(yīng)t分布海鷗算法(ISOA),并在8個標(biāo)準(zhǔn)測試函數(shù)上進(jìn)行仿真實驗,比較算法性能,得出以下結(jié)論: 1)ISOA尋優(yōu)性能相對基本海鷗算法明顯提升,證明了改進(jìn)策略的有效性.海鷗位置初始化對全局搜索非常重要,通過改進(jìn)Logistics混沌映射初始化海鷗種群,豐富了解的多樣性;改進(jìn)參數(shù)A和正弦余弦算子的引入,有效平衡了算法全局和局部的搜索能力并加快了收斂速度;算法融合了自適應(yīng)t分布變異策略,在保留精英個體信息的同時,使算法易于跳出局部最優(yōu). 2)8個標(biāo)準(zhǔn)測試函數(shù)表明:ISOA在收斂精度、求解速度、跳出局部最優(yōu)能力相較于GA、PSO和SOA表現(xiàn)出了更為出色的尋優(yōu)性能,證實了算法改進(jìn)的有效性和魯棒性. 下一步可以考慮繼續(xù)改進(jìn)海鷗算法尋優(yōu)機(jī)理和算法結(jié)構(gòu),或者融合其它智能算法的優(yōu)點提出性能更佳的智能算法,以及將ISOA應(yīng)用到復(fù)雜的工程問題中,擴(kuò)展本算法的應(yīng)用領(lǐng)域.3.2 參數(shù)A改進(jìn)
3.3 正弦余弦算子
3.4 自適應(yīng)t分布變異策略
3.5 改進(jìn)海鷗算法的執(zhí)行步驟
4 模擬仿真
4.1 算法參數(shù)設(shè)置
4.2 標(biāo)準(zhǔn)測試函數(shù)選擇
4.3 仿真結(jié)果分析
5 結(jié)束語