劉紫燕梁水波袁 浩孫昊堃梁 靜
(貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽(yáng) 50025)
近年來(lái),元啟發(fā)式算法由于其簡(jiǎn)單性、靈活性和較高的魯棒性,已經(jīng)被廣泛應(yīng)用于解決越來(lái)越多的工程問(wèn)題。一般來(lái)說(shuō),元啟發(fā)式算法模擬自然現(xiàn)象建立數(shù)學(xué)模型,元啟發(fā)式算法主要包括進(jìn)化算法、群體智能算法和物理現(xiàn)象算法。
基于進(jìn)化的算法受達(dá)爾文進(jìn)化論的啟發(fā),保留了種群中最好的個(gè)體作為后代來(lái)執(zhí)行相關(guān)操作?;谶M(jìn)化的算法主要包括遺傳算法(GA)[1]、進(jìn)化策略(ES)[2]、差分進(jìn)化策略(DE)[3]。基于群體智能的算法模擬生物群體中的智能行為來(lái)建立數(shù)學(xué)模型,如覓食方式、遷徙路線、交配選擇和信息共享機(jī)制等。此類算法主要包括粒子群算法(PSO)[4]、灰狼優(yōu)化算法(GWO)[5]、蟻獅優(yōu)化算法(ALO)[6]、鯨魚優(yōu)化算法(WOA)[7]、麻雀搜索算法(SSA)[8]、蝴蝶優(yōu)化算法(BOA)[9]等?;谖锢憩F(xiàn)象的算法受到物理現(xiàn)象的啟發(fā),主要算法包括黑洞算法(BH)[10]、引力搜索算法(GSA)[11]、均衡優(yōu)化算法(EO)[12]等。
均衡優(yōu)化算法是學(xué)者Afshin Faramarzi受控制容積質(zhì)量平衡物理現(xiàn)象啟發(fā)而提出的一種優(yōu)化算法。Yang等人[13]對(duì)風(fēng)光新能源參與調(diào)控的電網(wǎng)無(wú)功優(yōu)化進(jìn)行建模,采用均衡優(yōu)化算法進(jìn)行無(wú)功優(yōu)化求解得出最優(yōu)的組合方案。Wunnava等人[14]針對(duì)基本的均衡優(yōu)化算法的搜索空間中不良粒子隨機(jī)分散問(wèn)題,提出了一種根據(jù)適應(yīng)度值自適應(yīng)決定的改進(jìn)均衡優(yōu)化算法。Gupta等人[15]利用高斯變異和基于種群劃分和重建概念的附加探索性搜索機(jī)制來(lái)改進(jìn)基本均衡優(yōu)化算法,并應(yīng)用到實(shí)際的工程問(wèn)題中。
但是上述算法并未考慮到均衡算法易受局部極小值影響的、多樣性低、收斂速度慢的問(wèn)題。本文提出了一種改進(jìn)的均衡優(yōu)化算法,算法主要利用Sin混沌映射來(lái)初始化種群以增加算法的搜索能力;采用非線性自適應(yīng)權(quán)重策略,以便搜索代理可以自適應(yīng)的探索搜索空間,平衡開發(fā)和探索階段;在算法的搜索過(guò)程中,通過(guò)單純形法的反射、擴(kuò)張和收縮運(yùn)算對(duì)較差位置的代理進(jìn)行改進(jìn)。最后,通過(guò)10個(gè)基準(zhǔn)函數(shù)及其Wilcoxon秩和檢測(cè)和部分CEC2014測(cè)試函數(shù)的仿真實(shí)驗(yàn)結(jié)果對(duì)比了改進(jìn)的均衡優(yōu)化算法與其他智能優(yōu)化算法的性能,驗(yàn)證了所提算法的有效性。
均衡優(yōu)化算法(EO)是一種基于控制體積質(zhì)量平衡模型的新型元啟發(fā)式算法,其利用通用質(zhì)量平衡方程來(lái)研究控制體積中非反應(yīng)性成分的濃度,質(zhì)量平衡方程體現(xiàn)了控制容積內(nèi)質(zhì)量進(jìn)入、離開及生成的物理過(guò)程,一般采用一階微分方程來(lái)描述,公式如式(1)所示:
式中:V為控制容積,VdC/dt代表控制容積的變化率,C代表控制容積的濃度,Q為進(jìn)出控制容積的容量流率,Ceq表示期望為全局最優(yōu)的平衡狀態(tài)下的濃度。G是控制容積內(nèi)的質(zhì)量生成速率。式(1)是時(shí)間相關(guān)的方程,因此當(dāng)VdC/dt達(dá)到0時(shí),可以達(dá)到穩(wěn)定的平衡狀態(tài)。VdC/dt可以被簡(jiǎn)化為Q/V,定義為流動(dòng)率λ,因此,式(1)可以重新組合為式(2)。
對(duì)式(2)兩邊取積分得式(3):
通過(guò)求解式(3)可得:
式中:F為指數(shù)項(xiàng)系數(shù),C0控制容積在時(shí)間t0的初始濃度。
EO主要基于式(4)進(jìn)行迭代優(yōu)化。算法的具體操作過(guò)程和參數(shù)設(shè)計(jì)如下。
初始化 在迭代次數(shù)iter=1時(shí),使優(yōu)化變量在一定的上限和下限范圍內(nèi)隨機(jī)初始化,如式(6)所示:
式中:N是優(yōu)化變量的數(shù)量,Cmin表示第i個(gè)候選解,Cmin、Cmax分別為優(yōu)化變量的下限向量與上限向量,randi是d維隨機(jī)向量,每個(gè)元素值均為0~1的隨機(jī)數(shù)。根據(jù)式(6)初始化候選解方案后,使用式(7)進(jìn)行迭代更新位置。
指數(shù)項(xiàng)系數(shù)F向量F i t=a1sign(r-0.5)(eλi t t-1)被稱為指數(shù)項(xiàng)系數(shù),旨在搜索過(guò)程中保持開發(fā)和探索之間的平衡。其表達(dá)式如式(9)所示:
式中:a1是控制全局探索能力的值,a1的值越高,算法的全局探索能力越高,反之,則越低。sign為符號(hào)函數(shù),r、λ均代表維度與優(yōu)化空間維度一致的隨機(jī)數(shù)向量,其值均為0至1的隨機(jī)數(shù)。
質(zhì)量生成速率G i生成率G i是EO中的主要因素之一,會(huì)影響算法局部尋優(yōu)能力,該參數(shù)的定義如下:
群智能優(yōu)化算法的種群初始化方法會(huì)影響算法的收斂速度和求解精度。EO算法利用隨機(jī)生成的數(shù)據(jù)作為初始信息,減少了算法的多樣性和整體優(yōu)化效果。由于混沌運(yùn)動(dòng)具有隨機(jī)性、規(guī)律性和遍歷性[16],在求解函數(shù)優(yōu)化問(wèn)題時(shí),這些特性使算法更容易擺脫局部最優(yōu)解,從而保持種群多樣性并提高全局搜索能力,因此可以用來(lái)代替隨機(jī)初始化。文獻(xiàn)[17]驗(yàn)證了Sin混沌與Logistic混沌相比具有更明顯的混沌特性,本文采用采用Sin混沌對(duì)EO算法進(jìn)行種群初始化。式(12)為Sin混沌映射的表達(dá)式:
為了防止在[-1,1]之間產(chǎn)生不動(dòng)點(diǎn)和零點(diǎn),式中的初始值不能取0。
局部開發(fā)和全局探索作為優(yōu)化算法的兩個(gè)重要階段,過(guò)度的開發(fā)能力會(huì)抑制搜索代理向全局最優(yōu)解發(fā)展的趨勢(shì),過(guò)多的探索能力會(huì)降低優(yōu)化精度。因此,在兩個(gè)階段之間找到合適的轉(zhuǎn)換可以提高優(yōu)化算法的性能。均衡算法中的a1的變化直接影響搜索和開發(fā)之間的平衡,從而影響算法的性能。但是a1的值是在原算法中是經(jīng)驗(yàn)設(shè)定的且為固定值,從而導(dǎo)致EO算法具有隨機(jī)性和局限性。
本文采用非線性自適應(yīng)權(quán)重,可以通過(guò)迭代次數(shù)自適應(yīng)的調(diào)整參數(shù)a,以減少隨機(jī)性對(duì)算法的影響,所提出的非線性自適應(yīng)權(quán)重a通過(guò)式(13)表示:
式中:amin、amax分別為收斂因子的最小值和最大值,t為當(dāng)前迭代次數(shù),T為總迭代次數(shù),gammaincinv為逆不完全伽馬函數(shù)。如圖1所示,非線性自適應(yīng)權(quán)重a非線性地從2遞減到最小值amin,在算法迭代前期,種群全局搜索最優(yōu)解,此時(shí)應(yīng)該給予足夠的搜索空間發(fā)散種群,因此給予一個(gè)較大的收斂步長(zhǎng)有利于算法的開發(fā);在算法迭代中后期,算法逐漸收斂,個(gè)體開始進(jìn)行局部搜索,此時(shí)給予一個(gè)較小的收斂步長(zhǎng)有利于算法進(jìn)行局部探索。
圖1 權(quán)重系數(shù)改進(jìn)前后對(duì)比
因此,在式(7)中引入非線性自適應(yīng)權(quán)重后,可以有效平衡探索和開發(fā),更新方程變換為如式(14)所示:
單純形法是指在空間中構(gòu)造一個(gè)多面體,找出該多面體每個(gè)頂點(diǎn)的適配度并進(jìn)行比較,找出最佳、次最佳和最差,通過(guò)反射、收縮、擴(kuò)張等操作更新最差,形成一個(gè)新的多面體。它是一種局部搜索方法,具有使用方便、適用范圍廣、收斂速度快等特點(diǎn)。如圖2所示,設(shè)最優(yōu)點(diǎn)為X G,次優(yōu)點(diǎn)為X B,X C為最優(yōu)點(diǎn)X G與次優(yōu)點(diǎn)X B的中心,對(duì)于一個(gè)最差點(diǎn)X S,g是X S到除X S以外的所有頂點(diǎn)的質(zhì)心X的方向向量,反射、收縮、擴(kuò)張運(yùn)算如下:
圖2 單純形法的四種操作
反射運(yùn)算:X R=X C+α(X C-X S),X R是執(zhí)行反射運(yùn)算后的點(diǎn),即反射點(diǎn),X E=X C+γ(X R-X C)為反射系數(shù),通常X E=X C+γ(X R-X C)。
擴(kuò)張運(yùn)算:X E=X C+γ(X R-X C),X E是執(zhí)行擴(kuò)張運(yùn)算后的點(diǎn),即擴(kuò)張點(diǎn),γ為擴(kuò)張系數(shù),通常λ=2。
內(nèi)收縮運(yùn)算:X W=X C-β(X S-X C),X W是執(zhí)行內(nèi)收縮運(yùn)算后的點(diǎn),即內(nèi)壓縮點(diǎn),β為內(nèi)收縮系數(shù),通常β=0.5。
外收縮運(yùn)算:X T=X C+β(X C-X S),X T是執(zhí)行外收縮運(yùn)算后的點(diǎn),即外收縮點(diǎn),β為外收縮系數(shù),通常β=0.5。
本文利用單純形法的反射、擴(kuò)張和收縮運(yùn)算對(duì)當(dāng)前較差個(gè)體進(jìn)行改進(jìn),增加算法跳出局部最優(yōu)的能力。
根據(jù)以上策略描述,以下為SMEO的具體步驟:
①設(shè)置算法參數(shù):種群規(guī)模N、維度d、參數(shù)a1、amin、amax、最大迭代次數(shù)T、反射系數(shù)α、擴(kuò)張系數(shù)γ、內(nèi)外收縮系數(shù)β。
②利用Sin混沌初始化個(gè)體。
③計(jì)算每個(gè)個(gè)體的適應(yīng)度值并根據(jù)式(7)確定當(dāng)前平衡狀態(tài)池狀態(tài)。選出當(dāng)前最優(yōu)的三個(gè)位置為Xα、Xβ、Xδ,對(duì)應(yīng)的適應(yīng)度值為f(Xα)、f(Xβ)、f(Xδ)。中心位置為X C=(Xα+Xβ)/2。
④對(duì)最差的位置X S進(jìn)行反射操作,得到反射點(diǎn)X R。
⑤如果f(X R)<f(Xα),即反射的方向正確,將執(zhí)行擴(kuò)張操作得到f(X E),若f(X E)<f(Xα),則用X E代替X S;反之,則用X R代替X S。
⑥如果f(X R)>f(X S),即反射方向不正確,需執(zhí)行外收縮操作得到X T,若f(X T)<f(X S),則用X T代替X S。
⑦如果f(Xα)<f(X R)<f(X S),執(zhí)行內(nèi)收縮操作得到X W,若f(X W)<f(X S),則用X W取代X S,反之,則用X T代替X S。
⑧根據(jù)式(14)更新其他個(gè)體的位置。
⑨判斷算法是否滿足結(jié)束條件,若滿足,則算法結(jié)束;否則,執(zhí)行步驟③。
為了驗(yàn)證本文改進(jìn)均衡優(yōu)化算法(SMEO)的有效性,采用國(guó)際上通用的10個(gè)經(jīng)典測(cè)試函數(shù)進(jìn)行仿真實(shí)驗(yàn),均來(lái)自CEC2005測(cè)試集。這些測(cè)試函數(shù)分為三類:單峰、多峰和組合函數(shù)。
函數(shù)f1-f6是只有一個(gè)全局最優(yōu)值的單峰函數(shù),單峰函數(shù)用于評(píng)價(jià)算法的局部搜索能力和收斂速度。函數(shù)f7-f9是多峰函數(shù),與單峰函數(shù)不同,多峰函數(shù)具有多重局部最優(yōu)解,隨著問(wèn)題規(guī)模的增大,局部最優(yōu)解的數(shù)目也會(huì)增加。多峰函數(shù)對(duì)于評(píng)價(jià)算法的探索能力具有重要的參考價(jià)值。f10是復(fù)合函數(shù),與多峰函數(shù)的不同之處在于它的維數(shù)較少,局部最優(yōu)值較少,并且不允許維數(shù)調(diào)整,用于測(cè)試算法的優(yōu)化精度?;鶞?zhǔn)函數(shù)和特定信息如表1所示。
表1 基準(zhǔn)測(cè)試函數(shù)及詳細(xì)信息
本文的仿真實(shí)驗(yàn)操作系統(tǒng)為Microsoft Windows 10,CPU為Intel Core i7,主頻為2.4 GHz,內(nèi)存為8 GB。實(shí)驗(yàn)編程軟件為MATLAB R2017b。
算法參數(shù)設(shè)置:算法種群規(guī)模設(shè)置為30,最大迭代次數(shù)為500,維度為30,各基本算法內(nèi)部參數(shù)設(shè)置如表2所示。
表2 算法參數(shù)設(shè)置
使用10個(gè)不同的基準(zhǔn)測(cè)試函數(shù)分別對(duì)EO、SMEO、AEO[14]以及m-EO[15]進(jìn)行求解,通過(guò)對(duì)4種算法的平均值和標(biāo)準(zhǔn)差的統(tǒng)計(jì)來(lái)對(duì)比驗(yàn)證SMEO算法的有效性。算法獨(dú)立運(yùn)行30次,實(shí)驗(yàn)的平均值反映了算法在給定迭代次數(shù)下的收斂精度,標(biāo)準(zhǔn)差反映了算法的穩(wěn)定性。實(shí)驗(yàn)結(jié)果如表3所示,其中加粗的部分為最優(yōu)結(jié)果。
從表3可以看出,本文提出的SMEO算法在10個(gè)基準(zhǔn)測(cè)試函數(shù)上均取得了不錯(cuò)的尋優(yōu)效果。對(duì)于函數(shù)f1、f2、f3、f4、f7、f9,SMEO算法相對(duì)于其他三種算法,算法準(zhǔn)確度顯著提高的同時(shí),且收斂到理論最優(yōu)值0,說(shuō)明搜索效果得到了很好的提升。對(duì)比函數(shù)f7,四個(gè)算法均收斂到理論最優(yōu)值。m-EO算法在函數(shù)f5上取得最好的效果,更加的接近理論最優(yōu)值。對(duì)于在10個(gè)基準(zhǔn)函數(shù)上的表現(xiàn)效果,SMEO算法在9個(gè)函數(shù)上優(yōu)于EO算法,在8個(gè)函數(shù)上優(yōu)于AEO,在8個(gè)函數(shù)上優(yōu)于m-EO算法。綜合上述比較結(jié)果來(lái)說(shuō),與EO算法、AEO算法以及m-EO算法相比,SMEO算法達(dá)到了更高的求解精度和取得了更好的穩(wěn)定性。
表3 不同EO算法對(duì)10個(gè)測(cè)試函數(shù)的實(shí)驗(yàn)結(jié)果
為了進(jìn)一步評(píng)估改進(jìn)SMEO的性能,將本文的SMEO算法與鯨魚優(yōu)化算法(WOA)、灰狼優(yōu)化算法(GWO)、麻雀搜索算法(SSA)、蝴蝶優(yōu)化算法(BOA)進(jìn)行比較,實(shí)驗(yàn)結(jié)果如表4所示,在10個(gè)基準(zhǔn)測(cè)試函數(shù)上的收斂曲線如圖3所示。
表4 不同智能算法對(duì)10個(gè)測(cè)試函數(shù)的實(shí)驗(yàn)結(jié)果
圖3 各測(cè)試函數(shù)下的收斂曲線
從圖3可以看出,本文SMEO算法在10個(gè)測(cè)試函數(shù)中的收斂曲線明顯優(yōu)于其他的算法函數(shù),特別是在f1、f2、f3、f4、f6函數(shù)中,在適應(yīng)度值達(dá)到最低的同時(shí)收斂速度也遠(yuǎn)優(yōu)于EO算法、GWO算法、SSA算法、BOA算法,說(shuō)明本文提出的改進(jìn)策略可以有效地提高EO的局部開發(fā)能力和收斂速度。對(duì)于多峰函數(shù)f7、f8、f9,SMEO在200次迭代內(nèi)找到最優(yōu)值并退出迭代,收斂曲線表明,SMEO算法可以避免算法陷入局部最優(yōu),并具有強(qiáng)大的全局搜索能力。
從表4可以看出,SMEO算法在f1、f2、f3、f4、f6、f7、f8與f9等8個(gè)基準(zhǔn)測(cè)試函數(shù)上均取得了最優(yōu)的最優(yōu)值、平均值以及標(biāo)準(zhǔn)差EO在f5與f10上取得最優(yōu)的效果。
為了進(jìn)一步地驗(yàn)證SMEO數(shù)據(jù)的可靠性和有效性,本文采用Wilcoxon秩和檢驗(yàn)[18]對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行進(jìn)一步分析。Wilcoxon秩和檢測(cè)常用來(lái)對(duì)比兩組數(shù)據(jù)之間的差異,以確定它們是否在統(tǒng)計(jì)上存在顯著不同。本文將EO算法、GWO算法、SSA算法、BOA算法與SMEO算法在10個(gè)基準(zhǔn)測(cè)試函數(shù)上進(jìn)行Wilcoxon秩和檢驗(yàn)對(duì)比分析,驗(yàn)證SMEO算法尋優(yōu)結(jié)果在統(tǒng)計(jì)學(xué)上的優(yōu)勢(shì)。若計(jì)算出P<5%,可以認(rèn)為是拒絕零假設(shè)的有利依據(jù),即兩個(gè)樣本數(shù)據(jù)的差別顯著。表5所示為不同測(cè)試函數(shù)下秩和檢驗(yàn)的P值,表中的+、-與=分別表示SMEO算法的秩和統(tǒng)計(jì)結(jié)果優(yōu)于、次于和等于對(duì)比算法,NAN表示檢驗(yàn)的所有樣本數(shù)據(jù)相同,即算法的性能相當(dāng)。
由表5結(jié)果可知,除了算法性能相當(dāng)?shù)囊酝?,SMEO算法相較于其他算法的Wilcoxon秩和檢測(cè)結(jié)果P值基本上都小于5%,說(shuō)明SMEO算法對(duì)于基準(zhǔn)測(cè)試函數(shù)的優(yōu)化結(jié)果在統(tǒng)計(jì)學(xué)上的具有很大的優(yōu)勢(shì),驗(yàn)證了SMEO算法的魯棒性。
表5 測(cè)試函數(shù)下秩和檢驗(yàn)的P值
為了進(jìn)一步驗(yàn)證SMEO算法處理具有復(fù)雜特征的問(wèn)題時(shí)的魯棒性,本文選取部分具有復(fù)雜特征的CEC2014單目標(biāo)優(yōu)化函數(shù)進(jìn)行尋優(yōu)對(duì)比分析,其中包括單峰(UF)、多峰(MF)、混合(HF)和復(fù)合(CF)類型函數(shù),函數(shù)相關(guān)信息如表6所示。本文將SMEO與標(biāo)準(zhǔn)EO算法、GWO算法、L-SHADE算法、SSA算法、WOA算法進(jìn)行對(duì)比。其中,L-SHADE算法在CEC2014測(cè)試函數(shù)中表現(xiàn)卓越,常用做于對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)參數(shù)取種群規(guī)模為N=50,維度d=30,最大迭代次數(shù)為2 000,每個(gè)函數(shù)獨(dú)立運(yùn)行50次取平均值和標(biāo)準(zhǔn)差。其中L-SHADE算法的數(shù)據(jù)來(lái)源于文獻(xiàn)[19],SMEO算法運(yùn)行結(jié)果及與其他算法對(duì)比如表7所示。
表6 部分CEC2014函數(shù)
表7 CEC2014函數(shù)優(yōu)化對(duì)比
從表6可以看出,SMEO算法在CEC2014測(cè)試函數(shù)上的優(yōu)秀表現(xiàn),除了單峰CEC03函數(shù),SMEO算法在其他8個(gè)測(cè)試函數(shù)上都取得了最優(yōu)精度。對(duì)于CEC12、CEC13、CEC16以及CEC19測(cè)試函數(shù),SMEO算法基本收斂到了理論最優(yōu)值;對(duì)于復(fù)合特征CEC23、CEC24和CEC24函數(shù),SMEO算法尋優(yōu)標(biāo)準(zhǔn)差為0,說(shuō)明其對(duì)于復(fù)合特征函數(shù)尋優(yōu)穩(wěn)定性很高。上述CEC2014測(cè)試函數(shù)尋優(yōu)結(jié)果分析說(shuō)明,本文提出的SMEO算法對(duì)于具有復(fù)雜特征的函數(shù)尋優(yōu)上同樣具有很大優(yōu)勢(shì),驗(yàn)證了SMEO算法的魯棒性。
SMEO算法的計(jì)算復(fù)雜度主要有兩部分:第一部分是基本EO的復(fù)雜度為:
式中:d為變量維數(shù);第二部分單純形搜索的計(jì)算復(fù)雜度為O(d×g(d)×tmax),其中g(shù)(d)為計(jì)算適應(yīng)度值的次數(shù)。因此,整個(gè)SMEO算法的復(fù)雜度為:
雖然SMEO算法的復(fù)雜度比基本EO算法大,且都在同一數(shù)量級(jí),但是所提算法的求解精度和穩(wěn)定性都要比基本EO算法好。
本文為了進(jìn)一步解決EO收斂速度慢,易陷入局部最優(yōu)的問(wèn)題,提出了三種改進(jìn)策略,即Sin混沌初始化、非線性自適應(yīng)慣性權(quán)重以及單純形法。利用10個(gè)基準(zhǔn)函數(shù)和部分CEC2014測(cè)試函數(shù)進(jìn)行實(shí)驗(yàn)比對(duì),提出的策略對(duì)收斂速度和精度得到有效提高。同時(shí),為了驗(yàn)證SMEO的可靠性和有效性,對(duì)已給出的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)檢驗(yàn)作出性能評(píng)價(jià)分析。校驗(yàn)表明,改進(jìn)的算法在搜索精度、誤差分析和成功率整體都要優(yōu)于其他算法,魯棒性也得到提高。下一步工作考慮將SMEO應(yīng)用于實(shí)際工程設(shè)計(jì)問(wèn)題,進(jìn)一步驗(yàn)證SMEO算法相對(duì)于其他算法的優(yōu)越性。