雍龍泉
(陜西理工大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院, 陜西 漢中 723000)
考慮非線性方程組
(1)
記向量x=(x1,x2,…,xn),向量函數(shù)F(x)=(f1(x),f2(x),…,fn(x))T,則式(1)等價(jià)于非線性方程
F(x)=0。
(2)
很多物理、化工、工業(yè)里復(fù)雜的問(wèn)題都可以轉(zhuǎn)化為非線性方程組,求解非線性方程組最基本的方法是牛頓法以及各類修正牛頓法等[1-8]。多步迭代的高階牛頓迭代法(諸如5階、7階、8階、9階牛頓迭代法等[9-19])成為當(dāng)前研究的熱點(diǎn)。當(dāng)然,收斂階越高,計(jì)算代價(jià)也就越大。
實(shí)際計(jì)算過(guò)程中,若其雅克比矩陣奇異,即行列式det(F′(x)) =0,可以采用阻尼牛頓法或延拓法進(jìn)行處理。目前多數(shù)牛頓迭代法都依賴于初始點(diǎn)的選取和F(x)的性態(tài);此外針對(duì)存在多個(gè)根的非線性方程組,牛頓迭代法無(wú)法同時(shí)找到多個(gè)根。本文提出了一種求非線性方程組的新方法,具體做法是把非線性方程組轉(zhuǎn)化為一個(gè)無(wú)約束優(yōu)化,采用正弦余弦算法求解與之等價(jià)的無(wú)約束優(yōu)化問(wèn)題而獲得原問(wèn)題盡可能多的根。該方法的優(yōu)點(diǎn)是無(wú)需計(jì)算F(x)的雅克比矩陣,且能找到多個(gè)根。
為了求解非線性方程組,建立如下無(wú)約束優(yōu)化模型
(3)
(3)式是一個(gè)標(biāo)準(zhǔn)的無(wú)約束優(yōu)化問(wèn)題,為了避免計(jì)算F(x)的雅克比矩陣,下面采用正弦余弦算法求解無(wú)約束優(yōu)化(3)式。
澳大利亞學(xué)者M(jìn)irjalili[20]在2016年提出的一種采用正弦函數(shù)和余弦函數(shù)對(duì)種群進(jìn)行更新的智能優(yōu)化算法,之后便形成了正弦余弦算法(Sine Cosine Algorithm,SCA)。
SCA 算法結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn),其最顯著的特點(diǎn)是基于正弦函數(shù)和余弦函數(shù)值的變化來(lái)達(dá)到尋優(yōu)目的。在SCA算法中,主要有r1、r2、r3、r44個(gè)參數(shù)。其中,最關(guān)鍵的參數(shù)是r1,控制算法從全局搜索到局部開(kāi)發(fā)的轉(zhuǎn)換。當(dāng)r1的值較大時(shí),算法傾向于全局探索;當(dāng)r1的值較小時(shí),算法偏向于局部開(kāi)發(fā)。
下面給出SCA算法的主要步驟。
初始化算法參數(shù): 種群規(guī)模N,空間維數(shù)D,控制參數(shù)a,最大迭代次數(shù)Tmax;
在可行域空間中隨機(jī)初始化N個(gè)個(gè)體組成初始種群;t=1;
計(jì)算當(dāng)前每個(gè)個(gè)體的適應(yīng)值,并記錄最優(yōu)個(gè)體位置Pit;
while (t fori=1 toNdo forj=1 toDdo 根據(jù)式r1=a-at/Tmax計(jì)算r1的值; 隨機(jī)產(chǎn)生r2∈U[0,2π],r3∈U[0,2],r4∈U[0,1]; ifr4<0.5 else end if end for end for 越界處理; 計(jì)算每個(gè)個(gè)體的適應(yīng)值并更新整個(gè)種群的最優(yōu)值;t=t+1; end while 圖1分別給出了a=2、Tmax=100與a=2、Tmax=500時(shí)r1sinr2與r1cosr2的圖像。且只有當(dāng)r1>1時(shí),函數(shù)r1sinr2與r1cosr2值才有可能大于1或者小于-1;當(dāng)r1≤1時(shí),函數(shù)r1sinr2與r1cosr2值必在-1和1之間。 各級(jí)人影部門均按需設(shè)崗,市級(jí)人影業(yè)務(wù)人員分為:作業(yè)天氣過(guò)程預(yù)報(bào)崗、作業(yè)條件潛力預(yù)報(bào)崗、作業(yè)條件監(jiān)測(cè)崗、聯(lián)合作業(yè)方案制定崗、作業(yè)跟蹤指揮崗、登機(jī)作業(yè)指揮崗、登機(jī)技術(shù)保障崗、外場(chǎng)地面保障崗、作業(yè)信息管理崗、作業(yè)效益評(píng)估崗、云水資源評(píng)估崗、指揮平臺(tái)運(yùn)行保障崗、探測(cè)設(shè)備保障崗、網(wǎng)絡(luò)運(yùn)行管理崗、信息上報(bào)及效果評(píng)估崗;旗縣級(jí)人影業(yè)務(wù)人員分為:綜合管理崗、火箭作業(yè)崗、應(yīng)急保障崗、高炮管理崗、信息上報(bào)及效果評(píng)估崗等;作業(yè)點(diǎn)人員分為現(xiàn)場(chǎng)指揮崗、作業(yè)實(shí)施崗、空域請(qǐng)示及信息上報(bào)崗。這樣調(diào)整以后,做到了每個(gè)崗位均由專人負(fù)責(zé),專職專崗、崗崗有人、崗崗有責(zé)。 根據(jù)SCA算法設(shè)計(jì)原理,算法先進(jìn)行全局搜索再進(jìn)行局部開(kāi)發(fā)。如圖2所示,當(dāng)|r1sinr2|>1或者|r1cosr2|>1時(shí),算法進(jìn)行全局搜索;當(dāng)|r1sinr2|<1或者|r1cosr2|<1時(shí),算法進(jìn)行局部開(kāi)發(fā)。 劉勇等[21]對(duì)其參數(shù)r1展開(kāi)研究,提出轉(zhuǎn)換參數(shù)r1非線性遞減的正弦余弦算法;曲良東等[22]提出了正弦算法。目前SCA算法已成功應(yīng)用到工農(nóng)業(yè)中,并獲得了較好的結(jié)果。更多的SCA算法見(jiàn)文獻(xiàn)[23-26]。下面應(yīng)用SCA算法求解(3)式。 給出幾個(gè)非線性方程組,算例1—3的共同特點(diǎn)是其雅克比矩陣存在奇異點(diǎn),故牛頓法難以進(jìn)行。通過(guò)將其轉(zhuǎn)化為無(wú)約束優(yōu)化,采用SCA算法求解,程序用MATLABR2009a編寫,參數(shù)設(shè)置N=30,a=2,Tmax=1000,算例1—3搜索空間為-100≤xi≤100,i=1,2;算例4搜索空間為-0.5≤xi≤1.5,i=1,2,…,n。為消除隨機(jī)數(shù)對(duì)算法的影響,算法運(yùn)行10次。 (a) a=2,Tmax=100 (b) a=2,Tmax=500圖1 r1sinr2與r1cosr2的圖像 圖2 SCA算法搜索原理(r1=2,r3=1) 算例1 考慮非線性方程組 (a) 適應(yīng)值收斂曲線 (b) 平均適應(yīng)值收斂曲線圖3 算例1運(yùn)行10次的適應(yīng)值和平均適應(yīng)值收斂曲線 算例2 考慮非線性方程組 其根為x*=(3,0.5)T,x*=(81/32,-1/3)T。該方程的雅克比矩陣存在奇異點(diǎn)(說(shuō)明:奇異點(diǎn)分布在x1=0,x2=1,x2=0,x2=-2 四條直線上),因此牛頓法難以進(jìn)行。圖4給出了SCA算法運(yùn)行10次的適應(yīng)值收斂曲線和平均適應(yīng)值收斂曲線圖;表1中給出了SCA算法運(yùn)行10次后得到的結(jié)果。 (a) 適應(yīng)值收斂曲線 (b) 平均適應(yīng)值收斂曲線圖4 算例2運(yùn)行10次的適應(yīng)值和平均適應(yīng)值收斂曲線 算例3 考慮非線性方程組 (a) 適應(yīng)值收斂曲線 (b) 平均適應(yīng)值收斂曲線圖5 算例3運(yùn)行10次的適應(yīng)值和平均適應(yīng)值收斂曲線 算例4 考慮非線性方程組 其根為x*=(1,1,…,1)T。圖6分別給出了n=5時(shí)SCA算法運(yùn)行10次的適應(yīng)值收斂曲線和平均適應(yīng)值收斂曲線圖。 (a) 適應(yīng)值收斂曲線 (b) 平均適應(yīng)值收斂曲線圖6 算例4運(yùn)行10次的適應(yīng)值和平均適應(yīng)值收斂曲線 算例5 考慮非線性方程組 其解為x*=(1,1)T,x*=(0,0)T。該方程非光滑,因此牛頓法難以進(jìn)行。圖7分別給出了SCA算法運(yùn)行10次的適應(yīng)值收斂曲線和平均適應(yīng)值收斂曲線圖;表1中給出了SCA算法運(yùn)行10次后得到的結(jié)果。 (a) 適應(yīng)值收斂曲線 (b) 平均適應(yīng)值收斂曲線圖7 算例5運(yùn)行10次的適應(yīng)值和平均適應(yīng)值收斂曲線 表1 算例1、2、3、5計(jì)算10次的結(jié)果 通過(guò)把非線性方程組轉(zhuǎn)化為無(wú)約束優(yōu)化,采用SCA算法求解,針對(duì)唯一根的非線性方程組,該方法能夠收斂到其唯一根;針對(duì)具有多個(gè)根的非線性方程組,該方法能夠找到盡可能多的根;且該算法無(wú)需計(jì)算雅克比矩陣,因此對(duì)雅克比矩陣是否存在奇異點(diǎn)無(wú)限制,適用于多數(shù)非線性方程組。計(jì)算結(jié)果表明, 該方法計(jì)算效率高, 對(duì)非線性方程組求解較為有效。如果要得到較高精度的數(shù)值解,可以通過(guò)增加迭代次數(shù)實(shí)現(xiàn)(如需源代碼,請(qǐng)與作者聯(lián)系)。3 數(shù)值算例
4 結(jié)束語(yǔ)