馬亞磊,付亮,蔡遠(yuǎn)利
(西安交通大學(xué)控制工程研究所,陜西西安710049)
為了提高對(duì)高速、大機(jī)動(dòng)再入目標(biāo)及其他現(xiàn)代空襲武器的攔截概率,攔截彈必須具備足夠強(qiáng)的機(jī)動(dòng)能力和靈活性[1]。傳統(tǒng)的氣動(dòng)舵控制方式在高空中受攔截彈舵機(jī)、飛行速度及環(huán)境的影響,攔截彈的響應(yīng)速度、法向過載均不能滿足要求,導(dǎo)致攔截精度受到影響。近年來,對(duì)末端制導(dǎo)精度有更高要求的直接碰撞殺傷技術(shù)[2-3]得到了廣泛的應(yīng)用,采用該技術(shù)的新一代攔截彈通過引入直接側(cè)向力控制,增大可用法向過載、縮短過載響應(yīng)時(shí)間,提高了高空攔截的制導(dǎo)精度。常見的直接力控制形式是在彈體質(zhì)心處或彈體前端安裝脈沖發(fā)動(dòng)機(jī)陣列,通過點(diǎn)火在俯仰或偏航方向上產(chǎn)生脈沖推力,使導(dǎo)彈的軌跡或者姿態(tài)發(fā)生變化。但考慮到脈沖發(fā)動(dòng)機(jī)數(shù)量有限,小噴管噴完一次后無法繼續(xù)使用,不可能在整個(gè)末制導(dǎo)段持續(xù)開啟。因此,研究有效的脈沖發(fā)動(dòng)機(jī)點(diǎn)火控制方法,使其達(dá)到最優(yōu)組合點(diǎn)火狀態(tài)具有重要理論意義和工程應(yīng)用價(jià)值。
近年來,部分學(xué)者對(duì)姿控脈沖發(fā)動(dòng)機(jī)的點(diǎn)火邏輯控制問題開展了若干研究。文獻(xiàn)[4]基于矢量分解的原則,結(jié)合噴管周向原則和徑向原則對(duì)點(diǎn)火發(fā)動(dòng)機(jī)進(jìn)行選擇,但沒有進(jìn)行必要的優(yōu)化。文獻(xiàn)[5]將姿控發(fā)動(dòng)機(jī)的點(diǎn)火問題轉(zhuǎn)化為0-1規(guī)劃問題,利用貪心算法進(jìn)行求解,但只能獲得局部最優(yōu)解。文獻(xiàn)[6]應(yīng)用離線遺傳算法對(duì)脈沖推力器的開啟數(shù)量及位置進(jìn)行優(yōu)化,以減小對(duì)控制指令的跟蹤誤差,但其要求的離線表較難設(shè)計(jì)。
1998年,Joslin等[7]在基于光纖電纜生產(chǎn)中調(diào)度問題和著色問題試驗(yàn)的基礎(chǔ)上,提出了吱呀輪優(yōu)化(Squeaky-Wheel Optimization,SWO)算法,但沒有引起應(yīng)有的重視。該算法是一種大鄰域空間的啟發(fā)式搜索算法,不同于直接在解空間搜索的傳統(tǒng)算法,該方法在兩個(gè)空間進(jìn)行操作,通過調(diào)整優(yōu)先級(jí)改變待搜索空間引導(dǎo)算法迅速跳出無效搜索區(qū)域,從而快速地取得滿意的解,尤其適用于實(shí)時(shí)性要求較高的優(yōu)化問題。
本文以姿控式直接力/氣動(dòng)力復(fù)合控制攔截彈為對(duì)象,采用SWO算法對(duì)姿控發(fā)動(dòng)機(jī)組的點(diǎn)火邏輯優(yōu)化問題進(jìn)行了研究。在分析脈沖發(fā)動(dòng)機(jī)數(shù)學(xué)模型和點(diǎn)火控制約束條件的基礎(chǔ)上,提出了基于SWO的點(diǎn)火控制算法,并與貪心算法和遺傳算法進(jìn)行仿真比較,驗(yàn)證了本文算法的有效性和可行性。
本文以PAC-3攔截彈為對(duì)象進(jìn)行分析建模,彈體前部有10圈脈沖發(fā)動(dòng)機(jī),每圈等角度分配18個(gè),相鄰圈采用交錯(cuò)排列的方式。第一圈脈沖推力發(fā)動(dòng)機(jī)到彈體質(zhì)心的距離為L,相鄰圈的距離為d,在彈體上的布局如圖1所示。由于脈沖發(fā)動(dòng)機(jī)燃料質(zhì)量很小,設(shè)計(jì)中假設(shè)開啟脈沖發(fā)動(dòng)機(jī)不會(huì)引起導(dǎo)彈質(zhì)心位置的顯著改變。
圖1 脈沖發(fā)動(dòng)機(jī)空間布局Fig.1 Layout of pulse engine
直接力系統(tǒng)的每個(gè)脈沖發(fā)動(dòng)機(jī)噴射一次后不能再次使用,所產(chǎn)生的推力以脈沖力的形式作用在攔截彈上,大小固定,方向垂直于彈體坐標(biāo)系下的x軸,通過產(chǎn)生的力矩對(duì)攔截彈姿態(tài)進(jìn)行調(diào)整和控制。脈沖發(fā)動(dòng)機(jī)工作方式如圖2所示,每個(gè)發(fā)動(dòng)機(jī)平均噴流力大小為T,平均工作時(shí)間為τ。為了防止連續(xù)工作的不同發(fā)動(dòng)機(jī)之間產(chǎn)生對(duì)噴現(xiàn)象,兩次脈沖噴力間設(shè)有一定的時(shí)間間隔Δτ。
圖2 脈沖發(fā)動(dòng)機(jī)工作方式Fig.2 Working style of pulse engine
由于脈沖發(fā)動(dòng)機(jī)相鄰圈互相交錯(cuò)排列,因此設(shè)定脈沖發(fā)動(dòng)機(jī)按照5×36的方式排列。從彈尾沿彈體坐標(biāo)系x軸將所有層上的發(fā)動(dòng)機(jī)投影到一個(gè)圓周上,得到一個(gè)投影圓。將此圓從參考基準(zhǔn)開始順時(shí)針沿環(huán)向編號(hào)分別為0,1,2,…,M,其中 M=35。參考基準(zhǔn)為彈體坐標(biāo)系中的y軸,并隨彈體旋轉(zhuǎn)而改變。發(fā)動(dòng)機(jī)在縱向平面內(nèi)的環(huán)向投影如圖3所示。每一列脈沖發(fā)動(dòng)機(jī)與y軸的角度為:
式中:“%”表示浮點(diǎn)型取余。
圖3 發(fā)動(dòng)機(jī)縱向平面投影Fig.3 Longitudinal plane projection of engine
考慮到導(dǎo)彈旋轉(zhuǎn)和點(diǎn)火指令延遲時(shí)間,第j 列發(fā)動(dòng)機(jī)對(duì)應(yīng)的實(shí)際點(diǎn)火角度θact為:
式中:θd為脈沖發(fā)動(dòng)機(jī)工作過程中彈體旋轉(zhuǎn)的平均角度;θt為點(diǎn)火指令延時(shí)時(shí)間t內(nèi)彈體旋轉(zhuǎn)的角度。
脈沖發(fā)動(dòng)機(jī)的狀態(tài)可用5×36的二維數(shù)組表示,設(shè)定1表示未點(diǎn)火狀態(tài),0表示正在點(diǎn)火狀態(tài),-1表示點(diǎn)火完成。由式(2)可知,點(diǎn)火發(fā)動(dòng)機(jī)在y軸和z軸方向上的噴流合力分別為:
由于姿控發(fā)動(dòng)機(jī)數(shù)目有限,且一次性使用,一次點(diǎn)火發(fā)動(dòng)機(jī)數(shù)目過多可能會(huì)引起導(dǎo)彈質(zhì)心的快速漂移等問題[8],需要對(duì)點(diǎn)火邏輯進(jìn)行約束以保證姿控發(fā)動(dòng)機(jī)的使用效率及攔截彈的控制精度。其主要約束如下:
(1)多個(gè)姿控脈沖發(fā)動(dòng)機(jī)同時(shí)點(diǎn)火會(huì)引起側(cè)向噴流干擾效應(yīng),同時(shí)點(diǎn)火的脈沖發(fā)動(dòng)機(jī)數(shù)量不宜過多,本文設(shè)定最多允許10個(gè)脈沖發(fā)動(dòng)機(jī)同時(shí)工作;
(2)點(diǎn)火控制算法應(yīng)滿足能夠在短時(shí)間內(nèi)快速尋找到脈沖發(fā)動(dòng)機(jī)組合并給出點(diǎn)火指令,即必須滿足快速性要求;
(3)姿控發(fā)動(dòng)機(jī)數(shù)量是一定的,只有在攔截彈末端雷達(dá)導(dǎo)引頭捕獲到目標(biāo)時(shí),即彈-目距離小于R時(shí),姿控發(fā)動(dòng)機(jī)與氣動(dòng)舵開始協(xié)同工作;
(4)脈沖發(fā)動(dòng)機(jī)與氣動(dòng)舵產(chǎn)生的法向過載不能大于彈體的最大可用過載;
(5)當(dāng)法向過載指令誤差大于一定閾值時(shí),脈沖發(fā)動(dòng)機(jī)允許點(diǎn)火,即為縱向過載誤差指令為橫向過載誤差指令。
本文脈沖發(fā)動(dòng)機(jī)采用開關(guān)控制的方式工作,其控制策略也稱為點(diǎn)火邏輯,目前對(duì)點(diǎn)火邏輯設(shè)計(jì)主要采用基于矢量合成的方法、0-1規(guī)劃等。通過將發(fā)動(dòng)機(jī)的點(diǎn)火問題轉(zhuǎn)化為對(duì)發(fā)動(dòng)機(jī)的優(yōu)化調(diào)度問題,利用SWO算法的大鄰域?qū)蚴剿阉魈攸c(diǎn),設(shè)計(jì)基于SWO的點(diǎn)火控制算法,在短時(shí)間內(nèi)搜索到最佳點(diǎn)火組合。
SWO算法是一種啟發(fā)式優(yōu)化算法,目前已有學(xué)者將其應(yīng)用于空軍衛(wèi)星控制網(wǎng)絡(luò)調(diào)度[9]、多衛(wèi)星數(shù)傳調(diào)度[10]等。該算法主要由構(gòu)造器、分析器、優(yōu)先排序器三部分組成,其核心思想是“構(gòu)造-分析-優(yōu)先級(jí)排序”的循環(huán)過程[7]。首先,將調(diào)度問題中的每個(gè)任務(wù)賦予一定的優(yōu)先級(jí)并根據(jù)優(yōu)先級(jí)進(jìn)行排序;構(gòu)造器利用貪婪算法等方法得到一個(gè)初始解;分析器對(duì)構(gòu)造器生成的問題解進(jìn)行分析,按照一定的規(guī)則確定各任務(wù)的責(zé)罰值,并進(jìn)行分析,改變相應(yīng)的責(zé)罰值;優(yōu)先級(jí)排序器根據(jù)責(zé)罰值修改任務(wù)的優(yōu)先級(jí),并對(duì)任務(wù)按照優(yōu)先級(jí)重新排序。構(gòu)造器在下一次構(gòu)造解的過程中給予高優(yōu)先級(jí)任務(wù)更多關(guān)注,重新產(chǎn)生問題解。整個(gè)循環(huán)過程SWO算法可以認(rèn)為在優(yōu)先級(jí)空間(P)和解空間(f(P))兩個(gè)空間上交替操作進(jìn)行搜索,如圖4所示。
圖4 耦合搜索空間Fig.4 Coupled search spaces
通過優(yōu)先級(jí)空間的改變使得解空間的解發(fā)生較大變化,再根據(jù)對(duì)解的分析調(diào)整優(yōu)先級(jí)空間,如此迭代直到找到滿意解或者滿足迭代條件退出。
(1)構(gòu)造初始解
首先確定點(diǎn)火中心。給出點(diǎn)火指令角θc,設(shè)編號(hào)為M列發(fā)動(dòng)機(jī)為點(diǎn)火中心,則有:
式中:[˙]表示四舍五入取整。
以M為參考基準(zhǔn),選取±90°內(nèi)不同位置的發(fā)動(dòng)機(jī)進(jìn)行任務(wù)規(guī)劃,由發(fā)動(dòng)機(jī)任務(wù)組成任務(wù)集合每個(gè)包含兩個(gè)元素,其中為該發(fā)動(dòng)機(jī)的編碼值為其優(yōu)先級(jí)。
脈沖發(fā)動(dòng)機(jī)點(diǎn)火組合優(yōu)化的目的是在短時(shí)間內(nèi)找到最優(yōu)點(diǎn)火發(fā)動(dòng)機(jī)組,使該發(fā)動(dòng)機(jī)組產(chǎn)生的噴流合力與指令合力的矢量差最小。將指令合力與噴流合力的誤差作為尋找最優(yōu)解的判斷條件,令
式中:Fcy,F(xiàn)y,F(xiàn)cz,F(xiàn)z分別為指令合力和噴流合力在參考坐標(biāo)系y軸和z軸方向上的分力。由于最多允許10個(gè)發(fā)動(dòng)機(jī)同時(shí)點(diǎn)火,從前10個(gè)優(yōu)先級(jí)最高的任務(wù)中貪婪地選取矢量誤差最小的組合存入最優(yōu)解集合AS,作為優(yōu)化算法的初始解。
(2)分析當(dāng)前解
分析器的主要任務(wù)是對(duì)構(gòu)造器產(chǎn)生的問題解進(jìn)行分析,根據(jù)各任務(wù)對(duì)結(jié)果的影響大小產(chǎn)生責(zé)罰值,通過責(zé)罰值改變優(yōu)先級(jí)。對(duì)于點(diǎn)火邏輯優(yōu)化問題,產(chǎn)生最優(yōu)解時(shí)的誤差Err與優(yōu)先級(jí)排序在10之后的發(fā)動(dòng)機(jī)做矢量差,取責(zé)罰值為:
(3)調(diào)整優(yōu)先級(jí)
采用排序算法對(duì)發(fā)動(dòng)機(jī)任務(wù)集合A中的元素按照優(yōu)先級(jí)從大到小進(jìn)行排序,進(jìn)而更新搜索空間。如果優(yōu)先級(jí)相同,選擇靠近點(diǎn)火中心的發(fā)動(dòng)機(jī)任務(wù)排在前面;如果是相同列,選擇i值小的排在前面。
(4)重新構(gòu)造解
根據(jù)優(yōu)先級(jí)從A集合中選擇最優(yōu)的發(fā)動(dòng)機(jī)組合,計(jì)算當(dāng)前發(fā)動(dòng)機(jī)組合產(chǎn)生的合力與期望力的矢量誤差,并將所得誤差值與歷史最優(yōu)解進(jìn)行誤差值比較。如果該誤差值更小,則以此值作為最優(yōu)解來更新歷史最優(yōu)解,并存入集合AS中;如果誤差不滿足最小誤差條件,繼續(xù)重復(fù)步驟(2)~(4),直到算法達(dá)到最大迭代次數(shù)或滿足最小誤差條件,并退出循環(huán)。將集合AS中的元素進(jìn)行解碼,得到優(yōu)化后的發(fā)動(dòng)機(jī)點(diǎn)火組合。
本文未考慮大氣層內(nèi)噴流與外部流場(chǎng)相互作用產(chǎn)生的干擾作用力[8],設(shè)定每個(gè)脈沖發(fā)動(dòng)機(jī)平均噴流力為T=5 115 N,平均工作時(shí)間為 τA=10 ms。SWO點(diǎn)火控制算法滿足迭代次數(shù)(50次)或發(fā)動(dòng)機(jī)點(diǎn)火產(chǎn)生的合力與期望合力矢量誤差小于0.5%時(shí)退出。
貪心算法和遺傳算法是解決優(yōu)化問題的常用方法。為了驗(yàn)證本文點(diǎn)火邏輯優(yōu)化控制算法的可行性,引入了貪心算法和遺傳算法,并與SWO算法進(jìn)行對(duì)比仿真。貪心算法的實(shí)現(xiàn)過程為:每次從當(dāng)前可行解中增加一個(gè)發(fā)動(dòng)機(jī),直到誤差變大或滿足最小誤差條件時(shí)退出;遺傳算法采用文獻(xiàn)[6]思想設(shè)計(jì),算法迭代次數(shù)設(shè)為50代。
三種算法均在VC++6.0環(huán)境下編程實(shí)現(xiàn),并在AMD Phenom Triple-Core處理器、2.29GHz主頻,Windows XP系統(tǒng)的計(jì)算機(jī)中進(jìn)行仿真。記錄點(diǎn)火指令角為θc=0.1 rad時(shí)不同點(diǎn)火指令合力F下SWO算法、貪心算法和不同種群大小N的遺傳算法的仿真結(jié)果,分別如表1和表2所示。表中nm為所開發(fā)動(dòng)機(jī)數(shù)。
分析表1、表2可知,對(duì)于不同點(diǎn)火指令合力,三種算法在消耗脈沖發(fā)動(dòng)機(jī)相當(dāng)?shù)那闆r下,SWO算法與遺傳算法的誤差大大小于貪心算法。尤其當(dāng)貪心算法產(chǎn)生的合力誤差較大時(shí),SWO算法有更明顯的優(yōu)化效果,接近遺傳算法的最優(yōu)解。當(dāng)貪心算法產(chǎn)生的合力誤差較小時(shí),三種算法得到的合力誤差結(jié)果比較接近。由于SWO是一種大鄰域局部搜索算法,而遺傳算法是一種全局搜索算法,通過誤差分析可知,當(dāng)種群規(guī)模為200時(shí)的遺傳算法結(jié)果雖優(yōu)于SWO,但是差距不大。遺傳算法初始種群為50時(shí),由于算法在個(gè)別值時(shí)出現(xiàn)早熟收斂,產(chǎn)生的誤差不如SWO算法和200種群時(shí)的遺傳算法。
表1 SWO和貪心算法仿真結(jié)果Table 1 Results of SWO and greedy algorithm
表2 遺傳算法不同種群大小仿真結(jié)果Table 2 Results of GA with different population size
圖5為三種算法在點(diǎn)火指令角θc=0 rad時(shí)誤差值的柱狀圖,驗(yàn)證了不同點(diǎn)火指令角下由表1、表2所得結(jié)論的正確性。
圖5 不同算法誤差Fig.5 Error of different algorithms
圖6 為點(diǎn)火指令角為0 rad時(shí)SWO算法與貪心算法和遺傳算法計(jì)算時(shí)間比較??梢钥闯?,遺傳算法種群為50時(shí)耗時(shí)15 ms左右,種群為200時(shí)耗時(shí)200 ms左右,耗時(shí)遠(yuǎn)遠(yuǎn)大于SWO算法和貪心算法,且遺傳算法隨著種群規(guī)模的擴(kuò)大,耗時(shí)成指數(shù)增長。貪心算法的計(jì)算時(shí)間為10-5級(jí),隨著指令合力增大,計(jì)算時(shí)間呈線性增加。SWO算法整體比貪心算法耗時(shí)長一些,但均能在0.35 ms以內(nèi)完成優(yōu)化,提前退出迭代,耗時(shí)更短。直接控制系統(tǒng)給出點(diǎn)火指令到發(fā)動(dòng)機(jī)點(diǎn)火時(shí)間約為5 ms,加上SWO算法耗時(shí),仍然比氣動(dòng)力控制時(shí)舵機(jī)的反應(yīng)時(shí)間 (約22 ms)小很多,因此,該算法滿足實(shí)時(shí)性要求。
圖6 不同算法計(jì)算時(shí)間Fig.6 Computing time of different algorithms
本文針對(duì)姿控式直接力/氣動(dòng)力復(fù)合控制系統(tǒng)的脈沖組合發(fā)動(dòng)機(jī)點(diǎn)火問題,設(shè)計(jì)了一種基于SWO的優(yōu)化控制方法。在VC++6.0環(huán)境下對(duì)設(shè)計(jì)的算法進(jìn)行了仿真,并與典型的貪心算法和遺傳算法進(jìn)行了比較。結(jié)果表明,SWO算法能夠滿足控制精度和實(shí)時(shí)性要求,具有一定的理論意義和工程應(yīng)用價(jià)值。本文主要對(duì)點(diǎn)火邏輯優(yōu)化算法進(jìn)行設(shè)計(jì),尚未考慮復(fù)合控制系統(tǒng)的控制分配問題,下一步的工作是將本文設(shè)計(jì)算法與控制分配相結(jié)合,進(jìn)行更深入的研究。
[1] Fenghua H,Kemao M,Yu Y.Firing logic optimization design of lateral jets in missile attitude control systems[C]//CCA 2008 IEEE International Conference on Control Applications.NJ:IEEE,2008:936-941.
[2] Herman R D,Butler J H.Subsystems for the extended range interceptor(ERINT-1)missile[C]//AIAA and SDIO,Annual Interceptor Technology Conference.Huntsville:AL,1992.
[3] Walters E D,Butler J H.Extended range interceptor(ERINT-1)flight test program[C]//AIAA and SDIO,Annual Interceptor Technology Conference.Huntsville:AL,1992.
[4] 朱京.姿控發(fā)動(dòng)機(jī)點(diǎn)火邏輯研究[J].現(xiàn)代防御技術(shù),2007,35(3):42-45.
[5] 楊銳,徐敏,陳士櫓.動(dòng)能攔截彈姿控發(fā)動(dòng)機(jī)組合點(diǎn)火算法研究[J].西北工業(yè)大學(xué)學(xué)報(bào),2006,24(1):15-18.
[6] 尹永鑫,楊明,王子才.基于遺傳算法的脈沖推力器控制方法研究[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2007,39(5):721-724.
[7] Joslin D E,Clements D P.Squeaky wheel optimization[J].Journal of Artificial Intelligence Research,1999,10:353-373.
[8] 程鳳舟,萬自明,陳士櫓,等.防空導(dǎo)彈直接力與氣動(dòng)力復(fù)合控制系統(tǒng)設(shè)計(jì)[J].飛行力學(xué),2003,21(2):49-52.
[9] Barbulescu L,Howe A E,Whitley L D.Understanding algorithm performance on an oversubscribed scheduling application [J].Journal of Artificial Intelligence Research,2006,27:577-615.
[10]經(jīng)飛,王鈞,李軍,等.基于吱呀輪優(yōu)化的多衛(wèi)星數(shù)傳調(diào)度問題求解方法[J].宇航學(xué)報(bào),2011,32(4):863-870.