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