宋 美,葛玉輝,劉舉勝
上海理工大學(xué) 管理學(xué)院,上海 200093
微粒群算法(Particle SwarmOptimization,PSO)[1]由于其具有實(shí)現(xiàn)簡單,群體共同進(jìn)化等優(yōu)化性能從1995年,被Eberhart 和Kennedy 提出以后,在路徑規(guī)劃、疾病檢測、圖像分割、電力故障預(yù)測等方面產(chǎn)生了巨大的應(yīng)用價(jià)值[2-3]。
雖然PSO算法具有較好的優(yōu)化性能,然而易陷入局部最優(yōu),發(fā)生早熟也是其缺陷之一。對(duì)此研究人員借鑒自適應(yīng)和非線性機(jī)制對(duì)算法參數(shù)的取值方式進(jìn)行了相關(guān)改進(jìn)。借鑒自適應(yīng)機(jī)制,文獻(xiàn)[4]針對(duì)粒子群算法具有易陷入局部最小值和全局尋優(yōu)能力差的缺陷,提出了一種自適應(yīng)慣性權(quán)重粒子群算法(AIW_PSO)。研究發(fā)現(xiàn)該算法能夠有效平衡粒子的位置和速度。文獻(xiàn)[5]針對(duì)粒子群算法在處理優(yōu)化問題時(shí)缺乏有效的參數(shù)控制這一缺陷,采用異步變化策略對(duì)學(xué)習(xí)因子進(jìn)行更新,采用非線性遞減的方式對(duì)慣性權(quán)重進(jìn)行更新,改進(jìn)算法較原算法具有一定的求解優(yōu)勢。文獻(xiàn)[6]通過對(duì)慣性權(quán)重進(jìn)行自適應(yīng)取值,將改進(jìn)的PSO 算法與支持向量機(jī)(SVM)進(jìn)行了結(jié)合,利用改進(jìn)算法對(duì)花粉濃度進(jìn)行了有效的預(yù)測。文獻(xiàn)[7]將自適應(yīng)變異應(yīng)用于PSO 算法中,通過對(duì)算法中全局最優(yōu)值進(jìn)行擾動(dòng),以提高種群多樣性,最終形成自適應(yīng)優(yōu)化PSO 算法。之后將該算法與小波網(wǎng)絡(luò)進(jìn)行結(jié)合,形成自適應(yīng)優(yōu)化小波網(wǎng)絡(luò)算法,研究發(fā)現(xiàn)該算法預(yù)測精度提升率最高。文獻(xiàn)[8]根據(jù)迭代次數(shù)和粒子的位置的變化情況設(shè)計(jì)了一種新的自適應(yīng)慣性權(quán)重混沌PSO 算法,該算法能夠有效避免陷入極值,提高算法性能。
借鑒非線性機(jī)制,文獻(xiàn)[9]通過引入非線性慣性權(quán)重系數(shù),對(duì)慣性權(quán)重進(jìn)行非線性取值,形成改進(jìn)PSO 算法,之后將改進(jìn)PSO算法與BP算法進(jìn)行結(jié)合,形成了非線性BP 神經(jīng)網(wǎng)絡(luò)模型。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法對(duì)非線性函數(shù)具有良好的擬合效果。文獻(xiàn)[10]針對(duì)文化算法中的函數(shù)優(yōu)化問題存在過早收斂,不確定等缺陷,基于文化算法框架,將混沌搜索引入算法中,提出了一種混沌文化算法。該算法具在搜索效率、搜索精度及穩(wěn)定性上有顯著表現(xiàn)。文獻(xiàn)[11]通過對(duì)慣性權(quán)重進(jìn)行非線性取值,形成了一種非線性PSO 算法,該算法在分配網(wǎng)絡(luò)路由節(jié)點(diǎn)和平衡簇結(jié)構(gòu)系統(tǒng)方面具有良好的性能。文獻(xiàn)[12]通過引入非線性慣性權(quán)重替代傳統(tǒng)慣性權(quán)重遞減,構(gòu)造了一種改進(jìn)優(yōu)化PSO算法的小波支持向量機(jī)預(yù)警模型,在預(yù)測效果上,改進(jìn)后的算法具有更好的預(yù)測性能。
上述研究主要從自適應(yīng)性和非線性等方面對(duì)算法進(jìn)行設(shè)計(jì)。設(shè)計(jì)大多圍繞PSO 算法的慣性權(quán)重進(jìn)行了相關(guān)改進(jìn),且改進(jìn)算法的求解效果有一定的提升。然而上述改進(jìn)只是從單個(gè)方面對(duì)算法的某種參數(shù)取值方式進(jìn)行了改進(jìn),鮮有學(xué)者將混沌、自適應(yīng)、非線性和共同演化等特征都考慮到算法中,對(duì)粒子群算法中的學(xué)習(xí)因子、粒子初始值選取以及慣性權(quán)重等參數(shù)進(jìn)行協(xié)同優(yōu)化,以提升算法的求解性能。
基于此,本文基于協(xié)同進(jìn)化理論,借鑒協(xié)同進(jìn)化理論中混沌、自適應(yīng)、非線性和共同演化等諸多特性通過對(duì)PSO 進(jìn)行改進(jìn)形成動(dòng)態(tài)雙重自適應(yīng)PSO 算法(DDAPSO)。對(duì)此算法進(jìn)行了仿真測試,實(shí)驗(yàn)結(jié)果表明DDAPSO能夠有效避免算法陷入局部極值,具有較好的求解性能。
PSO算法在可行解空間中首先會(huì)初始化一群粒子,初始化后的粒子可以看作初始解,用位置、速度、適應(yīng)度值來表示該粒子或該解的特征。粒子會(huì)根據(jù)一定的更新法則在解空間中不斷運(yùn)動(dòng),在解空間運(yùn)動(dòng)的過程中,通過跟蹤個(gè)體極值pbest和群體極值gbest更新個(gè)體位置,粒子每更新一次,計(jì)算一次適應(yīng)度值,通過比較個(gè)體極值pbest和群體極值gbest的優(yōu)劣,從而逐步迭代求得全局最優(yōu)解。粒子群算法按照式(1)和式(2)進(jìn)行速度和位置的更新[13]。
其中,ω為慣性權(quán)重,d=1,2,…,D表示粒子的維數(shù);i=1,2,…,n表示粒子的個(gè)數(shù);k為當(dāng)前迭代次數(shù);Vid表示粒子的速度;X表示粒子的位置;c1和c2為加速度因子,c1稱為個(gè)體學(xué)習(xí)因子,c2稱為社會(huì)學(xué)習(xí)因子;r1和r2是分布于[0,1]區(qū)間的隨機(jī)數(shù),Pid為個(gè)體極值,Pgd為群體極值。
關(guān)于協(xié)同進(jìn)化的研究,最早始于國外學(xué)者對(duì)生物學(xué)的探索,Ehrlich和Raven最早在研究蝶類與植物之間的作用關(guān)系時(shí)提出了協(xié)同進(jìn)化這一概念[14],Jazen[15]隨后對(duì)協(xié)同進(jìn)化給出了定義:協(xié)同進(jìn)化就是一個(gè)物種的特征隨著另一個(gè)物種的某一特征變化而進(jìn)行變化,后者的特征同樣隨著前者特征變化而進(jìn)化。具體來說協(xié)同進(jìn)化理論具有如下特征:
(1)協(xié)同進(jìn)化中的個(gè)體具有多樣性[16]。參與協(xié)同進(jìn)化的主體可以是不同形態(tài)、不同性質(zhì)的主體,主體的多樣性可以使得整體系統(tǒng)的熵增減小,系統(tǒng)的無序性受到削減,最后在混沌中快速找到最優(yōu)解。
(2)協(xié)同進(jìn)化中的個(gè)體具有自組織、自適應(yīng)性[17-18]。在復(fù)雜系統(tǒng)中,兩個(gè)或多個(gè)個(gè)體在協(xié)同進(jìn)化的過程中,個(gè)體與個(gè)體、個(gè)體與環(huán)境之間會(huì)協(xié)同演化,不斷地促使整個(gè)系統(tǒng)達(dá)到最優(yōu),同時(shí)系統(tǒng)會(huì)根據(jù)系統(tǒng)的演化結(jié)果及時(shí)向個(gè)體反饋信息,個(gè)體會(huì)根據(jù)反饋信息進(jìn)行進(jìn)一步的調(diào)整,最終實(shí)現(xiàn)個(gè)體與系統(tǒng)的協(xié)調(diào)發(fā)展。
(3)協(xié)同進(jìn)化中的個(gè)體與環(huán)境具有非線性[19]。在個(gè)體與整體協(xié)同進(jìn)化過程中,個(gè)體與整體將會(huì)發(fā)生非線性作用,這一作用會(huì)促使個(gè)體和整體相互演化,進(jìn)而最終實(shí)現(xiàn)協(xié)同進(jìn)化。在協(xié)同進(jìn)化的作用下,個(gè)體最優(yōu)與群體最優(yōu)將趨于同質(zhì),最終促使系統(tǒng)趨于穩(wěn)定。
基于協(xié)同進(jìn)化理論,結(jié)合粒子群算法的進(jìn)化特點(diǎn),提出了一種改進(jìn)的動(dòng)態(tài)雙重粒子群算法(Dynamic Dual Adaptive PSO algorithm,DDAPSO)。
DDAPSO 算法從PSO 算法的搜索機(jī)制和信息傳遞機(jī)制進(jìn)行了相關(guān)設(shè)計(jì)[20]。其借鑒生物學(xué)中的協(xié)同進(jìn)化論對(duì)傳統(tǒng)粒子群算法進(jìn)行相關(guān)改進(jìn),通過對(duì)粒子初始值混沌取值,對(duì)自我學(xué)習(xí)因子和社會(huì)學(xué)習(xí)因子非線性取值,對(duì)慣性權(quán)重進(jìn)行自適應(yīng)取值等多種方式,促使算法對(duì)目標(biāo)函數(shù)快速求解,具體原理如圖1所示。
圖1 DDAPSO算法原理
如圖1所示,在DDAPSO中,首先,在初始值的選取上,由于混沌算法具有一定的隨機(jī)性和遍歷性,能夠以較為隨機(jī)的搜索方式,對(duì)粒子的初值進(jìn)行取值,因此在算法解解空間一定的情況下,能夠使得初值選取更為隨機(jī),有效擴(kuò)展了初值的隨機(jī)性。
其次,對(duì)自我學(xué)習(xí)因子和社會(huì)學(xué)習(xí)因子進(jìn)行非線性取值能夠使得自我學(xué)習(xí)因子和社會(huì)學(xué)習(xí)因子借鑒復(fù)雜系統(tǒng)中的非線性關(guān)系,清楚呈現(xiàn)自我學(xué)習(xí)因子和社會(huì)學(xué)習(xí)因子的動(dòng)態(tài)變化關(guān)系,并根據(jù)搜索的迭代次數(shù)恰當(dāng)調(diào)整粒子學(xué)習(xí)能力,進(jìn)而對(duì)局部搜索和全局搜索進(jìn)行一定平衡。
最后,DDAPSO算法的慣性權(quán)重取值區(qū)別于傳統(tǒng)慣性權(quán)重線性遞減形式,其根據(jù)粒子的適應(yīng)度值自適應(yīng)更新慣性權(quán)重。當(dāng)目標(biāo)函數(shù)適應(yīng)度值較小時(shí),對(duì)慣性權(quán)重選取一個(gè)較小值,粒子在局部位置進(jìn)行搜索;當(dāng)目標(biāo)函數(shù)適應(yīng)度值較大時(shí),對(duì)慣性權(quán)重選取一個(gè)較大值,粒子在全局進(jìn)行搜索。此時(shí),粒子的慣性權(quán)重能夠根據(jù)適應(yīng)度值進(jìn)行自適應(yīng)進(jìn)化,從而促使函數(shù)值不斷向著最優(yōu)解進(jìn)行趨近,直到最終找到最優(yōu)解。
(1)混沌并不是一片混亂,而是有著精致的內(nèi)在結(jié)構(gòu)的一類現(xiàn)象,混沌運(yùn)動(dòng)能在一定范圍內(nèi)按自身的“規(guī)律”不重復(fù)地遍歷所有狀態(tài)。在PSO中,初始化種群時(shí),種群的多樣性以及初始化粒子時(shí)的隨機(jī)性與粒子的搜索效率有很大的關(guān)系,為了使得種群的多樣性和隨機(jī)性得以增強(qiáng),結(jié)合協(xié)同進(jìn)化理論,將混沌這種具有隨機(jī)性、遍歷性及規(guī)律性特點(diǎn)的非線性動(dòng)力系統(tǒng)特有運(yùn)動(dòng)形式引入進(jìn)化計(jì)算,利用其具有隨機(jī)性和遍歷性優(yōu)勢,可以有效避免搜索過程陷入局部最優(yōu)。由于Feigenbaum 迭代與其他產(chǎn)生混沌變量的動(dòng)力系統(tǒng)相比簡單、計(jì)算量小、使用方便,所以本文采用Feigenbaum迭代,來構(gòu)造混沌序列,進(jìn)行粒子位置和速度的初始化,具體如式(3)所示,其中xn的初始值不能取該混沌迭代方程的不動(dòng)點(diǎn)。
為了直觀展現(xiàn)混沌迭代軌跡,取初值x0=0.007 時(shí),將式(3)的Feigenbaum 迭代軌跡進(jìn)行了仿真,具體如圖2所示(迭代次數(shù)取500)。
圖2 Feigenbaum迭代軌跡
(2)在PSO 算法中,學(xué)習(xí)因子體現(xiàn)了粒子的學(xué)習(xí)能力,其中自我學(xué)習(xí)因子,體現(xiàn)了粒子的自我學(xué)習(xí)能力,社會(huì)學(xué)習(xí)因子體現(xiàn)了粒子的社會(huì)學(xué)習(xí)能力。不同的學(xué)習(xí)因子表明粒子具有不同的尋優(yōu)能力。在粒子尋優(yōu)的過程中,初始時(shí)期,粒子需要具備較強(qiáng)的個(gè)體學(xué)習(xí)能力,這樣其可以在更大的搜索空間中快速尋找到最優(yōu)解的位置;在搜索后期,粒子需要較大的社會(huì)學(xué)習(xí)能力,可以在周圍局部解范圍內(nèi)進(jìn)一步進(jìn)行局部搜索。為此,借鑒協(xié)同進(jìn)化理論中非線性優(yōu)勢,引入非線性調(diào)整策略來平衡c1、c2的關(guān)系,c1、c2通過非線性變化,控制粒子的飛行速度與方向,來提高解的收斂速度與精度,具體調(diào)整策略為:
其中,iter為當(dāng)前迭代次數(shù),itermax為最大迭代次數(shù),c1b、c1e、c2b和c2e分別為c1和c2的初始值和最終值,一般取c1b=2.5,c1e=0.5,c2b=0.5 和c2e=2.5 時(shí)算法效果較好,c1、c2的取值如圖3所示(學(xué)習(xí)次數(shù)取500)。
(3)為了避免慣性權(quán)重線性遞減,本文采用自適應(yīng)慣性權(quán)重遞減的方法對(duì)w進(jìn)行自適應(yīng)取值。這樣取值可以有效促使w的取值會(huì)隨著目標(biāo)函數(shù)值得變化而發(fā)生相應(yīng)的調(diào)整,及時(shí)更新自身信息,不斷將自我信息與全局信息進(jìn)行比較,促使自身信息能夠在獲取全局信息的基礎(chǔ)上進(jìn)行個(gè)體更新和改變,最終實(shí)現(xiàn)自身與系統(tǒng)的協(xié)同進(jìn)化。具體自適應(yīng)慣性權(quán)重更新公式如式(6)和(7)所示。
圖3 c1、c2 自適應(yīng)變化圖
式中,ωmax表示ω的最大值,ωmin表示ω的最小值,f表示當(dāng)前目標(biāo)函數(shù)值,favg表示當(dāng)前平均目標(biāo)函數(shù)值,fmin表示目標(biāo)函數(shù)極小值。
步驟1 混沌初始化粒子群參數(shù)。對(duì)初始的粒子按照(3)式進(jìn)行混沌隨機(jī)取值,生成初始的粒子速度vi和粒子位置xi。
步驟2 評(píng)價(jià)粒子群。計(jì)算出粒子的適應(yīng)值,通過fitness 函數(shù)將粒子的個(gè)體最優(yōu)值存儲(chǔ)到pbest中,群體最優(yōu)值存儲(chǔ)到gbest中。
步驟3 更新自我學(xué)習(xí)和社會(huì)學(xué)習(xí)因子,按照式(4)和式(5)更新自我學(xué)習(xí)因子c1和社會(huì)學(xué)習(xí)因子c2。
步驟4 更新慣性權(quán)重w,若當(dāng)前目標(biāo)函數(shù)值f小于平均目標(biāo)值favg,則按照式(6)更新慣性權(quán)重;若當(dāng)前目標(biāo)函數(shù)值f大于平均目標(biāo)值favg則按照式(7)更新慣性權(quán)重。
步驟5 更新粒子的位置。按照式(1)和式(2)更新粒子的速度和位置。
步驟6 更新個(gè)體最優(yōu)。將粒子的適應(yīng)度值與上一次迭代的適應(yīng)度值進(jìn)行比較,取較好的粒子作為后代粒子。
步驟7 更新全局最優(yōu)。比較個(gè)體最優(yōu)值pbest和全局最優(yōu)值gbest,若pbest優(yōu)于gbest,則將pbest賦值給gbest。
步驟8 當(dāng)算法滿足迭代結(jié)束條件,結(jié)束算法,否則返回步驟3繼續(xù)搜索,直到滿足停止條件跳出循環(huán)。
DDAPSO 算法流程圖如圖4 所示(其中N為算法最大迭代次數(shù))。
圖4 DDAPSO算法流程
在經(jīng)典粒子群算法中,粒子群的規(guī)模為N,每個(gè)粒子的維數(shù)為D,粒子每進(jìn)行一次迭代,其計(jì)算復(fù)雜度為O(N)[21];在DDAPSO 算法中,主要的執(zhí)行運(yùn)算的復(fù)雜度包括:
(1)粒子的初始值混沌取值,其算法的復(fù)雜度為O(DN)。
(2)計(jì)算適應(yīng)度的均值,其算法復(fù)雜度為O(N+1)。
因此,DDAPSO 算法整體復(fù)雜度為O(DN)。該算法理論復(fù)雜度理論上高于經(jīng)典PSO算法,并且算法的復(fù)雜度會(huì)隨著粒子個(gè)數(shù)的增加和維數(shù)的增加而進(jìn)一步增大。但在求解時(shí)間和求解效率上,由于DDAPSO 算法借鑒了復(fù)雜協(xié)同進(jìn)化理論的協(xié)同進(jìn)化,自適應(yīng)和非線性等諸多特性卻具有較好求解性能。
在算法的收斂性方面,相關(guān)研究已經(jīng)對(duì)PSO 算法收斂性進(jìn)行了相關(guān)分析[22-24],結(jié)合前人研究,本文依據(jù)文獻(xiàn)[22-23]對(duì)DDAPSO 算法的收斂性進(jìn)行相關(guān)分析,具體如下。
假設(shè)1 目標(biāo)函數(shù)f的解空間為Rn到R,Q為Rn的一個(gè)子集,算法的最終目的是在Q的范圍內(nèi)找到一個(gè)最優(yōu)解z,使得目標(biāo)函數(shù)最小化。當(dāng)存在f(D(z,δ))≤f(z)時(shí),若δ∈Q,則f(D(z,δ))≤f(δ)。其中,D為迭代函數(shù)。
假設(shè)2 對(duì)于Q的任意Borel子集B,如果測度u(B)>0 ,則有,其中vi[B]是由測度vi所得到B的概率。
定理1 若目標(biāo)函數(shù)f為可測函數(shù),Q為可測子集,滿足假設(shè)1 和假設(shè)2,同時(shí)假設(shè)為算法生成的解序列,則
證明DDAPSO 算法的收斂性,需要證明其符合假設(shè)1、假設(shè)2和定理1。
引理1 DDAPSO滿足假設(shè)1。
由步驟7 可知,比較個(gè)體最優(yōu)值pbest和全局最優(yōu)值gbest,若pbest優(yōu)于gbest,則將pbest賦值給gbest。
在DDAPSO算法中,假設(shè)D為算法的迭代函數(shù),則D函數(shù)的描述可以根據(jù)步驟7定義為:
若f(gbest)≤f(pbest) ,則D(gbest,pbest)= gbest,因此f(D(gbest,pbest))= f(gbest)≤f(pbest) 。若f(gbest)≥f(pbest) ,則D(gbest,pbest)=pbest,因此,f(D(gbest,pbest))=f(pbest)≤f(pbest) 。因此,DDAPSO 算法滿足假設(shè)1。
引理2 DDAPSO算法滿足假設(shè)2。
定義Q的任意 Borel 子集B=Mi,k,在 DDAPSO 算法中,令φ1=c1×r1,φ2=c2×r2,由式(1)和式(2)可得:
其中,w按照式(6)和式(7)自適應(yīng)取值,c1和c2按照式(4)和式(5)非線性取值。隨著迭代次數(shù)的增加,c1、c2的非線性取值以及w的自適應(yīng)取值使得Borel 子集中的元素更加隨機(jī)。因此,種群中粒子測度u(Mi,k)不斷增大,其并集也不斷增大。此時(shí),假設(shè)種群中粒子支持集的并集為β,則DDAPSO 算法搜索停止時(shí),。因此,DDAPSO算法的樣本空間的并集包含Q,此時(shí)u(B)>0,存在
綜上,DDAPSO算法滿足假設(shè)2。
引理3 DDAPSO算法是一個(gè)全局收斂算法。
證明因DDAPSO算法滿足假設(shè)1和假設(shè)2,由定理1知,則DDAPSO是一個(gè)全局收斂算法。
為了檢驗(yàn)DDAPSO 算法的性能,本文選取了6 個(gè)經(jīng)典Benchmark 函數(shù)進(jìn)行測試。在6 個(gè)測試函數(shù)中,De Jong、Quadric、Rosenbrock valley為單模態(tài)函數(shù);Rastrigin、Schaffers、Ackley 為多模態(tài)函數(shù)。其中 De Jong 為復(fù)雜的非線性對(duì)稱單模函數(shù),Rosenbrock valley為很難極小化的典型病態(tài)單模函數(shù);在6 個(gè)函數(shù)中,函數(shù)的全局最優(yōu)位置均為[0,0],各個(gè)函數(shù)對(duì)應(yīng)的極小值均為0,具體的函數(shù)軌跡如圖3所示。
單模態(tài)函數(shù):
函數(shù)1 De Jong函數(shù)
De Jong 函數(shù)實(shí)際上是一個(gè)Sphere 函數(shù),此函數(shù)存在極小值,其全局最優(yōu)解在一個(gè)狹窄的椎體底端,在x1=x2=0 時(shí)存在全局最小值,具體如圖5(a)所示。
函數(shù)2 Quadric函數(shù)
Quadric 函數(shù)是一個(gè)典型的單模態(tài)測試函數(shù),其全局最優(yōu)解在一個(gè)狹長的山谷中,是一個(gè)很難極小化的測試函數(shù),當(dāng)x1=x2=0 時(shí)其存在全局極小值,具體如圖5(b)所示。
函數(shù)3 Rosenbrock’s valley函數(shù)
Rosenbrock’s valley 是一個(gè)非常經(jīng)典的優(yōu)化測試函數(shù),其全局最優(yōu)值位于一個(gè)帶有拋物面的卷狀的峽谷中。雖然山谷的坡度不是很大,但全局收斂很難,當(dāng)x1=x2=1 時(shí),此函數(shù)存在全局極小值點(diǎn),具體如圖5(c)所示。
多模態(tài)函數(shù):
函數(shù)4 Rastrigin函數(shù)
Rastrigin函數(shù)是一個(gè)基于De Jong函數(shù)的局部最小值規(guī)則分布的多模態(tài)函數(shù),是一個(gè)典型的多模態(tài)函數(shù),該函數(shù)在求解最優(yōu)解過程中,極易陷入局部最優(yōu)解中,當(dāng)x1=x2=0 時(shí),全局最小值,具體如圖5(d)所示。
函數(shù)5 Schaefer’sf7 函數(shù)
Schaefer’sf7 函數(shù)是一個(gè)典型的病態(tài)多模態(tài)函數(shù),該函數(shù)在自變量取值范圍內(nèi)存在很多局部最優(yōu)點(diǎn),在尋求最優(yōu)解過程中很難找到全局極值點(diǎn),是一個(gè)典型的多模測試函數(shù)。當(dāng)x1=x2=0 時(shí),存在全局最小值,具體如圖5(e)所示。
函數(shù)6 Ackly函數(shù)
Ackley是一個(gè)使用廣泛的多模測試函數(shù),其全局最優(yōu)解在一個(gè)狹小的椎體底部,在尋求最優(yōu)解的過程中,算法極易停滯不前陷入局部最優(yōu),從而找不到全局最優(yōu)解。當(dāng)x1=x2=0 時(shí),其全局最小值,具體如圖5(f)所示。
測試環(huán)境如下:計(jì)算機(jī)的CPU 為Intel?Core? i7-8700 CPU @3.20 GHz 3.19 GHz,運(yùn)行內(nèi)存為8.0 GB;軟件為Windows10操作系統(tǒng)下的Matlab2018A中文版。
在實(shí)驗(yàn)中,本文將與PSO(算法1),文獻(xiàn)[25]中的指數(shù)型函數(shù)遞減慣性權(quán)重的PSO 算法(算法2),文獻(xiàn)[26]中的高階指數(shù)型函數(shù)的遞減慣性權(quán)重PSO 算法(算法3),文獻(xiàn)[27]中的二階振蕩微粒群算法(算法4),文獻(xiàn)[28]中的帶收縮因子的PSO 算法(算法5)進(jìn)行了對(duì)比。其中PSO算法中的慣性權(quán)重采用線性遞減的形式,慣性權(quán)重w在區(qū)間[0.4,0.9]之間線性取值;文獻(xiàn)[25]中指數(shù)型函數(shù)遞減慣性權(quán)重中的α為控制因子,控制w與迭代次數(shù)變化曲線的平滑度,通常取3;文獻(xiàn)[26]中高階指數(shù)型函數(shù)的遞減慣性權(quán)重中的β一般取20。其余參數(shù)具體設(shè)置:自我學(xué)習(xí)因子和社會(huì)學(xué)系因子的初始值和最終值分別為c1b=2.2,c1e=0.5,c2b=0.5,c2e=2.2,粒子數(shù)目為30,迭代次數(shù)為500 次,混沌初始化中的u取4,測試算法參數(shù)設(shè)置具體取值如表1所示。
對(duì)每種算法分別獨(dú)立運(yùn)行10 次,將其運(yùn)行結(jié)果進(jìn)行統(tǒng)計(jì),其中Function 表示最優(yōu)化目標(biāo)函數(shù),Algorithm表示算法,Goal表示目標(biāo)值,◢best表示最優(yōu)值,◢worst表示最差值,◢avg 表示平均值,◢std 表示標(biāo)準(zhǔn)差,◢num表示尋優(yōu)次數(shù),◢%表示尋優(yōu)率,t表示運(yùn)行時(shí)間(單位s),本文以10?6為誤差容忍度,測試結(jié)果如表2、表3所示,函數(shù)迭代軌跡如圖6、圖7所示(圖中為了使曲線變化對(duì)比明顯,縱軸表示種群平均適應(yīng)度自然對(duì)數(shù)值,橫軸表示進(jìn)化代數(shù))。
表1 相關(guān)參數(shù)設(shè)置
表2 顯示的是DDAPSO 算法與其余算法在單模態(tài)函數(shù)上測試所得的結(jié)果。從表2中的最優(yōu)解,標(biāo)準(zhǔn)差和尋優(yōu)率上可以發(fā)現(xiàn),DDAPSO 算法較算法4、算法5 而言,首先在求解精度上具有極大的優(yōu)勢,這一點(diǎn)在Rosenbrock’s valley 函數(shù)上,表現(xiàn)尤為明顯;在穩(wěn)定性方面,從De Jong、Quadric 這兩個(gè)單模態(tài)函數(shù)上可以發(fā)現(xiàn)DDAPSO 的求解性能較為穩(wěn)定,較其他算法具有明顯的優(yōu)勢;其次,從算法的運(yùn)行時(shí)間上來看,DDAPSO在尋求最優(yōu)解的過程中所花費(fèi)的時(shí)間最少,在求解效率上具有一定的優(yōu)勢。此外,將DDAPSO 算法與算法1、算法2、算法3進(jìn)行對(duì)比,發(fā)現(xiàn)DDAPSO算法在求解精度和尋優(yōu)效率上也具有相當(dāng)大的優(yōu)勢,由于DDAPSO 中的自適應(yīng)慣性權(quán)重較線性慣性權(quán)重遞減具有較強(qiáng)的適應(yīng)環(huán)境的能力,這樣在尋求最優(yōu)解的過程中,可以不斷與外界環(huán)境進(jìn)行交互,協(xié)同進(jìn)化,從而快速找到最優(yōu)解。
圖 6 顯示的是 De Jong、Quadric 和 Rosenbrock’svalley 函數(shù)在求解最優(yōu)解的過程中的迭代軌跡,從上述優(yōu)化結(jié)果中可以看出,DDAPSO算法在求解單模態(tài)函數(shù)時(shí),較其他算法具有明顯的優(yōu)勢。在尋優(yōu)性能上,最差的是PSO 算法,在尋優(yōu)的過程中容易陷入局部最優(yōu)解,從而使得算法停滯不前,發(fā)生早熟現(xiàn)象。DDAPSO由于借鑒了協(xié)同進(jìn)化理論中的個(gè)體的多樣性以及主動(dòng)性,利用混沌搜索克服前期所選粒子的單一性,使得種群的多樣性得以增加,從而使得進(jìn)化能夠跳出局部最優(yōu),快速找到全局最優(yōu)解。
表2 單模態(tài)函數(shù)測試對(duì)比
表3 多模態(tài)函數(shù)測試對(duì)比
表3顯示的是動(dòng)態(tài)雙重自適應(yīng)PSO算法(DDAPSO)與其他算法在多模態(tài)函數(shù)上測試所得的結(jié)果。從表3中的最優(yōu)解,標(biāo)準(zhǔn)差和尋優(yōu)率上可以發(fā)現(xiàn),DDAPSO 算法較其他算法具有一定的尋優(yōu)優(yōu)勢。在求解精度上,對(duì)比各算法在Rastrigin,Schaefer’sf7 函數(shù)上的求解性能,可以發(fā)現(xiàn)DDAPSO算法在求解精度上,具有很好的尋優(yōu)性能,尤其在多模態(tài)Rastrigin 函數(shù)上表現(xiàn)尤為明顯;從運(yùn)行時(shí)間來看,DDAPSO 算法在尋優(yōu)過程中所花費(fèi)時(shí)間最短。此外,在運(yùn)行時(shí)間上,對(duì)比表3和表2可以發(fā)現(xiàn),多模態(tài)函數(shù)在尋優(yōu)的過程中所花費(fèi)的時(shí)間較單模態(tài)函數(shù)花費(fèi)的多;從穩(wěn)定性和尋優(yōu)率來看,DDAPSO 較其他算法具有較為穩(wěn)定的尋優(yōu)性能,在尋優(yōu)率上,較其他算法而言,具有一定的優(yōu)勢,在一定的迭代次數(shù)內(nèi)能夠較多次逃脫局部最優(yōu)解,找到全局最優(yōu)解,具有極好的尋優(yōu)性能。
圖 7 顯示的是 Rastrigin,Schaefer’sf7 和 Ackly 函數(shù)在求解最優(yōu)解的過程中的迭代軌跡,從上述優(yōu)化結(jié)果中可以看出,DDAPSO 算法在求解多模態(tài)函數(shù)時(shí),較其他算法具有明顯的優(yōu)勢。從函數(shù)迭代軌跡可以發(fā)現(xiàn),DDAPSO算法在求解多模態(tài)函數(shù)時(shí),由于借鑒了協(xié)同進(jìn)化理論中的協(xié)同進(jìn)化的優(yōu)勢,粒子個(gè)體在尋優(yōu)的過程中,在個(gè)體與外界環(huán)境協(xié)同作用下,不斷進(jìn)化,從而在短時(shí)間找到全局最優(yōu)解。這一性能在在Rastrigin和Ackly函數(shù)上表現(xiàn)非常明顯,DDAPSO算法可以在大約150代之內(nèi)找到最優(yōu)解,較其他算法具有極高的尋優(yōu)效率。
圖6 單模態(tài)測試函數(shù)迭代軌跡圖
針對(duì)PSO算法易陷入局部最優(yōu),發(fā)生早熟這一先天缺陷,本文利用生物學(xué)中的協(xié)同進(jìn)化理論,借鑒其進(jìn)化主體的多樣性,對(duì)基本PSO 算法進(jìn)行了改進(jìn),形成了動(dòng)態(tài)雙重自適應(yīng)PSO算法。首先在初始化種群時(shí),將混沌搜索引入PSO 算法中,增加了種群的多樣性,其次引入非線性動(dòng)態(tài)調(diào)整策略對(duì)個(gè)體學(xué)習(xí)因子和社會(huì)學(xué)信息因子進(jìn)行非線性取值,最后借鑒協(xié)同進(jìn)化過程中與環(huán)境的主動(dòng)適應(yīng)性這些優(yōu)點(diǎn),對(duì)慣性權(quán)重進(jìn)行自適應(yīng)取值,從而形成了動(dòng)態(tài)雙重自適應(yīng)PSO 算法。最后經(jīng)仿真發(fā)現(xiàn),該算法無論在單模態(tài)測試函數(shù)上還是在多模態(tài)測試函數(shù)上,在求解精度、穩(wěn)定性、尋優(yōu)率及運(yùn)行時(shí)間上較其他5種算法均具有較好的求解性能,具有廣泛的應(yīng)用前景。
圖7 多模態(tài)測試函數(shù)迭代軌跡圖