王 森,王良明,傅 健
(南京理工大學(xué)能源與動(dòng)力工程學(xué)院,江蘇 南京 210094)
現(xiàn)代戰(zhàn)爭(zhēng)中,對(duì)目標(biāo)的精確打擊已成為影響戰(zhàn)爭(zhēng)結(jié)局的關(guān)鍵因素,越來越多的國(guó)家開始把精確打擊作為彈箭技術(shù)發(fā)展的重要方向。要準(zhǔn)確地命中目標(biāo),就需要對(duì)彈丸的落點(diǎn)進(jìn)行準(zhǔn)確的預(yù)測(cè),從而根據(jù)預(yù)測(cè)落點(diǎn)與目標(biāo)點(diǎn)的偏差來調(diào)整彈上的執(zhí)行機(jī)構(gòu),使彈道得到修正,從而減小彈丸的脫靶量[1]。
目前主要采用彈道積分外推法來預(yù)測(cè)彈丸的落點(diǎn)[2],該方法首先需要根據(jù)不同彈丸的運(yùn)動(dòng)特性建立外彈道方程,然后把彈丸飛行過程中某一點(diǎn)的飛行狀態(tài)參數(shù)帶入外彈道方程作為方程的積分初值,接著采用龍格庫(kù)塔法對(duì)彈道方程進(jìn)行積分解算,直到彈丸落地,從而獲得彈丸的落點(diǎn)位置。彈道積分外推法的解算精度由彈載計(jì)算機(jī)的性能和積分步長(zhǎng)決定。要想獲得較高的精度就需要選擇較小的積分步長(zhǎng),這會(huì)使得解算時(shí)間過長(zhǎng)、所需計(jì)算資源較多,同時(shí)積分過程中的累積誤差也會(huì)增大。在彈道積分外推法的基礎(chǔ)上,一些學(xué)者把卡爾曼濾波法引入到了彈丸落點(diǎn)的預(yù)測(cè)中[3-5],在一定程度上降低了隨機(jī)噪聲和累計(jì)誤差對(duì)預(yù)測(cè)精度的影響。引入卡爾曼濾波雖然提高了積分外推法的容錯(cuò)能力,但其需要建立較為準(zhǔn)確的系統(tǒng)狀態(tài)模型和量測(cè)模型,由于彈道模型是非線性模型,因此在濾波的過程中會(huì)使計(jì)算量增大,從而使解算時(shí)間增長(zhǎng)。還有學(xué)者提出了使用多項(xiàng)式擬合預(yù)測(cè)落點(diǎn)的方法[6-7],通過擬合彈丸各狀態(tài)變量與飛行時(shí)間的關(guān)系來計(jì)算落點(diǎn)。該方法的解算時(shí)間較快,但在精度上還有待提升。
近年來,越來越多的智能算法被應(yīng)用于系統(tǒng)控制、模式識(shí)別、性能預(yù)測(cè)等領(lǐng)域,其中,人工神經(jīng)網(wǎng)絡(luò)是使用較為活躍的一種方法。人工神經(jīng)網(wǎng)絡(luò)受到生物神經(jīng)網(wǎng)絡(luò)運(yùn)行機(jī)理的啟發(fā),采用分布式并行運(yùn)算的方法來對(duì)輸入的信息進(jìn)行處理,并且在輸入信息的傳遞過程中使用了非線性激活函數(shù),使其具有非線性映射能力和容錯(cuò)性,非常適用于處理非線性系統(tǒng)的問題。因此,本文把人工神經(jīng)網(wǎng)絡(luò)算法和彈丸落點(diǎn)預(yù)測(cè)問題相結(jié)合,提出了基于BP人工神經(jīng)網(wǎng)絡(luò)的彈丸落點(diǎn)預(yù)測(cè)方法。
BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network,BPNN),即反向傳播神經(jīng)網(wǎng)絡(luò),屬于多層前饋型神經(jīng)網(wǎng)絡(luò),具有輸入層、隱含層和輸出層,各層之間的神經(jīng)元采用全連接的方式,每一層中的神經(jīng)元互不相連。BP神經(jīng)網(wǎng)絡(luò)采用輸入信號(hào)正向傳遞和輸出誤差反向傳播的監(jiān)督式學(xué)習(xí)規(guī)則,是目前各種人工神經(jīng)網(wǎng)絡(luò)模型中運(yùn)用最為廣泛的一種,具有較為成熟的理論體系[8]。輸入信號(hào)在網(wǎng)絡(luò)中的正向傳遞會(huì)產(chǎn)生網(wǎng)絡(luò)的實(shí)際輸出,通過比較實(shí)際輸出與輸入信號(hào)的期望輸出,得到網(wǎng)絡(luò)的誤差,將得到的誤差從輸出層傳入網(wǎng)絡(luò),采用梯度下降法對(duì)網(wǎng)絡(luò)各層的權(quán)值和閾值進(jìn)行修正,當(dāng)樣本的輸出誤差收斂于設(shè)定誤差時(shí),結(jié)束訓(xùn)練過程,得到網(wǎng)絡(luò)模型。典型的三層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖中,xj為輸入層第j個(gè)神經(jīng)元的輸入,j=1,2,…n;wij為輸入層第j個(gè)神經(jīng)元到隱含層第i個(gè)神經(jīng)元之間的權(quán)值,i=1,2,…h(huán);bi為隱含層第i個(gè)神經(jīng)元的閾值;φ為隱含層的激活函數(shù);wki為隱含層第i個(gè)神經(jīng)元到輸出層第k個(gè)神經(jīng)元之間的權(quán)值,k=1,2,…m;ak為輸出層第k個(gè)神經(jīng)元的閾值;ψ為輸出層的激活函數(shù);yk為輸出層第k個(gè)神經(jīng)元的輸出。
1) 信號(hào)的正向傳遞過程。
隱含層第i個(gè)神經(jīng)元的輸入neti和輸出oi為
(1)
(2)
輸出層第k個(gè)神經(jīng)元的輸入netk和輸出yk為
(3)
(4)
2) 誤差的反向傳播過程。
對(duì)于每一個(gè)樣本p,設(shè)其輸出層第k個(gè)節(jié)點(diǎn)的期望輸出為Tk,則此樣本的二次型誤差目標(biāo)函數(shù)Ep為
(5)
得出樣本的期望輸出和網(wǎng)絡(luò)正向輸出之間的誤差后,給定學(xué)習(xí)率η,就可根據(jù)梯度下降法按照誤差目標(biāo)函數(shù)的負(fù)梯度方向?qū)敵鰧雍碗[含層的各參數(shù)進(jìn)行調(diào)整。
輸出層權(quán)值的修正量和閾值的修正量為
(6)
(7)
隱含層權(quán)值的修正量Δwij和閾值的修正量Δbi為
(8)
(9)
標(biāo)準(zhǔn)BP算法使用的是非線性規(guī)劃方法中的最速下降法,其要解決的問題是讓設(shè)定的誤差目標(biāo)函數(shù)達(dá)到最小值,即讓網(wǎng)絡(luò)的實(shí)際輸出與期望輸出最為接近,從而獲得網(wǎng)絡(luò)各層權(quán)值和閾值的最優(yōu)值。因?yàn)槠浒凑照`差目標(biāo)函數(shù)的負(fù)梯度方向來計(jì)算網(wǎng)絡(luò)各參數(shù)的調(diào)整量,所以存在陷入局部極小值的問題,并且標(biāo)準(zhǔn)BP算法也需要較長(zhǎng)的時(shí)間來訓(xùn)練網(wǎng)絡(luò)以使誤差收斂[9]。為解決標(biāo)準(zhǔn)BP算法的不足,已提出了一些改進(jìn)的方法,如變學(xué)習(xí)率算法、附加動(dòng)量算法、高斯-牛頓算法、共軛梯度算法、Levenberg-Marquardt(LM)算法等數(shù)值優(yōu)化算法。在這些改進(jìn)算法中,LM算法是高斯-牛頓算法的變形,常用于最小化作為其它非線性函數(shù)平方和的函數(shù),所以非常適合于神經(jīng)網(wǎng)絡(luò)誤差目標(biāo)函數(shù)的優(yōu)化[10-11]。本文采用LM算法對(duì)標(biāo)準(zhǔn)BP算法進(jìn)行改進(jìn)。
設(shè)x為網(wǎng)絡(luò)各層權(quán)值和閾值構(gòu)成的向量,其修正量為Δx,有
xk+1=xk+Δx
(10)
式中,k為迭代次數(shù)。
誤差目標(biāo)函數(shù)為
(11)
式中,e(x)為實(shí)際輸出與期望輸出的誤差。
由牛頓法則有
Δx=-[?2E(x)]-1?E(x)
(12)
式中,?2E(x)為E(x)的Hessian矩陣,?E(x)表示梯度,兩者的計(jì)算式為:
?E(x)=JT(x)e(x)
(13)
?2E(x)=JT(x)J(x)+S(x)
(14)
式中,S(x)為誤差函數(shù),J為雅克比矩陣,兩者的計(jì)算式為
(15)
(16)
對(duì)于高斯-牛頓法則,有
(17)
LM算法改進(jìn)了上式,Δx的計(jì)算式為
(18)
式中,μ為比例系數(shù),μ>0;I為單位矩陣。
可以看出,LM算法是梯度下降算法和高斯-牛頓算法的結(jié)合。當(dāng)μ的取值較大時(shí),LM算法近似于前者;當(dāng)μ的取值較小時(shí),LM算法又接近于后者。因此,LM算法綜合了二者的優(yōu)點(diǎn),使訓(xùn)練網(wǎng)絡(luò)所需的時(shí)間短、網(wǎng)絡(luò)誤差的收斂過程穩(wěn)定,并且更容易得到全局最優(yōu)值。
根據(jù)外彈道理論[2],彈丸當(dāng)前狀態(tài)參數(shù)與彈丸落點(diǎn)之間存在著非線性關(guān)系,形式為
O=F(I)
(19)
式中,O為落點(diǎn)信息,I為彈丸當(dāng)前狀態(tài)參數(shù)。
由于BP神經(jīng)網(wǎng)絡(luò)對(duì)非線性映射有著很好的逼近關(guān)系,所以可以通過BP神經(jīng)網(wǎng)絡(luò)得到彈丸當(dāng)前狀態(tài)參數(shù)與落點(diǎn)之間的一種映射關(guān)系F′(I),使得F′(I)→F(I),即可通過F′(I)得到彈丸的落點(diǎn)信息。
考慮到彈丸在飛行過程中參數(shù)的易獲得性,選擇彈丸當(dāng)前位置在地面坐標(biāo)系中的分量x、y、z和速度在地面坐標(biāo)系中的分量vx、vy、vz作為神經(jīng)網(wǎng)絡(luò)輸入層的輸入,彈丸落點(diǎn)信息(射程X和橫偏Z)作為神經(jīng)網(wǎng)絡(luò)輸出層的輸出。
由Kolmogorov定理知,對(duì)于給定的任一連續(xù)函數(shù),可通過一個(gè)三層的神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)其映射關(guān)系[12]。當(dāng)隱含層層數(shù)過多時(shí),會(huì)使誤差的反向傳播變得復(fù)雜,可能導(dǎo)致誤差函數(shù)收斂時(shí)間過長(zhǎng)甚至出現(xiàn)無(wú)法收斂的情況。因此,本文選擇的隱含層數(shù)為1層。對(duì)于隱含層神經(jīng)元節(jié)點(diǎn)數(shù)目的選取,目前并無(wú)確定的選擇方法,較多的是使用經(jīng)驗(yàn)公式來確定其數(shù)目[13]
(20)
式中,n1為輸入層神經(jīng)元個(gè)數(shù),n2為隱含層神經(jīng)元個(gè)數(shù),n3為輸出層神經(jīng)元個(gè)數(shù),a為常數(shù)(取值0~10)。通過對(duì)隱含層神經(jīng)元節(jié)點(diǎn)數(shù)目不同取值的仿真,本文最后選取隱含層節(jié)點(diǎn)數(shù)為13。
綜上所述,本文選取的用于彈丸落點(diǎn)預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為6-13-2,如圖2所示。
圖2 落點(diǎn)預(yù)測(cè)的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
本文用于BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的彈道數(shù)據(jù)通過在不同的初始射角條件下使用四階龍格庫(kù)塔法解算六自由度外彈道方程得到。射角范圍設(shè)置為從6°開始,每隔2°計(jì)算一條彈道,直到射角為70°時(shí)停止;四階龍格庫(kù)塔法的積分步長(zhǎng)設(shè)置為0.005s;彈丸狀態(tài)參數(shù)的采集時(shí)間為發(fā)射后5s至落地前5s,采集間隔為0.5s。將采集到的狀態(tài)參數(shù)與落點(diǎn)信息一一對(duì)應(yīng),共得到4646組數(shù)據(jù)集。為了避免在訓(xùn)練過程中出現(xiàn)過擬合現(xiàn)象,提高網(wǎng)絡(luò)的推廣能力,將數(shù)據(jù)集的80%設(shè)置為訓(xùn)練數(shù)據(jù)集,20%設(shè)置為驗(yàn)證數(shù)據(jù)集[14-15]。在開始網(wǎng)絡(luò)的訓(xùn)練之前,還需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,使輸入數(shù)據(jù)的值在0到1之間,以消除數(shù)據(jù)間數(shù)量級(jí)的差別對(duì)網(wǎng)絡(luò)訓(xùn)練的影響,歸一化公式為
(21)
式中,xi為歸一化后的數(shù)據(jù),xk為待歸一化的數(shù)據(jù),xmin為數(shù)據(jù)序列的最小值,xmax為數(shù)據(jù)序列的最大值。
按上述方法訓(xùn)練建立的BP神經(jīng)網(wǎng)絡(luò),待網(wǎng)絡(luò)的誤差收斂后就可得到用于預(yù)測(cè)彈丸落點(diǎn)的神經(jīng)網(wǎng)絡(luò)模型,過程為:
1) 將仿真得到的數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集,并歸一化數(shù)據(jù)集;
2) 初始化神經(jīng)網(wǎng)絡(luò)各層的權(quán)值和閾值;
3) 利用訓(xùn)練數(shù)據(jù)集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,根據(jù)網(wǎng)絡(luò)的實(shí)際輸出和期望輸出之間的誤差以LM算法來修正網(wǎng)絡(luò)各層的權(quán)值和閾值;
4) 利用驗(yàn)證數(shù)據(jù)集的網(wǎng)絡(luò)輸出對(duì)訓(xùn)練過程進(jìn)行過擬合情況的監(jiān)控;
5) 當(dāng)網(wǎng)絡(luò)的輸出誤差達(dá)到最優(yōu)時(shí),停止網(wǎng)絡(luò)的訓(xùn)練過程,得到落點(diǎn)預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò)模型;
6) 輸入新的彈丸飛行狀態(tài)參數(shù)到訓(xùn)練好的模型中,網(wǎng)絡(luò)輸出預(yù)測(cè)的落點(diǎn)信息。
按照上文所述的方法訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),訓(xùn)練結(jié)果如圖3所示。
圖3 網(wǎng)絡(luò)訓(xùn)練誤差收斂曲線
從圖中可以看出,網(wǎng)絡(luò)的輸出誤差以指數(shù)形式下降,并逐漸接近于所設(shè)定的誤差值。訓(xùn)練集與驗(yàn)證集的輸出誤差下降趨勢(shì)一致,網(wǎng)絡(luò)的訓(xùn)練過程穩(wěn)定。當(dāng)訓(xùn)練次數(shù)達(dá)到1612次時(shí),輸出誤差為6.7012×10-7,雖然還未降到設(shè)定誤差值10-7,但此時(shí)驗(yàn)證集的輸出誤差已達(dá)最小,因此訓(xùn)練過程提前停止,避免訓(xùn)練結(jié)果出現(xiàn)過擬合的情況。
選擇訓(xùn)練數(shù)據(jù)集外的三組彈道數(shù)據(jù)(射角分別為35°、45°和55°),并從每組彈道數(shù)據(jù)中隨機(jī)挑選30個(gè)彈道狀態(tài)點(diǎn),以這30個(gè)狀態(tài)點(diǎn)的狀態(tài)參數(shù)(x、y、z、vx、vy、vz)作為測(cè)試數(shù)據(jù),輸入已訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)模型中,來預(yù)測(cè)彈丸的落點(diǎn)。三組數(shù)據(jù)對(duì)彈丸射程和橫偏的預(yù)測(cè)誤差分別如圖4和圖5所示,每組數(shù)據(jù)預(yù)測(cè)誤差絕對(duì)值的最大值、最小值和平均值如表1所示。
圖4 射程預(yù)測(cè)誤差
圖5 橫偏預(yù)測(cè)誤差
表1 預(yù)測(cè)誤差結(jié)果統(tǒng)計(jì)
由仿真結(jié)果可知,三組數(shù)據(jù)的射程預(yù)測(cè)誤差均不超過10m,橫偏預(yù)測(cè)誤差均不超過2m,經(jīng)過訓(xùn)練的BP神經(jīng)網(wǎng)絡(luò)以較高的精度實(shí)現(xiàn)了彈丸當(dāng)前狀態(tài)參數(shù)(x、y、z、vx、vy、vz到落點(diǎn)信息(X、Z)的映射。在實(shí)際應(yīng)用中,可以擴(kuò)大神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)集中的數(shù)據(jù)量,以得到更高精度的預(yù)測(cè)結(jié)果。
同時(shí),從三組彈道數(shù)據(jù)共90個(gè)彈道狀態(tài)點(diǎn)中隨機(jī)選擇10個(gè)狀態(tài)點(diǎn),分別統(tǒng)計(jì)數(shù)值積分法和BP神經(jīng)網(wǎng)絡(luò)法的落點(diǎn)解算時(shí)間,結(jié)果如表2所示。
表2 落點(diǎn)解算時(shí)間
從解算時(shí)間的統(tǒng)計(jì)結(jié)果看,數(shù)值積分法的平均耗時(shí)為246.15ms,BP神經(jīng)網(wǎng)絡(luò)法的平均耗時(shí)為24.99ms,BP神經(jīng)網(wǎng)絡(luò)法在彈丸落點(diǎn)預(yù)測(cè)的解算時(shí)間上也有一定的優(yōu)勢(shì)。在實(shí)際應(yīng)用中,訓(xùn)練過程可離線完成,只需要把訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型裝入彈載計(jì)算機(jī)中用于彈丸落點(diǎn)的實(shí)時(shí)預(yù)測(cè),因此可以節(jié)省大量的訓(xùn)練時(shí)間,滿足彈丸落點(diǎn)預(yù)測(cè)的快速性要求。
為實(shí)現(xiàn)彈丸落點(diǎn)預(yù)測(cè)的快速性和準(zhǔn)確性,本文引入了BP神經(jīng)網(wǎng)絡(luò)算法,并對(duì)標(biāo)準(zhǔn)BP算法進(jìn)行了改進(jìn)。以改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法為基礎(chǔ),建立了彈丸落點(diǎn)預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò)模型,然后利用大量的彈丸狀態(tài)參數(shù)(x、y、z、vx、vy、vz)和落點(diǎn)信息(X、Z)對(duì)建立的模型進(jìn)行訓(xùn)練,最后對(duì)訓(xùn)練得到的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了落點(diǎn)預(yù)測(cè)的仿真測(cè)試。仿真結(jié)果表明,射程預(yù)測(cè)誤差的最大值和最小值分別為9.332m和0.009m,橫偏預(yù)測(cè)誤差的最大值和最小值分別為1.933m和0.024m;同時(shí)該方法的彈丸落點(diǎn)平均解算時(shí)間比數(shù)值積分法少了221.16ms。因此,本文提出的方法能以較高的精度預(yù)測(cè)彈丸落點(diǎn),并且解算時(shí)間優(yōu)于數(shù)值積分算法,可以為彈丸落點(diǎn)預(yù)測(cè)的實(shí)際應(yīng)用提供參考。