陳 程,賀興時(shí)+,楊新社
1.西安工程大學(xué)理學(xué)院,西安710600
2.密德薩斯大學(xué)科學(xué)與技術(shù)學(xué)院,英國(guó)劍橋CB2 1TN
眾所周知,隨著人類和科技的發(fā)展,無(wú)論是在工程實(shí)踐領(lǐng)域還是在研究領(lǐng)域,都會(huì)遇到越來(lái)越復(fù)雜的優(yōu)化問(wèn)題。人們使用一些傳統(tǒng)的計(jì)算方法來(lái)解決這些問(wèn)題時(shí),求解精度以及收斂速度等方面均不能滿足實(shí)際的需求,且耗時(shí)長(zhǎng)、成本高。為解決復(fù)雜的優(yōu)化問(wèn)題,能找到更為合理和滿意的近似解,科研工作者設(shè)計(jì)了大量的啟發(fā)式算法,而在對(duì)自然啟發(fā)式優(yōu)化算法的研究中,群體智能算法在過(guò)去的二三十年中得到迅速發(fā)展,并成為當(dāng)前最活躍的算法研究領(lǐng)域之一。群體智能算法主要有:螢火蟲(chóng)算法(firefly algorithm,F(xiàn)A)[1]、蝙蝠算法(bat algorithm,BA)[2]、蛙跳算法(shuffled frog leading algorithm,SFLA)[3]、粒子群優(yōu)化算法(particle swarm optimization,PSO)[4]等。諸多學(xué)者也提出許多改進(jìn)策略:學(xué)習(xí)因子獨(dú)立調(diào)整策略[5]、自適應(yīng)交叉策略[6]、早熟擾動(dòng)[7]等策略,使群體智能算法在解決復(fù)雜優(yōu)化問(wèn)題時(shí)更加有效和高效。
2009 年,劍橋大學(xué)的Yang 和Deb 通過(guò)模擬布谷鳥(niǎo)尋窩產(chǎn)卵的行為提出了一種新的搜索算法,即布谷鳥(niǎo)搜索算法(cuckoo search,CS)[8],由于這種算法簡(jiǎn)單高效、參數(shù)少、易于實(shí)現(xiàn)、隨機(jī)搜索路徑優(yōu)等特點(diǎn),已成功應(yīng)用于醫(yī)學(xué)圖像優(yōu)化[9]、多目標(biāo)優(yōu)化[10]、圖像處理[11]、系統(tǒng)設(shè)計(jì)優(yōu)化[12]、BT 神經(jīng)網(wǎng)絡(luò)(back propagation,BP)[13]、旅行商問(wèn)題(traveling salesman problem,TSP)[14]等實(shí)際問(wèn)題中。但也存在著求解精度低,易陷入局部最優(yōu),收斂速度慢等方面問(wèn)題,針對(duì)這些問(wèn)題諸多學(xué)者也提出了相應(yīng)的改進(jìn)方案。王凡等[15]提出了一種在迭代過(guò)程中對(duì)鳥(niǎo)窩位置加入高斯擾動(dòng)的方法,它增加了鳥(niǎo)窩位置變化的活力,從而有效地提高了算法的收斂速度。羅東等[16]將函數(shù)動(dòng)態(tài)遞減因子引入到步長(zhǎng)和發(fā)現(xiàn)概率中,并對(duì)步長(zhǎng)和發(fā)現(xiàn)概率進(jìn)行自適應(yīng)調(diào)整,改進(jìn)后的布谷鳥(niǎo)算法在收斂速度和求解精度方面均有效提高。葉亞榮等[17]在布谷鳥(niǎo)尋找最優(yōu)鳥(niǎo)窩的時(shí)候增加了一個(gè)擾動(dòng)因子,提高算法的收斂速度。王凡等[18]通過(guò)分析鳥(niǎo)窩位的群體狀態(tài)轉(zhuǎn)移過(guò)程加入了Markov 鏈,提高算法全局搜索能力。宋鈺等[19]提出了一種基于自適應(yīng)機(jī)制的改進(jìn)布谷鳥(niǎo)算法,提高了算法的局部和全局尋優(yōu)能力。賈涵等[20]利用狀態(tài)判別參數(shù)Ps,通過(guò)探索-開(kāi)發(fā)平衡狀態(tài)計(jì)算出平衡參數(shù)Peb,最終實(shí)現(xiàn)鳥(niǎo)蛋的被發(fā)現(xiàn)概率Pa的自適應(yīng)動(dòng)態(tài)調(diào)整。但是,對(duì)于CS 算法的局部搜索能力弱,易陷入局部最優(yōu),算法后期收斂速度慢,求解精度不高等問(wèn)題,上述改進(jìn)策略的優(yōu)化效果仍是有限的。針對(duì)CS 算法存在的諸多問(wèn)題,本文提出了動(dòng)態(tài)調(diào)整概率的雙重布谷鳥(niǎo)搜索算法(double cuckoo search algorithm with dynamically adjusted probability,DECS),并增加以下策略:將搜索空間分區(qū)化,計(jì)算種群分布熵確定種群的分布特性,同時(shí)與算法的迭代階數(shù)共同決定發(fā)現(xiàn)概率P0的大小;通過(guò)在尋優(yōu)過(guò)程中引入的新型步長(zhǎng)因子以及記憶策略,實(shí)現(xiàn)算法雙重搜索模式的能力;在隨機(jī)偏好游走更新公式中,引入了非線性慣性權(quán)重對(duì)數(shù)遞減策略及高斯擾動(dòng),更大程度地提高鳥(niǎo)窩的探索和開(kāi)發(fā)能力,增強(qiáng)了鳥(niǎo)窩位置的變化活力。通過(guò)以上策略,有效改善了布谷鳥(niǎo)搜索算法求解精度低,收斂速度慢,易陷入局部最優(yōu)的問(wèn)題。
在大自然中,布谷鳥(niǎo)具有特殊的繁衍后代的方式,它們不筑巢,將自己的后代用寄生的方式來(lái)養(yǎng)育,通過(guò)將自己的卵悄悄地產(chǎn)在其他鳥(niǎo)的巢穴中,由其他鳥(niǎo)為它來(lái)卵化和撫養(yǎng)自己的下一代。然而如果宿主鳥(niǎo)一旦發(fā)現(xiàn)有外來(lái)的鳥(niǎo)蛋,宿主鳥(niǎo)就會(huì)拋棄這些外來(lái)的鳥(niǎo)蛋或者重新筑巢,為了模擬布谷鳥(niǎo)尋窩和繁衍后代的行為,Yang 和Deb 假設(shè)了以下三個(gè)理想規(guī)則:
(1)布谷鳥(niǎo)一次只產(chǎn)下一個(gè)蛋,并且隨機(jī)選擇鳥(niǎo)窩來(lái)孵化;
(2)最好的鳥(niǎo)窩將被保留到下一代;
(3)可選擇的鳥(niǎo)窩數(shù)量N是固定的,宿主鳥(niǎo)發(fā)現(xiàn)外來(lái)卵的概率Pa∈[0,1]。
基于以上三個(gè)理想狀態(tài),Yang 等采用式(1)對(duì)下一代鳥(niǎo)窩位置x(t+1)進(jìn)行位置更新:


