施麗銘 姚遠(yuǎn)明 趙啟林 馬森 鄧宇華 陳浩森
(1 北京空間飛行器總體設(shè)計部,北京 100094)
(2 南京工業(yè)大學(xué) 機(jī)械與動力工程學(xué)院,南京 211800)
(3 北京理工大學(xué) 先進(jìn)結(jié)構(gòu)技術(shù)研究院,北京 100081)
差分進(jìn)化[1](Differential Evolution,DE)算法是以達(dá)爾文生物進(jìn)化論“優(yōu)勝劣汰”的思想為準(zhǔn)則,模擬自然界生物進(jìn)化的群智能優(yōu)化設(shè)計方法,主要包括初始種群的生成、基于差分形式的變異、基于概率選擇的交叉和基于“優(yōu)勝劣汰”思想的選擇4個步驟。由于其原理簡單、控制參數(shù)少,故在不同的領(lǐng)域均有廣泛的應(yīng)用,如衛(wèi)星調(diào)度[2]、無線傳感器網(wǎng)絡(luò)定位[3]、應(yīng)急物資配置調(diào)度[4]等。雖然DE 算法有很多優(yōu)點(diǎn),但也存在易陷入局部收斂的缺點(diǎn),主要原因是:變異操作是DE算法進(jìn)化個體的關(guān)鍵,原理是對不同個體之間的向量差進(jìn)行加權(quán)計算,以此實現(xiàn)種群中每個個體的擾動[5],但隨著迭代的進(jìn)行,種群之間各個體開始朝一處或多處聚集,個體之間的差異性迅速減少,導(dǎo)致個體之間的向量差減小,以至于個體無法進(jìn)化,進(jìn)而導(dǎo)致算法陷入局部收斂,即“早熟”。因此,改進(jìn)DE算法的“早熟”缺陷將會對提升算法的性能有著重要的意義。
對于“早熟”的缺陷,不少學(xué)者對此進(jìn)行了改進(jìn),方法大致包含以下幾方面:自適應(yīng)調(diào)整控制參數(shù)[6-7](變異率F 和交叉率CR)、變異策略的改進(jìn)[8-9]以及混合算法的使用[10-11]。例如文獻(xiàn)[6]借鑒自然界生物繁衍的“S 型曲線”,提出基于S 型變異率的差分進(jìn)化算法(SDE),改進(jìn)的算法在一定程度上解決了變異算子的參數(shù)設(shè)置問題,但其采用的DE/rand/1變異策略[1]并不利于中后期局部精細(xì)搜索;文獻(xiàn)[8]提出基于雙變異策略協(xié)調(diào)工作的自適應(yīng)差分進(jìn)化(DSDE)算法,該算法采用雙變異策略來共同產(chǎn)生變異個體,改善了單一策略帶來的不利影響,但每一步進(jìn)化過程都采用雙變異策略變異,增加了計算時間,同時其后期采用較小的變異率也不利于算法跳出局部最優(yōu)解;文獻(xiàn)[10]提出一種基于共軛梯度法的反饋差分進(jìn)化混合算法,能夠根據(jù)種群自身的搜索環(huán)境來選擇變異方式,同時采用共軛梯度法確定局部搜索方向,提高了最優(yōu)值的精度,加快了收斂速度,但共軛梯度法對于多峰、高維函數(shù)的計算量太大。
為進(jìn)一步提高DE 算法的計算精度和收斂性能,改善“早熟”的缺陷,本文提出一種基于自適應(yīng)變異率的雙策略差分進(jìn)化(AD-DE)算法。該算法借鑒了SDE算法的變異率規(guī)律,變異率隨著迭代次數(shù)增大而增大,同時采用雙重變異策略DE/rand/1和DE/rand*best[1],并采用函數(shù)T 根據(jù)當(dāng)前迭代次數(shù)動態(tài)的選擇變異策略,使得算法在探索和開采之間取得動態(tài)的平衡。后將改進(jìn)的AD-DE 算法應(yīng)用于某型密封艙的結(jié)構(gòu)優(yōu)化中,取得了較理想的結(jié)果,為密封艙的設(shè)計提供了參考。
為緩解DE 算法易陷入局部收斂的缺陷,本文主要從變異率和變異策略兩個方面出發(fā)對DE 算法進(jìn)行改進(jìn),提出一種具有自適應(yīng)變異率和雙變異策略的DE算法,命名為基于自適應(yīng)變異率的雙策略差分進(jìn)化(AD-DE)算法,期望改善算法的計算精度和收斂性能。
變異率控制著差分的步長,影響著種群多樣性。一般在進(jìn)化初期,由于初始種群為隨機(jī)生成,因此個體分布均勻,種群多樣性大;但隨著迭代的進(jìn)行,由于貪婪選擇的擇優(yōu)選取,導(dǎo)致個體慢慢的聚集于一處或多處,因此在迭代后期種群多樣性下降,算法喪失進(jìn)化動力。為提高算法在迭代后期的進(jìn)化動力,本文提出自適應(yīng)變異率Fa,其公式為
式中:Gm為最大迭代次數(shù),G 為當(dāng)前迭代次數(shù),Fmax、Fmin分別為變異率上、下限。
圖1為Fa的變化曲線,改進(jìn)后的變異率隨著迭代的進(jìn)行單調(diào)遞增:在進(jìn)化初期,Fa較小,有利于維持初始種群的種群多樣性,保護(hù)初始種群中的優(yōu)良個體和基因;在進(jìn)化后期,Fa值較大,有利于增大種群多樣性,為后期進(jìn)化提供動力,增加算法跳出局部最優(yōu)解的可能。
圖1 變異率曲線Fig.1 Mutation rate curve
對于DE 算法,不同的變異策略會對算法性能造成不一樣的影響。受多變異策略的啟發(fā),本文將全局變異策略和局部變異策略進(jìn)行綜合。全局變異策略能在解空間內(nèi)廣泛地搜尋最優(yōu)解,快速鎖定較優(yōu)的開采區(qū)間;局部變異策略主要集中在個別較好的個體附近,具有很強(qiáng)的開采能力。在進(jìn)化前期,采用搜索范圍廣的全局變異策略來產(chǎn)生變異個體,幫助算法快速確定較優(yōu)的開采區(qū)間;在進(jìn)化后期種群個體較為集中,我們采用改進(jìn)的局部變異策略,來更好的對較優(yōu)個體進(jìn)行深度開采,同時也能避免后期采用較大變異率帶來的不易收斂的弊端。
本文采用DE/rand/1為全局變異策略,變異策略公式為
式中:qG,i 代表第G 次進(jìn)化的第i個變異個體(i=1,2,…,Np),Np為種群規(guī)模;pG,n為被執(zhí)行差分的個體,pG,m、pG,k 為執(zhí)行差分的個體;n,m,k 代表個體的隨機(jī)選擇索引,n,m,k ∈{1,2,…,Np},且i≠n≠m≠k;Fa為自適應(yīng)變異率,即差分向量的縮放因子。
采用自主開發(fā)的DE/rand*best為局部變異策略,DE/rand*best變異策略公式為
式中:a 為在(0,1)之間的隨機(jī)數(shù),旨在減弱最優(yōu)個體的影響,防止陷入局部最優(yōu);pG,best代表第G 代最優(yōu)個體,旨在增加搜索目的性;pG,x、pG,y、pG,z為執(zhí)行差分的個體;x,y,z 代表個體的隨機(jī)選擇索引,x,y,z ∈{1,2,…,Np},且i≠x≠y≠z。
對于上述兩種變異策略的選擇,構(gòu)造如下的T函數(shù)為變異策略的選擇函數(shù),原因在于:所構(gòu)造的T 函數(shù)值介于0~1之間,便于使用概率映射的方式來選擇變異策略;當(dāng)G=時,代入式(4),T 為0.5,便于劃分迭代的前、后期。
函數(shù)T 公式為
函數(shù)T 曲線圖像如圖2所示,由圖2可知,在迭代初期,T 近乎為1,在迭代后期,T 近乎為0。故設(shè)置一隨機(jī)數(shù)Q,Q ∈[0,1]。在進(jìn)化初期,Q 很大概率上會小于T,此時選取DE/rand/1作為變異策略;在進(jìn)化后期,Q 很大概率上會大于T,此時選取DE/rand*best作為變異策略,變異策略選擇公式如式(5)所示。
圖2 函數(shù)曲線圖Fig.2 Function graph
這樣,在進(jìn)化前期有更大概率選取全局變異策略,在進(jìn)化后期有更大的概率選取局部變異策略。
AD-DE算法步驟如下:
(1)設(shè)置種群個數(shù)Np,最大迭代次數(shù)Gm,變異率上、下限Fmax、Fmin,交叉率CR,初始化種群;
(2)利用式(4)計算當(dāng)前進(jìn)化代數(shù)G 下的T,利用式(5)來選擇變異策略,當(dāng)隨機(jī)數(shù)Q 小于T,選擇DE/rand/1為當(dāng)前G 下的變異策略,否則選擇DE/rand*best為變異策略;
(3)利用式(1)計算當(dāng)前進(jìn)化代數(shù)G 下的變異率Fa,按步驟(2)選擇的變異策略進(jìn)行變異操作;
(4)檢查變異個體是否超出邊界,若超出邊界則將其舍棄并重新隨機(jī)生成;
(5)使用二項交叉模式進(jìn)行交叉操作,交叉率為CR,生成試驗種群;
(6)計算目標(biāo)種群和試驗種群個體的適應(yīng)度值并比較大小,采用貪婪選擇的模式進(jìn)行選擇;
(7)判斷是否達(dá)到最大迭代數(shù)或者滿足迭代終止條件,若滿足,停止,輸出最優(yōu)解;若不滿足,則返回步驟(2)。
為全面體現(xiàn)本文AD-DE 算法的綜合性能,試驗選用如下8個測試函數(shù)[12,13]對算法的性能進(jìn)行驗證,分別為:Sphere函數(shù)、Rosen Brock函數(shù)、Rastrigin函數(shù)、Griewank 函數(shù)、Ackley 函數(shù)、Quartic with noise函數(shù)、Schaffer函數(shù)、Shekel函數(shù)。這些函數(shù)涵蓋了單峰、高峰、多維、不規(guī)則的優(yōu)化問題。
本文對比試驗所選用的算法如下。
(1)參考文獻(xiàn)[14],變異率F 為0.8,變異策略為DE/rand/1的DE算法,記為DE1;
(2)變異率F 為0.8,變異策略為DE/best/1的DE算法,記為DE2;
(3)變異率在[0.4,0.95]范圍內(nèi)呈現(xiàn)“S”型變化,變異策略為DE/rand/1 的SDE 算法[6],記為DE3;
(4)使F 和CR呈負(fù)相關(guān)的自適應(yīng)差分進(jìn)化算法[7],記為DE4(為新型的改進(jìn)差分進(jìn)化算法);
(5)本文所提出的基于自適應(yīng)變異率的雙策略差分進(jìn)化算法AD-DE算法,變異率在[0.2,0.95]范圍內(nèi)變化,變異策略為DE/rand/1、DE/rand*best,記為AD-DE。
優(yōu)化設(shè)計過程中,個體數(shù)Np=10D,D 表示搜索空間的維度,初始種群在搜索空間內(nèi)隨機(jī)分布。將各對比算法、不同測試函數(shù)和不同維度D 條件下的平均值和標(biāo)準(zhǔn)差計算結(jié)果匯總于表1中,并將最優(yōu)計算結(jié)果進(jìn)行加粗處理。其中函數(shù)f1~f6為高維函數(shù),故分別設(shè)置D=10,20,30 時的情況做對比;f7、f8為二維函數(shù),故D=2。對于每種測試函數(shù)的每種維度情況,分別進(jìn)行50次獨(dú)立的優(yōu)化設(shè)計計算,記錄這50次優(yōu)化計算的最優(yōu)值,并計算50次最優(yōu)值的平均值和標(biāo)準(zhǔn)差。為直觀給出AD-DE 算法效果,繪制各測試函數(shù)的迭代曲線圖,如圖3 所示,圖3中(a)~(h)為D=30(對于測試函數(shù)f7、f8,D=2)時各測試函數(shù)典型迭代曲線,圖3中橫坐標(biāo)為迭代次數(shù),縱坐標(biāo)為最優(yōu)值取對數(shù)。
圖3 不同算法迭代趨勢圖Fig.3 Different algorithm iteration trends
表1 不同算法尋優(yōu)結(jié)果的平均值和標(biāo)準(zhǔn)差Table 1 Average and standard deviation of optimization results of different algorithms
續(xù) 表
本文從以下方面對實驗結(jié)果進(jìn)行評價:①通過平均值和標(biāo)準(zhǔn)差來反映各個優(yōu)化設(shè)計方法的優(yōu)劣。當(dāng)平均值越接近理論最優(yōu)值時,結(jié)果最優(yōu);若平均值相同,則標(biāo)準(zhǔn)差越小,即算法越穩(wěn)定,計算結(jié)果越優(yōu)。②迭代趨勢圖,以曲線的形式顯示每種算法每種測試函數(shù)的尋優(yōu)歷程。
由表1可知,在高維函數(shù)f1~f6中:低維時,除f2外,與其它算法相比AD-DE 算法均取得了更優(yōu)解,其中f3、f4、f5均精準(zhǔn)的找到了理論最優(yōu)值;對于f2,AD-DE 算法也僅次于DE3。中維時,除f3外,相比其它算法AD-DE 算法求解的結(jié)果更接近理論最優(yōu)解且標(biāo)準(zhǔn)差也更小;高維時,除f2外,AD-DE算法在f1、f3、f4、f5處均找到了全局最優(yōu)解,f6雖然未找到全局最優(yōu)解,但相比其它算法其平均值更加接近最優(yōu)解,標(biāo)準(zhǔn)差也更小。在二維函數(shù)f7~f8中:對于函數(shù)f7,DE4和AD-DE 均找到了全局最優(yōu)解且標(biāo)準(zhǔn)差均為0;對于函數(shù)f8,雖然DE3、DE4、AD-DE均找到了全局最優(yōu)解,但AD-DE的標(biāo)準(zhǔn)差更小,說明對于該函數(shù)AD-DE 算法更加穩(wěn)定。由此可知,AD-DE算法不僅在低維時能取得較好的結(jié)果,隨著維數(shù)的提升,算法依舊能保持較好的性能,且AD-DE 算法對不同函數(shù)的適應(yīng)能力要顯著高于對比算法。
由圖3可知,在相同的迭代次數(shù)下,AD-DE算法分別在測試函數(shù)f1、f3、f4、f5、f7、f8中第2066、2560、952、2185、255、26代處均找到了全局最優(yōu)解,表明AD-DE算法的收斂速度高于對比算法,平均提速50%以上。同時也證明了AD-DE算法跳出局部最優(yōu)解的能力最強(qiáng),并且能快速的找到全局最優(yōu)解。
綜上,AD-DE算法明顯地強(qiáng)于對比算法,它能在探索和開采之間取得動態(tài)的平衡,在保證后期種群多樣性的同時,可提高求解的精度和收斂速度。
結(jié)構(gòu)的優(yōu)化問題,就是在滿足約束條件的情況下,使得結(jié)構(gòu)質(zhì)量越低,成本最小化的問題。對某密封艙進(jìn)行建模分析,可知其屬于多變量的復(fù)雜優(yōu)化問題,因而采用求解精度和收斂性能更好的AD-DE算法對其進(jìn)行優(yōu)化。
某型密封艙模型如圖4所示,為加筋球殼結(jié)構(gòu)。選取特定工況,并將各荷載乘上相應(yīng)的荷載安全系數(shù)(見表2)。密封艙上各設(shè)備分布情況為:設(shè)備一安放在地板框;設(shè)備二安放在帽檐板連接框;其它設(shè)備質(zhì)量均布在各加強(qiáng)筋上;平臺對接框為固接。
表2 荷載Table 2 Loads
圖4 密封艙結(jié)構(gòu)Fig.4 Structure of capsule
優(yōu)化以密封艙質(zhì)量最低為目標(biāo)函數(shù),以強(qiáng)度和幾何尺寸為約束條件,以蒙皮壁厚和各肋條截面尺寸為設(shè)計變量。利用Matlab 軟件進(jìn)行AD-DE 算法的編寫,利用ANSYS-APDL 軟件對密封艙進(jìn)行參數(shù)化建模。以 Matlab 軟件作為主控程序,ANSYS軟件作為求解器進(jìn)行有限元分析,整個優(yōu)化設(shè)置在Matlab中全部完成[15]。
具體的操作步驟如下。
(1)設(shè)置AD-DE算法基本參數(shù),種群規(guī)模Np=20、最大進(jìn)化代數(shù)Gm=55、變異率上、下限Fmax=0.95、Fmin=0.2,交叉率CR=0.9;
(2)在設(shè)計變量約束區(qū)間內(nèi),隨機(jī)生成設(shè)計變量所得值,初始化種群;
(3)將初始的設(shè)計變量值存入Input.txt 文件中;
(4)應(yīng)用ANSYS軟件讀取Input.txt文件,以讀取的值作為設(shè)計參數(shù)進(jìn)行結(jié)構(gòu)分析;
(5)提取分析后的結(jié)構(gòu)最大應(yīng)力S 作為約束條件,提取密封艙的結(jié)構(gòu)質(zhì)量W 作為目標(biāo)函數(shù);
(6)將約束條件和目標(biāo)函數(shù)存入Output.txt文件中;
(7)Matlab 軟件讀取Output.txt文件,計算Np個個體的適應(yīng)度函數(shù)值,并從中獲取最佳個體和其適應(yīng)度值;
(8)判斷是否滿足終止條件,若滿足則停止優(yōu)化,輸出最優(yōu)設(shè)計變量和目標(biāo)函數(shù)值,若不滿足則運(yùn)行步驟(9)和(10);
(9)執(zhí)行1.3節(jié)中的步驟(2)~步驟(6);
(10)獲得G+1代設(shè)計變量值,循環(huán)本節(jié)的步驟(3)~(8)。
采用AD-DE 算法對密封艙進(jìn)行結(jié)構(gòu)優(yōu)化,結(jié)構(gòu)最大應(yīng)力變化曲線如圖5所示,目標(biāo)函數(shù)優(yōu)化曲線如圖6所示。
圖6 目標(biāo)函數(shù)優(yōu)化曲線Fig.6 Objective function optimization curve
由圖5、6 可知,優(yōu)化后密封艙的最大應(yīng)力為154.6 MPa,滿足強(qiáng)度條件155 MPa,優(yōu)化結(jié)果為48.72 kg,比初始設(shè)計質(zhì)量減少了34%。
圖5 最大應(yīng)力變化曲線Fig.5 Maximum stress curve
本文提出的AD-DE 算法,采用自適應(yīng)變異率和雙重變異策略,同時引入函數(shù)T 來根據(jù)當(dāng)前迭代次數(shù)動態(tài)的選擇變異策略,使得算法在探索和開采之間取得動態(tài)的平衡,能夠有效地避免陷入局部收斂。本文使用8個測試函數(shù)來對不同算法進(jìn)行性能測試,其中6個高維函數(shù),AD-DE 在不同的搜索維度下取得了5個最優(yōu)值,2個二維函數(shù)均取得了理論最優(yōu)值,同時迭代速度平均提速50%以上。表明AD-DE算法在求解精度和算法穩(wěn)定性上均優(yōu)于各對比算法。使用AD-DE 算法對某密封艙進(jìn)行了結(jié)構(gòu)優(yōu)化,得到了較好的結(jié)構(gòu)參數(shù),優(yōu)化后的結(jié)構(gòu)質(zhì)量比初始設(shè)計值下降了34%,從而說明了AD-DE 算法具有較好的實用性。
本文的工作提高了差分進(jìn)化算法的性能;構(gòu)建了基于Matlab-ANSYS的優(yōu)化模塊,為密封艙的結(jié)構(gòu)優(yōu)化設(shè)計提供了一種有效的方法。