王國輝,張寶棟,李向榮
(陸軍裝甲兵學(xué)院 兵器與控制系,北京 100072)
火炮炮口射彈初速是火炮內(nèi)外彈道的重要參數(shù),是衡量火炮性能的重要指標。炮口射彈初速的下降,會引起射擊距離縮短和散布面積增大等問題。對于壓制火炮,直接影響火炮系統(tǒng)的首發(fā)命中率和首群覆蓋率;對于坦克炮,初速下降會減少坦克炮射程和動能彈的穿甲效能,而引起火炮初速減退的主要原因就是身管的燒蝕磨損作用,因此,建立火炮身管燒蝕磨損量預(yù)測模型,能夠有效預(yù)測身管燒蝕磨損量的變化趨勢,對于估算火炮內(nèi)彈道性能具有重要意義。
在借鑒國內(nèi)外研究的基礎(chǔ)上,針對身管磨損量難以建立確定的數(shù)學(xué)模型,采用實測方法又存在很大的不便性,因此,預(yù)測算法在身管磨損量的估算中應(yīng)用廣泛,但大部分預(yù)測算法只是單純的建立預(yù)測模型,存在預(yù)測結(jié)果不佳,實用性不強等缺點。
反向傳播(Back Propagtion, BP)算法是近年來興起的重要的智能算法之一,在其他各個領(lǐng)域中早已有人展開研究,但在軍事領(lǐng)域還很少見,同類方法在文獻[1-2]中有應(yīng)用,但僅依靠BP神經(jīng)網(wǎng)絡(luò)進行預(yù)測。因此,筆者提出了基于遺傳算法(Gene-tic Algorithms, GA)和反向傳播算法的火炮身管磨損量預(yù)測模型。利用GA算法對網(wǎng)絡(luò)進行優(yōu)化,并與未優(yōu)化的BP網(wǎng)絡(luò)預(yù)測結(jié)果進行對比分析,發(fā)現(xiàn)經(jīng)過優(yōu)化后的網(wǎng)絡(luò)模型的預(yù)測精度更高,能夠為火炮身管燒蝕磨損量提供有效預(yù)測[1]。
身管內(nèi)膛燒蝕磨損量Δd是影響火炮初速變化的主要原因,也是引起內(nèi)彈道性能變化的重要因素[3],通過測量火炮身管磨損量,對實驗測量數(shù)據(jù)進行分析,得到燒蝕磨損的一般規(guī)律,根據(jù)該規(guī)律建立預(yù)測模型,有助于提高模型與實際磨損狀況的貼合度,對于提高模型的準確性具有重要意義,還增強了結(jié)果的可信度。
利用專門的身管內(nèi)膛直徑測量儀器對某型坦克炮身管內(nèi)膛固定點處的直徑進行測量。坦克炮身管內(nèi)膛截面每隔60°測量一次,取平均值作為該固定點處的內(nèi)徑磨損量值。選取多門磨損程度不同、射彈發(fā)數(shù)不同的坦克炮,通過實彈射擊獲取各彈種射彈發(fā)數(shù)與磨損量之間的對應(yīng)數(shù)據(jù),并結(jié)合該型坦克炮多年積累的磨損數(shù)據(jù)進行記錄,表1為采集于火炮身管全壽命周期內(nèi)的磨損數(shù)據(jù),即火炮身管從裝配部隊到報廢的整個壽命周期,涵蓋身管燒蝕磨損各個階段的特征數(shù)據(jù),能夠適應(yīng)不同坦克炮在不同燒蝕磨損情況下的身管燒蝕磨損量預(yù)測。表1中當該型坦克炮身管磨損量達到3.42 mm時,已不能滿足火炮射擊要求,宣告身管報廢。
火炮身管燒蝕磨損量是由于發(fā)射彈丸時彈丸與身管之間的相互作用而引起的,且隨著射彈數(shù)目的增加磨損量也在不斷增大,而且,不同彈種的坦克炮彈對身管的燒蝕磨損程度也不盡相同,根據(jù)這一規(guī)律,建立相應(yīng)的預(yù)測模型,可以實現(xiàn)從不同彈種的射彈數(shù)目到磨損量的映射。
表1 某型坦克炮身管內(nèi)膛固定點處磨損量
分析表1中的數(shù)據(jù)并結(jié)合坦克炮身管專家經(jīng)驗可知,身管的燒蝕磨損一般分為3個階段:在發(fā)射彈丸初期,身管內(nèi)膛只存在少量磨損,內(nèi)膛表面良好,火炮的內(nèi)彈道性能變化不明顯;超過一定數(shù)量后,開始明顯磨損,這一時期的內(nèi)膛磨損狀態(tài)變化無規(guī)律可循;在繼續(xù)發(fā)射一定數(shù)量彈丸后,身管的燒蝕磨損程度逐漸增大,火炮的內(nèi)彈道性能逐漸下降,符合一定的變化規(guī)律。因此,對身管的燒蝕磨損量進行預(yù)測要考慮身管全壽命周期內(nèi)的燒蝕磨損變化,而不能只對壽命周期內(nèi)的某一階段展開研究,通過測量、記錄全壽命周期內(nèi)坦克炮射彈數(shù)和身管燒蝕磨損量能更準確地反映內(nèi)膛燒蝕磨損的變化情況,從而建立的預(yù)測模型適應(yīng)性更強,可信度更高。
BP神經(jīng)網(wǎng)絡(luò)是一種強調(diào)網(wǎng)絡(luò)采用誤差反向傳播的學(xué)習(xí)算法[4]。數(shù)據(jù)首先從輸入層到輸出層的方向向后傳播,計算網(wǎng)絡(luò)輸出與期望值的誤差,再從輸出層向輸入層的方向向前傳播,這個過程就是對各層的連接權(quán)值和閾值不斷調(diào)整的過程,其目標是使網(wǎng)絡(luò)輸出值與期望值的誤差最小。BP神經(jīng)網(wǎng)絡(luò)具有很強的自適應(yīng)和推廣概括能力,特別適用于求解內(nèi)部機制復(fù)雜的問題,對于火炮身管內(nèi)膛燒蝕磨損機制復(fù)雜的這類問題十分適用。然而,在BP神經(jīng)網(wǎng)絡(luò)實際應(yīng)用中,由于是按誤差函數(shù)的負梯度方向?qū)?quán)值進行調(diào)整的,其優(yōu)化計算經(jīng)常容易陷入局部極小值中;此外,BP網(wǎng)絡(luò)采用迭代更新的方式確定權(quán)值,需要一個初始權(quán)值和閾值,初始值的選取對于BP神經(jīng)網(wǎng)絡(luò)十分重要,初始值的過大過小都會對性能產(chǎn)生很大的影響,這就需要與其他人工智能算法結(jié)合才可有效改善算法性能[5]。
遺傳算法(GA)是一種通過模擬自然界生物進化過程來搜索最優(yōu)解的方法[6]。按照所確定的適應(yīng)度函數(shù),采用selection、crossover、mutation 3個主要的遺傳算子對種群中的個體進行操作,通過在個體間不斷交換染色體信息,使種群得以進化,最終使適應(yīng)值好的個體得以保留,而適應(yīng)值差的個體則在進化過程中被逐漸淘汰,種群中的個體經(jīng)過不斷進化,逐步逼近最優(yōu)解,并且由于遺傳算法既不關(guān)注設(shè)計變量與目標函數(shù)之間的數(shù)學(xué)關(guān)系,也不需要目標函數(shù)梯度等信息來確定搜索方向,故很適合用來對參數(shù)進行優(yōu)化[7]。充分利用GA算法全局搜索的特性實現(xiàn)對種群的優(yōu)化功能,將適應(yīng)度函數(shù)最高的個體保留,以該個體對應(yīng)的權(quán)值和閾值作為BP神經(jīng)網(wǎng)絡(luò)的初始值,從而達到優(yōu)化網(wǎng)絡(luò)模型的目的,這克服了BP網(wǎng)絡(luò)對初始值的依賴,有效提高了網(wǎng)絡(luò)性能和收斂速度。算法流程如圖1所示。
由于火炮身管內(nèi)部的燒蝕磨損作用機制復(fù)雜,各種因素交叉影響,并且目前火炮身管均采用鍍鉻技術(shù)進行保護,鍍層的剝落存在很強的隨機性,要建立準確的數(shù)學(xué)模型是很困難的,也是不現(xiàn)實的。采用BP神經(jīng)網(wǎng)絡(luò)建立火炮身管燒蝕磨損量的預(yù)測模型,根據(jù)實驗測量數(shù)據(jù)對模型進行訓(xùn)練,利用GA算法對網(wǎng)絡(luò)進行優(yōu)化,能夠顯著提高BP算法性能和預(yù)測模型精度,因此,筆者提出基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)來建立身管燒蝕磨損量的預(yù)測模型。
以不同彈種射彈數(shù)作為BP網(wǎng)絡(luò)的輸入,身管燒蝕磨損量作為網(wǎng)絡(luò)輸出,建立基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)身管磨損量預(yù)測模型,利用表1中實驗測量得到的坦克炮身管磨損量和射彈數(shù)目的數(shù)據(jù)對網(wǎng)絡(luò)展開訓(xùn)練,并對網(wǎng)絡(luò)性能進行測試。模型的建立主要分為BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的確定、遺傳算法優(yōu)化、網(wǎng)絡(luò)訓(xùn)練和網(wǎng)絡(luò)仿真4個方面。
研究表明3層BP神經(jīng)網(wǎng)絡(luò)能夠用相應(yīng)的輸入向量和輸出向量逼近任何有理函數(shù)[8],因此,選用3層神經(jīng)網(wǎng)絡(luò)來構(gòu)建身管磨損量的預(yù)測模型,分別為輸入層、隱含層和輸出層。一般地,要進一步提高網(wǎng)絡(luò)性能,降低誤差,可以選擇適當增加隱含層數(shù),但這會使得網(wǎng)絡(luò)結(jié)構(gòu)趨于復(fù)雜化,運行速度減慢,因此,遵循一般網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計準則:優(yōu)先考慮增加隱含層中的神經(jīng)元數(shù),可以達到與采用多層隱含層相同的目的,還可更容易地觀察訓(xùn)練結(jié)果。
圖2中,m1、m2、m3是指坦克炮常用的3個彈種穿甲彈、破甲彈和榴彈的射彈數(shù)目,IW和LW代表各層之間的連接權(quán)值。
在對神經(jīng)網(wǎng)絡(luò)展開訓(xùn)練之前,首先引入GA算法對BP網(wǎng)絡(luò)初始值進行優(yōu)化,設(shè)定參數(shù):種群規(guī)模為50,進化代數(shù)為100,交叉概率為0.6,變異概率為0.05.具體優(yōu)化過程如下:
1)初始值編碼。采用實數(shù)編碼方式對網(wǎng)絡(luò)權(quán)值和閾值進行編碼,編碼長度由各層所含神經(jīng)元的個數(shù)決定。設(shè)置的BP神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)為3-6-1,則共有3×6+6×1=24個權(quán)值,6+1=7個閾值,所以遺傳算法個體編碼長度為31.
2)種群初始化。選擇的種群規(guī)模為50.
3)計算適應(yīng)度函數(shù)。針對BP神經(jīng)網(wǎng)絡(luò),期望值和網(wǎng)絡(luò)輸出值的誤差越小,表示染色體越優(yōu)[9],因此,以種群中所有個體與對應(yīng)的目標樣本的誤差平方和作為染色體的適應(yīng)值E,計算公式為
(1)
式中:N代表樣本數(shù)量;T為期望值;Y為模型輸出值。最后計算個體的適應(yīng)度值Efit=1/E.
4)數(shù)據(jù)歸一化。在進行遺傳操作和神經(jīng)網(wǎng)絡(luò)建模訓(xùn)練前需要完成對表1中數(shù)據(jù)的歸一化處理,目的是將所有數(shù)據(jù)都轉(zhuǎn)化為[0,1]之間的數(shù),方便數(shù)據(jù)的操作處理,使其更適合于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,并可保證程序在運行時收斂加快,增加網(wǎng)絡(luò)的預(yù)測精度,減少預(yù)測誤差[10]。歸一化處理公式為
(2)
式中:x*和x分別為歸一處理后和處理前的數(shù)據(jù);xmax和xmin分別為樣本數(shù)據(jù)的最大值和最小值。
5)使用MATLAB的GA工具箱進行優(yōu)化操作,獲得種群最優(yōu)個體后,對個體的最優(yōu)解進行解碼操作,得到BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,達到優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的目的。
圖3為求解過程中的適應(yīng)度函數(shù)變化曲線,其中,虛線為平均最優(yōu)適應(yīng)度變化曲線,實線為個體適應(yīng)度變化曲線。從圖3中可以看出適應(yīng)度函數(shù)曲線在開始過程中增長很快,在40代遺傳操作后逐漸趨于平緩;到大約60代以后,進化過程中種群的平均適應(yīng)度與個體適應(yīng)度基本達到最大值,且在曲線上有相互趨同的形態(tài),沒有振蕩現(xiàn)象發(fā)生,表示算法收斂進行的很順利;同時,種群中的適應(yīng)度函數(shù)變化曲線趨同后,連續(xù)若干代沒有發(fā)生進化,表明種群已經(jīng)成熟[11],直到最大進化代數(shù)100次時算法停止。
采用GA算法完成BP神經(jīng)網(wǎng)絡(luò)的優(yōu)化,賦給網(wǎng)絡(luò)初始值之后,就可以開始對網(wǎng)絡(luò)進行訓(xùn)練。在訓(xùn)練之前需要設(shè)定BP網(wǎng)絡(luò)參數(shù),采用附加動量法對網(wǎng)絡(luò)展開訓(xùn)練,最大訓(xùn)練次數(shù)設(shè)定為1 000次,學(xué)習(xí)率為0.5,期望誤差設(shè)定為0.000 1,附加動量因子為0.8,其中,用trainlm函數(shù)(Levenberg-Marquardt訓(xùn)練規(guī)則)進行訓(xùn)練。根據(jù)采集的22組數(shù)據(jù),選用第1~17組樣本作為訓(xùn)練數(shù)據(jù),第18~22組樣本作為檢驗數(shù)據(jù)[12]。
網(wǎng)絡(luò)訓(xùn)練過程如圖4所示。網(wǎng)絡(luò)經(jīng)過53次訓(xùn)練,收斂到要求精度0.000 1,此時,已獲得訓(xùn)練成功的BP神經(jīng)網(wǎng)絡(luò),表明該BP網(wǎng)絡(luò)已具備預(yù)測能力。
利用神經(jīng)網(wǎng)絡(luò)工具箱中的sim函數(shù)對訓(xùn)練好的BP網(wǎng)絡(luò)進行仿真。圖5為BP神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果。
圖6為GA-BP神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果。經(jīng)過與圖5的對比,從圖中可以直觀地發(fā)現(xiàn),兩種方法預(yù)測值與期望值的變化趨勢完全一致,預(yù)測值和期望值都非常接近,但加入GA算法優(yōu)化后的網(wǎng)絡(luò)預(yù)測精度更高,擬合程度更好。
考慮到與同類BP算法進行對比,結(jié)果說服力不強,引入GM(1,1)灰色預(yù)測模型對身管燒蝕磨損量進行預(yù)測,預(yù)測結(jié)果如圖7所示。
表2為3種預(yù)測模型的精度對比。
表2 3種模型預(yù)測精度對比
可見,3種預(yù)測模型中,采用BP神經(jīng)網(wǎng)絡(luò)的預(yù)測模型的平均相對誤差均小于GM(1,1)灰色預(yù)測模型,而采用GA算法優(yōu)化后的模型預(yù)測精度比兩者都高,得到的身管燒蝕磨損情況與事實情況相吻合,檢驗樣本平均吻合度高達98.6%,相比GM(1,1)和BP模型,檢驗樣本的平均相對誤差分別減少了0.658%和0.544%,反映了加入遺傳算法優(yōu)化后網(wǎng)絡(luò)模型的優(yōu)越性,從而證明了算法的可行性和建模的準確性,預(yù)測結(jié)果可在實際應(yīng)用中發(fā)揮重要作用。但表2中編號為18的樣本加入遺傳算法優(yōu)化后的預(yù)測精度小于未優(yōu)化的BP算法,主要原因在于BP算法的本身,它的計算過程是一種軟計算,包含一定程度上的隨機性,因此,出現(xiàn)這種情況是正常的。從整體的檢驗結(jié)果來看,還是優(yōu)化后的預(yù)測精度高度優(yōu)化前的預(yù)測精度。
利用表1中火炮全壽命周期內(nèi)身管燒蝕磨損量與射彈數(shù)之間的對應(yīng)數(shù)據(jù)進行建模預(yù)測,得到的結(jié)果適合火炮身管全壽命周期內(nèi)燒蝕磨損的各個階段,相比同類的其他算法都更具有優(yōu)勢;并且與實驗測量數(shù)據(jù)的擬合程度較高,預(yù)測精度在允許的誤差范圍內(nèi),能更全面地反映火炮身管燒蝕磨損的變化趨勢及一般規(guī)律[1]。
BP神經(jīng)網(wǎng)絡(luò)中各層之間的連接權(quán)值大小代表著輸入變量對輸出變量的影響程度,根據(jù)建立的身管燒蝕磨損量預(yù)測模型,可得到BP網(wǎng)絡(luò)的權(quán)值和閾值矩陣,根據(jù)網(wǎng)絡(luò)中各層之間的連接關(guān)系,可計算得出不同彈種對身管燒蝕磨損的影響程度,可為身管磨損計算提供參考方法。
通過對身管內(nèi)膛燒蝕磨損量進行測量,分析燒蝕磨損的一般規(guī)律,引入GA算法,建立GA-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型,降低了預(yù)測值的相對誤差,預(yù)測精度與實測數(shù)據(jù)的平均擬合度達98.6%,這表明GA-BP網(wǎng)絡(luò)能夠準確描述身管內(nèi)膛磨損量與不同彈種射彈數(shù)目之間復(fù)雜的非線性關(guān)系,從而驗證了算法的可行性以及模型的實用性?;鹋谏砉軣g磨損量GA-BP預(yù)測模型的建立能有效預(yù)測磨損量的變化情況,避免了實驗測量儀器操作時的不便性,節(jié)省了大量人力物力資源;同時,利用預(yù)測模型能自動完成燒蝕磨損量的預(yù)測,可為身管壽命估算提供參考;并且通過燒蝕磨損火炮的內(nèi)彈道方程組可對內(nèi)彈道性能的變化情況進行求解,并在射擊時予以修正,對于提高火炮首發(fā)命中率具有重要意義。