閆強強 何 偉
(陸軍炮兵防空兵學院 合肥 230031)
行動方案推演系統(以下簡稱“推演系統”)中的行動方案,由若干基本行動按時序組合而成。各個行動在時間上具有因果關系,前一行動的結果是后一行動的基礎。因此,高效擬制行動方案、合理控制行動序列運行,是推演系統不可或缺的核心功能,影響著推演系統的適用性和擴展性。
一般推演仿真引擎,只能解析演練方案中“任務”這一層次,除了通過任務參數影響任務執行以外,不能進一步定制任務,進而難以反映要素演練中個別任務的特殊性。為了實現行動任務可定制、體現要素演練中行動任務的特殊性,本文以任務狀態機為基礎,綜合運用時間步長法和事件高度法,設計一種基于行動規則控制仿真實體行動仿真的引擎。
1)規則配置靈活。把序列化的任務,分解為相對獨立的原子行動。每個規則由一個條件和若干個行動組成。根據仿真需要,操作人員從條件庫中選擇規則觸發條件、從行動庫中選擇適當的行動,繪制任務狀態圖。
2)行動模型可重用性強。各行動模型之間相對獨立,是完成相應行動的封裝。對各模型的修改,影響范圍主要限制在當前行動中,不會對其它行動效應帶來不良影響。
3)構建方法通用性好。規則中條件和行動的粒度小,都是通用的最小單位,可適用于不同的仿真場景。當出現特別的仿真需求,總體構建方法仍然保持穩定,不需要調整,可通過擴展條件庫和行動庫的方式加以適配。
為了使推演系統正確識別推演方案,必須將其進行形式化描述。
推演方案,由若干實體行動方案在時間維度上協調聚合而成(如圖1)。

圖1 推演方案模型
任務控制是使實體按照既定的任務流程,執行相應的行動模型,并進行臨機調整。任務流程直接表現為任務流程圖。為了使任務流程圖具備良好的可配置性特點,將任務劃分為若干個階段,每一個任務階段對應一個任務狀態。在某個狀態,實體受若干規則的約束。
每一條規則由條件和一系列行動組成。從而,以條件和行動為最小可配置單位,建立起全生命期的任務模型,并可把任務狀態圖作為形式表現。
就單個實體而言,實體行動方案,由若干有序的實體任務(簡稱“任務”)組合而成。
任務具有三個層次視圖:任務狀態、規則和行動。
用有限狀態機描述任務,一個任務具有多個狀態,但在某一時刻,只能處于其中一個狀態[1]。執行某任務的過程,即任務自初始狀態,在不同狀態之間轉換直至推進到結束狀態的過程;而且,任務結束狀態可以是任務執行成功的狀態,也可以任務執行失敗的狀態。任務可表示為
其中S為任務狀態集合,Ttrans為狀態集內不同狀態之間的轉移集,s0為起初狀態(任務啟動后,以此狀態開始任務執行,用于完成任務準備),Sfinal為任務結束狀態集(當任務進行到該集合中任一狀態,則表示任務結束,而且可反映任務完成的水平)。另外,s0∈S,Sfinal?S。
一個任務狀態內,存在一條或多條行動規則,具體運行哪條規則取決于相應條件是否成立。任務狀態表示為
每個任務狀態由若干規則ri(ri∈R,R為規則集)有序組合而成。
在某任務狀態內,實體執行滿足條件的規則。規則表示為
其中c為規則條件,A為若干原子行動(a1,a2,…,an)的有序組合,strans為此規則執行成功后轉移到的任務狀態。轉移集Ttrans={<r,strans>|r∈R,strans∈S}與中Ttrans一致。如果規則條件成立,則按次序執行規則內的若干行動。若存在多條規則的條件成立,則優先運行排序靠前的規則。
以上涉及的規則條件和原子行動,是描述實體任務的基礎,與采用面向對象思想建立的實體模型緊密相關。
基于任務狀態圖控制任務流程,其核心思想是以狀態圖為藍本、以任務當前狀態為基礎,結合實體狀態、戰場態勢和環境等影響因素,選擇規則、執行相應行動,并根據其結果處理任務狀態跳轉。一方面,狀態圖中的狀態數量、狀態規則和規則到狀態的跳轉關系均可定制,使任務具有良好的擴展性和可配置性;另一方面,任務狀態圖千變萬化,但任務的基本模型相對穩定,對基于狀態圖控制任務流程無影響。
基于以上抽象,控制多個實體協調一致地仿真推演方案,其關鍵是控制單個實體正解地判斷規則和執行原子行動(圖2)。

圖2 實體行動控制
規則條件的判斷,是規則執行的前提條件,可區分為原子條件和復合條件。
原子條件,從應用需求可分類六類:一是基于時間的條件(T型規則條件)。以事件發生時間為實體行為發生的充要條件。如到指定時間內開通有線、無線通信網。二是基于命令的條件(C型規則條件)。以上級下達的命令為實體行為發生的充要條件。這是適應大多數實體的規則條件。如接到上級火力打擊命令時,才對目標進行火力打擊行動。三是基于地域的條件(S型規則條件)。以事件發生的地理特征為實體行為發生的充要條件[2]。如光學偵察需要滿足現地與目標地的通視。四是基于信息的條件(I型規則條件)。以事件發展變化的標志性事件作為實體行為發生的充要條件。如前方發現我方兵力受損。五是基于請求的條件(Q型規則條件)。以下級實體發出的請求為實體行為發生的充要條件[3]。如偵察分隊請求進行油料保障,炮兵連請求進行彈藥補充。六是基于兵力的條件(F型規則條件)。以事件處置實體的兵力損耗為實體行為發生的充要條件。如根據兵力的毀傷程度判斷出該兵力當前的狀態。
復合條件由原子條件組合而成。
分為值比較和邏輯判斷兩類,都由操作數和操作符組成,其中操作數可為常量、變量和運行時變量。原子條件的邏輯值為真或假,可通過與或非邏輯關系組合成為復合條件。
以裝甲兵沖擊任務為例,行動集由若干具有優先順序的行動排列組成,每一個行動對應于實體模型中可執行的仿真行動模型(如圖3)。