由式(2)可知,布谷鳥(niǎo)在尋窩過(guò)程中,它的飛行路徑變化帶有重尾的概率分布,使得布谷鳥(niǎo)飛行路徑表現(xiàn)出了Levy 飛行的本質(zhì),即在尋優(yōu)路徑中頻繁的短步長(zhǎng)偶爾會(huì)出現(xiàn)長(zhǎng)步長(zhǎng),使得CS 算法擁有更大的全局搜索能力,也可以有效避免陷入局部最優(yōu)。
文獻(xiàn)[21]采用式(3)計(jì)算萊維隨機(jī)數(shù):

其中,υ和μ服從標(biāo)準(zhǔn)的正態(tài)分布,β=1.5,φ=
為了便于對(duì)萊維飛行進(jìn)行計(jì)算,采用文獻(xiàn)[21]步長(zhǎng)因子:

其中,α0為常數(shù),一般取0.01,xbest為當(dāng)前最優(yōu)解。
結(jié)合式(1)~式(4),CS 算法通過(guò)Levy 飛行采用式(5)來(lái)更新新的鳥(niǎo)窩位置:

發(fā)現(xiàn)概率Pa表示為宿主鳥(niǎo)發(fā)現(xiàn)外來(lái)鳥(niǎo)蛋的概率,如果發(fā)現(xiàn)有外來(lái)的鳥(niǎo)蛋,宿主鳥(niǎo)就會(huì)拋棄這些外來(lái)的鳥(niǎo)蛋或者重新筑巢,即CS 算法通過(guò)萊維飛行更新位置后,產(chǎn)生一個(gè)隨機(jī)數(shù)r∈[0,1],若r>Pa時(shí),則對(duì)采用偏好游走的方式生成相同數(shù)量的新解。偏好游走如式(6)所示:

式中,γ是(0,1) 區(qū)間均勻分布的壓縮因子,表示第t代的兩個(gè)隨機(jī)解。
在基本CS 算法中固定發(fā)現(xiàn)概率P=0.25 不利于全局搜索和局部搜索之間的平衡,因此諸多學(xué)者在發(fā)現(xiàn)概率中引入了自適應(yīng)性Pa,使得算法更具有靈活性,自適應(yīng)Pa是CS 算法重要的參數(shù)之一,控制著全局和局部之間的平衡。當(dāng)Pa值小時(shí),增加了全局的多樣性,增強(qiáng)了全局的探索性和開(kāi)發(fā)性。當(dāng)Pa越大時(shí),加強(qiáng)了局部搜索能力,提高了算法的效率。設(shè)立一個(gè)合理的Pa可以平衡全局和局部的搜索能力,提高算法的整體性能。在關(guān)于Pa的大小控制,國(guó)內(nèi)外諸多學(xué)者做出了大量的研究,文獻(xiàn)[22]提出自適應(yīng)布谷鳥(niǎo)搜索算法(adaptive cuckoo search algorithm,ACS),其中自適應(yīng)性概率Pa的方法如式(7):

式中,采用文獻(xiàn)[22]的參數(shù)θ,θ=0.6。自適應(yīng)性概率Pa方法簡(jiǎn)單,易實(shí)現(xiàn),但是只考慮到發(fā)現(xiàn)概率P隨著迭代次數(shù)的變化而變化。這樣不利于全局和局部的搜索,對(duì)一些復(fù)雜的、高維的函數(shù)求解很難適應(yīng)。因此在考慮發(fā)現(xiàn)概率Pa隨迭代次數(shù)變化的同時(shí),也應(yīng)該考慮到每次迭代種群分布情況。發(fā)現(xiàn)概率P0的大小由自適應(yīng)性Pa和空間種群分布位置分布信息共同決定,如式(8):

式中,Gi是慣性權(quán)重的變異算子,其大小由解空間中種群分布的位置情況來(lái)決定。
因此本文采用文獻(xiàn)[23]提出的分布熵來(lái)表達(dá),如式(9):

式中,j=1,2,…,K,K是解空間Ω被等分劃分的個(gè)數(shù);N是布谷鳥(niǎo)的總個(gè)數(shù);nj是每次迭代后每個(gè)等分子空間中布谷鳥(niǎo)分布的個(gè)數(shù)。
Si表明種群分布情況。每次迭代后Si越大,說(shuō)明布谷鳥(niǎo)越分散,Gi應(yīng)該賦予一個(gè)較小的值,使發(fā)現(xiàn)概率P0越小,加強(qiáng)全局搜索能力。反之Si越小說(shuō)明布谷鳥(niǎo)越集中,Gi應(yīng)該賦予一個(gè)較大的值,使發(fā)現(xiàn)概率P0越大,加強(qiáng)局部探索能力。Gi的具體表達(dá)式為式(10):

