王凱旋,李 燁,薛晨琛,董 宇
(中國運載火箭技術研究院,北京 100076)
通過構建人工系統與實際系統同步進行大規模并行仿真計算,并采用平行執行的方式進行虛實互動,是采用平行系統方法解決復雜自適應系統不可準確預測、難以拆分還原和無法重復試驗等問題主流技術途徑。通過實際系統與虛擬系統協同演化、閉環反饋和雙向導引,實現對實際系統的目標優化是平行系統的重要特征。在平行系統中,核心問題之一是在“虛”和“軟”的平行空間內構建支持平行執行的高置信度仿真模型,以在極限加速條件下隨時完成狀態轉移和更新,并通過大規模高效并行及時得到全面、準確、可量化的復雜系統最優策略方案。因此,研究準確、高效、靈活的航跡仿真模型架構,實現飛行器航跡仿真計算對平行系統的支持,對面向飛行器的平行系統構建具有重要意義。
目前,與飛行器航跡計算相關的軟件研究較多,但大多集中在對航跡計算方法、航跡仿真和軟件實現方案等研究,針對航跡仿真模型架構設計的研究較少。在針對航跡計算的軟件實現研究中,大多以面向過程的方式實現航跡計算模型及軟件的設計,尚無面向平行系統運行所需的并行化使用模式及按照面向對象的方法基于狀態轉移模型對架構進行分析和設計的案例。在面向平行執行的仿真模型建模方面,通常較少考慮飛行器特性或飛行航跡本身的特點,使用常規的路徑搜索或航跡點規劃算法生成飛行約束完成計算,對面向平行系統并行航跡計算方面的研究較少。
由于飛行器航跡計算是關于時間的連續過程,且按照時間的方向順序轉移,當不考慮后續狀態對當前狀態的影響時,飛行器的飛行過程滿足無后效性,可以使用馬爾科夫決策問題(MDP)模型來描述離散化航跡計算問題,飛行器以時間間隔Δ動態改變其狀態,狀態轉移方程由飛行器運動學模型得到。為了控制飛行器的運動狀態,與不同狀態之間的變化相關的控制變量為,與飛行器本身相關的運動學參數為。根據飛行器運動學模型構建航跡計算模型的狀態轉移模型
=(-1,,)
因此,飛行器的飛行過程可以看作給定完備的環境模型的MDP問題,可使用狀態轉移的方法進行并行航跡計算。
航跡仿真模型按照飛行器運動學方法,使用積分迭代完成飛行器全程的航跡計算,模擬飛行器的連續飛行過程。為了使航跡計算過程能夠適應離散化狀態,需要對軟件進行針對性的架構設計,滿足不同狀態之間的狀態轉移;在平行系統執行過程中,由于存在不確定性和隨機性的影響,航跡計算模型要適應從任意狀態開始的并行計算需求。
按照面向對象的軟件設計方法,對飛行器航跡計算模型進行分析,將計算過程與計算數據分離,提取支持模型計算的類及各類之間的關系,構建基礎積分模型類、航跡積分模型類、航跡計算模型類和實體模型類,每個類負責各自的核心計算數據和核心計算功能,其架構如圖1所示。此架構為航跡數據管理、航跡計算管理、飛行狀態轉移機制設計、廣度優先并行化計算的設計與實現奠定了基礎。

圖1 模型架構Fig.1 Model infrastructure
基礎積分模型是進行積分迭代的基礎,其內部實現了具體的積分算法和積分機制,具體功能為:
1)初始化功能,初始化用于積分的變量,采用數組方式管理積分變量;
2)更新積分數據功能,更新用于積分迭代的積分變量和被積分量;
3)積分迭代功能,按照指定的步長和指定的計算模型完成對積分量的計算。
航跡積分模型包含基礎積分模型,是實現航跡積分及其控制的基礎。具體功能為:
1)積分計算模型定義功能,在積分計算模型中定義虛函數,預留航跡計算模型接口;
2)航跡積分起停判定功能,提供對是否停止積分進行判定的接口虛函數,作為航跡積分控制的起停條件;
3)積分計算控制功能,根據航跡計算中積分的起停條件,完成計算模型調用和積分模型更新。
航跡計算模型繼承于航跡積分模型,定義了航跡計算所需的基礎數據,實現與航跡計算相關的功能和流程控制,具體功能為:
1)飛行階段判定功能,根據當前狀態對飛行階段進行判斷,并按照飛行階段進行相關解算;
2)運動學計算功能,按照飛行器動力學方程,完成相關基礎計算;
3)數據采樣控制功能,按照一定采樣周期,完成對各類基礎數據的采樣;
4)輔助量計算功能,按照標準化航跡計算模型,完成對氣動、地理數據、坐標轉換矩陣等計算。
實體模型繼承于航跡計算模型,并對航跡積分模型和航跡計算模型中的虛函數進行實現。實體模型中包含了與氣動、動力、過載等相關的計算模型,是航跡計算模型的具體實現。實體模型可按照不同的功能、不同飛行階段構建各類實體模型,由于所有實體模型中的內部數據和方法均繼承于航跡計算模型,因此能夠通過對實現對航跡計算模型的管理,實現不同實體模型類的統一控制和調度。
根據航跡計算模型,按照在每個計算算法模塊中數據結構低耦合、高重用程度優先、每次迭代計算內不變的數據只計算一次的原則,對用于計算的飛行階段數據、初始坐標系數據、飛行任務數據、飛行器固有數據、飛行狀態數據進行梳理,確定其內容和初始化順序,如圖所2示。

