黃基誕
(1.東華大學(xué)旭日工商管理學(xué)院,上海 200051)
科學(xué)計算和工程技術(shù)領(lǐng)域中,存在著各種數(shù)值積分的計算問題,比如橋梁設(shè)計、船舶設(shè)計、土地測繪等。目前,在數(shù)學(xué)領(lǐng)域中求解數(shù)值積分的方法有很多,經(jīng)典的數(shù)值積分方法有牛頓-柯特斯公式(Newton-Cotes)法,辛普森求積公式(Simpson)法、梯形法、龍貝格求積公式(Romberg)、Gauss 法等[1]。但這些經(jīng)典的方法在工程計算中都存在各自的不足,比如Romberg 雖計算精度高,但計算量大;Newton-Cotes 公式穩(wěn)定性較差,收斂性得不到保證。近年來,隨著計算機(jī)技術(shù)的飛速發(fā)展和許多新型的智能算法的出現(xiàn),有學(xué)者開始逐漸利用或結(jié)合新型群智能算法求解數(shù)值積分,并取得了良好的效果。如人工魚群算法[2]、粒子群算法[3]、細(xì)菌覓食算法[4]、差分進(jìn)行算法[5-6]、蝙蝠算法[7]、神經(jīng)網(wǎng)絡(luò)算法[8]和生物地理優(yōu)化算法[9]求解任意函數(shù)的數(shù)值積分,取得了較好的效果。
上述智能算法都在一定程度上解決了經(jīng)典數(shù)值積分方法的不足,取得了較大的成功,為后續(xù)學(xué)者更深入的數(shù)值研究打下了扎實(shí)的理論基礎(chǔ)。同時,目前國內(nèi)外對群智能算法在求積分的數(shù)值解方面的研究屬于起步階段。本文將在前人的研究基礎(chǔ)上繼續(xù)深入拓展,改進(jìn)灰狼算法用于求解數(shù)值定積分的方法,提出了結(jié)合Simpson3/8 公式的基于灰狼優(yōu)化算法求任意函數(shù)的數(shù)值積分的方法。該方法的基本思路是:先在積分區(qū)間內(nèi)產(chǎn)生一些隨機(jī)分割點(diǎn)(不一定是等距分割點(diǎn)),然后用灰狼優(yōu)化算法對這些分割點(diǎn)進(jìn)行優(yōu)化,將優(yōu)化后得到的最優(yōu)分割點(diǎn)從小到大排序并作為該區(qū)間的分割點(diǎn),這些分割點(diǎn)結(jié)合Simpson3/8 積分公式進(jìn)行數(shù)值計算,在這點(diǎn)上與以往的智能算法求解數(shù)值積分不同,以往的這些文獻(xiàn)中的算法都是用的梯形公式;用本文方法求得數(shù)值積分不僅計算精度高,且對特殊函數(shù)如振蕩函數(shù)同樣適用。
隨著科技的發(fā)展及新問題的不斷出現(xiàn),近些年涌現(xiàn)出一批新型的算法,如生物地理優(yōu)化算法[9],煙花算法[10]、引力搜索算法[11]等。這些算法優(yōu)點(diǎn)就是能夠快捷地給出接近最優(yōu)的解.灰狼算法(Grey Wolf Optimization,GWO)最早是由Mirjalili等[12]于2014 年提出的,它是模擬自然界中灰狼群社會等級和狩獵行為的一種新型群體智能優(yōu)化算法。該算法通過模擬灰狼跟蹤、包圍、追捕及攻擊獵物等形式實(shí)現(xiàn)優(yōu)化目的?;依撬惴ň哂袛?shù)學(xué)模型簡單、全局搜索能力強(qiáng)、參數(shù)設(shè)置少等優(yōu)點(diǎn),目前逐漸在調(diào)度領(lǐng)域得到應(yīng)用[13-14],背包計算問題[15];還有學(xué)者將它用于光伏陣列局部陰影下最大功率點(diǎn)跟蹤[16]。本文將對該算法的應(yīng)用進(jìn)行改進(jìn),將其用于求數(shù)值積分計算實(shí)驗(yàn)。
GWO是通過數(shù)學(xué)模型模擬生物界中狼群捕獵機(jī)制與領(lǐng)導(dǎo)結(jié)構(gòu)提出的一種新型群智能搜索方法。在灰狼種群中,根據(jù)領(lǐng)導(dǎo)地位和結(jié)構(gòu)由高到低分級為:頭領(lǐng)狼α,副頭領(lǐng)狼β,普通平民狼δ,底層狼ω。該狼群群等級越低,則灰狼個體數(shù)量越多。狼群體在捕獲獵物時,其他灰狼個體在頭狼α 的帶領(lǐng)下對獵物進(jìn)行圍攻。在d 維搜索空間中,第i只灰狼的位置記:
獵物的位置對應(yīng)于優(yōu)化問題的全局最優(yōu)解。狼群獵食行動包括以下兩個主要步驟:
(1)追蹤及包圍獵物。描述灰狼追蹤并包圍獵物的行為,滿足如下公式:
式中:t表示當(dāng)前迭代次數(shù);X(t)表示第t 代灰狼個體的位置;Xp(t)為第t 代獵物位置,常數(shù)C 是擺動因子;常數(shù)A是收斂因子
rand1,rand2 表示[0,1]之間的隨機(jī)變量;變量a 稱為隨機(jī)因子,隨迭代次數(shù)的增大從2 線性減小到0,數(shù)學(xué)表達(dá)為
(2)攻擊獵物。當(dāng)灰狼判斷出獵物所在位置時,通常由頭狼α引領(lǐng)β和δ發(fā)動捕獵攻擊。因此狼群可以根據(jù)α、β、δ 三者的位置判斷出獵物所在方向,進(jìn)而更新灰狼位置:
式中:C1,C2,C3表示一個隨機(jī)向量;X(t)表示當(dāng)前灰狼位置向量。式(6)和(7)定義了ω狼朝向α,β,δ狼前進(jìn)的步長和方向。然后由式(8)即可判斷出個體向獵物移動的方向和ω 狼的最終位置[12]。盡管GWO算法得到了工程領(lǐng)域的廣泛應(yīng)用,但它和其他許多智能算法一樣存在一些不足之處,比如求解精度低、易早熟等。
GWO算法產(chǎn)生初始種群時是隨機(jī)的,不一定均勻隨機(jī),故可能會影響種群的多樣性?;煦缧蛄惺且环N確定系統(tǒng)里經(jīng)常出現(xiàn)的無規(guī)則雜亂運(yùn)動,具有較強(qiáng)的遍歷性,通常表現(xiàn)為隨機(jī)情形下背后的簡單規(guī)律。根據(jù)文獻(xiàn)[17]中立方映射比Logistic和Tent映射產(chǎn)生的混沌變量更加均勻分布于區(qū)域之間,故本文采用立方映射產(chǎn)生混沌變量,應(yīng)用于算法混沌初始化,即:
式中:-1 ≤zi(n)≤1,zi(n)≠0,n為迭代次數(shù)。由于混沌變量-1≤zi(n)≤1,zi(n)≠0,故需轉(zhuǎn)換為改進(jìn)混沌GWO 中第i 個灰狼每個維度的決策變量j位置。
為提高算法的全局搜索能力,提出混沌策略改進(jìn)GWO,利用混沌動力學(xué)對算法的初始化過程進(jìn)行改進(jìn)。同時,為進(jìn)一步提高種群的多樣性,混沌序列產(chǎn)生初始序列的方式如下:
(1)隨機(jī)產(chǎn)生N 個數(shù)據(jù)點(diǎn)zi(1),其中i =1,2,…,N,N為種群數(shù)量;每個分量的值為[-1,1]之間的隨機(jī)數(shù)。
(2)分別以這些數(shù)據(jù)點(diǎn)為初始點(diǎn)按式(9)的混沌映射方式進(jìn)行迭代,得到N 個混沌序列zi=(zi(1),zi(2),…,zi(d)),d為問題維數(shù)。
(3)由于立方映射產(chǎn)生的序列中zi(d)的取值在-1 和1 之間,所以必須將其映射到灰狼的搜索區(qū)間中,映射規(guī)則如下:
式中:a和b分別表示搜索空間第d 維的上、下限,也就是積分區(qū)間。zi(d)是利用式(10)產(chǎn)生的第i 個粒子的第d維,則xik即為第i個灰狼在搜索空間第k 維的坐標(biāo)。
為了提高GWO 的搜索性能,本文引入單純形法策略進(jìn)行擾動。在一次迭代完成之后,利用單純形法搜索策略,選擇底層ω 狼進(jìn)行優(yōu)化。找出最優(yōu)點(diǎn)、次優(yōu)點(diǎn)以及最差點(diǎn),通過反射、壓縮、擴(kuò)張等操作更新最差點(diǎn),形成一個新的多面體。它是一種局域的搜索方法。假設(shè)底層狼的位置為Xs,最優(yōu)位置中心。
(1)反射操作
Xr為反射點(diǎn),反射系數(shù)δ通常取1。
(2)擴(kuò)張操作
Xe為擴(kuò)張點(diǎn),擴(kuò)張系數(shù)φ通常取2。
(3)壓縮操作
Xt為壓縮點(diǎn),壓縮系數(shù)?通常取0.5。
(4)收縮操作
Xw為收縮點(diǎn),收縮系數(shù)與壓縮系數(shù)相同。
(5)差分進(jìn)化算法特點(diǎn)收斂速度快、探索能力強(qiáng),可以使新解朝著最優(yōu)的方向進(jìn)行搜索。差分操作如下:
具體的單純形差分?jǐn)_動策略步驟設(shè)計如下:選取任意一個底層ω 狼的位置為Xs,分別計算出Xc,Xr,;比較這些目標(biāo)函數(shù)值,并選取單純形中的最優(yōu)值與當(dāng)前最優(yōu)目標(biāo)值進(jìn)行比較。如果單純形中的值更優(yōu),則替換X*。
綜上所述,本文提出的基于GWO 求任意函數(shù)數(shù)值積分算法流程可歸結(jié)如下:
Step 1初始化基本參數(shù)a,A 和C、NP為種群個數(shù)、問題維數(shù)d 和最大迭代次數(shù)Tmax等參數(shù);在被積區(qū)間內(nèi)[a,b]根據(jù)混沌策略生成初始種群X =(X1,X2,…,XN),其中:Xi=(Xi1,Xi2,…,Xin);Xik∈[a,b]表示第k個節(jié)點(diǎn),n表示積分區(qū)間內(nèi)的節(jié)點(diǎn)數(shù)。
Step 2計算適應(yīng)度并進(jìn)行排序。先將隨機(jī)產(chǎn)生的每個個體置于積分區(qū)間的左右端點(diǎn)之間,并按照升序排列,這樣就得到n +2 個節(jié)點(diǎn)和n +1 小段,再分別計算這n +2 個節(jié)點(diǎn)相鄰節(jié)點(diǎn)之間的距離dj,j =1,2,…,n +1 及這n +2 個節(jié)點(diǎn)對應(yīng)的函數(shù)值和每小段中點(diǎn)對應(yīng)的函數(shù)值,確定每小段左右端點(diǎn)和中間點(diǎn)的3個函數(shù)值中,記下最大函數(shù)值max Yj、最小函數(shù)值min Yj,j =1,2,…,n +1.并定義適應(yīng)度為[7]
越小表明分割方法越好。
Step 3根據(jù)計算的適應(yīng)度,得到當(dāng)前的歷史最優(yōu)解Xα,次最優(yōu)解Xβ,第3 最優(yōu)解Xα和ω普通狼。
Step 4由式(6)計算群體中其他灰狼個體分別與α、β、δ狼的距離,并根據(jù)式(7)、(8)更新每個灰狼個體的位置。重新計算所有個體狼的適應(yīng)度值并進(jìn)行排序,更新最優(yōu)值前3 的灰狼個體Xα、Xβ、Xδ的位置。
Step 5對底層狼ω 實(shí)施單純形差分?jǐn)_動策略,計算擾動后灰狼的適應(yīng)度值并進(jìn)行排序,若有改進(jìn)重新找出3 個灰狼個體Xα、β、δ個體。
Step 6更新α、A和C等參數(shù)的值。
Step 7若未達(dá)到最大迭代次數(shù)Tmax,則返回步驟4;否則,輸出全局最優(yōu)位置;返回最優(yōu)灰狼個體位置Xα,算法結(jié)束。
Step 8計算定積分值。將所求的最優(yōu)分割點(diǎn)[α,x1,…,Xn,b]分別代入數(shù)值積分式進(jìn)行計算(a =x0,b =xn+1),得出:
為了驗(yàn)證本文提出算法的有效性和正確性,選取了幾個典型的數(shù)值積分函數(shù),其中包括振蕩函數(shù),并著重與文獻(xiàn)[6-7]中的方法進(jìn)行比較。其中算法采用Matlab2015a 編程,實(shí)驗(yàn)運(yùn)行環(huán)境為:CPU 2.6 GHz,內(nèi)存4 GB,Windows7 操作系統(tǒng)(64 位)。
例1計算積分
該函數(shù)積分精確值為58.470 469 1[6-7]。文獻(xiàn)[6]中給出用差分優(yōu)化算法計算的結(jié)果值58.470 517 8;文獻(xiàn)[7]中給出用蝙蝠優(yōu)化算法計算的結(jié)果值為58.470 821 5;本文取N =15,D =100,運(yùn)用灰狼優(yōu)化算法計算結(jié)果為:
例2取N =20,D =60,分別計算6 個函數(shù):x2,在積分區(qū)間[0,2]內(nèi)的積分(見表1)。
表1 各算法對例2 的函數(shù)積分值比較
例3計算振蕩函數(shù)積
該振蕩函數(shù)積分的精確值為0.05[7]。文獻(xiàn)[7]中給出的用蝙蝠優(yōu)化算法計算的結(jié)果值為
本文取N =20,D =120。運(yùn)用灰狼優(yōu)化算法計算結(jié)果:
例4計算振蕩函數(shù)積
該振蕩函數(shù)積分的精確值為-0.007 327 9[7]。文獻(xiàn)[6]中給出的用差分優(yōu)化算法計算的結(jié)果值為-0.007 332 8;文獻(xiàn)[7]中給出的用蝙蝠優(yōu)化算法計算的結(jié)果值為-0.007 335 411 855 213 67;采用本文灰狼優(yōu)化算法時,針對被積函數(shù)的振蕩性特點(diǎn),分割點(diǎn)n取為200,其他參數(shù)設(shè)置不變。本文計算結(jié)果為:
本文提出了用單純形擾動和混沌映射方法改進(jìn)灰狼優(yōu)化算法結(jié)合Simpson3/8 積分求函數(shù)數(shù)值積分,對4 個不同數(shù)值積分算例進(jìn)行測試。仿真結(jié)果表明,該算法收斂性、計算精度相比經(jīng)典的數(shù)值積分方法優(yōu)勢比較明顯,驗(yàn)證了灰狼優(yōu)化算法改進(jìn)的有效性和可行性。不僅對常用函數(shù)進(jìn)行積分,還可以計算振蕩積分等特殊情形,此方法是對經(jīng)典求積分?jǐn)?shù)值方法的一種有效補(bǔ)充。同時,也可作為灰狼優(yōu)化算法應(yīng)用領(lǐng)域的拓展應(yīng)用。如何利用改進(jìn)灰狼算法進(jìn)行二重積分和三重積分計算,甚至利用灰狼優(yōu)化算法計算常微分方程的數(shù)值解等問題可作為今后進(jìn)一步研究的內(nèi)容和方向。