其中,Sd=lnK是種群分布熵的上界,即為在平分的解空間Ω中,每一個(gè)子空間中有著相同數(shù)目的種群個(gè)數(shù);Sc是種群分布熵的下界,即為在被平分的解空間Ω中,N個(gè)布谷鳥(niǎo)全部分布在其中的某一個(gè)子空間Ωj中;δ是參數(shù)。
當(dāng)布谷鳥(niǎo)全部集中在某個(gè)子空間Ωj時(shí),由式(10)可得Gmax=δ,經(jīng)大量實(shí)驗(yàn)測(cè)試[24],P0max=0.55 為最佳取值。由式(8)可得,因此參數(shù)δ取值為0.751 3。
基本的布谷鳥(niǎo)搜索算法中的萊維飛行機(jī)制,在尋優(yōu)過(guò)程中偶爾出現(xiàn)的大步長(zhǎng),雖然增強(qiáng)了全局搜索能力,但是還是會(huì)存在陷入局部最優(yōu)的情況。步長(zhǎng)因子α一直較大,全局搜索能力強(qiáng),無(wú)法獲得高精度的解。步長(zhǎng)因子α一直較小,算法要達(dá)到高精度的解時(shí),就要付出更多的迭代次數(shù),算法的效率低下。針對(duì)以上問(wèn)題,本文提出了自適應(yīng)雙重搜索萊維飛行機(jī)制。步長(zhǎng)因子由固定的α改為隨迭代次數(shù)增加而變化的動(dòng)態(tài)變化步長(zhǎng)因子ω,如式(11):

改進(jìn)的萊維飛行更新公式(12)為:

式中,ti是當(dāng)前迭代次數(shù),tmax是最大迭代次數(shù),?為參數(shù)。
ω1=因子動(dòng)態(tài)變化范圍[0,0.367 9],使動(dòng)態(tài)因子ω變化在[0,1]范圍內(nèi),由式(11)得?=,?取值為2.718 3。
式(11)中ω在(0,1)之間的隨著迭代次數(shù)增加的變化如圖1。

Fig.1 Factor ω curve圖1 因子ω 變化曲線
由圖1 可知,在DECS 算法中前期,由于記憶策略引入到Levy 飛行搜索機(jī)制中,即用上一代鳥(niǎo)窩反饋位置信息決定下一代鳥(niǎo)窩位置,實(shí)現(xiàn)種群由子空間Ω1,Ω2,…,Ωk到整體解空間Ω進(jìn)行Levy 飛行機(jī)制搜索過(guò)程,整個(gè)解空間種群分布信息決定Gi值的大小,使得DECS 算法前期的多樣性更強(qiáng)。DECS 算法中后期種群全局探索能力逐漸減弱,局部開(kāi)發(fā)能力增強(qiáng),實(shí)現(xiàn)雙重搜索機(jī)制。發(fā)現(xiàn)概率P0與雙重搜索形成了一個(gè)互補(bǔ)的狀態(tài),使得DECS 算法有效克服了易陷入局部最優(yōu)的缺陷,提高算法性能。
在基本的CS 算法中,偏好隨機(jī)游走對(duì)全局搜索能力和局部搜索能力起著平衡作用,新的鳥(niǎo)巢位置采用固定的上一代鳥(niǎo)窩位置信息,容易造成算法迭代后期陷入局部最優(yōu)。慣性權(quán)重策略可以提高算法的搜索能力,平衡局部搜索和全局搜索之間的關(guān)系,因此本文在偏好游走的更新位置中引入了對(duì)數(shù)遞減慣性權(quán)重κ,如式(13):

式中,rmax是慣性權(quán)重最大值,rmin是慣性權(quán)重最小值;取參考文獻(xiàn)[24]rmax=0.1,rmin=0 。ti為當(dāng)前迭代次數(shù),tmax為最大迭代次數(shù);ξ為對(duì)數(shù)壓縮系數(shù),N(μ,σ)是高斯擾動(dòng)。慣性權(quán)重κ前兩項(xiàng)利用對(duì)數(shù)遞減的特性,隨著迭代次數(shù)的增加而減小,而第三項(xiàng)利用高斯擾動(dòng),使得慣性權(quán)重κ更具有靈活性。
偏好游走更新公式更新為式(14):

