何新佳,馬中亮,代淑蘭
(中北大學(xué) 環(huán)境與安全工程學(xué)院,山西 太原 030051)
火炮設(shè)計(jì)需要以內(nèi)彈道計(jì)算為基礎(chǔ),在內(nèi)彈道計(jì)算中,火藥裝填條件或膛內(nèi)構(gòu)造諸元的改變都會(huì)使內(nèi)彈道的計(jì)算結(jié)果大不相同[1]。裝填條件中只有裝藥量和火藥弧厚等少部分參數(shù)能得到較精確的值,而大多數(shù)參數(shù)值都是一個(gè)范圍,不易得到較精確的值,例如燃速系數(shù)和燃速指數(shù)等,其值大多通過密閉爆發(fā)器實(shí)驗(yàn)得到。然而密閉爆發(fā)器和火炮膛內(nèi)的實(shí)際情況不一樣,因此需要對(duì)燃速系數(shù)和燃速指數(shù)進(jìn)行修正,以往大多靠經(jīng)驗(yàn)求得,缺乏一定的合理性。尤其是對(duì)于一些用來進(jìn)行科學(xué)研究的新型發(fā)射藥,其配方復(fù)雜,加入的一些氧化劑等勢(shì)必會(huì)對(duì)發(fā)射藥的內(nèi)部結(jié)構(gòu)產(chǎn)生影響,導(dǎo)致燃速系數(shù)值和燃速指數(shù)值發(fā)生較大的改變,這時(shí)僅憑經(jīng)驗(yàn)修正費(fèi)時(shí)費(fèi)力,因此需要采用一些合理的優(yōu)化方法來對(duì)這些參數(shù)進(jìn)行修正,以達(dá)到提高內(nèi)彈道模型的精度和預(yù)示性的目的[2-3]。
近年來,各種優(yōu)化算法不斷涌現(xiàn),如模擬退火算法、遺傳算法、粒子群算法等,這些方法具有良好的全局性、魯棒性強(qiáng)以及收斂速度較快的特點(diǎn),均得到了廣泛地應(yīng)用。相比上述算法,人工魚群算法對(duì)初值的要求不高,隨機(jī)產(chǎn)生或者固定為常數(shù)值均可,且全局尋優(yōu)能力強(qiáng),能夠快速跳出局部最優(yōu)解,因此該算法在優(yōu)化設(shè)計(jì)方面得到了廣泛應(yīng)用。冷杉等[4]將人工魚群算法結(jié)合粒子群算法應(yīng)用到彈道優(yōu)化中,設(shè)計(jì)得出了導(dǎo)彈滑翔段的優(yōu)化彈道。李曉蘇等[5]將人工魚群算法應(yīng)用到運(yùn)載火箭上升段的彈道優(yōu)化設(shè)計(jì)中,結(jié)果表明了魚群算法能有效求解多級(jí)固體火箭上升段的彈道優(yōu)化問題。基于此,筆者以100 mm加農(nóng)炮內(nèi)彈道數(shù)學(xué)模型為算例,采用人工魚群算法對(duì)內(nèi)彈道參數(shù)進(jìn)行優(yōu)化。
100 mm加農(nóng)炮采用的發(fā)射藥是單一的管狀藥,因此不需要考慮發(fā)射藥的燃燒分裂點(diǎn)問題。在經(jīng)過一系列簡化假設(shè)的基礎(chǔ)上,100 mm加農(nóng)炮經(jīng)典內(nèi)彈道方程組可以寫為
(1)
式中:lψ=l0[1-Δ(1-ψ)/ρp-αΔψ],l0為藥室容積縮徑長,l0=V0/S,V0為藥室容積;Δ=ω/V0;Ik為壓力全沖量,Ik=e1/u1;θ=k-1;Z為火藥燃去的相對(duì)厚度;p為加農(nóng)炮膛內(nèi)壓力;l為彈丸的行程;ω為發(fā)射藥裝藥量;m為彈丸質(zhì)量;φ為次要功計(jì)算系數(shù);α為火藥氣體余容;ρ為發(fā)射藥固體顆粒的密度;χ,λ,μ為火藥的形狀特征量;k為火藥氣體絕熱指數(shù);f為火藥力;u1為發(fā)射藥的燃速系數(shù);e1為管狀發(fā)射藥弧厚的一半;n為燃速指數(shù);S為炮膛橫截面面積;lψ為藥室的自由容積縮徑長。
內(nèi)彈道數(shù)學(xué)模型描述了系統(tǒng)的已知量和未知量的關(guān)系,用數(shù)學(xué)方程的形式給出了裝填條件和火炮構(gòu)造諸元與內(nèi)彈道性能的關(guān)系。對(duì)內(nèi)彈道參數(shù)進(jìn)行優(yōu)化時(shí),需要在滿足內(nèi)彈道性能指標(biāo)的條件下,找到優(yōu)化目標(biāo)函數(shù)的裝填條件和火炮構(gòu)造諸元[1]。
內(nèi)彈道參數(shù)優(yōu)化時(shí),對(duì)內(nèi)彈道計(jì)算結(jié)果影響較大的有燃速系數(shù)、燃速指數(shù)、裝填密度、相對(duì)裝藥量和絕熱指數(shù)等。由于燃速系數(shù)和燃速指數(shù)相比火藥弧厚、相對(duì)裝藥量等其他參數(shù)更加難以得到較精確的值,因此以火藥的燃速系數(shù)u1和燃速指數(shù)n作為需要優(yōu)化的參數(shù)。
約束條件是對(duì)內(nèi)彈道參數(shù)優(yōu)化時(shí)參數(shù)取值的限制,或是對(duì)參數(shù)本身提出的限制條件。參考文獻(xiàn)[1]確定火藥燃速系數(shù)u1的取值范圍為:8.3×10-10m/(s·Pan)≤u1≤9.0×10-10m/(s·Pan),燃速指數(shù)的取值范圍為:0.92≤n≤1.0。
目標(biāo)函數(shù)是用來評(píng)價(jià)設(shè)計(jì)目標(biāo)優(yōu)劣的數(shù)學(xué)關(guān)系式,目標(biāo)函數(shù)應(yīng)是設(shè)計(jì)變量的函數(shù)。由加農(nóng)炮內(nèi)彈道數(shù)學(xué)模型可知,內(nèi)彈道參數(shù)(如裝藥量,火藥弧厚和燃速系數(shù)等)與內(nèi)彈道計(jì)算結(jié)果(如膛壓和初速等)呈隱式非線性關(guān)系,如果改變內(nèi)彈道參數(shù),內(nèi)彈道計(jì)算結(jié)果也會(huì)隨之改變。為了使內(nèi)彈道計(jì)算結(jié)果與靶場(chǎng)試驗(yàn)結(jié)果盡量一致,以最大膛壓、初速的計(jì)算值與靶場(chǎng)試驗(yàn)值的平均相對(duì)誤差e為目標(biāo)函數(shù),其計(jì)算公式為
(2)
式中:p,vg為仿真值;psid,vg,sid為靶場(chǎng)試驗(yàn)值。
為了評(píng)價(jià)每次迭代后變量的優(yōu)劣程度,且算法在接近收斂時(shí),目標(biāo)函數(shù)取值很小,繼續(xù)優(yōu)化的潛能降低,導(dǎo)致可能獲得某個(gè)局部最優(yōu)解,因此為了解決上述問題,需要建立適應(yīng)度函數(shù),其計(jì)算公式為
fFit=1/(1+e),
(3)
式中:fFit為適應(yīng)度值;e為上述的平均相對(duì)誤差。
為了使結(jié)果得到更好的精度,且盡量減少程序運(yùn)行時(shí)間,因此在算法進(jìn)行過程中,當(dāng)fFit取值為0.999~1時(shí),該算法就被認(rèn)為終止。
人工魚群算法是一種基于模擬魚群行為的優(yōu)化算法。在一片水域中,魚群生存數(shù)目最多的地方就是該水域營養(yǎng)物質(zhì)最豐富的地方,根據(jù)這一特點(diǎn)來模仿人工魚群的覓食行為,進(jìn)而實(shí)現(xiàn)全局尋優(yōu),這就是人工魚群算法的基本思想[6-7]。
設(shè)人工魚當(dāng)前狀態(tài)為Xi,人工魚Xi在視野內(nèi)隨機(jī)選擇一個(gè)狀態(tài)Xj,分別計(jì)算人工魚適應(yīng)度值并進(jìn)行比較,如果發(fā)現(xiàn)Yj比Yi優(yōu)(Yj和Yi分別為Xj和Xi的適應(yīng)度值),則Xi向Xj移動(dòng)一步:
Xj=Xi+RrandVs,
(4)
否則,人工魚Xi繼續(xù)在其視野范圍內(nèi)選擇下一個(gè)狀態(tài)Xnext:
(5)
反復(fù)嘗試Tr次后,若仍沒有滿足前進(jìn)條件,則人工魚Xi隨機(jī)繼續(xù)向前移動(dòng)一步:
Xnext=Xi+RrandSt,
(6)
式中:Rnext為0到1之間的隨機(jī)數(shù);St為移動(dòng)步長。
如圖1,假設(shè)一條虛擬人工魚當(dāng)前位置為X,Vs為人工魚的視野范圍,位置Xv為人工魚Xi在某時(shí)刻的視點(diǎn)所在位置。若此時(shí)該位置食物濃度高于當(dāng)前位置,則人工魚向前移動(dòng)一步,到達(dá)Xnext,否則人工魚X繼續(xù)尋求視野內(nèi)的其他位置,判斷是否滿足前進(jìn)條件[8-12]。若嘗試Tr次后仍沒有找到滿足前進(jìn)的條件,則按式(6)繼續(xù)執(zhí)行下一步。
人工魚搜索視野范圍內(nèi)的魚群數(shù)目nf及中心位置Xc,若Yc/nf<δYi,表明伙伴中心位置不太擁擠且該位置狀態(tài)較優(yōu),則人工魚Xi朝伙伴中心位置移動(dòng)一步,否則執(zhí)行覓食行為,其中δ為擁擠度因子。聚群行為可以促進(jìn)陷于局部最優(yōu)解的人工魚群向全局最優(yōu)解的人工魚方向聚集,從而跳出局部最優(yōu)解。
人工魚Xi搜索其視野內(nèi)適應(yīng)度最高的個(gè)體Xj,其適應(yīng)度值為Yj,并探索人工魚Xj視野范圍內(nèi)伙伴數(shù)目nf,若Yj/nf<δYi,則表明Xj狀態(tài)較優(yōu),且不太擁擠,Xi向Xj前進(jìn)一步,否則執(zhí)行覓食行為。
隨機(jī)行為指人工魚Xi可以在其視野范圍內(nèi)隨機(jī)移動(dòng),且會(huì)向食物較多的方向快速移動(dòng):
Xnext=Xi+VsRrand.
(7)
隨機(jī)行為可以讓人工魚個(gè)體更好地跳出局部最優(yōu)解。
人工魚群算法在運(yùn)行過程中,人工魚會(huì)同時(shí)隨機(jī)的進(jìn)行聚群行為和追尾行為,若發(fā)現(xiàn)聚群對(duì)象和追尾對(duì)象周圍擁擠度過大時(shí),人工魚就會(huì)選擇覓食行為,若人工魚在覓食行為中沒有發(fā)現(xiàn)比自身適應(yīng)度更高的個(gè)體,則按步長隨機(jī)移動(dòng)一步,最后對(duì)聚群行為和追尾行為得到的適應(yīng)度值進(jìn)行比較[13-16]。為了使加農(nóng)炮內(nèi)彈道計(jì)算結(jié)果與測(cè)試結(jié)果的相對(duì)誤差盡可能小,因此在本文中選擇適應(yīng)度值較大的人工魚作為下一代的個(gè)體。
利用魚群算法優(yōu)化加農(nóng)炮內(nèi)彈道參數(shù)時(shí),當(dāng)要計(jì)算人工魚個(gè)體適應(yīng)度時(shí),需調(diào)用內(nèi)彈道方程組的求解程序,算出一系列約束條件范圍內(nèi)的燃速系數(shù)u1的值和燃速指數(shù)n的值,再代入人工魚群算法的程序中計(jì)算出目標(biāo)函數(shù)值,最后根據(jù)上述的轉(zhuǎn)換關(guān)系式得到適應(yīng)度值。這里人工魚的個(gè)體代表需要優(yōu)化的加農(nóng)炮內(nèi)彈道參數(shù)值,即燃速系數(shù)u1和燃速指數(shù)n的值。加農(nóng)炮內(nèi)彈道參數(shù)優(yōu)化的流程圖如圖2所示,其中N為迭代次數(shù),Nmax為最大迭代次數(shù)。
選用以100 mm加農(nóng)炮內(nèi)彈道的設(shè)計(jì)參數(shù)為初始參數(shù),火炮所用的發(fā)射藥為單一管狀藥。100 mm加農(nóng)炮的初始參數(shù)如表1、2所示[1,17]。
表1 裝填條件參數(shù)
表2 計(jì)算條件參數(shù)
為了達(dá)到精度要求,且盡量加快算法的收斂速度,取人工魚個(gè)體數(shù)目N為100,算法迭代次數(shù)為50次,人工魚視野Vs為1,擁擠度因子δ為0.618,人工魚前進(jìn)步長為0.5,人工魚嘗試次數(shù)Ntry為15次[18-20],計(jì)算得到的目標(biāo)函數(shù)值要求不大于0.001,此精度在工程實(shí)際中已滿足要求。在算法進(jìn)行過程中,當(dāng)連續(xù)多次所得的適應(yīng)度值在0.999~1之間時(shí),算法終止。仿真計(jì)算得到的適應(yīng)度值隨迭代次數(shù)的變化關(guān)系圖如圖3所示。由圖中的變化曲線可知,當(dāng)算法進(jìn)行到第36次時(shí),適應(yīng)度值已在0.999~1之間,其值為0.999 09,該適應(yīng)度對(duì)應(yīng)的目標(biāo)函數(shù)值的誤差已經(jīng)小于0.001,完全滿足工程實(shí)際的要求。
為了更好地說明內(nèi)彈道優(yōu)化參數(shù)的變化情況,得到的燃速系數(shù)和燃速指數(shù)隨迭代次數(shù)的曲線變化圖,分別如圖4、5所示。
從圖4、5中可以看出,在迭代進(jìn)行到第36次時(shí),達(dá)到了所要求的精度,且燃速系數(shù)和燃速指數(shù)隨迭代次數(shù)的變化情況與適應(yīng)度值隨迭代次數(shù)的變化情況完全相符。此時(shí)對(duì)應(yīng)的燃速系數(shù)和燃速指數(shù)的值分別為
u1=8.602 0×10-10m/(s·Pan),n=0.971 3。
此時(shí)仿真得到的最大膛壓值與初速值如表3所示。由表3可知,仿真得到的最大膛壓和初速的相對(duì)誤差均低于0.1%,與靶場(chǎng)射擊試驗(yàn)結(jié)果符合得很好。
表3 最大膛壓值與初速值
為了驗(yàn)證魚群算法的可行性及實(shí)用性,將優(yōu)化后的參數(shù)代入到加農(nóng)炮內(nèi)彈道數(shù)學(xué)模型,由于內(nèi)彈道微分方程組只能運(yùn)用數(shù)值計(jì)算的方法進(jìn)行求解,因此選用四階龍格-庫塔法進(jìn)行數(shù)值求解,并與參數(shù)優(yōu)化前計(jì)算得到的結(jié)果進(jìn)行比較,其膛內(nèi)壓力和彈丸速度隨時(shí)間的變化曲線如圖6、7所示。膛內(nèi)壓力和彈丸速度隨彈丸行程的變化曲線如圖8、9所示。
從圖6~9中可以看出膛內(nèi)最大壓力值和炮口初速值在內(nèi)彈道參數(shù)優(yōu)化前后都有明顯的變化,體現(xiàn)出燃速系數(shù)和燃速指數(shù)對(duì)內(nèi)彈道性能影響較大的特點(diǎn)。
加農(nóng)炮內(nèi)彈道參數(shù)優(yōu)化前后得到的最大壓力與炮口初速如表4所示。從表中的參數(shù)優(yōu)化前后結(jié)果看,優(yōu)化后炮口初速的計(jì)算值與試驗(yàn)值的相對(duì)誤差僅為0.017%,相比優(yōu)化前,已經(jīng)具有很高的精度。優(yōu)化后的計(jì)算結(jié)果與靶場(chǎng)射擊試驗(yàn)結(jié)果吻合得很好,該對(duì)比結(jié)果進(jìn)一步證明人工魚群算法應(yīng)用到加農(nóng)炮內(nèi)彈道參數(shù)優(yōu)化中的適用性。
表4 加農(nóng)炮內(nèi)彈道參數(shù)優(yōu)化結(jié)果
筆者采用加農(nóng)炮經(jīng)典內(nèi)彈道數(shù)學(xué)模型,利用人工魚群算法對(duì)加農(nóng)炮內(nèi)彈道參數(shù)進(jìn)行優(yōu)化研究,該算法在迭代次數(shù)為36次時(shí)就已經(jīng)達(dá)到所需的精度,體現(xiàn)了人工魚群算法收斂速度較快的特點(diǎn)。計(jì)算得到的最大膛壓相對(duì)誤差以及初速相對(duì)誤差均小于0.1%,滿足工程實(shí)際要求。將優(yōu)化后的參數(shù)代入到加農(nóng)炮內(nèi)彈道數(shù)學(xué)模型中進(jìn)行內(nèi)彈道計(jì)算,其最大膛壓和初速的計(jì)算結(jié)果與靶場(chǎng)射擊試驗(yàn)結(jié)果的相對(duì)誤差均不超過0.1%,吻合得很好,顯示了人工魚群算法在內(nèi)彈道參數(shù)優(yōu)化中的可行性以及適用性。該算法對(duì)火炮的裝藥設(shè)計(jì)及改進(jìn)火炮內(nèi)彈道性能等具有重要指導(dǎo)意義。