陳建華 陳建榮
(1.右江區(qū)社會(huì)保險(xiǎn)事業(yè)局 百色 533000)
(2.右江民族醫(yī)學(xué)院 百色 533000)
(3.中山大學(xué)數(shù)據(jù)科學(xué)與計(jì)算機(jī)學(xué)院 廣州 510006)
近幾年,通過模仿生物行為習(xí)慣的群智能優(yōu)化算法如雨后春筍般不斷涌現(xiàn)。因?yàn)閷?duì)函數(shù)性態(tài)不敏感,所以對(duì)于傳統(tǒng)方法難于求解的優(yōu)化問題,群智能算法往往表現(xiàn)出較好的求解速度與精度[1~2]。約束優(yōu)化問題(Constrained optimization problems,COPs)是在科學(xué)、工程和商業(yè)等諸多領(lǐng)域中經(jīng)常出現(xiàn)但又較難求解的一類數(shù)學(xué)規(guī)劃問題,因此,研究如何快速而有效地求得問題的最優(yōu)解,具有非常重要 的 理 論 及 實(shí) 際 意 義[3]。海 豚 算 法[4](Dolphin swarm optimization algorithm,DSOA)是2016 年提出的一種新型群智能優(yōu)化算法。本文針對(duì)算法的不足,提出了改進(jìn)海豚算法(Improved dolphin swarm optimization algorithm,IDSOA)。
一般的約束優(yōu)化問題,可描述如下:
其中,f( X )為目標(biāo)函數(shù),gi( X )和hj( X )分別為m 個(gè)不等式約束和p 個(gè)等式約束。 X=(x1,x2,…,xn)∈Ω ?S 為n 維決策向量,Ω 為可行域,S 為決策空間。lk和uk分別為xk的上下界。
假設(shè)海豚搜索空間為S=[-a1,a1] ×[- a2,a2] ×…×[-an,an] ?Rn,ak>0,k=1,…,n。在復(fù)平面內(nèi)構(gòu)造方域F={hR+ihI|hR,hI∈[- ak,ak]},其中i 為虛部。點(diǎn)hR+ihI∈Fk可以表示為hR=ρkcos θk,hI=ρksin θk,其中0 ≤ρk≤ak,θk∈[0 ,2π] 。則,海豚j 的初始速度表示為,其中在初始時(shí)刻t0,海豚j 探測(cè)到一群沙丁魚位于則其坐標(biāo)為其中是[0,ak]內(nèi)的隨機(jī)數(shù),是區(qū)間[0,2π]內(nèi)的隨機(jī)角度,i 為虛部,為海豚規(guī)模。
算法主要搜索類型包括:1)追逐行為。在t 時(shí)刻,海豚j 的速度和位置分別為和,它找到的最優(yōu)目標(biāo)(即,沙丁魚群)位于將當(dāng)前時(shí)刻海豚群體探測(cè)到的最優(yōu)目標(biāo)表示為GR(t)+iGI(t) ,其中i 為虛部。則在t+1時(shí)刻,海豚j 的速度和位置根據(jù)下述公式更新:
2)捕食行為。假設(shè)在t 時(shí)刻,一群海豚已經(jīng)連續(xù)追逐目標(biāo)ω 步(ω <Gen,Gen 為算法最大迭代次數(shù))。此時(shí),部分海豚已經(jīng)到達(dá)可以對(duì)沙丁魚進(jìn)行捕食或攻擊的位置,則其下一時(shí)刻的位置通過下式給出:
其中,rR,l和rI,l分別是區(qū)間[gR,l(t)-ε(t),gR,l(t)+ε(t)]和[gI,l(t)-ε(t),gI,l(t)+ε(t)]內(nèi)均勻分布的隨機(jī)數(shù);l 是屬于集合{1 ,…,n} 的隨機(jī)數(shù);ε(t)是滿足|ε(t)|?1 的 遞 減 正 函 數(shù);正 整 數(shù)ω 滿 足t ≥ω ,ω <Gen,Gen 為算法最大迭代次數(shù);k=1,…,n;l=I,R。
算法搜索行為選擇:以優(yōu)化問題min f( X )為例。t 時(shí)刻在有M 只海豚的群體中,海豚j 的位置為有
對(duì)Yj按升序排列,將Yj的順序記為Oj(t) 。?。?/p>
稱μj為轉(zhuǎn)換因子。易知其滿足0 ≤μj(t)<1。那么,搜索行為根據(jù)如下規(guī)則進(jìn)行選擇:規(guī)則一,若t ≤ω 或η <μj,則海豚j 根據(jù)式(1)~(4)更新自己的速度和位置。規(guī)則二、若t >ω 且η ≥μj,則海豚j 根據(jù)式(5)和(6)更新自己的位置。其中,η 是[0,1]內(nèi)的隨機(jī)數(shù)。
假設(shè)n 維優(yōu)化問題在第i 維上的搜索范圍(以閉區(qū)間為例)是[ai,bi]?R,i=1,2,…,n。則其i維上的最大速度限制值在t 時(shí)刻,把由式(1)和(2)計(jì)算出的t+1時(shí)刻海豚j 的速度合并記為,其中,分別對(duì)應(yīng)實(shí)部和虛部的速度。那么,在最大速度限制下,在t+1 時(shí)刻,海豚 j 第i 維上的速度值其中,sign(·)為符號(hào)函數(shù),min(·)為取最小值函數(shù),abs(·)為絕對(duì)值函數(shù)。則海豚j 在t+1時(shí)刻的速度和位置為
在新捕食行為中,海豚j 在t+1時(shí)刻的位置由下式給出:
Input:w1,w2,cR1,cI1,β1,β2,ω,α,迭代次數(shù)閾值Gen,海豚規(guī)模M 。
Step1:初始化海豚,令t=0。
Step2:依次計(jì)算M 只海豚個(gè)體的適應(yīng)度值。
Step3:若t >Gen ,算法終止并輸出解。否則t=t+1,轉(zhuǎn)Step4。
Step4:若t ≤ω,用式(9)和式(10)依次對(duì)M 只海豚進(jìn)行速度和位置更新,轉(zhuǎn)Step2。否則轉(zhuǎn)Step5。
Step5:用式(7)和式(8)計(jì)算Yj和μj,并產(chǎn)生[0,1]內(nèi)的隨機(jī)數(shù)η 。對(duì)M 只海豚依次執(zhí)行:若μj≤η ,海豚j 用式(11)更新,否則用式(9)和式(10)更新。轉(zhuǎn)Step2。
硬件環(huán)境:Intel? Core(TM)i7-4790K CPU @4.00GHz、16GB 內(nèi) 存、SanDisk SDSSDHII120G 硬盤。軟件環(huán)境:Windows 10 64 位專業(yè)版,Matlab R2017b。工程應(yīng)用仿真實(shí)例為伸縮繩設(shè)計(jì)問題、焊接條設(shè)計(jì)問題和壓力管設(shè)計(jì)問題[5]。
本文采取對(duì)算法連續(xù)獨(dú)立運(yùn)行50 次的策略來消除隨機(jī)性對(duì)求解結(jié)果的影響。DSOA 算法和ID?SOA 算法均使用統(tǒng)一的參數(shù)值:M=40 ,Gen=600,w1=w2=0.6,cR1=cI1=2,β1=β2=2,ω=30,cR2=cR3=β1(G en-t )/Gen , cI2=cI3=β2(G en-t)/Gen,ε( t )=1/1000t100。IDSOA 算法的獨(dú)有參數(shù)均設(shè)置為α=0.3。從仿真結(jié)果(表1~表6)可以看出,IDSOA 算法在綜合性能上均優(yōu)于對(duì)比算法。注:“-”表示文獻(xiàn)未給出計(jì)算結(jié)果。
表1 伸縮繩設(shè)計(jì)問題最優(yōu)結(jié)果比較
表2 伸縮繩設(shè)計(jì)問題統(tǒng)計(jì)值比較
在深入分析DSOA 算法原理及搜索行為的基礎(chǔ)上,針對(duì)算法的薄弱環(huán)節(jié)進(jìn)行調(diào)整與改進(jìn),提出了一種IDSOA 算法。三個(gè)典型工程實(shí)例的仿真和統(tǒng)計(jì)結(jié)果證明IDSOA 算法擁有比DSOA 算法更好的性能,在求解精度、收斂速度和穩(wěn)定性等方面均有更好的表現(xiàn)。因此,IDSOA算法對(duì)于求解約束優(yōu)化問題是非常有效和可行的。
表3 焊接條設(shè)計(jì)問題最優(yōu)結(jié)果比較
表4 焊接條設(shè)計(jì)問題統(tǒng)計(jì)值比較
表5 壓力管設(shè)計(jì)問題最優(yōu)結(jié)果比較
表6 壓力管設(shè)計(jì)問題統(tǒng)計(jì)值比較