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