式中,κ是對(duì)數(shù)遞減慣性權(quán)重;γ是(0,1)區(qū)間均勻分布的壓縮因子;表示第t代的兩個(gè)隨機(jī)解。
在DECS 算法中,偏好游走位置更新引入了對(duì)數(shù)遞減慣性權(quán)重的策略,使得布谷鳥(niǎo)算法在尋優(yōu)前期較為完整保留上一代鳥(niǎo)窩的信息,有利于跳出子空間Ωj中的局部最優(yōu)。隨著迭代次數(shù)的增加慣性權(quán)重的減小,布谷鳥(niǎo)算法在尋優(yōu)后期,有效削弱了上一代鳥(niǎo)窩的保留信息,更有利于跳出全局局部最優(yōu)解。
動(dòng)態(tài)調(diào)整概率的雙重布谷鳥(niǎo)搜索算法(DECS)著眼于對(duì)算法整體優(yōu)化,充分利用新型步長(zhǎng)因子、發(fā)現(xiàn)概率P0和隨機(jī)偏好游走搜索方式三者之間的關(guān)系。DECS 算法前期利用新型步長(zhǎng)因子和種群位置更新的記憶策略,保證種群在子空間中充分勘探和尋找最優(yōu)解的效率;與此同時(shí)發(fā)現(xiàn)概率P0中引入的種群分布熵,確保了P0在整個(gè)迭代期保持著一個(gè)動(dòng)態(tài)變化的狀態(tài),使得算法更具有活力,增強(qiáng)了算法前期鳥(niǎo)窩的多樣性,提升了全局搜索能力,也兼顧了算法后期局部開(kāi)發(fā)的能力。DECS 算法的步驟如下:
步驟1初始化設(shè)置:最大迭代次數(shù)t,布谷鳥(niǎo)的個(gè)數(shù)N,解空間劃分個(gè)數(shù)K,發(fā)現(xiàn)概率Pa,搜索空間的維數(shù)nd,搜索上下界。初始化鳥(niǎo)窩位置,算出每個(gè)鳥(niǎo)窩的適應(yīng)度值fi=f(xi),i=1,2,…,N,得到最好鳥(niǎo)窩位置,最優(yōu)的適應(yīng)度值fmin。
步驟2保留最好的鳥(niǎo)窩位置,按式(12),對(duì)每一個(gè)鳥(niǎo)窩進(jìn)行Levy 飛行位置更新,得到一組新的鳥(niǎo)窩解,并計(jì)算新的適應(yīng)度值,與上一代鳥(niǎo)窩位置進(jìn)行比較,適應(yīng)度值優(yōu)的位置替代適應(yīng)度值差的位置,得到一組較優(yōu)的鳥(niǎo)窩位置
步驟3通過(guò)種群的分布情況計(jì)算出當(dāng)前第t次迭代的發(fā)現(xiàn)概率Pa,與隨機(jī)數(shù)r進(jìn)行比較。若r>Pa,則用式(14)進(jìn)行偏好游走搜索方式,淘汰鳥(niǎo)窩數(shù)量相同的新解。
步驟4計(jì)算出淘汰的新解的適應(yīng)度值,與Gt=的適應(yīng)度值進(jìn)行比較,適應(yīng)度值優(yōu)的位置替代適應(yīng)度值差的位置,得到一組較優(yōu)的鳥(niǎo)窩位置
步驟5找出中最好的鳥(niǎo)窩位置和最優(yōu)的適應(yīng)度值fmin。
判斷是否滿足終止條件,若滿足則停止搜索,輸出全局最優(yōu)值fmin,否則,重復(fù)步驟1~步驟4 進(jìn)行迭代搜索。
為了驗(yàn)證DECS 算法的尋優(yōu)性能,本文選取了19個(gè)不同難度的測(cè)試函數(shù),如表1 所示。同時(shí)與基本的CS算法、花粉算法(flower pollination algorithm,F(xiàn)PA)[25]、BA 算法以及自適應(yīng)步長(zhǎng)布谷鳥(niǎo)搜索算法(adaptive step-size cuckoo search algorithm,ASCSA)[26]四種算法進(jìn)行了比較,針對(duì)不同算法獨(dú)立運(yùn)行50 次。其中f1(x)~f7(x) 為多峰函數(shù),f8(x)~f12(x)為單峰函數(shù),維數(shù)D=10,50,100。f13(x)~f14(x)為固定維度單峰函數(shù),f15(x)~f19(x)為固定維度多峰函數(shù),維數(shù)D=2。記錄每次測(cè)試結(jié)果并計(jì)算平均值、最佳值、最差值、標(biāo)準(zhǔn)差。
實(shí)驗(yàn)環(huán)境如下:CPU 為i5-4258U 2.4 GHz,運(yùn)行內(nèi)存4 GB,操作系統(tǒng)Windows10,編程環(huán)境Matlab r2016。CS 算法、FPA 算法、BA 算法、ASCSA 算法種群數(shù)目為25,迭代次數(shù)1 000次,其他參數(shù)見(jiàn)表2所示。
算法求解精度比較如表3~表21 所示。
本文運(yùn)用5 種算法對(duì)19 個(gè)測(cè)試函數(shù)進(jìn)行了比較,分別在相同的測(cè)試環(huán)境下運(yùn)行了50 次,f1(x)為復(fù)雜的多峰函數(shù),擁有無(wú)數(shù)局部極小值和局部最大值,常常導(dǎo)致算法在求解時(shí)陷入局部最優(yōu)。由表3 可見(jiàn),DECS算法在求解精度上和穩(wěn)定性上遠(yuǎn)遠(yuǎn)高于其他4種算法,在后期求解時(shí)卻陷入了局部最優(yōu)8.881 8E-16。f2(x)函數(shù)為典型的非線性多模態(tài)函數(shù),它的局部極小值的個(gè)數(shù)與維數(shù)成正比且跌宕起伏不定,由表4 可見(jiàn),其他4 種算法隨著維數(shù)的增加尋優(yōu)能力減弱,DECS 算法卻表現(xiàn)出顯著的尋優(yōu)能力,均可以尋到全局最優(yōu)。f3(x)是典型多模態(tài)函數(shù),搜索空間大并擁有許多局部極小點(diǎn),通常被認(rèn)為是智能算法很難求解的問(wèn)題。由表5 可見(jiàn),DECS 算法均可收斂到理論最優(yōu)值,表現(xiàn)出了較好的搜索能力和跳出局部最優(yōu)的能力。f4(x)~f7(x)為復(fù)雜的多峰函數(shù),DECS 算法也表現(xiàn)出顯著的尋優(yōu)能力,均可以尋到全局最優(yōu)。CS 算法、FPA 算法、BA 算法、ASCSA 算法卻無(wú)法獲得全局最優(yōu)點(diǎn),在精度上DECS 算法表現(xiàn)出了卓越的性能。DECS 算法在維度增加的過(guò)程中,仍然表現(xiàn)出卓越的搜索能力和穩(wěn)定的收斂性。CS 算法、FPA 算法、BA 算法、ASCSA 算法隨著維度的增加,求解精度也明顯下降,且無(wú)法尋找到全局最優(yōu)點(diǎn)。ASCSA算法與DECS 算法相比較,在10 維的情況下,有著尋優(yōu)精度上的差別,但是在50 維和100 維的情況下,ASCSA 算法卻無(wú)法尋找到全局最優(yōu)。f8(x)~f12(x)均為單峰函數(shù),f9(x)函數(shù)由于它的全局最小值附近函數(shù)變化極慢,因此常被用于評(píng)價(jià)算法的后期搜索性能。f12(x)函數(shù)常用于檢查算法的尋優(yōu)能力。DECS算法在10 維、50 維、100 維情況下,均可收斂到理論最優(yōu)值。對(duì)于二維函數(shù)f13(x)~f19(x),DECS 算法均可收斂到理論最優(yōu)值,對(duì)于f15(x)、f17(x)、f18(x) 函數(shù)ASCSA 算法和FPA 算法也均可收斂到理論最優(yōu)值,但在標(biāo)準(zhǔn)差上DECS 算法優(yōu)于ASCSA 算法和FPA 算法,表明DECS 算法在尋優(yōu)穩(wěn)定性方面優(yōu)于CS 算法、FPA 算法、BA 算法、ASCSA 算法,且表現(xiàn)出更強(qiáng)的魯棒性。

Table 1 Test functions表1 測(cè)試函數(shù)

Table 2 Algorithm parameter settings表2 算法參數(shù)設(shè)置

Table 3 Simulation results of f1(x)Ackley function表3 f1(x)Ackley 函數(shù)仿真結(jié)果

Table 4 Simulation results of f2(x)Rastrigin function表4 f2(x)Rastrigin 函數(shù)仿真結(jié)果