圖2 數據模型體系Fig.2 Data model
各類數據按照基礎數據和派生數據的方式進行組織。基礎數據應用于航跡計算模型,屬于航跡計算的共性數據,派生數據應用于實體模型,繼承于基礎數據。
4.1.1 飛行階段基礎數據
飛行階段基礎數據用于控制各飛行階段不同的計算模型,飛行階段數據采用枚舉變量確定準備、啟動、起飛、飛行階段轉換等階段。
4.1.2 任務基礎數據
任務基礎數據用于明確的當前狀態和確定飛行任務目標,并給出由任務可確定的可復用數據,包括起飛位置、落點位置,并計算得到飛行方向和理論航程。
4.1.3 航跡固有基礎數據
飛行器固有數據為常量數據,包括飛行器各組成部分的質量、長度、面積等基礎數據。
4.1.4 初始坐標系基礎數據
根據起起飛位置、落點位置和地球模型計算地面直角系下固有的可復用的數據,地面直角系數據包括起飛點地心矢徑在初始坐標系下的分量、降落點地心矢徑在初始坐標系下的分量、地球旋轉角速度、起飛點的引力加速度各類與飛行位置無關的轉換矩陣,如哥式加速度矩陣等。
4.1.5 飛行狀態基礎數據
飛行狀態基礎數據用于記錄每個時間點的飛行狀態,包括飛行時間,基本積分量(包括質量、位置、速度、加速度),空間位置量(飛行高度、緯度、經度),姿態數據量(俯仰角、偏航角、滾轉角)及其他輔助量(當前航程、氣壓)。
4.2.1 派生數據定義
根據不同的實體模型,可繼承相關基礎數據進行擴充,例如可在飛行任務數據中增加導航點約束量,在飛行狀態數據中增加過載量等,具體擴充對應關系如圖3所示。

圖3 數據擴充體系Fig.3 Data extension system
4.2.2 派生數據注冊
在航跡計算模型中,聲明指向基礎數據的指針并完成基礎數據的動態初始化和注冊;在實體模型中,各派生數據可按照基礎數據父類類型進行重新注冊和替換,由航跡計算模型負責派生數據中基礎數據部分的賦值和操作,由實體模型完成派生數據中新增部分的賦值和操作,從而在不改變航跡計算模型結構的情況下實現了自定義數據擴充。
按照航跡積分模型、航跡計算模型和實體模型分治協作的方式,完成航跡計算。其中航跡積分模型負責航跡基礎積分模型初始化和積分起停控制;航跡計算模型負責飛行階段判別和各飛行階段解算控制;在實體模型中對虛函數進行實現,定義具體的計算模型并完成輔助計算量的解算。計算過程如圖4所示,其中“(v)”表示虛函數,“call”表示方法調用。

圖4 航跡計算流程Fig.4 Track calculation process
由于實體模型均繼承于航跡計算模型,與航跡計算的基礎數據完全兼容,因此在保證派生數據兼容的情況下,可以實現不同實體模型對象和同一實體模型對象由上一狀態到下一個狀態的完全平滑的狀態轉移。使用狀態轉移數據包來實現不同狀態之間的轉移,狀態轉移數據包以飛行階段數據、初始坐標系數據、飛行任務數據、航跡固有數據、飛行狀態數據為基礎,加入航跡積分模型中的積分變量,可一次性完成對基礎積分模型、航跡積分模型、航跡計算模型和實體模型的數據更新,從而保證轉移前后的兩個實體模型處于同一狀態,實現不同飛行狀態不同實體計算模型的飛行狀態轉移。飛行狀態轉移機制如圖5所示。

圖5 飛行狀態轉移機制Fig.5 Flight status transfer mechanism
傳統的航跡計算方式為按照深度優先的方式,可使用逐條計算的并行方法對所有航跡進行遍歷。因此使用傳統的并行模式進行平行執行會產生大量的重復計算,且無法進行階段迭代。傳統的航跡計算狀態轉移方式如圖6所示。

圖6 狀態轉移圖Fig.6 State transition diagram
由于實體模型以按照面向對象的方法進行設計,在任意狀態均可記錄當前狀態及決策參數,也可以任意狀態為起點進行計算,此架構能夠解決多階段迭代問題,避免大量的重復計算。針對并行化需求,本軟件架構可支持使用線程池或分布式技術構建多個實體模型對象容器,并由調度模型控制其進行相關并行計算,容器中可接收用于計算過程的實體模型對象,如圖7所示,模型對象的切換通過狀態轉移數據包及狀態轉移機制進行。

(a) 一階段計算

(b) 二階段計算圖7 并行計算過程Fig.7 Parallel computing process
由于采用了面向對象的軟件設計方法,并充分考慮多飛行階段狀態轉移的情況,推進式狀態轉移模型和反饋式狀態轉移模型可實現針對不同飛行階段的并行計算,在大規模平行執行中有顯著優勢。
本文面向平行系統,構建了基于狀態轉移模型的面向對象的航跡仿真模型架構,實現了數據與計算方法的分離,并通過狀態轉移機制實現了航跡計算的并行化和面向平行執行的廣度優先航跡計算,為航跡計算模型的架構設計提供有力的支撐;在此基礎上,完成了對航跡計算相關的狀態轉移類型的分析,為面向隨機起點的大規模并行航跡計算奠定了理論基礎。