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