Table 5 Simulation results of f3(x)Griewank function表5 f3(x)Griewank 函數(shù)仿真結(jié)果

Table 6 Simulation results of f4(x)Zakharov function表6 f4(x)Zakharov 函數(shù)仿真結(jié)果

Table 7 Simulation results of f5(x)Alpine function表7 f5(x)Alpine函數(shù)仿真結(jié)果

Table 8 Simulation results of f6(x)Exponential function表8 f6(x)Exponential函數(shù)仿真結(jié)果

Table 10 Simulation results of f8(x)Schwefel 2.22 function表10 f8(x)Schwefel 2.22 函數(shù)仿真結(jié)果

Table 11 Simulation results of f9(x)Sphere function表11 f9(x)Sphere函數(shù)仿真結(jié)果

Table 15 Simulation results of f13(x)Beale function表15 f13(x) Beale函數(shù)仿真結(jié)果

Table 16 Simulation results of f14(x)Booth function表16 f14(x) Booth 函數(shù)仿真結(jié)果

Table 17 Simulation results of f15(x)Goldstein&Price function表17 f15(x) Goldstein&Price函數(shù)仿真結(jié)果

Table 18 Simulation results of f16(x)Bohachevsky function表18 f16(x) Bohachevsky 函數(shù)仿真結(jié)果

Table 19 Simulation results of f17(x)Easom function表19 f17(x) Easom 函數(shù)仿真結(jié)果

Table 20 Simulation results of f18(x)Branin function表20 f18(x) Branin 函數(shù)仿真結(jié)果

Table 21 Simulation results of f19(x) Shubert function表21 f19(x) Shubert函數(shù)仿真結(jié)果
圖2~圖20 分別是5 種算法f1(x)~f19(x)的收斂曲線圖,直觀地反映出了5 種算法的收斂速度和收斂精度。圖2~圖13 是維數(shù)D=10,f1(x)~f12(x)函數(shù)收斂曲線圖,圖14~圖20 是維數(shù)D=2,f13(x)~f19(x)函數(shù)收斂曲線圖。在D=10 維測(cè)試情況下,由圖2~圖13可知,DECS 算法在收斂速度上優(yōu)于CS 算法、FPA 算法、BA 算法、ASCSA 算法,且?guī)缀踉?00 代之內(nèi)可以收斂到全局最優(yōu),表明DECS 算法具有較快的收斂速度和較好的收斂精度。f2(x)~f7(x)、f15(x)~f19(x)為多峰函數(shù)且存在多個(gè)局部極小點(diǎn),測(cè)試算法的跳出局部最優(yōu)和尋優(yōu)能力。由圖3~圖8,圖16~圖20 可以看出DECS 算法具有較強(qiáng)的尋優(yōu)能力,克服了易陷入局部最優(yōu)的缺點(diǎn)。f8(x)~f14(x)為單峰函數(shù),測(cè)試算法的收斂速度。由圖9~圖15 可以看出DECS 算法在100 代以內(nèi)可以收斂到理論最優(yōu)值。通過(guò)對(duì)這5 種算法的收斂曲線比對(duì)分析可知,無(wú)論是高維、低維還是單峰或多峰函數(shù),DECS 算法都具有較好的尋優(yōu)能力和較快的收斂速度。

Fig.2 Convergence curves of Ackley function圖2 Ackley 函數(shù)收斂曲線圖

Fig.3 Convergence curves of Rastrigin function圖3 Rastrigin 函數(shù)收斂曲線圖

Fig.4 Convergence curves of Griewank function圖4 Griewank 函數(shù)收斂曲線圖

Fig.5 Convergence curves of Zakharov function圖5 Zakharov 函數(shù)收斂曲線圖

Fig.6 Convergence curves of Alpine function圖6 Alpine函數(shù)收斂曲線圖

Fig.7 Convergence curves of Exponential function圖7 Exponential函數(shù)收斂曲線圖

Fig.8 Convergence curves of Schaffer function圖8 Schaffer函數(shù)收斂曲線圖

Fig.9 Convergence curves of Schwefel 2.22圖9 Schwefel 2.22 函數(shù)收斂曲線圖

Fig.10 Convergence curves of Sphere function圖10 Sphere函數(shù)收斂曲線圖

Fig.11 Convergence curves of Schwefel 1.2 function圖11 Schwefel 1.2 函數(shù)收斂曲線圖

Fig.12 Convergence curves of Chung Reynolds function圖12 Chung Reynolds函數(shù)收斂曲線圖

Fig.13 Convergence curves of Sum squares function圖13 Sum squares函數(shù)收斂曲線圖

Fig.14 Convergence curves of Beale function圖14 Beale函數(shù)收斂曲線圖

Fig.15 Convergence curves of Booth function圖15 Booth 函數(shù)收斂曲線圖

Fig.16 Convergence curves of Goldstein&Price function圖16 Goldstein&Price函數(shù)收斂曲線圖

Fig.17 Convergence curves of Bohachevsky function圖17 Bohachevsky 函數(shù)收斂曲線圖

Fig.18 Convergence curves of Easom function圖18 Easom 函數(shù)收斂曲線圖

Fig.19 Convergence curves of Branin function圖19 Branin 函數(shù)收斂曲線圖