圖3 裝甲兵沖擊任務
實體任務隊列,采用“先來先服務”模型,按照任務開始時間升序執行。當仿真時間已推進到下一任務的開始時刻,則停止上一任務、開啟下一任務。其流程如圖4所示。

圖4 任務隊列調試示意圖
整個作戰過程,由若干斷續的任務組成。每個任務由狀態機驅動實體執行具體的行動完成,執行時間和順序由規則確定。加載一個任務,實際是相應的任務狀態機啟動;任務的狀態對應著狀態機內的某個狀態。狀態機,從唯一確定的起始狀態開始運行,經歷若干中間狀態,轉入結束狀態。在某一狀態內,狀態機自動按順序測試狀態中的所有規則條件,并優先執行排序靠前且條件成立的規則。若規則執行過程中條件發生變化(即當前規則條件不成立),則轉入執行排序靠前且條件成立的規則。當某規則執行完畢且觸發跳轉,則任務狀態發生變更、狀態機轉入相應狀態。
狀態機所執行的行動,即為實體的行動,因此,實體模型應包括狀態機可能執行的所有行動。同時,由于某些行動執行過程中可能被中斷,而且行動恢復還須從中斷前的行動狀態繼續執行,所以實體還應該維護行動的執行狀態。
條件判斷是規則執行的前提,只有條件成立的規則才有被執行的可能。條件由基本操作符、操作數、邏輯組合操作符以及括號組成。基本操作符以比較操作為主,主要有“等于”、“小于”、“大于”、“不等于”、“不小于”、“不大于”、以及特殊的“點位于區域內”等。操作數是基本操作符比較的對象。只含有一個操作符的的條件,為原子條件。原子條件,通過“與”、“或”、“非”邏輯組合,形成復合條件。括號用于區分原子條例、改變邏輯組合優先級。原子條件和復合條件都可作為規則條件。

圖5 任務內部狀態調度示意圖
條件中的操作數有三類,第一類是普通常量,當條件形成時就不再變化;第二類是任務常量,根據任務不同而不同,需要在任務初始時進行初始化;第三是實體變量,與實體的某個屬性對應。在進行條件判斷時,需要三個步驟:一是把條件解析成條件樹,以便減小不必要的條件判斷;二是統一同一操作符下多個操作數類型;三是按照深度優先原則,判定條件樹的布爾值。具體到單個原子條件的判斷,先取得各操作數的當前值,再進行操作比較,即得出單原子條件的布爾值。
每一個任務狀態,由多個有順序的規則組成。規則越靠前,其執行優先級越高。一般情況下,當前任務狀態的最后一個規則是其主規則,其它規則都是執行此主規則過程中可能會出現的、需要處理的意外情況。每一個規則由一個規則條件和若干行動構成。規則選擇,即從任務狀態中選擇出第一個條件成立且未完成的規則。其中,判斷條件是否成立如前所述;判定規則是否完成,由規則內是否存在未完成的行動決定。
基于某種程序語言,實現與任務相關的每個行動,并與特定行動相識對應。利用反射機制,按照指定標識即可執行相應行動。以微軟.Net平臺為例,其反射機制,包含在System.Reflection命名空間中。通過反射,可以在運行時獲得.Net中每一個類型(包括類、結構、委托、接口和枚舉等)的成員,包括方法、屬性、事件以及構造函數等[4]。還可以獲得每個成員的名稱、限定符和參數等。.Net中的程序集是自描述的,反射則提供了封裝、模塊和類的對象。使用反射動態地創建類的實例將類綁定到現有對象,或從現有對象中獲取類,然后可以調用類的方法或訪問其字段和屬性。反射有很多對象,如 Assembly、FieldInfe、Propertylnfo、ParameterInfo等[5]。在仿真控制引擎實現中只用到了Propertylnfo對象,通過該對象可用來獲取如下的類似信息,如屬性的名稱、數據類型、聲明類型、反射類型和只讀或可寫狀態等,并獲取或設置屬性值。本系統是利用Propertylnfo對象來獲取和設置相應對象的相關屬性的。
任務參數影響任務執行過程和效果,可以反映任務的特殊性。因此,在執行每個任務圖之前,有必要把任務參數賦予相關實體。為了減少建模過程中的工作量,建立參數自動映射機制,其實施步驟有以下三節:一是編制任務圖時,確定參數序列;二是下達任務時,按次序設定參數序列;三是任務初始化時,利用反射機制將參數序列賦予對應實體屬性。
推演仿真引擎,控制時間推進,管理實體成員,調用實體模型、規則模型和交互模型,是推演系統的核心部件。為了實現行動任務可定制、體現演練任務的特殊性,本文設計了基于行動規則的仿真推演引擎,根據判斷規則條件、調用規則,使各實體按照任務狀態圖執行相應行動模型,同時以事件的形式進行交互,可以為方案推演提供技術支撐。