康春農(nóng),王永良,張春娣
1.南京炮兵學(xué)院,南京211132
2.宣化科技職業(yè)學(xué)院 信息技術(shù)系,河北 宣化075100
計算機生成兵力(CGF)是指仿真戰(zhàn)場環(huán)境中由計算機生成和控制的仿真實體,仿真實體可能對應(yīng)一個分辨率較低的模型也可能分解成分辨率較高的多個模型[1]。這種多粒度(多分辨率)CGF 模型在分布交互式作戰(zhàn)仿真中占有重要地位,可以通過模型高低分辨率之間的動態(tài)轉(zhuǎn)換(聚合和解聚)實現(xiàn)對作戰(zhàn)實體不同細節(jié)度的模擬,來滿足不同作戰(zhàn)規(guī)模仿真的需要,減少仿真節(jié)點,節(jié)省仿真資源。
CGF 系統(tǒng)中的模型可以看做具有不同功能的智能體(Agent)、聚合級的Agent 實體,除實體的物理行為仿真外,指揮決策仿真是其主要功能,最底層的Agent 則主要仿真實體的物理行為。Agent一般由6 部分組成[1]:感知模塊、知識庫、決策模塊、學(xué)習(xí)模塊、行動模塊、通信模塊,如圖1。主體通過感知模塊來感知外部環(huán)境,對環(huán)境信息做出一定的處理,并送到?jīng)Q策模塊;決策模塊在知識庫的支持下,根據(jù)從感知模塊得到的外部環(huán)境信息做出決策,將決策結(jié)果傳送給行動模塊與通信模塊;行動模塊則根據(jù)傳入的動作命令做出相應(yīng)的動作,對外部環(huán)境做出響應(yīng);通信模塊主要用來處理Agent 之間的信息交換;學(xué)習(xí)模塊的職責是從Agent的不斷運行過程中總結(jié)經(jīng)驗,為知識庫增加新的知識。
炮兵營是基本的火力執(zhí)行單位,內(nèi)部作戰(zhàn)單位間交互信息繁雜而緊密,其與外部單位交互信息清晰可探查,應(yīng)該以一個仿真節(jié)點模擬炮兵營作戰(zhàn)行為。本文以某型火炮炮兵營為研究單位,給出了多Agent的聚合級炮兵營CGF體系結(jié)構(gòu),分析了重要作戰(zhàn)單位模型間的信息交互方式和內(nèi)容以及模型解聚的策略,在此基礎(chǔ)上實現(xiàn)了一套仿真系統(tǒng)。
圖1 Agent一般結(jié)構(gòu)圖
依據(jù)課題和實驗室建設(shè)的需要,需要構(gòu)建炮兵營CGF系統(tǒng),為后續(xù)師團級炮兵作戰(zhàn)對抗仿真系統(tǒng)搭建基礎(chǔ)平臺。炮兵營CGF 需要具備以下幾項功能:
(1)能夠模擬自行火炮、牽引火炮、火箭炮三類炮兵營的作戰(zhàn)活動。
(2)能夠在陸戰(zhàn)場聯(lián)合作戰(zhàn)背景下模擬炮兵營戰(zhàn)備等級轉(zhuǎn)換、行軍、開進展開、作戰(zhàn)4 個階段全過程的作戰(zhàn)活動。
(3)能夠訓(xùn)練炮兵營指揮人員對炮兵營的指揮能力,尤其是對突發(fā)情況的處理。
(4)保障仿真的真實性,利用面向?qū)ο蟮南到y(tǒng)分析方法和系統(tǒng)設(shè)計方法,使用統(tǒng)一建模語言(Unified Modeling Language,UML)圖形化語言建模,使用頒發(fā)的地理數(shù)據(jù)信息搭建地理信息平臺,利用正則表達式解析文本格式的命令。
(5)能夠驗證軍事運籌學(xué)科構(gòu)建的各種算法,例如觀察所、炮陣地的地域選擇算法,對敵目標的偵察選擇算法等。
為了給炮兵營CGF 提供一個陸戰(zhàn)場的聯(lián)合作戰(zhàn)環(huán)境和展示平臺,采用高層體系結(jié)構(gòu)(HLA)技術(shù)搭建仿真結(jié)構(gòu)[2-3],設(shè)計了5 個聯(lián)邦成員,如圖2 所示,每個聯(lián)邦成員運行在一個節(jié)點機上,數(shù)據(jù)庫運行在一臺節(jié)點機上。聯(lián)邦成員間的作戰(zhàn)信息通過運行支撐環(huán)境(Run-Time Infrastructure,RTI)進行交互,仿真控制信息,例如仿真開始、結(jié)束等信息通過局域網(wǎng)套接字編程通信。各個聯(lián)邦成員工作流程如下所示。
圖2 炮兵營CGF 仿真系統(tǒng)結(jié)構(gòu)圖
(1)導(dǎo)調(diào)成員:與炮兵營CGF 成員通過局域網(wǎng)套接字編程通信協(xié)商啟動仿真程序;從數(shù)據(jù)庫中讀取部署信息和模型設(shè)置信息,或在二維電子地圖上重新編輯,將這些信息寫入數(shù)據(jù)庫進行存儲以備下次應(yīng)用,然后通過RTI 發(fā)送給其他聯(lián)邦成員;啟動仿真主線程,運行紅藍雙方作戰(zhàn)模型,導(dǎo)調(diào)這些模型的作戰(zhàn)行為,為戰(zhàn)場提供一些突發(fā)情況,例如衛(wèi)星過頂?shù)?,將這些模型的行為結(jié)果和突發(fā)情況通過RTI 傳送給其他聯(lián)邦成員;模擬炮兵團指揮機關(guān)對炮兵營進行命令控制,下達的命令和收到的炮兵營報告信息通過RTI傳送。
(2)炮兵營CGF 成員:與導(dǎo)調(diào)成員通過局域網(wǎng)套接字編程通信協(xié)商啟動仿真程序;啟動仿真主線程,生成紅藍雙方作戰(zhàn)模型的映像模型,運行炮兵營模型;依據(jù)接收到的命令指示,炮兵營模型確定作戰(zhàn)階段,必要時進行解聚,結(jié)合命令指示、地形信息、戰(zhàn)術(shù)數(shù)據(jù)庫、映像模型的信息進行行為決策,并進行動作,將動作結(jié)果通過RTI 發(fā)送給其他聯(lián)邦成員,將階段炮兵營整體模型狀態(tài)存入數(shù)據(jù)庫。
(3)數(shù)據(jù)記錄分析成員:收集導(dǎo)調(diào)成員和炮兵營CGF成員發(fā)送的各種信息,讀入數(shù)據(jù)庫進行記錄,分析本次仿真的記錄數(shù)據(jù),評估指揮員的指揮能力和水平。
(4)二維顯示成員:依據(jù)上級頒發(fā)的數(shù)字地理數(shù)據(jù)生成二維電子地圖,從導(dǎo)調(diào)方和炮兵營CGF 方接收信息,展現(xiàn)二維戰(zhàn)場態(tài)勢,包括二維作戰(zhàn)模型的顯示、移動、毀傷、射擊等。
(5)三維顯示成員:依據(jù)上級頒發(fā)的數(shù)字地理數(shù)據(jù)生成三維戰(zhàn)場環(huán)境,從導(dǎo)調(diào)方和炮兵營CGF 方接收信息,展現(xiàn)三維戰(zhàn)場態(tài)勢,包括三維作戰(zhàn)模型的顯示、移動、毀傷、射擊等。
考慮到作戰(zhàn)實體數(shù)目較多,而且為了適應(yīng)將來方便的增加作戰(zhàn)模型,同時也為了降低各聯(lián)邦成員間的耦合度,設(shè)計在RTI 網(wǎng)絡(luò)上交互的信息只有4 類:模型信息、射擊信息、命令指示和報告、輔助信息。
模型信息對應(yīng)作戰(zhàn)模型,為保障模型的一致性,采用了3 層身份鑒定方法。例如,藍軍機步營1 連機步排1 排ID是020101-J-1,020101 代表所屬單位,02:藍軍,01:機步營,01:1 連,J 代表本身性質(zhì):機步排,最后一個1 代表標號:第1 排,這樣可以在網(wǎng)絡(luò)上唯一確定一個模型信息的歸屬。每個模型有3 個狀態(tài){appear,exist,disappear},分別代表出現(xiàn)、存在、消失,有了這些信息模型在各個節(jié)點上的維護就有了保障。
射擊信息包括彈種、起點、終點等信息,各節(jié)點依據(jù)天氣信息和地形數(shù)據(jù)對射擊信息進行維護,這樣可以減少網(wǎng)絡(luò)上信息的流量。
命令指示和報告目前根據(jù)其特殊格式分別進行公布和訂購,將來計劃采用正則表達式對文本格式字符串進行解析。
輔助信息包括作戰(zhàn)時間、仿真時間、時間推進比例、天氣,這些信息由導(dǎo)調(diào)方生成并發(fā)送給其他聯(lián)邦成員,作戰(zhàn)時間、仿真時間由其他聯(lián)邦成員自己在仿真循環(huán)中不斷計算更新。
圖3 某型火炮炮兵營多Agent的聚合級炮兵營CGF 體系結(jié)構(gòu)圖
炮兵營在不同作戰(zhàn)階段其仿真的粒度是不一樣的,比如戰(zhàn)備等級轉(zhuǎn)換階段,關(guān)注的是炮兵營的整體行為,且炮兵營各單位駐地在一起沒有必要分開模擬,因此這個階段只用炮兵營模型模擬即可。但開進展開階段和作戰(zhàn)階段就有必要分解出偵察車輛、下級指揮車和單炮車等模型,因此炮兵營整體模型必然是聚合級的。無論是聚合級的炮兵營模型還是解聚開的各子單位模型,都具有自主決策能力、對外部環(huán)境感知能力、行動能力和與其他模型進行通信的能力[2-3],這些模型將綜合應(yīng)用天氣、地形、戰(zhàn)場環(huán)境、上級命令等信息進行決策,然后進行物理行為,與其他炮兵營單位協(xié)同作戰(zhàn),因此炮兵營整體模型又必然是多Agent 的,以某型火炮炮兵營為例搭建的多Agent 的聚合級炮兵營CGF 體系結(jié)構(gòu)如圖3 所示。該結(jié)構(gòu)由6 部分組成,分別是CGF 操作員、界面Agent、信息管理器Agent、聯(lián)邦管理器Agent、紅藍雙方作戰(zhàn)模型Agent、炮兵營整體模型,其中紅藍雙方作戰(zhàn)模型是導(dǎo)調(diào)方模型的映像,真實模型在導(dǎo)調(diào)方運行,運行結(jié)果由CGF 成員接收后更新,其目的是為炮兵營各模型提供一個聯(lián)合作戰(zhàn)的背景。
利用面向?qū)ο蠹夹g(shù)[4-5]構(gòu)建某型火炮炮兵營各單位靜態(tài)組織結(jié)構(gòu),如圖4 所示。炮兵營各單位分別對應(yīng)一個類,類間關(guān)系主要是組合關(guān)系(實心棱形箭頭),例如炮兵營指揮車組合了各連指揮車,表示各連指揮車是營指揮車的一部分,是一種同生共死的關(guān)系,整體有創(chuàng)建和銷毀部分的義務(wù)和權(quán)利,整體消亡部分必然消亡。在這里利用了指揮關(guān)系進行結(jié)構(gòu)建模,而沒有利用編制情況,主要是考慮到便于組織協(xié)同、解聚,以及減少模型個數(shù)。炮兵營指揮車是炮兵營的部分,在戰(zhàn)備等級轉(zhuǎn)換階段和行軍階段,以炮兵營這個Agent 模型模擬整個炮兵營的行為,當接收到展開指令后,炮兵營模型創(chuàng)建子部分炮兵營指揮車,炮兵營指揮車創(chuàng)建它的子部分,模擬炮兵營的任務(wù)由炮兵營過渡到炮兵營指揮車為龍頭的整個炮兵營模型中去,炮兵營模型具有控制臺的功能,控制著解聚的過程。
圖4 炮兵營整體模型的靜態(tài)結(jié)構(gòu)圖
具體的解聚算法偽代碼為:
炮兵營.circumvent(){
如果狀態(tài)為日常訓(xùn)練
為保證消防車輛全力救災(zāi),美豐加藍積極行動、統(tǒng)籌協(xié)調(diào),與當?shù)亟?jīng)銷商攜手,迅速成立“美豐加藍支持災(zāi)區(qū)建設(shè)服務(wù)隊”,并攜帶美豐車用尿素及加注設(shè)備前往青州消防支隊和救災(zāi)前線,為消防車輛提供美豐車用尿素及加注服務(wù)。
如果接收到戰(zhàn)備等級轉(zhuǎn)換命令
設(shè)置狀態(tài)為戰(zhàn)備等級轉(zhuǎn)換;
否則執(zhí)行日常訓(xùn)練工作;
如果狀態(tài)為戰(zhàn)備等級轉(zhuǎn)換
如果接收到行軍命令且戰(zhàn)備等級轉(zhuǎn)換工作已完成
設(shè)置狀態(tài)為行軍;
否則執(zhí)行戰(zhàn)備等級轉(zhuǎn)換工作;
如果狀態(tài)為行軍
設(shè)置狀態(tài)為開進展開;
否則執(zhí)行行軍工作;
如果狀態(tài)為開進展開
如果炮兵營指揮車不存在
生成炮兵營指揮車及下屬單位;//將開進展開狀態(tài)和炮兵營參數(shù)數(shù)據(jù)傳給營指揮車及下屬
發(fā)送炮兵營指揮車及下屬單位生成消息;
發(fā)送炮兵營模型消失消息;
如果炮兵營指揮車已存在
炮兵營指揮車.circumvent();//如果炮兵營指揮車感知到各子單位已展開完畢,發(fā)送戰(zhàn)斗進行狀態(tài)給炮兵營
如果狀態(tài)為戰(zhàn)斗進行
炮兵營指揮車.circumvent();
}
其中加粗的字體代表仿真模型,15、16、17、18 行代碼為解聚過程,20、23 運行的是解聚開的模型。炮兵營模型控制著解聚的過程,且只是發(fā)送了自身消失的消息(18行),在這個仿真節(jié)點并沒有真正刪除該模型,但在其他節(jié)點看來該模型已由解聚開的模型替換掉了,這主要是為了減少模型個數(shù),簡化管理層級[2-3]。
由于多個Agent 組織在一起,Agent 間的通信內(nèi)容和通信方式的建模是仿真設(shè)計的重點和難點,也是炮兵營CGF設(shè)計成敗的關(guān)鍵[2]。炮兵營內(nèi)部采用直接通信方式,炮兵營外部接口是炮兵營模型或炮兵營指揮車模型,他們與其他Agent 間的通信工作原理如表1(表中編號為圖3 中數(shù)字序號)。
表1 所設(shè)計的通信原理能夠保障如下幾個功能:
(1)支持人在回路或人不在回路。來自9、10 的炮兵團命令可以直接驅(qū)動炮兵營整體模型,實現(xiàn)人不在回路的仿真,或者將9、10 信息通過11 反映到界面上,由操作員編輯命令,通過1、2 信息傳遞驅(qū)動炮兵營整體模型,實現(xiàn)人在回路的仿真。
(2)滿足聚合模型和解聚模型的需求。炮兵營作為聚合模型,接收2、9 信息,解聚開之后,炮兵營指揮車接收10、13 信息,再傳遞給子模型,2 和13 信息格式和內(nèi)容是一樣的,9 和10 信息格式和內(nèi)容是一樣的,且都是采用的黑板通信,處理決定權(quán)只在炮兵營模型和炮兵營指揮車模型。
(3)為炮兵營各模型提供了充足的信息。來自2、9、10、13 的命令信息驅(qū)動仿真的進行,6、8 信息提供天氣、作戰(zhàn)模型等戰(zhàn)場環(huán)境信息,另外還有來自數(shù)據(jù)庫的戰(zhàn)術(shù)數(shù)據(jù)庫和地形數(shù)據(jù)庫,保障了炮兵營各模型運行所需數(shù)據(jù)的充足。
表1 炮兵營CGF 模型Agent間的通信工作原理
(4)有利于仿真系統(tǒng)的穩(wěn)定。炮兵營整體模型內(nèi)部直接通信;利用黑板通信接收其他Agent的信息;通過15 向其他聯(lián)邦成員發(fā)送模型信息、射擊信息和上報報告信息,這些信息格式固定,而且只管發(fā)送不用維護。這樣就將炮兵營內(nèi)部復(fù)雜的交互與其他Agent 和其他仿真節(jié)點隔離開來,形成了高內(nèi)聚和松耦合。
使用VC2005 開發(fā)工具、BCG 界面庫、MGS 地理信息系統(tǒng)、項目組開發(fā)的GDI+繪圖程序、HLA 技術(shù)、套接字局域網(wǎng)通信技術(shù)、多線程技術(shù)、視頻播放技術(shù)、OGRE 三維渲染技術(shù)等[6],實現(xiàn)了導(dǎo)調(diào)方、炮兵營CGF 方、二維顯示方、三維顯示方4 個節(jié)點,導(dǎo)調(diào)方和CGF 方都以模型為中心,以領(lǐng)域驅(qū)動進行開發(fā)設(shè)計,以面向?qū)ο蠹夹g(shù)組織和建設(shè)這些模型。其中導(dǎo)調(diào)方運行著非炮兵營各單位的模型,維護著炮兵營整體模型的映像信息,展現(xiàn)二維態(tài)勢和簡易動畫,向炮兵營發(fā)送命令,展現(xiàn)炮兵營整體模型和其他模型的動作狀態(tài)報告。炮兵營CGF 方運行著解聚前和解聚后炮兵營各單位模型,維護著非炮兵營各單位的模型信息,接收導(dǎo)調(diào)方的導(dǎo)調(diào)信息和命令信息,展現(xiàn)炮兵營的動作狀態(tài),為二、三維顯示成員提供數(shù)據(jù)。截取的運行界面如圖5 和圖6所示。從多次仿真運行的情況來看,導(dǎo)調(diào)方的命令和導(dǎo)調(diào)信息能夠得到CGF 方及時的反應(yīng)和回饋,各模型的毀傷計算、機動實施計算能夠及時反映到界面上來,沒有邏輯上的錯誤,而且仿真運行過程流暢,有很高的安全性和穩(wěn)定性??傮w上來看,能夠支持炮兵營CGF 系統(tǒng)的需要,以及模擬整個4 個階段的炮兵營活動。炮兵營各作戰(zhàn)模型以及紅藍雙方作戰(zhàn)模型設(shè)計還比較簡單,今后在本文設(shè)計的技術(shù)框架基礎(chǔ)上,將豐富各個作戰(zhàn)模型,力爭將炮兵營CGF系統(tǒng)融入到師團以上級別的仿真系統(tǒng)中去。
圖5 導(dǎo)調(diào)方運行時截圖
將炮兵營內(nèi)部各模型和外部模型都看做Agent,并給出它們的構(gòu)成和組織關(guān)系,通過分析它們之間的通信內(nèi)容和方式,確認了各Agent 的功能和職責。本文設(shè)計的多Agent 的炮兵營CGF 結(jié)構(gòu)不僅能實現(xiàn)人在回路和人不在回路的仿真,也能夠順暢的實現(xiàn)解聚前模型運算到解聚后模型運算的切換,保障了炮兵營各作戰(zhàn)單位模型運算數(shù)據(jù)的充足性,并且保障了炮兵營整體模型內(nèi)部間的高內(nèi)聚和與外部的松耦合。以該模型為中心實現(xiàn)了系統(tǒng)仿真,仿真運行結(jié)果表明本文的設(shè)計合理且有效,能夠滿足炮兵營CGF系統(tǒng)建設(shè)的需要。今后,將以本文設(shè)計為平臺充實炮兵營各作戰(zhàn)單位模型,在一個節(jié)點機上力爭真實地模擬整個炮兵營的行為。
圖6 炮兵營CGF 方運行時截圖
[1] 郭齊勝,楊立功,楊瑞平.計算機生成兵力導(dǎo)論[M].北京:國防工業(yè)出版社,2006.
[2] 楊新穎,龔光紅.聚合級CGF 關(guān)鍵技術(shù)的研究[J].系統(tǒng)仿真學(xué)報,2006,18(2).
[3] 謝永強,周保順.聚合級CGF 仿真中仿真應(yīng)用程序的管理[J].系統(tǒng)仿真學(xué)報,2006,18(2).
[4] Evans E.領(lǐng)域驅(qū)動設(shè)計[M].趙俐,盛海艷,劉霞,等譯.北京:人民郵電出版社,2010.
[5] Gamma E,Helm R,Johnson R,et al.設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].李英軍,馬曉星,蔡敏,等譯.北京:機械工業(yè)出版社,2000.
[6] 耿衛(wèi)東,陳為.計算機游戲程序設(shè)計[M].北京:電子工業(yè)出版社,2009.