Fig.20 Convergence curves of Shubert function圖20 Shubert函數(shù)收斂曲線圖
在布谷鳥(niǎo)搜索算法中發(fā)現(xiàn)概率P為重要的參數(shù)之一,為了比較三種策略下發(fā)現(xiàn)概率P的曲線變化,選取本文表1 中的f3(x)函數(shù)進(jìn)行測(cè)試。f3(x)是典型的非線性多模態(tài)函數(shù),搜索空間大并具有許多局部極小點(diǎn)。CS 算法、ACS 算法參數(shù)設(shè)置與表2 中DECS算法參數(shù)設(shè)置相同。
這里CS 算法發(fā)現(xiàn)概率P=0.25;ACS 算法發(fā)現(xiàn)概率Pa是典型性的自適應(yīng)概率;DECS 算法發(fā)現(xiàn)概率P0是在典型的自適應(yīng)概率Pa的基礎(chǔ)上,引入種群分布熵的策略。
由圖21 可知,CS 算法發(fā)現(xiàn)概率P=0.25 概率分布圖為一條直線,在整個(gè)迭代過(guò)程中發(fā)現(xiàn)概率為一個(gè)固定值。由圖22 可知,ACS 算法發(fā)現(xiàn)概率Pa概率分布圖為一條拋物線,發(fā)現(xiàn)概率Pa隨著迭代次數(shù)的增加而增加,在ACS 算法中迭代次數(shù)為200 次時(shí),發(fā)現(xiàn)概率Pa已經(jīng)達(dá)到0.416 6,不利于算法前期的種群多樣性。DECS 算法發(fā)現(xiàn)概率P0概率分布圖為一條不規(guī)則且跌宕起伏的曲線圖。由式(8)可知發(fā)現(xiàn)概率P0的大小由自適應(yīng)性Pa和空間種群分布位置分布信息共同決定。Si表明著種群分布情況,種群越分散Si越大,由式(10)可知慣性權(quán)重的變異算子Gi越小,使得P0越小,反之P0越大。例如由圖23 可知,P0概率分布前200 次迭代中,概率在0.1~0.2 之間呈不規(guī)則分布,表明布谷鳥(niǎo)在解的子空間Ωj中位置信息比較分散且不斷尋優(yōu)。在第399 次迭代P0=0.363 8,400 次迭代P0=0.352 5,401 次迭代P0=0.385 8。概率P0由大到小,再由小到大,說(shuō)明布谷鳥(niǎo)種群分布在解空間位置不斷變化。位置信息在尋優(yōu)過(guò)程中不斷在變化影響著概率P0的大小。在DECS 算法后期636 次迭代到1 000 次迭代,發(fā)現(xiàn)概率P0概率分布為一條規(guī)則且光滑的曲線。表明種群分布集中在某個(gè)解的子空間Ωj內(nèi)不斷尋優(yōu)。種群分布策略的引進(jìn)有效提高了算法前期的種群多樣性,同時(shí)也加強(qiáng)了算法后期的局部搜索能力。

Fig.21 Probability curve of P distribution of CS algorithm圖21 CS 算法概率P 曲線分布圖

Fig.22 Probability curve of Pa distribution of ACS algorithm圖22 ACS 算法概率Pa 曲線分布圖

Fig.23 Probability curve of P0distribution of DECS algorithm圖23 DECS 算法概率P0曲線分布圖
在布谷鳥(niǎo)搜索算法中,由Levy(λ)~μ=t-λ可知,布谷鳥(niǎo)連續(xù)的位置變化形成了一個(gè)帶有重尾分布的概率分布,使得布谷鳥(niǎo)飛行路徑表現(xiàn)出了Levy 飛行的本質(zhì),即在尋優(yōu)路徑中頻繁的短步長(zhǎng)偶爾會(huì)出現(xiàn)長(zhǎng)步長(zhǎng),使得CS 算法擁有更大的全局搜索能力,但是仍然存在全局搜索能力不足的缺陷。
本文提出的自適應(yīng)雙重萊維飛行機(jī)制主要分為兩個(gè)階段:搜索前中期和搜索中后期。由步長(zhǎng)更新公式可知,該式描述萊維飛行是一個(gè)馬爾科夫鏈,即下代的位置僅取決于當(dāng)前位置信息。下一次位置是由當(dāng)前位置Levy 飛行步長(zhǎng)及步長(zhǎng)因子ω共同決定的。由圖1 步長(zhǎng)因子ω變化曲線可知,DECS 算法前期擁有較小的步長(zhǎng)因子,且Levy 飛行搜索偶爾出現(xiàn)的長(zhǎng)步長(zhǎng),確保了算法前期每只布谷鳥(niǎo)在子空間Ω1,Ω2,…,Ωk中充分搜索。DECS 算法的中后期由子空間Ωk的搜索范圍,擴(kuò)大到整個(gè)解空間Ω的搜索范圍,較大的步長(zhǎng)因子確保了整個(gè)解空間Ω的充分搜索能力。隨著迭代次數(shù)的增加步長(zhǎng)因子的減小,DECS 算法后期的局部搜索能力增強(qiáng)。
為了驗(yàn)證自適應(yīng)雙重搜索Levy 飛行在全局搜索能力等方面的優(yōu)勢(shì),從表1 中選取了4 個(gè)函數(shù)進(jìn)行測(cè)試,f1(x)、f5(x)為復(fù)雜的多峰函數(shù),擁有無(wú)數(shù)局部極小值和局部極大值,常導(dǎo)致算法在求解時(shí)陷入局部最優(yōu),可有效測(cè)試算法跳離局部極值的能力及全局收斂性能。f8(x)、f9(x)為單峰函數(shù),由于它在全局最小值附近函數(shù)變化極為緩慢,因此被用來(lái)測(cè)試算法的收斂速度和尋優(yōu)能力。CS-Ⅱ算法(自適應(yīng)雙重搜索Levy 飛行)是CS 算法僅采用引進(jìn)新型步長(zhǎng)因子策略;ASCSA-Ⅰ算法(自適應(yīng)搜索Levy 飛行)是CS 算法僅采用自適應(yīng)步長(zhǎng)因子策略;CS 算法(標(biāo)準(zhǔn)的Levy 飛行)是標(biāo)準(zhǔn)的布谷鳥(niǎo)搜索算法。CS-Ⅱ算法、ASCSA-Ⅰ算法、CS 算法參數(shù)設(shè)置與表2 中DECS 算法參數(shù)設(shè)置相同。圖24~圖27 分別為f1(x)、f5(x)、f8(x)、f9(x) 在n=10 維測(cè)試情況下的函數(shù)收斂曲線圖。表22 為CS-Ⅱ算法、ASCSA-Ⅰ算法、CS 算法在n=10 維情況下,對(duì)f1(x)、f5(x)、f8(x)、f9(x)函數(shù)測(cè)試并記錄,平均值、最佳值、最差值及標(biāo)準(zhǔn)差測(cè)試結(jié)果的比較。
由表22 可知,CS-Ⅱ算法求解精度優(yōu)于CS 算法,相比CS 算法f1(x)、f5(x)、f8(x)、f9(x) 在求解精度上分別提高了11、5、13、18 個(gè)數(shù)量級(jí)。CS-Ⅱ算法比ASCSA-Ⅰ算法在f1(x)、f5(x)求解精度上分別提高了8、2 個(gè)數(shù)量級(jí),雖然在f8(x)、f9(x)求解精度上相差不多,但是在收斂速度上CS-Ⅱ算法優(yōu)于ASCSA-Ⅰ算法。由圖26、圖27 可知CS-Ⅱ算法在100 次迭代收斂到全局最優(yōu),而ASCSA-Ⅰ算法在200 次迭代收斂到全局最優(yōu)。由圖24、圖25 可知,CS 算法易陷入局部最優(yōu),而CS-Ⅱ算法在求解復(fù)雜的多峰且擁有無(wú)數(shù)的全局極小值的函數(shù)時(shí),表現(xiàn)出更好的全局尋優(yōu)性能,說(shuō)明CS-Ⅱ算法比CS 算法更易跳出局部最優(yōu)。由圖24~圖27 可知,CS-Ⅱ算法收斂速度優(yōu)于ASCSA-Ⅰ算法、CS 算法。CS-Ⅱ算法在求解f1(x)、f5(x)多峰函數(shù)時(shí),在300 次迭代內(nèi)可收斂到全局最優(yōu),ASCSA-Ⅰ算法分別在500、650 次迭代收斂,CS 算法陷入局部最優(yōu);CS-Ⅱ算法在求解f8(x)、f9(x)單峰函數(shù)時(shí)均在100 次迭代內(nèi)可收斂到全局最優(yōu),ASCSA-Ⅰ算法均在200 次迭代收斂到全局最優(yōu),CS 算法在求解f9(x)函數(shù)時(shí)400 次迭代收斂到全局最優(yōu),在求解f8(x)函數(shù)時(shí)1 000 次迭代未收斂。

