丁 容,高建瓴,張 倩
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽(yáng) 550025)
近年來(lái),隨著自然科學(xué)的發(fā)展,傳統(tǒng)的計(jì)算方法在復(fù)雜的約束條件下求解出最佳方案時(shí)所碰到的問(wèn)題已變得越來(lái)越突出,存在求解精度低、成本高、耗時(shí)較長(zhǎng)等方面的缺陷.針對(duì)傳統(tǒng)計(jì)算方法求解復(fù)雜問(wèn)題的局限性,為了求解復(fù)雜的優(yōu)化問(wèn)題,在巨大的搜索空間內(nèi)尋找最優(yōu)解,許多學(xué)者設(shè)計(jì)了群智能優(yōu)化算法,例如粒子群算法[1]、蟻群算法[2]、花授粉算法[3]、細(xì)菌覓食優(yōu)化算法[4]、磷蝦群算法[5]等.群智能優(yōu)化算法主要對(duì)自然界生物的群體行為進(jìn)行模擬.個(gè)體的進(jìn)化或覓食過(guò)程被模擬為搜索和優(yōu)化的過(guò)程,以搜索空間的點(diǎn)作為歸因,去模擬自然界中的個(gè)體,將求解問(wèn)題的目標(biāo)函數(shù)衡量為個(gè)體對(duì)環(huán)境的適應(yīng)能力,個(gè)體適者生存這個(gè)過(guò)程或者覓食過(guò)程就好比在搜索和優(yōu)化過(guò)程中不斷迭代的過(guò)程,即用更好的可行解替換之前的可行解.
禿鷹搜索優(yōu)化算法(Bald Eagle Search,BES)[6]是2020年馬來(lái)西亞學(xué)者Alsatter提出的一種新型元啟發(fā)式算法,它模仿禿鷹在尋找魚(yú)類時(shí)的狩獵策略或智能社會(huì)行為.該算法具有較強(qiáng)的全局搜索能力,在應(yīng)對(duì)各類復(fù)雜數(shù)值優(yōu)化問(wèn)題時(shí)都能夠有效的解決,但是,BES算法存在參數(shù)較多,收斂速度較慢,以及精度不高等缺陷,且在算法迭代過(guò)程中容易陷入局部極值.
群智能優(yōu)化算法都存在收斂速度慢且易陷入局部最優(yōu)的缺陷,為了提高算法的尋優(yōu)能力,眾多學(xué)者都提出了改進(jìn)的方法:劉明霞等[7]將混沌映射算子應(yīng)用到蟻群算法中,增強(qiáng)了種群的多樣性,且在一定程度上避免了算法陷入局部最優(yōu).Oliva等[8]在鯨魚(yú)位置更新概率中引入混沌映射算子,提高了鯨魚(yú)算法的全局尋優(yōu)能力.楊萬(wàn)里等[9]提出了基于 Logistic映射的新型混沌簡(jiǎn)化 PSO算法,保留了種群的多樣性,降低了算法困于局部最優(yōu)的概率.Teng等[10]提出了將Tent映射初始化GWO種群,避免了種群的隨機(jī)性帶來(lái)的缺陷,提高了GWO算法的收斂性.Hegazy等[11]在算法中引入自適應(yīng)權(quán)重因子,提高了算法的收斂速度.Wang 等[12]在速度的更新方式中提出自適應(yīng)慣性權(quán)重,在搜索過(guò)程中蝙蝠可以動(dòng)態(tài)調(diào)節(jié)相關(guān)速度.王依柔等[13]在園丁鳥(niǎo)的位置更新方式中通過(guò)引入正弦的慣性權(quán)重因子,能夠有助于算法保持較好的搜索能力.Wang 等[14]通過(guò)引入柯西變異算子,降低了螢火蟲(chóng)算法陷入局部最優(yōu)的概率,而且全局搜索能力得到了提高.Taher等[15]通過(guò)引入變異更新,提出了混合策略蝗蟲(chóng)優(yōu)化算法,增大了蝗蟲(chóng)的搜索空間以及避免陷入局部最優(yōu)值.Li等[16]提出了將柯西變異融入到粒子群優(yōu)化算法,在精度和收斂速度和時(shí)間復(fù)雜度上都得到了改善.Xu 等[17]將高斯變異和柯西變異結(jié)合,能有效地提高M(jìn)FO算法的搜索能力.
文章的主要研究工作:提出了融合自適應(yīng)慣性權(quán)重和柯西變異的禿鷹搜索算法(CBES),該算法首先使用 Tent 混沌映射初始化種群,使得種群的初始個(gè)體在搜索空間內(nèi)更加的均分分布,將求解效率與精度提高,保留了種群的多樣性;其次,將自適應(yīng)慣性權(quán)重和柯西變異融入禿鷹搜索優(yōu)化算法,改善局部搜索與全局收斂能力,提升了算法的尋優(yōu)性能.通過(guò)12個(gè)基準(zhǔn)測(cè)試函數(shù)將CBES和其他4種算法進(jìn)行測(cè)試對(duì)比,實(shí)驗(yàn)結(jié)果表明該算法具有更好的尋優(yōu)能力和魯棒性,同時(shí)將算法引入實(shí)際工程領(lǐng)域,驗(yàn)證了該算法的實(shí)用性和拓展性.
禿鷹遍布于北美洲地區(qū),禿鷹主要選擇魚(yú)類作為主要食物.以捕食鮭魚(yú)為例,禿鷹首先找到搜索空間是通過(guò)自我搜索或者跟蹤其他鳥(niǎo)類到魚(yú)的濃度;當(dāng)它們?cè)谒c(diǎn)上尋找食物時(shí),禿鷹會(huì)朝特定方向出發(fā),選擇某個(gè)區(qū)域開(kāi)始搜索;由于禿鷹的視力極佳,能夠從很遠(yuǎn)看到獵物,一旦發(fā)現(xiàn)獵物,禿鷹會(huì)隨著運(yùn)動(dòng)的逐漸流動(dòng)而下降,以高速?zèng)_向獵物并從水中搶奪魚(yú).禿鷹搜索算法模擬禿鷹在狩獵過(guò)程中的行為,禿鷹狩獵分為3個(gè)階段.在第1階段,禿鷹選擇獵物數(shù)目最多的空間;在第2階段,禿鷹在選定的空間內(nèi)移動(dòng)以尋找獵物;在第3階段,禿鷹從第2階段確定的最佳位置擺動(dòng),并確定最佳狩獵點(diǎn).
在選擇階段,禿鷹選擇并確定搜索空間中的最佳區(qū)域用于尋找獵物.禿鷹的位置Pi,new更新方式是通過(guò)隨機(jī)搜索過(guò)程中的先驗(yàn)信息與α相乘來(lái)確定的,式(1)從數(shù)學(xué)上描述了這種行為.
Pi,new=Pbest+α×r(Pmean-Pi)
(1)
其中,α表示控制位置變化的參數(shù),取值在1.5~2之間;r是一個(gè)隨機(jī)數(shù),取值在0~1之間;Pbest表示禿鷹目前根據(jù)其先前的搜索中確定的最佳搜索位置;Pmean表示禿鷹在經(jīng)過(guò)前次搜索后所在的平均分布位置;Pi是指第i只禿鷹所在的位置.
在搜索階段,禿鷹從上一階段確定的搜索空間中尋找獵物,并在螺旋空間內(nèi)朝不同的方向移動(dòng),以加速搜索.螺旋飛行的數(shù)學(xué)模型使用極坐標(biāo)方程進(jìn)行位置更新,如下所示:
θ(i)=a×π×rand
(2)
r(i)=θ(i)+R×rand
(3)
xr(i)=r(i)×sin(θ(i))
(4)
yr(i)=r(i)×cos(θ(i))
(5)
(6)
(7)
其中,θ(i)與r(i)分別表示螺旋方程的極角與極徑;a是值在(0,5)區(qū)間內(nèi)的一個(gè)參數(shù),用于確定中心點(diǎn)中的點(diǎn)搜索之間的角;而R取值在0.5~2之間,用于確定搜索周期的數(shù)目;x(i)與y(i)表示在極坐標(biāo)下禿鷹的位置,取值均為(-1,1);禿鷹在選定的搜索空間內(nèi)向螺旋方向移動(dòng)并確定俯沖和捕獲獵物的最佳位置.禿鷹位置更新如下所示:
Pi,new=Pi+x(i)×(Pi-Pmean)+y(i)×(Pi-Pi+1)
(8)
式(8)中,Pi+1表示第i只禿鷹下一更新的位置.
在俯沖階段,禿鷹以搜索空間的最佳位置作為出發(fā)點(diǎn),向目標(biāo)獵物快速擺動(dòng),種群中其他個(gè)體也緊隨著向最佳點(diǎn)方向移動(dòng)并對(duì)獵物展開(kāi)攻擊,利用極坐標(biāo)方式來(lái)描述運(yùn)動(dòng)狀態(tài),如下所示:
θ(i)=a×π×rand
(9)
r(i)=θ(i)+R×rand
(10)
xr(i)=r(i)×sin(θ(i))
(11)
yr(i)=r(i)×cos(θ(i))
(12)
(13)
(14)
禿鷹的位置更新方式如下所示:
(15)
Pi,new=rand×Pbest+δx+δy
(16)
在式(15)中,c1,c2∈[1,2],參數(shù)c1和c2會(huì)增加禿鷹向最佳中心點(diǎn)移動(dòng)的強(qiáng)度.
相較于其他智能優(yōu)化算法,禿鷹搜索算法在收斂速度和精度性能上略勝一籌,但算法本身仍存在容易陷入局部最優(yōu)和收斂精度低的問(wèn)題.因此本文提出了一種改進(jìn)的禿鷹搜索算法(CBES).主要從3個(gè)方面對(duì)原始的禿鷹搜索算法進(jìn)行改進(jìn),首先,使用Tent混沌映射對(duì)種群進(jìn)行初始化,有效保持種群的多樣性,提高禿鷹的全局搜索能力;其次在搜索階段通過(guò)融入自適應(yīng)慣性權(quán)重來(lái)提高禿鷹的局部搜索能力;最后使用柯西變異提升算法的整體尋優(yōu)能力.
在解決函數(shù)優(yōu)化的過(guò)程中,BES算法通常使用隨機(jī)產(chǎn)生的數(shù)據(jù)作為初始種群信息,使得種群的多樣性遺失,算法的尋優(yōu)結(jié)果也會(huì)相應(yīng)的變差.然而,混沌作為自然界普遍存在的一種非線性現(xiàn)象,因?yàn)榛煦缱兞康奶匦园S機(jī)性、遍歷性和規(guī)律性[18],很多學(xué)者根據(jù)這些特點(diǎn)將其應(yīng)用于算法優(yōu)化問(wèn)題,既能保持種群的多樣性,又能幫助算法跳出局部最優(yōu),改善算法的全局搜索能力.目前常用的混沌模型有Tent映射、 Logistic 映射、Sin映射等,但是,不同的混沌模型對(duì)算法尋優(yōu)能力有不同的影響.單梁等[19]研究驗(yàn)證了在均勻分布和收斂速度方面Tent 映射均優(yōu)于 Logistic 映射,通過(guò)嚴(yán)格的數(shù)學(xué)推理,在[0,1]區(qū)間內(nèi)Tent映射可以產(chǎn)生優(yōu)化算法的混沌序列.
文章使用Tent映射來(lái)初始化種群,Tent映射的表達(dá)式如下所示:
(17)
即經(jīng)過(guò)貝努利移位變換后表達(dá)式如下:
xi+1=(2xi)mod1
(18)
Tent混沌映射初始化種群產(chǎn)生序列的具體步驟如下:
Step 1.在區(qū)間(0,1)內(nèi)隨機(jī)產(chǎn)生初始值x0,記作i=0;
Step 2.根據(jù)式(17)進(jìn)行迭代運(yùn)算產(chǎn)生一個(gè)新的x序列,且i=i+1;
Step 3.當(dāng)i達(dá)到最大迭代次數(shù)時(shí),則停止迭代,且將迭代產(chǎn)生的x序列保存下來(lái).
慣性權(quán)重因子w是算法中比較重要的一個(gè)參數(shù),Shi[20]于1998年首次提出將慣性權(quán)重因子w引入PSO算法,來(lái)達(dá)到收斂速度和局部尋優(yōu)能力之間的平衡,取得了較為良好的效果.隨后的許多研究也驗(yàn)證了引入慣性權(quán)重因子能夠有效平衡算法的全局搜索和局部搜索.
當(dāng)慣性權(quán)重較大時(shí),算法的全局搜索能力較強(qiáng),可以提高種群多樣性,可以搜索較大的區(qū)域;慣性權(quán)重較小時(shí),算法具有較強(qiáng)的局部搜索能力,可以圍繞最優(yōu)解進(jìn)行精細(xì)搜索,加快收斂速度.在搜索空間獵物階段,禿鷹需要在選定的搜索空間內(nèi)尋找獵物,為了使禿鷹的局部尋優(yōu)能力得到提高且在迭代中取得最優(yōu)的適應(yīng)度值,本文提出了新的自適應(yīng)權(quán)重的方法,自適應(yīng)慣性權(quán)重公式如下:
(19)
其中,t表示當(dāng)前迭代數(shù);tmax是設(shè)置的種群最大迭代次數(shù);wmax是初始慣性權(quán)重,在文中取值為0.92;wmin是禿鷹種群最大迭代次數(shù)時(shí)的慣性權(quán)重,在文中取值為0.4.將慣性權(quán)重因子引入禿鷹搜索優(yōu)化算法中,在探索階段,禿鷹的位置更新的表達(dá)式如下:
Pi,new=w×Pi+x(i)×(w×Pi-Pmean)+
y(i)×(w×Pi-Pi+1)
(20)
針對(duì)禿鷹算法易陷入局部極值的缺點(diǎn),本文在原有的算法中融入柯西變異算子,改善算法的全局搜索能力,擴(kuò)大搜索空間.柯西分布是一種在概率論中常見(jiàn)的連續(xù)型概率分布,柯西分布在原點(diǎn)處的概率密度較大,兩端處的密度較小;兩端的形狀又長(zhǎng)又扁.正因此特點(diǎn)可以通過(guò)融入柯西變異對(duì)禿鷹個(gè)體產(chǎn)生較大的擾動(dòng),使得算法更容易跳出局部最優(yōu)值[21].標(biāo)準(zhǔn)的柯西分布概率密度函數(shù)公式如下:
(21)
柯西分布從峰值下降至兩側(cè)時(shí)相對(duì)平緩,且峰值相對(duì)較小,在變異后禿鷹種群會(huì)在搜索相鄰空間時(shí)使用較少的時(shí)間,將主要精力花費(fèi)在尋找全局最優(yōu)值上.使用式(22)對(duì)搜索空間獵物階段獲得的全局最優(yōu)值進(jìn)行變異處理:
Pnew,best=Pbest+Pbest×Cauchy(0,1)
(22)
基于3.1節(jié)~3.3節(jié)對(duì)BES算法的改進(jìn),CBES算法具體實(shí)現(xiàn)流程如下所示:
Step 1.設(shè)置并初始化算法參數(shù),其中包含種群的規(guī)模N,最大迭代次數(shù)tmax,目標(biāo)函數(shù)的維度以及初始值的邊界條件.
Step 2.使用2.1節(jié)中的Tent混沌映射對(duì)種群進(jìn)行初始化,按照適應(yīng)度函數(shù)求出每只禿鷹的適應(yīng)度值,對(duì)所有禿鷹的適應(yīng)度值排序,找出當(dāng)前種群的全局最優(yōu)位置.
Step 3.在禿鷹選擇搜索階段,按照公式(1)進(jìn)行位置跟新.
Step 4.在禿鷹搜索空間獵物階段,按照公式(20)進(jìn)行位置更新.
Step 5.在俯沖階段,按照公式(22)對(duì)上一個(gè)步驟得到的全局最優(yōu)解進(jìn)行柯西變異處理,再將得到的結(jié)果按照公式(16)進(jìn)行禿鷹的位置更新.
Step 6.更新禿鷹種群的最優(yōu)個(gè)體位置與適應(yīng)度值,更新算法的迭代次數(shù).判斷算法是否滿足設(shè)置的最大迭代次數(shù)或者精度要求,若滿足,則終止算法,輸出適應(yīng)度最優(yōu)值及最優(yōu)解;若沒(méi)有,則返回Step 3進(jìn)行循環(huán).
實(shí)驗(yàn)環(huán)境為:CPU為i5-4288U 2,運(yùn)行內(nèi)存為4G,操作系統(tǒng)為windows10,算法的運(yùn)行環(huán)境為MATLAB2016a.設(shè)置5個(gè)算法的種群規(guī)模N均為30,迭代的最大次數(shù)為1000,每種算法獨(dú)立運(yùn)行30 次.
為了驗(yàn)證改進(jìn)的BES在收斂性以及精度性能上相比原始禿鷹算法更優(yōu),本文選取了12個(gè)測(cè)試函數(shù)進(jìn)行實(shí)驗(yàn)對(duì)比,其中包括連續(xù)單峰函數(shù)和復(fù)雜非線性多峰函數(shù),詳細(xì)的測(cè)試函數(shù)信息見(jiàn)表1.
表1 標(biāo)準(zhǔn)測(cè)試函數(shù)Table1 Standard test functions
為了驗(yàn)證本文改進(jìn)后CBES的收斂性以及穩(wěn)定性,選取禿鷹搜索算法(BES)、花授粉算法(FPA)、粒子群算法(PSO)、飛蛾火焰優(yōu)化算法(MFO)進(jìn)行對(duì)比實(shí)驗(yàn).為了降低隨機(jī)性給實(shí)驗(yàn)帶來(lái)的影響,本文選取5種算法分別在12個(gè)測(cè)試函數(shù)上獨(dú)立運(yùn)次30次.表2分別列出了CBES、BES、MFO、PSO、FPA算法獨(dú)立運(yùn)行30次所得的最優(yōu)值、最差值、平均值、標(biāo)準(zhǔn)差.
表2 測(cè)試函數(shù)的實(shí)驗(yàn)結(jié)果Table2 Experimental results of the test functions
根據(jù)實(shí)驗(yàn)結(jié)果可以得知,在所有的測(cè)試函數(shù)尋優(yōu)過(guò)程中,本文提出的融合自適應(yīng)慣性權(quán)重和柯西變異的禿鷹搜索算法全部?jī)?yōu)于BES、FPA、MFO、PSO.
算法的魯棒性體現(xiàn)在標(biāo)準(zhǔn)差方面,當(dāng)標(biāo)準(zhǔn)差數(shù)值越小時(shí),算法的魯棒性越好;相反,標(biāo)準(zhǔn)差數(shù)值越大時(shí),算法的魯棒性越差.由表2可知,在函數(shù)F1、F6、F9、F10、F11尋優(yōu)過(guò)程中,CBES所得的標(biāo)準(zhǔn)差為0,表現(xiàn)出了較好的魯棒性.對(duì)于函數(shù)F2、F3、F4、F5、F7、F8、F12,CBES算法所得的標(biāo)準(zhǔn)差均明顯小于BES、FPA、MFO、PSO,CBES算法具有更高的收斂精度.
表2中算法所得的最優(yōu)值和最差值反映了算法尋優(yōu)結(jié)果的質(zhì)量.從表2 可以看出:在基準(zhǔn)測(cè)試函數(shù)F6、F9、F11中,CBES尋到理論上最優(yōu)值0;在F1、F2、F3、F5、F8尋優(yōu)過(guò)程中,CBES雖然沒(méi)有尋到理論最優(yōu)值,但在數(shù)量級(jí)上明顯優(yōu)于其他4種算法,與基本BES相比,具有更好的尋優(yōu)能力.對(duì)于函數(shù)F10、F12,雖然CBES與BES獲得的最優(yōu)值相同,但是最差值對(duì)比的話,顯然CBES在尋優(yōu)能力上優(yōu)于BES.對(duì)于函數(shù)F4、F7,與其他4種相比,CBES也能夠得到更好的尋優(yōu)結(jié)果.
算法所得的平均值反映了算法的穩(wěn)定性,從表2數(shù)據(jù)可知,CBES在12個(gè)基準(zhǔn)測(cè)試函數(shù)中所得的平均值均小于其他4種算法,所以CBES具有更高的收斂精度且尋優(yōu)結(jié)果穩(wěn)定.
綜上所述,CBES在精度、收斂速度、穩(wěn)定度方面都有所提高,總體魯棒性也優(yōu)于其他4種算法.為了能夠更加直觀地對(duì)比CBES與其他4種算法的優(yōu)化效果,本文選取了12個(gè)基準(zhǔn)測(cè)試函數(shù)的尋優(yōu)進(jìn)化曲線,如圖1所示.
為了進(jìn)一步將本文提出的CBES算法應(yīng)用到具體的實(shí)際工程領(lǐng)域,本文選取壓力容器設(shè)計(jì)問(wèn)題來(lái)驗(yàn)證算法在工程應(yīng)用中的可行性.
壓力容器設(shè)計(jì)問(wèn)題屬于典型的約束優(yōu)化問(wèn)題,其主要目的是使得壓力容器在制作方面的成本能夠達(dá)到最小,壓力容器的模型如圖2所示.壓力容器的兩端都有蓋子封頂,頭部一端的封蓋為半球狀.L是指在不考慮頭部的情況下圓柱體的截面積長(zhǎng)度,R則表示圓柱體的內(nèi)壁半徑,Ts和Th分別表示圓柱體部分壁厚和頭部的壁厚.Ts、Th、R、L是壓力容器設(shè)計(jì)問(wèn)題的4個(gè)優(yōu)化變量,為方便起見(jiàn),將其表示為x1、x2、x3、x4.問(wèn)題的目標(biāo)函數(shù)和4個(gè)優(yōu)化約束表示如下:
Minf(x)=0.6224x1x2x3x4+1.7781x2x32+
3.1661x12x4+19.84x12x3
(23)
圖1 不同算法的收斂曲線對(duì)比Fig.1 Convergence curve comparison of different algorithms
約束條件為:
g1(x)=-x1+0.0193x3≤0
(24)
g2(x)=-x2+0.00954x3≤0
(25)
g3(x)=-πx32-4πx33/3+1296000≤0
(26)
g4(x)=x4-240≤0
(27)
其中0.0625≤x1≤6.1875,0.0625≤x2≤6.1875,10≤x3≤200,10≤x4≤≤200.
對(duì)于處理約束優(yōu)化問(wèn)題重要的一個(gè)步驟是如何處理設(shè)置約束條件,本文使用罰函數(shù)法來(lái)建立約束條件和目標(biāo)函數(shù).將CBES算法以及PSO、MFO、FPA、BES進(jìn)行求解結(jié)果對(duì)比,其對(duì)比實(shí)驗(yàn)結(jié)果如表3所示.從表3可以得知,CBES算法在求解壓力容器設(shè)計(jì)問(wèn)題時(shí)明顯優(yōu)于其他4種算法,并表現(xiàn)出了較好的尋優(yōu)能力,從而驗(yàn)證了CBES算法在工程應(yīng)用的可行性.
圖2 壓力容器模型Fig.2 Pressure vessel model
表3 壓力容器設(shè)計(jì)問(wèn)題求解結(jié)果Table 3 Results of solving pressure vessel design problems
針對(duì)基本禿鷹搜索算法的不足,本文提出了一種融合自適應(yīng)慣性權(quán)重和柯西變異的禿鷹搜索算法(CBES).使用Tent混沌映射初始化種群,保留了種群的多樣性;在禿鷹搜索空間獵物階段通過(guò)引入自適應(yīng)慣性權(quán)重來(lái)提高算法的局部搜索能力;并且在禿鷹俯沖階段,對(duì)當(dāng)前全局最優(yōu)值使用柯西變異,降低算法陷入局部最優(yōu)的可能性.將CBES、BES、MFO、FPA、PSO 5種算法放置在12個(gè)基準(zhǔn)測(cè)試函數(shù)上進(jìn)行實(shí)驗(yàn)對(duì)比,結(jié)果表明所提出的CBES收斂速度快且精度高.最后,將CBES應(yīng)用到工程領(lǐng)域中,進(jìn)一步驗(yàn)證了該算法的尋優(yōu)能力以及可拓展性.在未來(lái)的研究工作中,將對(duì)融合自適應(yīng)慣性權(quán)重和柯西變異的禿鷹搜索算法進(jìn)行更加深入的理論研究,將其應(yīng)用到更多的實(shí)際領(lǐng)域中.