李方舟,郝巨東,李 麗,李 陽,張 昆
(北方自動控制技術研究所,太原 030006)
火箭炮武器系統中地面發(fā)控系統是完成火箭彈發(fā)射準備、激活、點火的核心系統,在進入發(fā)射流程后,發(fā)控系統負責裝定及發(fā)射時序控制,接收來自其他節(jié)點的文件和信息,向顯示終端反饋當前步驟的執(zhí)行結果,并且負責向火箭彈傳輸對時、星歷、飛行控制參數和慣導參數,是火箭炮武器系統中不可或缺的一環(huán),它與火箭彈發(fā)射前的發(fā)射流程息息相關[1]。
但現有火箭炮武器平臺在不同彈種齊射的實現上存在一定問題,其中最主要的是在時序方面,火箭彈發(fā)射前、中、后的每個步驟都具有獨立時間軸,步驟節(jié)點時間以毫秒(ms)級的裝定精度嚴格規(guī)定、實時控制,對單個步驟執(zhí)行的提早或延后都將導致火箭彈無法發(fā)射。即同時調度多個火箭彈模塊同時進入裝定流程,將導致不同彈種裝定步驟的時間交疊、信息沖突,無法保證通信的實時性。交疊位置若想同時處理并保證裝定的實時性和信息的可靠性,需對硬件重新設計,并進行軟件移植和修改,需要大量的經濟和時間成本。
針對上述問題和條件的限制,對已定型的多型火箭彈時序協同方法進行研究,即不改動原有彈種裝定步驟的函數邏輯,通過解算在系統主時間軸上不同火箭彈進入發(fā)射流程最優(yōu)的起點調整值,協同各步驟的處理時間,并在此基礎上設計軟件控制模塊。
本文用改進遺傳算法對多彈種發(fā)射時序協同問題進行建模并求解。將求解結果加入到軟件模塊的設計中,構建彈種協同時序庫,將協同解算的最優(yōu)解保存,有效減少了進入流程前的準備時間,且為后續(xù)彈種新時序的加入和協同提供了便捷。
總裝定任務可描述為在火箭彈每一個步驟的任務發(fā)布時間節(jié)點開始執(zhí)行,并在處理時間內完成裝定步驟。將系統裝定時間軸定義為主時間軸,彈種固有裝定時序的時間軸定義為該彈種的獨立時間軸。在彈種的獨立時間軸上,步驟的開始時間和結束時間相對于起點固定。解決時序協同問題需調整不同彈種獨立時間軸起點與主時間軸起點的相對位置,裝定時不同彈種異步進入發(fā)射流程,并保證多條獨立時間軸上各步驟的處理時間在系統主時間軸上的投影不交疊。
由此,問題可轉化為在多約束條件下的TSP 問題,求解不同彈種進入發(fā)射流程的次序及最佳時間,獲得總時長最短的裝定時序。
本文引入表1 的符號定義,并假設條件如下:
表1 符號定義Table 1 Symbol definition
1)同一彈種各步驟裝定順序固定,不同彈種的步驟執(zhí)行順序互不影響;
2)單一時刻只能執(zhí)行單一步驟;
3)每個步驟一旦開始加工就不能中途停止;
4)相鄰且不交疊的兩個步驟之間切換時間為零。
算法的目標是求解總裝定時長最短且各步驟不沖突的排序方案。適應度是衡量染色體優(yōu)劣程度的函數,表征了環(huán)境作用,是染色體收斂于最優(yōu)解的關鍵。算法目標是求裝定總耗時最短,總耗時的倒數可作為適應度函數:
式中,fk是第k 條染色體的適應度;ti為其中彈種i固有的裝定時間總長;Δti為求解的該彈種i 的起點調整值。
假設m 型火箭彈在系統上進行裝定,火箭彈i有Mi個裝定步驟,其步驟j 在獨立時間軸上對應的開始時間和截止時間節(jié)點分別為Rij點和Dij點,約束條件如下:
其中,式(2)表示彈種的裝定總時長和起點調整值之和不得超過裝定時間指標,式(3)表示時序約束條件,即不同彈種的所有步驟的執(zhí)行時間不交疊,式(4)為彈種i 單步驟j 執(zhí)行時間段約束,式(5)為彈種i 的步驟執(zhí)行時間段合集。
2.1.1 染色體編碼
如圖1 所示,編碼分為排序編碼和時序編碼兩部分,時序編碼又分為獨立時序編碼和協同時序編碼。
圖1 編碼示意圖Fig.1 Schematic diagram of coding
1)排序編碼表示彈種種類及排序情況。編碼將m 型彈進入流程次序從1~m 隨機排序。例如,第i位上的數字x 表示彈種x 在主時間軸上以次序i 進入流程。排序編碼為進化過程的染色體個體,基因串位數h1:
2)獨立時序編碼將彈種獨立時間軸轉化為二進制編碼,以時間段長度T 分割時間軸,每一段時間T 作為二進制編碼中的一位。固有時序段上只要彈種i 的wij與某一位的時間分割段T 存在交集,則該位用1 表示,否則用0 表示。設該型彈種裝定總時長為t,固有時序段位數h2:
由于時序協同的復雜性及其存在的限制條件,將協同時序編碼作為染色體個體進行交叉變異的方法會將求解問題復雜化,且難以求得最優(yōu)解。為提高求解效率,將排序編碼作為染色體個體,執(zhí)行交叉變異過程;協同時序編碼作為染色體個體適應度計算及判斷的依據。
2.1.2 選擇算子
在遺傳算法中,存在兩個階段的選擇。第1 個是參與進化操作的個體選擇,此階段使用隨機遍歷選擇法,對染色體個體進行交叉和變異操作,不斷尋優(yōu)并保證種群的多樣性。
第2 個為“重插入”或“環(huán)境選擇”的選擇,指在個體經過交叉變異等進化操作所形成的子代個體形成新種群的過程。此階段采用錦標賽選擇方式[3-4],每次從種群中挑選S 個個體的適應度進行比較,基于子代染色體適應度選擇一個最好的個體加入被選集合。重復該操作直至子代集合大小達到所需個體數。
2.1.3 個體評價算子
個體評價過程根據染色體個體和獨立時序編碼生成協同時序編碼,以此判斷染色體個體能否存活。若染色體個體存活,則根據協同時序編碼和式(1)計算個體適應度。
2.1.4 交叉算子
所選取的交叉算子[5]基于排序編碼匹配交叉。先在識別編碼段上隨機生成兩個交叉點,定義這兩點間的區(qū)域為匹配區(qū)域,并交換兩個父代的匹配區(qū)域。如圖2 所示,父代染色體P1,P2中間段變換后生成temp1和temp2。對于temp1和temp2中匹配區(qū)域外出現的編碼位重復,依據匹配區(qū)域內的位置逐一進行替換,生成C1,C2。圖中匹配關系為5?6,1?2。
圖2 交叉過程Fig.2 Crossover process
2.1.5 變異算子為了提高種群的多樣性,降低遺傳算法陷入局部最優(yōu)解的風險。變異操作將個體以變異概率P*進行變異,產生兩個0~1 之間的隨機實數,將這兩個隨機實數按比例轉化為1~m 間的整數,將相應整數位上數字進行交換。
為提高搜索的效率,加入禁忌搜索算法對遺傳算法進行改進,禁忌搜索算法的核心思想是不重復已經搜索過的解,對交叉算子和變異算法做出禁忌操作,具體方案如下:
1)建立全局禁忌表:存儲每一代中的最優(yōu)解,在所有交叉和變異操作中作為禁忌操作對象;
2)建立局部禁忌表:在交叉算子中,局部禁忌表包括上一代種群和當前已交叉生成的子代種群;在變異算子中,局部禁忌表為父代種群、交叉后待變異的種群和當前已變異生成子代種群;在個體評價過程中,將不滿足約束條件的部分基因段加入局部禁忌表。
此過程中個體評價的局部禁忌表最為重要,以圖2 中的子代C1的個體評價過程為例,假定在個體評價過程中在主時間軸上已經按序插入彈種6、7、5、3,彈種2 起點無法在中插入,則基因段“67532”為禁忌基因段。
步驟1 根據已選彈種總數m,隨機生成popsize 個個體作為初始種群,進化計數器t=0,設置終止迭代次數T*,設置交叉概率J*,變異概率P*,設置競賽規(guī)模S。
步驟2 生成m 型火箭彈的獨立時序編碼。以生成彈種i 的時序編碼段為例,調取m 型火箭彈的固有時序以T 為時間片周期構建固有時序段及填充段。
步驟3 對初始種群進行個體評價,同時建立全局禁忌表和個體評價局部禁忌表。
步驟4 隨機遍歷選擇種群中的個體,在禁忌表約束下,執(zhí)行交叉操作、變異操作及個體評價,實時更新全局和局部禁忌表。
步驟5 采用錦標賽選擇方式,生成子代集合,計數器t=t+1。
步驟6 重復執(zhí)行步驟4~步驟5,直至達到終止條件的終止迭代次數T*,流程如圖3 所示,最終獲得最優(yōu)個體。
圖3 算法策略流程圖Fig.3 Flow chart of algorithm strategy
將某型火控系統與測試得到的7 型火箭彈各 裝定步驟的開始及結束時間節(jié)點,如表2 所示。應用改進遺傳算法求解火箭彈時序調整值,設置基本參數分別為:初始化種群popsize=100,最大進化代數mgen=10,交叉概率J*=0.95,變異概率P*=0.05,設置時間指標=300 s,競賽規(guī)模S=10,利用Matlab進行仿真和求解。
表2 彈種時序表Table 2 Timing sequence of types of rockets loading
選取全部7 種火箭彈和其中任意彈種組合時序進行求解,獲得最優(yōu)染色體個體排序方案之后,將與之對應的協同時序編碼進行解碼,解碼得到不同彈種的裝定起點Δt 部分列舉在表3 中。
表3 起點調整解集表Table 3 Starting point adjustment solution set table
組合1 為7 種火箭彈協同的起點調整值解,組合2~8 依次為其中6 種火箭彈協同的起點調整值解。Δt*對應相應彈種*的裝定起點調整值,即該彈所有步驟均延后相應時長;為協同時序的裝定總時長。根據解集1 可以看出,從7 種火箭彈中任取其中幾種進行協同組合,得到的最優(yōu)時序總時長必然小于297.9 s,符合裝定時間指標的要求。
基于上述算法及起點調整解值表,針對某型火箭炮發(fā)控軟件的限制及設計約束提出多彈種協同控制模塊構造方法。模塊包括任務初始化子模塊、所有彈種通用的通信和檢測子模塊、時序控制子模塊、各型火箭彈的裝定執(zhí)行子模塊及其他功能函數,模塊框架如圖4 所示。
圖4 協同控制模塊架構圖Fig.4 Architecture diagram of collaborative control module
模塊設計時,設置多個獨立的結構體存儲各管號的相應信息,包含該管裝填的彈種代號、彈種狀態(tài)、熱電池阻值、裝定和發(fā)射時序、參數設置等信息,實時更新并用以狀態(tài)檢測和時序控制。把各彈種的獨立時序控制功能整合為時序控制子模塊,并將裝定控制與發(fā)射控制時間區(qū)分。在時序控制子模塊內加入時序庫,存儲所有彈種協同的時序調整值解。將火箭彈可通用的CAN 通信、DDS 通信、串口通信、TCP 通信及IO 檢測等函數歸納及整合;將無法共用的函數進行解耦和獨立,僅在不同彈種獨立函數內加入彈種代號判斷項,例如彈種獨立的參數設置及裝定步驟函數、自檢函數等。同時,設計后續(xù)彈種加入的獨立接口,為新彈種的加入提供便利,降低了后期的維護成本。
針對多彈種協同控制模塊設計問題,本文使用改進遺傳算法對多彈種起點調整值進行求解,以彈種進入流程的排序為編碼構造了染色體個體,引入禁忌搜索表改進遺傳算法中的交叉算子、變異算子和個體評價算子,將排序和時序不斷優(yōu)化。最終在多限制條件下,求解出最短的協同裝定時序及起點調整值。在確定解值的基礎上,設計符合多彈種協同裝定的發(fā)射控制軟件模塊,以實時高效地執(zhí)行多彈種協同裝定和發(fā)射控制,使多彈種協同時序達到發(fā)射火力反應時間要求。