Fig.24 Convergence curves of three Levy modes Ackley function圖24 三種萊維模式Ackley 函數(shù)收斂曲線圖

Fig.25 Convergence curves of three Levy modes Alpine function圖25 三種萊維模式Alpine函數(shù)收斂曲線圖

Fig.26 Convergence curves of three Levy modes Sphere function圖26 三種萊維模式Sphere函數(shù)收斂曲線圖

Fig.27 Convergence curves of three Levy modes Schwefel 2.22 function圖27 三種萊維模式Schwefel 2.22 函數(shù)收斂曲線圖

Table 22 Performance test results of three Levy modes表22 三種萊維模式的性能測(cè)試結(jié)果
為了分析3 種改進(jìn)策略對(duì)算法的性能影響,選取表1 中16 個(gè)函數(shù)進(jìn)行測(cè)試,表23 測(cè)試結(jié)果為f1(x)~f5(x)、f7(x)~f9(x)、f12(x)函數(shù),維數(shù)n=50;f13(x)~f19(x)函數(shù),維數(shù)n=2;記錄每次測(cè)試結(jié)果并計(jì)算平均值、最佳值、最差值、標(biāo)準(zhǔn)差;圖28、圖29 分別為5 種不同策略下,維數(shù)n=50 的f5(x)函數(shù)收斂圖和維數(shù)n=2的f15(x)函數(shù)收斂圖。將DECS 算法分別與CS-Ⅰ算法、CS-Ⅱ算法、CS-Ⅲ算法、CS 算法進(jìn)行比較測(cè)試。這里CS 算法是基本的布谷鳥(niǎo)算法;CS-Ⅰ算法是CS算法僅采用在隨機(jī)偏好游走的更新公式引入非線性對(duì)數(shù)遞減的慣性權(quán)重策略;CS-Ⅱ算法是CS 算法僅采用引進(jìn)新型步長(zhǎng)因子策略;CS-Ⅲ算法是CS 算法僅采用在發(fā)現(xiàn)概率P中引進(jìn)種群分布策略。CS-Ⅰ算法、CS-Ⅱ算法、CS-Ⅲ算法及CS 算法4 種算法參數(shù)設(shè)置與表2 中DECS 算法參數(shù)設(shè)置相同。

Fig.28 Convergence curve of Alpine function with different strategies圖28 不同策略Alpine函數(shù)收斂曲線圖

Fig.29 Convergence curve of Goldstein&Price function with different strategies圖29 不同策略Goldstein&Price函數(shù)收斂曲線圖
由表23 的比較結(jié)果可知,CS-Ⅰ算法在高維多峰函數(shù)、高維單峰函數(shù)上的尋優(yōu)性能優(yōu)于CS 算法、CS-Ⅱ算法、CS-Ⅲ算法。CS-Ⅰ算法求解f1(x)函數(shù)的精度相對(duì)于CS 算法提高了17 個(gè)數(shù)量級(jí),f2(x)~f5(x)、f7(x)~f9(x)、f12(x)均可收斂到理論最優(yōu)解。CS-Ⅱ算法在低維多峰函數(shù)、低維單峰函數(shù)上尋優(yōu)性能優(yōu)于CS-Ⅰ算法、CS-Ⅲ算法、CS 算法。f13(x)~f19(x)均可收斂到理論最優(yōu)值。采用CS 算法在測(cè)試f13(x)、f16(x)~f17(x)函數(shù)時(shí)很容易陷入局部最優(yōu)解,而CS-Ⅱ算法均可收斂于理論最優(yōu)解。說(shuō)明雙重Levy 飛行搜索CS-Ⅱ算法比標(biāo)準(zhǔn)Levy 飛行搜索CS 算法更容易跳出局部最優(yōu)解,有效克服了陷入局部最優(yōu)的缺陷。由圖28 可知,CS-Ⅰ算法在高維函數(shù)尋優(yōu)精度和收斂速度上性能優(yōu)于CS-Ⅱ算法、CS-Ⅲ算法、CS 算法。由圖29 可知,CS-Ⅱ算法在低維函數(shù)的收斂速度上優(yōu)于CS-Ⅰ算法、CS-Ⅲ算法、CS 算法。而CS-Ⅲ算法優(yōu)于CS 算法,CS-Ⅲ算法在350 次迭代收斂到全局最優(yōu),CS 算法在600 次迭代收斂到全局最優(yōu),表明在概率P上引進(jìn)種群分布熵策略,提高了CS 算法的收斂速度。

Table 23 Test comparison of five algorithms表23 5 種算法的測(cè)試比較

