李江濤,張京濤,張 波,王 培
(國防大學(xué)聯(lián)合作戰(zhàn)學(xué)院,河北 石家莊 050084)
信息技術(shù)的飛速發(fā)展使科學(xué)實驗方法、計算機仿真和戰(zhàn)爭實踐相結(jié)合而產(chǎn)生的作戰(zhàn)仿真實驗成為模擬作戰(zhàn)活動、仿真作戰(zhàn)環(huán)境的一種新的科學(xué)方法。作戰(zhàn)仿真實驗以仿真實驗系統(tǒng)為平臺,通過對作戰(zhàn)實體、作戰(zhàn)行動、作戰(zhàn)樣式和基本戰(zhàn)法等的建模與仿真,研究作戰(zhàn)動態(tài)演變,揭示作戰(zhàn)基本規(guī)律。仿真引擎是作戰(zhàn)仿真實驗系統(tǒng)的核心組件,獨立于具體應(yīng)用,是負責(zé)仿真運行控制、時間推進、數(shù)據(jù)存儲、調(diào)度運行的軟件功能集合的統(tǒng)稱。
隨著聯(lián)合作戰(zhàn)研究的深入以及相關(guān)仿真實驗系統(tǒng)的復(fù)雜化和專業(yè)化,仿真實驗系統(tǒng)往往不是從頭開發(fā),而是基于特定的仿真引擎進行架構(gòu),因此,仿真引擎成為仿真實驗系統(tǒng)中最重要的環(huán)節(jié),它是整個系統(tǒng)體系框架的樞紐,推進各個模塊的運轉(zhuǎn),聯(lián)動整個系統(tǒng)的推演。為提高大規(guī)模作戰(zhàn)仿真系統(tǒng)的運行效率,學(xué)者們對仿真引擎技術(shù)與應(yīng)用問題高度重視,并開展了大量研究。在軍事應(yīng)用領(lǐng)域,以美國為代表的西方國家研制出了SPEEDES、WarpIV、GTW、Warped等仿真引擎,用于支撐各類作戰(zhàn)仿真系統(tǒng)的開發(fā)與應(yīng)用。國內(nèi)學(xué)者也相繼提出了基于郵箱機制、基于實體模型、基于消息驅(qū)動、基于多視角系統(tǒng)分析、聯(lián)合作戰(zhàn)仿真引擎等仿真引擎理論、技術(shù)和方法,并應(yīng)用于作戰(zhàn)決策訓(xùn)練、聯(lián)合作戰(zhàn)研究、CISR系統(tǒng)仿真作戰(zhàn)平臺建設(shè)、裝備效能評估等方面,這些成果對于促進我軍仿真引擎深入研究發(fā)揮了重要的作用。但是,當(dāng)前研究成果大多針對特定領(lǐng)域仿真需求開展專門研究,難以適應(yīng)聯(lián)合作戰(zhàn)仿真復(fù)雜、開放、并行等新特點,并且有些仿真引擎產(chǎn)品的核心模塊還是以國外產(chǎn)品為基礎(chǔ),無法完全實現(xiàn)自主可控。
本文結(jié)合聯(lián)合作戰(zhàn)仿真實驗活動要求,重點針對仿真引擎所涉及的仿真控制、時間管理、數(shù)據(jù)交互和模型調(diào)度等內(nèi)容進行深入研究,提出一套仿真引擎運行策略,即面向活動和事件的柔性混合仿真控制策略、基于標準時間的仿真時間推進和模型同步策略、基于消息中間件的動態(tài)數(shù)據(jù)交換策略、“仿真引擎+行動模型組件”的管理調(diào)度策略,力求從機制原理方面對仿真引擎運行進行系統(tǒng)設(shè)計,有效解決仿真實驗過程中對各類對象、資源、數(shù)據(jù)和模型的生成、維護、管理、調(diào)度和運算問題,為更加深入地開展聯(lián)合作戰(zhàn)仿真實驗仿真引擎研究提供借鑒,為聯(lián)合作戰(zhàn)仿真實驗仿真引擎的高效運行提供技術(shù)和方法支撐。
仿真控制策略是對仿真模型進行控制和處理的基本指導(dǎo)原則和總體方法,決定了仿真進程的控制邏輯和仿真時間的推進機制,是仿真引擎運行的基礎(chǔ)。
聯(lián)合作戰(zhàn)仿真實驗中的仿真過程屬于離散事件仿真范疇,仿真引擎的仿真控制策略應(yīng)遵循離散事件系統(tǒng)仿真的基本原則和規(guī)律。目前,離散事件系統(tǒng)仿真的控制策略主要有三種,即面向事件調(diào)度策略(Event Scheduling)、面向活動掃描策略(Activity Scanning)和面向進程交互策略(Process Interaction)。這三種控制策略各有優(yōu)缺點,在各自不同應(yīng)用領(lǐng)域能夠較好地實現(xiàn)仿真控制。但是,聯(lián)合作戰(zhàn)仿真實驗涉及的實體繁多、事件復(fù)雜、活動頻發(fā),仿真引擎需要支持大規(guī)模復(fù)雜作戰(zhàn)問題的實時仿真??紤]仿真引擎的適用性、實時性和可擴展性,采用單一控制機制無法滿足不同層級、不同規(guī)模的仿真實驗需求。為了較好解決這一問題,本文在已有方法的基礎(chǔ)上,對仿真控制機制進行了柔性化處理,設(shè)計了一種更加靈活的面向活動和事件的柔性混合仿真控制策略。
事件和活動是仿真引擎運行的基本組成,確定性事件引發(fā)事件例程,條件事件則通過活動例程加以實現(xiàn),兩者共同完成對仿真時間的推進。該策略將影響系統(tǒng)或?qū)嶓w狀態(tài)變化的確定性事件和條件事件分別進行處理。對于在某一時刻必然會發(fā)生的可以預(yù)知的確定性事件單獨列出,用于實時反應(yīng)系統(tǒng)的變化規(guī)律;對于無法預(yù)測的條件事件,則安排在相應(yīng)活動例程中進行處理,從而使引擎既有面向活動掃描策略邏輯上的簡潔、清晰,又有面向事件調(diào)度策略的高效、靈活。其邏輯控制過程如圖1所示。
圖1 面向活動和事件的柔性混合仿真控制策略
在活動例程的處理中,會伴隨條件事件的發(fā)生,從而改變系統(tǒng)或?qū)嶓w的狀態(tài),并因狀態(tài)的變化而開始另一項活動。因此,活動不能獨立地確定系統(tǒng)推進的時間,但其存在又表現(xiàn)為一個時間過程,是與時間相關(guān)的。在仿真推進時,推進時鐘通常是通過確定事件的發(fā)生時刻來確定下一個推進時刻。此時,對活動例程的掃描,應(yīng)根據(jù)當(dāng)前時刻和未來時刻確定掃描總時間,并將這個時間段細化成若干個迭代周期(時間步長),按此時間步長周期地掃描各個實體的不同活動例程,以使模型運算的結(jié)果具有一定的平滑性和連續(xù)性。迭代周期的長短,可根據(jù)實體運算精度的要求、系統(tǒng)運行速度的情況等因素綜合考慮,由活動模型本身來決定其迭代周期的大小,引擎加載模型時再通知引擎,引擎將按這個周期來循環(huán)調(diào)度該活動模型。
在實際運行中,仿真引擎通過時間推進、模型調(diào)度、事件管理等協(xié)同完成仿真控制。時間推進,用于記錄仿真的時間進程,確定下一事件開始發(fā)生的時刻,并維護掃描活動時的掃描迭代周期。模型調(diào)度,用于對事件例程和活動例程的定義和調(diào)用,主要是實現(xiàn)對實體行為與事件例程、活動例程的匹配對應(yīng),在事件和活動與實體之間搭起了一座橋梁,以使執(zhí)行例程通過實體行為來實現(xiàn)。事件管理,用于對事件序列的增加、刪除、檢索、存取等管理,主要是把將要發(fā)生的事件的屬性如事件類別、發(fā)生時間和發(fā)生的優(yōu)先級權(quán)數(shù)等,合成完整的事件描述并插入事件表中。
時間是協(xié)調(diào)、同步各種實體對象的重要依據(jù),是引擎運行和交互的基礎(chǔ)。仿真引擎對作戰(zhàn)過程的仿真,實質(zhì)上是以時間尺度來揭示作戰(zhàn)的規(guī)律。
在理想的仿真處理中,引擎以一定的時間步長向前推進,并在這個時間段內(nèi)處理所有發(fā)生的事件和活動。而現(xiàn)實中,事件或活動在每個時間步長內(nèi)分布是不均勻的,如果我們使用天文時間來衡量每個步長時間,仿真進程就會表現(xiàn)出很明顯的“抖動”。系統(tǒng)通常根據(jù)仿真時間邏輯地分割仿真過程,這樣仿真時間與天文時間就不能保證嚴格的線性關(guān)系。仿真引擎如果運用該方式產(chǎn)生和維護整個仿真進程內(nèi)統(tǒng)一的作戰(zhàn)時間,顯然不能滿足諸如模擬對抗等綜合性的仿真實驗需要。依據(jù)我們的要求,引擎要能夠與外圍系統(tǒng)一體化運行,它們之間必須有一個統(tǒng)一的、科學(xué)合理的、技術(shù)可行的時間標準。因此,為解決上述難題,本文提出了基于標準時間的仿真時間推進機制。
該機制的基本思想是:在仿真引擎外設(shè)立一個專門的標準時間發(fā)生器,該發(fā)生器將嚴格以天文時間為依據(jù)產(chǎn)生具有嚴格線性關(guān)系的作戰(zhàn)時間,再由時統(tǒng)服務(wù)向位于不同計算機上的時統(tǒng)客戶服務(wù)發(fā)布標準時間,時統(tǒng)客戶服務(wù)本身也是一個時間源,它接收標準時間后將以標準時間為依據(jù)進行校準和同步,以維護本機時間與標準時間的一致性,各引擎和其他系統(tǒng)通過標準訪問接口向本機的時統(tǒng)客戶服務(wù)請求標準時間。
該機制由標準時間源、實驗進程控制、時統(tǒng)服務(wù)、時統(tǒng)客戶服務(wù)和仿真引擎等模塊協(xié)同實現(xiàn),如圖2所示。其中,標準時間源是標準時間發(fā)生器,負責(zé)產(chǎn)生準確客觀的物理時間信息,它可以是某臺計算機的機器時間,或網(wǎng)絡(luò)內(nèi)的某個時間服務(wù)器,或GPS、原子鐘等高精度物理時鐘。實驗進程控制負責(zé)設(shè)定實驗內(nèi)容、仿真時間步長、起始仿真時間等參數(shù),控制仿真實驗的開始、暫停、繼續(xù)、停止、再現(xiàn)等,將控制信息傳送給時統(tǒng)服務(wù)。時統(tǒng)服務(wù)接收到實驗控制信息和標準物理時間后,根據(jù)網(wǎng)絡(luò)情況進行時間校準和同步,產(chǎn)生統(tǒng)一的天文時間和仿真時間,并在整個環(huán)境內(nèi)進行統(tǒng)一發(fā)布。位于終端的時統(tǒng)客戶服務(wù)接到時統(tǒng)服務(wù)發(fā)布的信息后,進行時間校準,以保證其所維護的時間與標準時間同步。仿真引擎通過時統(tǒng)客戶服務(wù)的標準接口取得時統(tǒng)信息,用時統(tǒng)信息同步其時間推進,驅(qū)動引擎按標準時間的節(jié)奏進行迭代計算,從而推動仿真實驗活動進行。
圖2 基于標準時間的仿真時間推進機制示意圖
從圖2中可以看出,標準時間源解決了時間來源的科學(xué)合理問題;實驗進程控制解決了仿真實驗進程統(tǒng)一控制問題;時統(tǒng)服務(wù)和時統(tǒng)客戶服務(wù)解決了不同時間機制之間的轉(zhuǎn)換、時間校準和標準時間發(fā)布問題;引擎解決了模型時間和標準時間的同步問題。采用該機制,能夠?qū)崿F(xiàn)位于不同地域的不同計算機上的仿真時間科學(xué)合理和高度一致,并且實現(xiàn)了仿真模型與總控的同步運轉(zhuǎn)。該機制運用于模擬對抗等仿真實驗,能夠?qū)崿F(xiàn)實驗系統(tǒng)運行與實驗部隊行動保持高度一致,有效解決了仿真實驗過程中引擎虛空間與部隊行動實空間的協(xié)調(diào)一致。另外,該機制采用了獨立的時統(tǒng)服務(wù)架構(gòu),保證了時統(tǒng)服務(wù)在接收、轉(zhuǎn)換、發(fā)布和使用時間等過程不受其他事件影響,具有更好的準確性、實時性和一致性。
模型時間的同步,是指在進行仿真運算處理時,模型時間要與標準時間相一致。由于模型的處理邏輯已從仿真引擎分離出去,每個模型的時間步長是不統(tǒng)一的,是模型根據(jù)自身的精度要求自定義的,因此模型時間不等于引擎仿真時間,各個模型的模型時間也可能不同。模型時間與引擎的仿真時間有以下關(guān)系:
模型時間=仿真時間+Δ模型步長+負載修正
式中,仿真時間是指由引擎提供給模型的仿真時間;Δ模型步長是模型自定義的迭代步長,它是一個常量;負載修正是由引擎提供的時間修正值,引擎在運行時會監(jiān)控模型的運行負載情況,以保證模型每個計算周期內(nèi)均能在指定的時間完成,當(dāng)模型某個周期運算時間過長,其負載過大,仿真引擎將記錄本周期的時間延遲,并在下一周期進行補償修正,這樣確保模型仿真時間的連續(xù)性,同時也保證模型時間與標準時間的一致性。
數(shù)據(jù)是仿真引擎各部分聯(lián)通與交互的基礎(chǔ)和條件。數(shù)據(jù)交互管理,就是仿真引擎在運行時,對數(shù)據(jù)的適時獲取、調(diào)用、傳送的方法,目的是實現(xiàn)數(shù)據(jù)的合理組織、有效管理、高效使用,并為模型提供標準化的數(shù)據(jù)資源交互接口。根據(jù)數(shù)據(jù)在仿真引擎運行過程中的相對穩(wěn)定性,可以分為靜態(tài)數(shù)據(jù)交互管理和動態(tài)數(shù)據(jù)交互管理兩類。
靜態(tài)數(shù)據(jù)是指在仿真引擎運行過程中相對不變的數(shù)據(jù),數(shù)據(jù)具有一定的穩(wěn)定性。這些數(shù)據(jù),從實驗開始到實驗結(jié)束,基本保持不變。因此,這些數(shù)據(jù)的交互管理,根據(jù)其使用的頻率,或使其常駐計算機內(nèi)存,或者以文件方式調(diào)用,或者在使用時才從數(shù)據(jù)庫讀取。通常對使用頻率高的數(shù)據(jù),預(yù)先將其讀入計算機內(nèi)存,并提供標準的通用訪問接口,通過這種方式可有效提高計算機CPU處理時對數(shù)據(jù)的響應(yīng)速度。仿真引擎采用這種預(yù)先將數(shù)據(jù)從服務(wù)器數(shù)據(jù)庫讀入本地計算機內(nèi)存的管理方式為模型提供數(shù)據(jù)資源,避免了在使用時通過網(wǎng)絡(luò)遠程頻繁查詢、調(diào)用服務(wù)器數(shù)據(jù)庫,以內(nèi)存空間換取了響應(yīng)時間,從而提高了系統(tǒng)的運行效率。
動態(tài)數(shù)據(jù)是指在仿真引擎運行過程中經(jīng)常要發(fā)生變化的數(shù)據(jù),如控制命令、實體行動信息、戰(zhàn)損戰(zhàn)果、情況報告等。這類數(shù)據(jù)通常用于參與系統(tǒng)應(yīng)用程序間的數(shù)據(jù)交互,需要實時獲取、快速處理和適時輸出。動態(tài)交互數(shù)據(jù)是仿真引擎運行時處理的主體,對其管理和調(diào)度直接決定引擎的反應(yīng)速度和靈敏度。在應(yīng)用中,我們采用基于JBossMQ消息中間件的方式來實現(xiàn)仿真引擎的動態(tài)數(shù)據(jù)交換。
消息中間件(Message Oriented Middleware,MOM)又稱為消息系統(tǒng),是一種特定的中間件,它利用高效可靠的消息傳遞機制進行系統(tǒng)無關(guān)的數(shù)據(jù)交換,并基于消息通信來進行分布式系統(tǒng)的集成。JBossMQ是基于開源項目JBoss的消息服務(wù)器,所開發(fā)的消息應(yīng)用符合JMS(Java Messaging Service,Java消息服務(wù))中定義的消息中間件標準接口,因此,基于JBossMQ的應(yīng)用程序具有很好的可移植性。消息中間件提供了一種引擎中多個應(yīng)用程序或模型之間通信的方式,各個應(yīng)用程序或模型運行過程中依賴消息系統(tǒng)發(fā)送消息進行動態(tài)數(shù)據(jù)交互,如圖3所示。
圖3 基于MOM的分布式動態(tài)數(shù)據(jù)交互
在應(yīng)用程序或模型傳送消息的過程中,消息數(shù)據(jù)被首先發(fā)送到一個消息隊列,由消息系統(tǒng)負責(zé)維護,在線傳遞給連接到消息隊列的消息接收方,或者以持久的方式保存,當(dāng)有接收方連接到消息服務(wù)器時再通知接收方。引擎提供給開發(fā)者傳遞消息數(shù)據(jù)的這種方式,稱為消息隊列運行機制。該方式不僅使引擎內(nèi)的各個應(yīng)用程序或模型間的數(shù)據(jù)實現(xiàn)了“松耦合”交互,構(gòu)建了動態(tài)、可靠和靈活的分布式系統(tǒng),而且為系統(tǒng)集成提供了較好的解決方案,實現(xiàn)了系統(tǒng)內(nèi)各仿真應(yīng)用的互操作。
引擎提供了兩種模式的消息服務(wù):一種是點對點的消息模式,另一種是主題的消息模式。
點對點消息模式為兩個客戶端之間建立消息隊列,使兩個客戶端之間通過隊列實現(xiàn)點對點的消息傳遞。一個客戶端作為消息生產(chǎn)者發(fā)送消息給消息服務(wù)器中的一個隊列(Queue),另一個客戶端作為消息消費者從這個隊列取出消息。點對點消息模式僅允許一個消息傳送給一個客戶,一個發(fā)送者將消息放在消息隊列中,接收者從隊列中取走并得到消息,消息就會在隊列中消失。通過引擎給模型所下達的各種控制指令便采用了點對點消息模式,以確保每一條指令均被可靠及時地處理。
主題消息模式又稱為發(fā)布/訂閱(Publish/Subscribe)模式,它是在消息中間件上建立一個主題(Topic),每個客戶端都可以向這個主題發(fā)送消息和接收消息。消息生產(chǎn)者向消息服務(wù)器中的一個消息主題發(fā)送消息,對這個消息主題感興趣的客戶端均可以訂閱這個消息主題,當(dāng)主題中存在數(shù)據(jù)時,所有訂閱過這個主題的消費者都會收到。引擎的仿真結(jié)果數(shù)據(jù)采用了主題消息模式統(tǒng)一向外部發(fā)布交互數(shù)據(jù)(可根據(jù)需要建立若干個主題),其他用戶則通過有目的的訂閱來“消費”這些仿真結(jié)果數(shù)據(jù)。
基于MOM的動態(tài)數(shù)據(jù)交互,相比于DIS(Distributed Interactive Simulation,分布式交互仿真),提供了更有效的數(shù)據(jù)傳遞機制,避免了數(shù)據(jù)廣播風(fēng)暴;相比于HLA(High Level Architecture,高層體系結(jié)構(gòu))和RTI(Run Time Infrastructure,運行時間支撐環(huán)境),提供了更加靈活和松耦合的系統(tǒng)架構(gòu),便于系統(tǒng)擴展和集成。
模型作為系統(tǒng)的相似抽象,是仿真引擎的數(shù)據(jù)來源和動作行為的依據(jù),是表現(xiàn)某一作戰(zhàn)行動規(guī)律、反映某一事物本質(zhì)的具體載體。仿真引擎的運行過程,就是對各類模型不斷合理調(diào)用和執(zhí)行的過程。引擎運行中的過程和結(jié)果數(shù)據(jù),就是各類模型相互作用、協(xié)同運算所產(chǎn)生的。由于軍事需求和實驗?zāi)康牡牟煌?仿真模型的設(shè)計經(jīng)常發(fā)生變化,明確模型與引擎之間的關(guān)系,建立不依賴于雙方的接口規(guī)范,以隔離模型和引擎的細節(jié)變化,達到仿真引擎復(fù)用的目的,是仿真引擎必須解決的問題,其中的關(guān)鍵就是引擎如何實現(xiàn)對各類模型的管理調(diào)度。
仿真引擎采用組件化方式管理調(diào)度仿真模型,能夠?qū)崿F(xiàn)仿真引擎與模型組件弱耦合,引擎通過定義好的接口來操縱和管理模型組件,而模型組件則可以單獨進行開發(fā)、編碼、編譯、調(diào)試、測試?;诮M件的仿真引擎架構(gòu)簡化模型如圖4所示,主要由仿真實驗系統(tǒng)仿真引擎、引擎接口、統(tǒng)一的若干組件接口和若干組件等部分組成。
圖4 基于組件的仿真實驗系統(tǒng)仿真引擎架構(gòu)
仿真實驗系統(tǒng)仿真引擎,負責(zé)實驗系統(tǒng)的整體運行,為組件提供運行環(huán)境和管理調(diào)度的功能。引擎的組件管理調(diào)度功能主要包括組件注冊和組件調(diào)度。組件注冊是指按照某種機制在系統(tǒng)中搜索已安裝組件,之后將搜索到的組件注冊到引擎中,并對其生成相應(yīng)的調(diào)用機制,如基礎(chǔ)功能組件等。組件調(diào)度是指引擎按照用戶的操作和系統(tǒng)的流程,安全地調(diào)用各組件所實現(xiàn)的功能。
引擎接口是組件使用引擎資源、調(diào)用引擎功能的通道,是引擎向組件提供服務(wù)的承諾,由引擎負責(zé)具體的實現(xiàn)。組件通過該接口可獲取引擎提供的資源和數(shù)據(jù),如系統(tǒng)句柄、系統(tǒng)數(shù)據(jù)等。
組件接口是引擎注冊和調(diào)度組件的通道,引擎通過組件接口調(diào)用組件所實現(xiàn)的功能,讀取組件處理數(shù)據(jù)等。組件只要按照組件接口進行實現(xiàn),就能夠注冊到系統(tǒng)中并能正確調(diào)度和運行。
組件是遵循組件接口的具體功能實現(xiàn)。組件實現(xiàn)什么以及怎么實現(xiàn),完全是組件自己負責(zé),但必須遵循接口的規(guī)定和約束。
基于該架構(gòu)設(shè)計的仿真引擎具有顯著的優(yōu)點,并且解決了引擎運行中各類模型的調(diào)度問題。首先,把復(fù)雜繁多的模型組件從引擎中剝離出去,降低了引擎的復(fù)雜度,使引擎更易于實現(xiàn)。其次,增強了引擎的擴展性,如果在系統(tǒng)應(yīng)用后需要對模型進行擴充和修改,就不必重新編譯整個系統(tǒng),只需要增加或修改相應(yīng)的模型組件。第三,有利于引擎的穩(wěn)定,各個功能模塊以組件形式在系統(tǒng)中駐留和運行,某個模塊的錯誤不會影響其他模塊的運行,更不會影響整個引擎的運轉(zhuǎn)。最后,有利于團隊開發(fā),模型組件與仿真引擎以松散的方式進行耦合,兩者在保持接口不變的情況下,可以獨立開發(fā)和發(fā)布。
1)作戰(zhàn)行動建模
作戰(zhàn)行動的主體是作戰(zhàn)實體。作戰(zhàn)實體是作戰(zhàn)系統(tǒng)中執(zhí)行作戰(zhàn)任務(wù)的作戰(zhàn)單位和保障單位,是兵力兵器結(jié)合的有機整體。作戰(zhàn)行動就是作戰(zhàn)實體的行動,是作戰(zhàn)實體為了完成某項作戰(zhàn)任務(wù),實現(xiàn)某種作戰(zhàn)意圖,而采取的具有作戰(zhàn)意義的舉動。作戰(zhàn)行動()可以用一個四元組來表示:
::=<,,,>
其中,表示行動的執(zhí)行實體;表示行動影響實體的集合,如果為空集,表示行動只影響戰(zhàn)場環(huán)境;表示行動效果集合,是實體采取行動后對自身、其他實體以及環(huán)境產(chǎn)生的所有影響;表示實體自身、其他實體和環(huán)境影響行動效果的因素集合。
為了達到仿真要求的建模分辨率,通常對作戰(zhàn)行動以仿真分辨率為依據(jù)進行分解。分解后的最小分辨率行動稱為基本行動,也稱為元行動。其特點:具有一定的作戰(zhàn)意義,是作戰(zhàn)實體可以獨立執(zhí)行的一個作戰(zhàn)行動;具有可描述性,能用相對固定的、結(jié)構(gòu)化的格式予以描述;具有獨立性,行動和行動之間沒有包含關(guān)系、從屬關(guān)系或上下層關(guān)系;具有原子性,行動的執(zhí)行過程要么成功,要么失敗,不會中間中斷執(zhí)行而其他后續(xù)行動繼續(xù)執(zhí)行?;谝陨戏治?我們對基本行動進行建模,設(shè)計了基本行動模型格式化描述。
<基本行動>::=<行動名稱><行動標識符><行動含義>[<行動優(yōu)先級>][<行動狀態(tài)>][<行動開始時間>][<行動結(jié)束時間>][<行動參數(shù)*>]+<行動過程模型>
2)作戰(zhàn)任務(wù)建模
作戰(zhàn)任務(wù)是作戰(zhàn)實體在作戰(zhàn)中所要達到的目標及承擔(dān)的責(zé)任,由一個以上具有作戰(zhàn)資源(人力、裝備、彈藥等)的作戰(zhàn)實體執(zhí)行相應(yīng)的作戰(zhàn)行動來實現(xiàn)。從仿真實驗角度講,作戰(zhàn)任務(wù)是由一個或多個基本行動組成的具有明確目標的作戰(zhàn)行動過程。在實際軍事活動中,部隊通過接受作戰(zhàn)任務(wù)來開展作戰(zhàn)行動;在引擎中,任務(wù)模型通過接口接收外部計劃指令或干預(yù)指令來驅(qū)動行動模型。作戰(zhàn)任務(wù)對主體、目標和執(zhí)行過程都進行了詳細規(guī)定,指出了由誰執(zhí)行、執(zhí)行的目標以及明確無誤的意圖要求,其內(nèi)容完整明確,且具有非常強的可操作性。
作戰(zhàn)任務(wù)的推進過程就是作戰(zhàn)行動的執(zhí)行過程,因此作戰(zhàn)任務(wù)與作戰(zhàn)行動之間具有一定的對應(yīng)關(guān)系。為了實現(xiàn)與基本作戰(zhàn)行動一一對應(yīng),依據(jù)仿真要求的建模分辨率,我們對作戰(zhàn)任務(wù)進行分解,分解后的最小分辨率任務(wù)稱為基本任務(wù),也稱為單元任務(wù)。其特點是:要有明確具體的執(zhí)行實體,是一個有具體行動意義的獨立過程,是可描述性的,能用相對固定的、結(jié)構(gòu)化的格式予以描述,要能夠落實到具體的基本作戰(zhàn)行動上?;谝陨戏治?我們對基本任務(wù)進行建模,設(shè)計了基本任務(wù)模型格式化描述,實現(xiàn)了基本任務(wù)模型與基本行動模型的一一對應(yīng)。
<基本任務(wù)>::=<任務(wù)標識><基本行動標識><優(yōu)先級><執(zhí)行實體><執(zhí)行狀態(tài)><開始時間><結(jié)束時間><參數(shù)*>
3)任務(wù)解釋模板
由上可知,作戰(zhàn)行動能夠進行組件化表示,可以設(shè)計為行動模型組件;作戰(zhàn)任務(wù)能夠采用任務(wù)模型進行規(guī)范化描述;作戰(zhàn)任務(wù)與作戰(zhàn)行動具有一定的對應(yīng)關(guān)系,任務(wù)可以轉(zhuǎn)化為若干順序執(zhí)行的基本行動過程。
以往仿真系統(tǒng)運行時,指揮人員向某個實體所下達的作戰(zhàn)任務(wù)(計劃指令或干預(yù)指令)是系統(tǒng)事先定義好的,具有明確的內(nèi)部格式,依據(jù)該格式在系統(tǒng)開發(fā)時進行硬編碼,來實現(xiàn)作戰(zhàn)任務(wù)到行動模型的解釋匹配和驅(qū)動執(zhí)行。這種硬編碼方式使仿真系統(tǒng)存在任務(wù)格式不能變動、任務(wù)條目不能增加、行動模型不能更改等諸多問題。為了解決“定格式+硬編碼+硬匹配”存在的問題,我們提出了“標準格式+編碼模板+自動匹配”的任務(wù)解釋模板解決方案,實現(xiàn)了模型與引擎的松耦合和引擎對模型的靈活調(diào)度。
任務(wù)解釋模板是關(guān)于基本任務(wù)關(guān)聯(lián)行動模型組件運算邏輯和規(guī)范的定義,是由一個或多個基本任務(wù)解釋模板組成的序列。其格式化描述為:
<任務(wù)解釋模板>:=<任務(wù)解釋模板標識><基本任務(wù)解釋模板*>
基本任務(wù)解釋模板是組成任務(wù)解釋模板的基本單元,格式化描述如下所示。引擎運行時將依據(jù)基本任務(wù)解釋模板生成能夠驅(qū)動行動模型的事件。
<基本任務(wù)解釋模板>::=<行動模型組件標識><優(yōu)先級><執(zhí)行實體標識><開始時間解釋表達式><結(jié)束時間解釋表達式><參數(shù)解釋表達式*>
仿真引擎的模型調(diào)度就是對作戰(zhàn)行動模型組件的依次掃描和執(zhí)行過程。通過將基本行動模型設(shè)計成“即插即用”的行動模型組件,運用任務(wù)解釋模板方案,在仿真實驗系統(tǒng)仿真引擎架構(gòu)指導(dǎo)下,設(shè)計了“仿真引擎+行動模型組件”的管理調(diào)度機制,其基本框架如圖5所示。
圖5 “仿真引擎+行動模型組件”管理調(diào)度框架
1)仿真引擎
仿真引擎由若干組件構(gòu)成,為其提供基礎(chǔ)功能服務(wù),并通過引擎接口將基礎(chǔ)功能傳遞到模型組件,模型組件與引擎以及模型組件之間的調(diào)度就是通過引擎接口和這些功能組件來完成的。
模型調(diào)度組件是引擎運行的發(fā)動機,用于提供模型組件注冊和調(diào)度管理功能,用于運行時協(xié)調(diào)各個組件,使引擎按仿真實驗的內(nèi)在規(guī)律運行。
時間管理組件用于實現(xiàn)引擎的時間推進和時間同步功能。
數(shù)據(jù)服務(wù)組件用于提供數(shù)據(jù)查詢、存取、調(diào)用和動態(tài)數(shù)據(jù)發(fā)布等服務(wù),實現(xiàn)對數(shù)據(jù)交互進行統(tǒng)一管理,為整個系統(tǒng)提供數(shù)據(jù)服務(wù)。
實體管理組件用于對作戰(zhàn)實體進行統(tǒng)一管理,向模型組件提供行動執(zhí)行實體、行動目標實體的屬性信息,以及對實體狀態(tài)變化進行管理等操作。
任務(wù)解釋組件用于將以計劃指令、干預(yù)指令形式表現(xiàn)的任務(wù)數(shù)據(jù)按任務(wù)解釋模板進行表達式解釋,生成可以觸發(fā)行動模型組件運行的消息事件序列。
日志服務(wù)組件用于提供引擎運行時日志信息的記錄和輸出。
2)引擎環(huán)境接口
引擎環(huán)境接口是行動模型組件使用引擎資源、調(diào)用引擎功能的通道,通過該接口,行動模型組件可獲取和操縱引擎的各種資源和功能,以滿足其仿真計算的需要。引擎環(huán)境接口與模型組件接口共同組成了引擎與模型組件之間各種消息交互的通道,其組成如圖6所示,這些接口由引擎的各個組件負責(zé)實現(xiàn),滿足了模型組件運行時仿真運算以及與引擎交互的需求。
圖6 引擎環(huán)境接口組成
3)模型組件接口
模型組件接口是引擎注冊和調(diào)度組件的通道,引擎通過模型組件接口調(diào)用組件,實現(xiàn)相應(yīng)功能。模型組件的設(shè)計和實現(xiàn)必須遵循該接口的規(guī)范,其結(jié)構(gòu)定義如圖7所示。
圖7 模型組件接口結(jié)構(gòu)定義
4)仿真引擎與模型組件的調(diào)度流程
模型組件的物理表現(xiàn)形式是Windows標準DLL,通常具有兩個加載接口,即創(chuàng)建新對象接口用于創(chuàng)建基本模型組件對象,驗證接口用于驗證基本模型組件對象的合法有效性。引擎啟動后,按模型集成組裝邏輯,引擎搜索到某一模型組件,通過組件加載接口,將符合規(guī)定的組件加載到引擎中,以實現(xiàn)仿真功能,具體流程如圖8所示。
圖8 仿真引擎與模型組件管理調(diào)度流程
為了滿足各種仿真實驗的不同需求,快速構(gòu)建并穩(wěn)定運行仿真實驗系統(tǒng),本文通過對仿真實驗仿真引擎運行中的仿真控制、時間管理、數(shù)據(jù)交互和模型調(diào)度等關(guān)鍵內(nèi)容進行深入研究,從基本思想、技術(shù)與方法體系以及設(shè)計、開發(fā)與實際運行等方面,提出一套滿足聯(lián)合作戰(zhàn)仿真實驗需求的仿真引擎運行策略,供仿真實驗系統(tǒng)設(shè)計和研發(fā)人員進行擴展完善,并可按實際需求實現(xiàn)不同目的的仿真實驗系統(tǒng)。