表23 (續(xù))
DECS 算法采用了CS-Ⅰ算法、CS-Ⅱ算法、CS-Ⅲ算法中的策略,表現(xiàn)出了良好的尋優(yōu)能力。f1(x)函數(shù)求解精度相對(duì)于CS 算法提高了17 個(gè)數(shù)量級(jí),f2(x)~f5(x)、f7(x)~f9(x)、f12(x)~f19(x)函數(shù)均可收斂于理論最優(yōu)值。對(duì)于高維多峰函數(shù)、高維單峰函數(shù)、低維多峰函數(shù)、低維單峰函數(shù)DECS 都表現(xiàn)出了良好的普適性。組合改進(jìn)策略可以更加有效地提高算法的尋優(yōu)性能。
基本的CS 算法的偏好游走中,下一代鳥(niǎo)窩位置更新是采用固定上一代位置為參考的更新方式,容易造成算法在迭代后期陷入局部最優(yōu)解。因此本文提出了在偏好游走環(huán)節(jié)引入對(duì)數(shù)遞減策略。DECS算法主要分為兩個(gè)尋優(yōu)階段:迭代前期、迭代后期。由圖1 可知,迭代前中期萊維飛行由于動(dòng)態(tài)變化步長(zhǎng)因子ω,已經(jīng)將搜索精度縮小一個(gè)或多個(gè)數(shù)量級(jí),因此偏好游走在迭代前期以較大的慣性權(quán)重κ保留上一代的位置信息,可以有效跳出子空間Ωj局部極
為了更好地驗(yàn)證DECS 算法的搜索效率及收斂性,本文設(shè)定了固定精度。從表1 中選取了9 個(gè)函數(shù)進(jìn)行測(cè)試,對(duì)每個(gè)函數(shù)在固定精度下獨(dú)立運(yùn)行30次。記錄每個(gè)函數(shù)在固定精度下的最小迭代次數(shù)、最大迭代次數(shù)、平均迭代次數(shù)、算法成功率、運(yùn)行時(shí)間。測(cè)試結(jié)果如表24 所示。表24 中“最小迭代次數(shù)”為函數(shù)尋優(yōu)獨(dú)立運(yùn)行30 次中達(dá)到預(yù)設(shè)精度值時(shí)的最小迭代次數(shù);“最大迭代次數(shù)”為函數(shù)尋優(yōu)獨(dú)立運(yùn)行30 次中達(dá)到預(yù)設(shè)精度值時(shí)的最大迭代次數(shù);“平均迭代次數(shù)”為函數(shù)尋優(yōu)獨(dú)立運(yùn)行30 次中達(dá)到固定精度值時(shí)所有運(yùn)行次數(shù)的平均數(shù),最大迭代次數(shù)設(shè)置為3 000 次,如果實(shí)驗(yàn)過(guò)程中迭代次數(shù)超過(guò)3 000,就認(rèn)為尋優(yōu)失敗,其中沒(méi)有達(dá)到預(yù)設(shè)精度的運(yùn)行次數(shù)不算在內(nèi)。“—”表示函數(shù)重復(fù)尋優(yōu)過(guò)程中沒(méi)有一次達(dá)到預(yù)設(shè)精度,“運(yùn)行時(shí)間”為30 次函數(shù)尋優(yōu)過(guò)程運(yùn)行時(shí)間的平均數(shù)。算法成功率=達(dá)到精度的運(yùn)行次數(shù)/總次數(shù)。

Table 24 Comparison of algorithm success rate and number of iterations表24 算法成功率和迭代次數(shù)比較
由表24 可知,本文提出的DECS 算法在9 個(gè)測(cè)試函數(shù)上進(jìn)行的30 次獨(dú)立運(yùn)行實(shí)驗(yàn),都達(dá)到了目標(biāo)精度并且成功率均為100%。對(duì)于f3(x)、f4(x)、f5(x)、f7(x)復(fù)雜的多峰函數(shù),在尋優(yōu)精度固定的情況下,DECS算法的平均迭代次數(shù)明顯小于ASCSA、CS、BA 和FPA 算法,且成功率都達(dá)到了100%,而對(duì)f3(x)函數(shù)FPA 算法的成功率只有83.3%,f5(x)函數(shù)CS 算法的成功率只有60%,充分說(shuō)明了DECS 算法具有更好的搜索能力以及更高的收斂效率。f8(x)、f9(x)、f12(x)為單峰函數(shù),測(cè)試函數(shù)的搜索效率和尋優(yōu)能力。DECS 算法在平均迭代次數(shù)50 次以內(nèi),均達(dá)到了固定收斂精度,表現(xiàn)出了較優(yōu)的收斂效率。面對(duì)二維的f15(x)、f19(x)多峰且具有多個(gè)極值點(diǎn)的函數(shù),DECS 算法在平均迭代次數(shù)上優(yōu)于ASCSA 算法,表明DECS算法有較強(qiáng)的跳出局部最優(yōu)能力。從表24 第8 列運(yùn)行時(shí)間可以看出,DECS 算法在時(shí)間效率上均高于ASCSA、CS、BA 和FPA 算法。
針對(duì)布谷鳥(niǎo)收搜索算法存在易陷入局部最優(yōu),后期收斂速度慢,求解精度不高等不足,分析基本布谷鳥(niǎo)的尋優(yōu)過(guò)程與特性,提出了動(dòng)態(tài)調(diào)整概率的雙重布谷鳥(niǎo)搜索算法。該算法在發(fā)現(xiàn)概率P引入種群分布熵的概念,P不僅隨著迭代次數(shù)的增加而變化,同時(shí)還隨著布谷鳥(niǎo)分布的情況而變化,使得算法前期增加了種群的多樣性且增強(qiáng)了全局搜索能力。布谷鳥(niǎo)尋優(yōu)過(guò)程中引入了動(dòng)態(tài)變化步長(zhǎng)因子ω,使得算法前期在各自的子空間中進(jìn)行Levy 飛行尋優(yōu)機(jī)制,中后期再由整個(gè)解空間到局部精細(xì)搜索。有效改善了基本布谷鳥(niǎo)算法易陷入局部最優(yōu),收斂速度慢,求解精度低等缺點(diǎn)。通過(guò)19 個(gè)測(cè)試函數(shù)驗(yàn)證,DECS 算法的尋優(yōu)能力、求解精度、收斂速度等方面均有較大幅度的提升。