王凱旋,李 燁,薛晨琛,董 宇
(中國(guó)運(yùn)載火箭技術(shù)研究院,北京 100076)
通過(guò)構(gòu)建人工系統(tǒng)與實(shí)際系統(tǒng)同步進(jìn)行大規(guī)模并行仿真計(jì)算,并采用平行執(zhí)行的方式進(jìn)行虛實(shí)互動(dòng),是采用平行系統(tǒng)方法解決復(fù)雜自適應(yīng)系統(tǒng)不可準(zhǔn)確預(yù)測(cè)、難以拆分還原和無(wú)法重復(fù)試驗(yàn)等問(wèn)題主流技術(shù)途徑。通過(guò)實(shí)際系統(tǒng)與虛擬系統(tǒng)協(xié)同演化、閉環(huán)反饋和雙向?qū)б?,?shí)現(xiàn)對(duì)實(shí)際系統(tǒng)的目標(biāo)優(yōu)化是平行系統(tǒng)的重要特征。在平行系統(tǒng)中,核心問(wèn)題之一是在“虛”和“軟”的平行空間內(nèi)構(gòu)建支持平行執(zhí)行的高置信度仿真模型,以在極限加速條件下隨時(shí)完成狀態(tài)轉(zhuǎn)移和更新,并通過(guò)大規(guī)模高效并行及時(shí)得到全面、準(zhǔn)確、可量化的復(fù)雜系統(tǒng)最優(yōu)策略方案。因此,研究準(zhǔn)確、高效、靈活的航跡仿真模型架構(gòu),實(shí)現(xiàn)飛行器航跡仿真計(jì)算對(duì)平行系統(tǒng)的支持,對(duì)面向飛行器的平行系統(tǒng)構(gòu)建具有重要意義。
目前,與飛行器航跡計(jì)算相關(guān)的軟件研究較多,但大多集中在對(duì)航跡計(jì)算方法、航跡仿真和軟件實(shí)現(xiàn)方案等研究,針對(duì)航跡仿真模型架構(gòu)設(shè)計(jì)的研究較少。在針對(duì)航跡計(jì)算的軟件實(shí)現(xiàn)研究中,大多以面向過(guò)程的方式實(shí)現(xiàn)航跡計(jì)算模型及軟件的設(shè)計(jì),尚無(wú)面向平行系統(tǒng)運(yùn)行所需的并行化使用模式及按照面向?qū)ο蟮姆椒ɑ跔顟B(tài)轉(zhuǎn)移模型對(duì)架構(gòu)進(jìn)行分析和設(shè)計(jì)的案例。在面向平行執(zhí)行的仿真模型建模方面,通常較少考慮飛行器特性或飛行航跡本身的特點(diǎn),使用常規(guī)的路徑搜索或航跡點(diǎn)規(guī)劃算法生成飛行約束完成計(jì)算,對(duì)面向平行系統(tǒng)并行航跡計(jì)算方面的研究較少。
由于飛行器航跡計(jì)算是關(guān)于時(shí)間的連續(xù)過(guò)程,且按照時(shí)間的方向順序轉(zhuǎn)移,當(dāng)不考慮后續(xù)狀態(tài)對(duì)當(dāng)前狀態(tài)的影響時(shí),飛行器的飛行過(guò)程滿足無(wú)后效性,可以使用馬爾科夫決策問(wèn)題(MDP)模型來(lái)描述離散化航跡計(jì)算問(wèn)題,飛行器以時(shí)間間隔Δ動(dòng)態(tài)改變其狀態(tài),狀態(tài)轉(zhuǎn)移方程由飛行器運(yùn)動(dòng)學(xué)模型得到。為了控制飛行器的運(yùn)動(dòng)狀態(tài),與不同狀態(tài)之間的變化相關(guān)的控制變量為,與飛行器本身相關(guān)的運(yùn)動(dòng)學(xué)參數(shù)為。根據(jù)飛行器運(yùn)動(dòng)學(xué)模型構(gòu)建航跡計(jì)算模型的狀態(tài)轉(zhuǎn)移模型
=(-1,,)
因此,飛行器的飛行過(guò)程可以看作給定完備的環(huán)境模型的MDP問(wèn)題,可使用狀態(tài)轉(zhuǎn)移的方法進(jìn)行并行航跡計(jì)算。
航跡仿真模型按照飛行器運(yùn)動(dòng)學(xué)方法,使用積分迭代完成飛行器全程的航跡計(jì)算,模擬飛行器的連續(xù)飛行過(guò)程。為了使航跡計(jì)算過(guò)程能夠適應(yīng)離散化狀態(tài),需要對(duì)軟件進(jìn)行針對(duì)性的架構(gòu)設(shè)計(jì),滿足不同狀態(tài)之間的狀態(tài)轉(zhuǎn)移;在平行系統(tǒng)執(zhí)行過(guò)程中,由于存在不確定性和隨機(jī)性的影響,航跡計(jì)算模型要適應(yīng)從任意狀態(tài)開始的并行計(jì)算需求。
按照面向?qū)ο蟮能浖O(shè)計(jì)方法,對(duì)飛行器航跡計(jì)算模型進(jìn)行分析,將計(jì)算過(guò)程與計(jì)算數(shù)據(jù)分離,提取支持模型計(jì)算的類及各類之間的關(guān)系,構(gòu)建基礎(chǔ)積分模型類、航跡積分模型類、航跡計(jì)算模型類和實(shí)體模型類,每個(gè)類負(fù)責(zé)各自的核心計(jì)算數(shù)據(jù)和核心計(jì)算功能,其架構(gòu)如圖1所示。此架構(gòu)為航跡數(shù)據(jù)管理、航跡計(jì)算管理、飛行狀態(tài)轉(zhuǎn)移機(jī)制設(shè)計(jì)、廣度優(yōu)先并行化計(jì)算的設(shè)計(jì)與實(shí)現(xiàn)奠定了基礎(chǔ)。
圖1 模型架構(gòu)Fig.1 Model infrastructure
基礎(chǔ)積分模型是進(jìn)行積分迭代的基礎(chǔ),其內(nèi)部實(shí)現(xiàn)了具體的積分算法和積分機(jī)制,具體功能為:
1)初始化功能,初始化用于積分的變量,采用數(shù)組方式管理積分變量;
2)更新積分?jǐn)?shù)據(jù)功能,更新用于積分迭代的積分變量和被積分量;
3)積分迭代功能,按照指定的步長(zhǎng)和指定的計(jì)算模型完成對(duì)積分量的計(jì)算。
航跡積分模型包含基礎(chǔ)積分模型,是實(shí)現(xiàn)航跡積分及其控制的基礎(chǔ)。具體功能為:
1)積分計(jì)算模型定義功能,在積分計(jì)算模型中定義虛函數(shù),預(yù)留航跡計(jì)算模型接口;
2)航跡積分起停判定功能,提供對(duì)是否停止積分進(jìn)行判定的接口虛函數(shù),作為航跡積分控制的起停條件;
3)積分計(jì)算控制功能,根據(jù)航跡計(jì)算中積分的起停條件,完成計(jì)算模型調(diào)用和積分模型更新。
航跡計(jì)算模型繼承于航跡積分模型,定義了航跡計(jì)算所需的基礎(chǔ)數(shù)據(jù),實(shí)現(xiàn)與航跡計(jì)算相關(guān)的功能和流程控制,具體功能為:
1)飛行階段判定功能,根據(jù)當(dāng)前狀態(tài)對(duì)飛行階段進(jìn)行判斷,并按照飛行階段進(jìn)行相關(guān)解算;
2)運(yùn)動(dòng)學(xué)計(jì)算功能,按照飛行器動(dòng)力學(xué)方程,完成相關(guān)基礎(chǔ)計(jì)算;
3)數(shù)據(jù)采樣控制功能,按照一定采樣周期,完成對(duì)各類基礎(chǔ)數(shù)據(jù)的采樣;
4)輔助量計(jì)算功能,按照標(biāo)準(zhǔn)化航跡計(jì)算模型,完成對(duì)氣動(dòng)、地理數(shù)據(jù)、坐標(biāo)轉(zhuǎn)換矩陣等計(jì)算。
實(shí)體模型繼承于航跡計(jì)算模型,并對(duì)航跡積分模型和航跡計(jì)算模型中的虛函數(shù)進(jìn)行實(shí)現(xiàn)。實(shí)體模型中包含了與氣動(dòng)、動(dòng)力、過(guò)載等相關(guān)的計(jì)算模型,是航跡計(jì)算模型的具體實(shí)現(xiàn)。實(shí)體模型可按照不同的功能、不同飛行階段構(gòu)建各類實(shí)體模型,由于所有實(shí)體模型中的內(nèi)部數(shù)據(jù)和方法均繼承于航跡計(jì)算模型,因此能夠通過(guò)對(duì)實(shí)現(xiàn)對(duì)航跡計(jì)算模型的管理,實(shí)現(xiàn)不同實(shí)體模型類的統(tǒng)一控制和調(diào)度。
根據(jù)航跡計(jì)算模型,按照在每個(gè)計(jì)算算法模塊中數(shù)據(jù)結(jié)構(gòu)低耦合、高重用程度優(yōu)先、每次迭代計(jì)算內(nèi)不變的數(shù)據(jù)只計(jì)算一次的原則,對(duì)用于計(jì)算的飛行階段數(shù)據(jù)、初始坐標(biāo)系數(shù)據(jù)、飛行任務(wù)數(shù)據(jù)、飛行器固有數(shù)據(jù)、飛行狀態(tài)數(shù)據(jù)進(jìn)行梳理,確定其內(nèi)容和初始化順序,如圖所2示。
圖2 數(shù)據(jù)模型體系Fig.2 Data model
各類數(shù)據(jù)按照基礎(chǔ)數(shù)據(jù)和派生數(shù)據(jù)的方式進(jìn)行組織?;A(chǔ)數(shù)據(jù)應(yīng)用于航跡計(jì)算模型,屬于航跡計(jì)算的共性數(shù)據(jù),派生數(shù)據(jù)應(yīng)用于實(shí)體模型,繼承于基礎(chǔ)數(shù)據(jù)。
4.1.1 飛行階段基礎(chǔ)數(shù)據(jù)
飛行階段基礎(chǔ)數(shù)據(jù)用于控制各飛行階段不同的計(jì)算模型,飛行階段數(shù)據(jù)采用枚舉變量確定準(zhǔn)備、啟動(dòng)、起飛、飛行階段轉(zhuǎn)換等階段。
4.1.2 任務(wù)基礎(chǔ)數(shù)據(jù)
任務(wù)基礎(chǔ)數(shù)據(jù)用于明確的當(dāng)前狀態(tài)和確定飛行任務(wù)目標(biāo),并給出由任務(wù)可確定的可復(fù)用數(shù)據(jù),包括起飛位置、落點(diǎn)位置,并計(jì)算得到飛行方向和理論航程。
4.1.3 航跡固有基礎(chǔ)數(shù)據(jù)
飛行器固有數(shù)據(jù)為常量數(shù)據(jù),包括飛行器各組成部分的質(zhì)量、長(zhǎng)度、面積等基礎(chǔ)數(shù)據(jù)。
4.1.4 初始坐標(biāo)系基礎(chǔ)數(shù)據(jù)
根據(jù)起起飛位置、落點(diǎn)位置和地球模型計(jì)算地面直角系下固有的可復(fù)用的數(shù)據(jù),地面直角系數(shù)據(jù)包括起飛點(diǎn)地心矢徑在初始坐標(biāo)系下的分量、降落點(diǎn)地心矢徑在初始坐標(biāo)系下的分量、地球旋轉(zhuǎn)角速度、起飛點(diǎn)的引力加速度各類與飛行位置無(wú)關(guān)的轉(zhuǎn)換矩陣,如哥式加速度矩陣等。
4.1.5 飛行狀態(tài)基礎(chǔ)數(shù)據(jù)
飛行狀態(tài)基礎(chǔ)數(shù)據(jù)用于記錄每個(gè)時(shí)間點(diǎn)的飛行狀態(tài),包括飛行時(shí)間,基本積分量(包括質(zhì)量、位置、速度、加速度),空間位置量(飛行高度、緯度、經(jīng)度),姿態(tài)數(shù)據(jù)量(俯仰角、偏航角、滾轉(zhuǎn)角)及其他輔助量(當(dāng)前航程、氣壓)。
4.2.1 派生數(shù)據(jù)定義
根據(jù)不同的實(shí)體模型,可繼承相關(guān)基礎(chǔ)數(shù)據(jù)進(jìn)行擴(kuò)充,例如可在飛行任務(wù)數(shù)據(jù)中增加導(dǎo)航點(diǎn)約束量,在飛行狀態(tài)數(shù)據(jù)中增加過(guò)載量等,具體擴(kuò)充對(duì)應(yīng)關(guān)系如圖3所示。
圖3 數(shù)據(jù)擴(kuò)充體系Fig.3 Data extension system
4.2.2 派生數(shù)據(jù)注冊(cè)
在航跡計(jì)算模型中,聲明指向基礎(chǔ)數(shù)據(jù)的指針并完成基礎(chǔ)數(shù)據(jù)的動(dòng)態(tài)初始化和注冊(cè);在實(shí)體模型中,各派生數(shù)據(jù)可按照基礎(chǔ)數(shù)據(jù)父類類型進(jìn)行重新注冊(cè)和替換,由航跡計(jì)算模型負(fù)責(zé)派生數(shù)據(jù)中基礎(chǔ)數(shù)據(jù)部分的賦值和操作,由實(shí)體模型完成派生數(shù)據(jù)中新增部分的賦值和操作,從而在不改變航跡計(jì)算模型結(jié)構(gòu)的情況下實(shí)現(xiàn)了自定義數(shù)據(jù)擴(kuò)充。
按照航跡積分模型、航跡計(jì)算模型和實(shí)體模型分治協(xié)作的方式,完成航跡計(jì)算。其中航跡積分模型負(fù)責(zé)航跡基礎(chǔ)積分模型初始化和積分起停控制;航跡計(jì)算模型負(fù)責(zé)飛行階段判別和各飛行階段解算控制;在實(shí)體模型中對(duì)虛函數(shù)進(jìn)行實(shí)現(xiàn),定義具體的計(jì)算模型并完成輔助計(jì)算量的解算。計(jì)算過(guò)程如圖4所示,其中“(v)”表示虛函數(shù),“call”表示方法調(diào)用。
圖4 航跡計(jì)算流程Fig.4 Track calculation process
由于實(shí)體模型均繼承于航跡計(jì)算模型,與航跡計(jì)算的基礎(chǔ)數(shù)據(jù)完全兼容,因此在保證派生數(shù)據(jù)兼容的情況下,可以實(shí)現(xiàn)不同實(shí)體模型對(duì)象和同一實(shí)體模型對(duì)象由上一狀態(tài)到下一個(gè)狀態(tài)的完全平滑的狀態(tài)轉(zhuǎn)移。使用狀態(tài)轉(zhuǎn)移數(shù)據(jù)包來(lái)實(shí)現(xiàn)不同狀態(tài)之間的轉(zhuǎn)移,狀態(tài)轉(zhuǎn)移數(shù)據(jù)包以飛行階段數(shù)據(jù)、初始坐標(biāo)系數(shù)據(jù)、飛行任務(wù)數(shù)據(jù)、航跡固有數(shù)據(jù)、飛行狀態(tài)數(shù)據(jù)為基礎(chǔ),加入航跡積分模型中的積分變量,可一次性完成對(duì)基礎(chǔ)積分模型、航跡積分模型、航跡計(jì)算模型和實(shí)體模型的數(shù)據(jù)更新,從而保證轉(zhuǎn)移前后的兩個(gè)實(shí)體模型處于同一狀態(tài),實(shí)現(xiàn)不同飛行狀態(tài)不同實(shí)體計(jì)算模型的飛行狀態(tài)轉(zhuǎn)移。飛行狀態(tài)轉(zhuǎn)移機(jī)制如圖5所示。
圖5 飛行狀態(tài)轉(zhuǎn)移機(jī)制Fig.5 Flight status transfer mechanism
傳統(tǒng)的航跡計(jì)算方式為按照深度優(yōu)先的方式,可使用逐條計(jì)算的并行方法對(duì)所有航跡進(jìn)行遍歷。因此使用傳統(tǒng)的并行模式進(jìn)行平行執(zhí)行會(huì)產(chǎn)生大量的重復(fù)計(jì)算,且無(wú)法進(jìn)行階段迭代。傳統(tǒng)的航跡計(jì)算狀態(tài)轉(zhuǎn)移方式如圖6所示。
圖6 狀態(tài)轉(zhuǎn)移圖Fig.6 State transition diagram
由于實(shí)體模型以按照面向?qū)ο蟮姆椒ㄟM(jìn)行設(shè)計(jì),在任意狀態(tài)均可記錄當(dāng)前狀態(tài)及決策參數(shù),也可以任意狀態(tài)為起點(diǎn)進(jìn)行計(jì)算,此架構(gòu)能夠解決多階段迭代問(wèn)題,避免大量的重復(fù)計(jì)算。針對(duì)并行化需求,本軟件架構(gòu)可支持使用線程池或分布式技術(shù)構(gòu)建多個(gè)實(shí)體模型對(duì)象容器,并由調(diào)度模型控制其進(jìn)行相關(guān)并行計(jì)算,容器中可接收用于計(jì)算過(guò)程的實(shí)體模型對(duì)象,如圖7所示,模型對(duì)象的切換通過(guò)狀態(tài)轉(zhuǎn)移數(shù)據(jù)包及狀態(tài)轉(zhuǎn)移機(jī)制進(jìn)行。
(a) 一階段計(jì)算
(b) 二階段計(jì)算圖7 并行計(jì)算過(guò)程Fig.7 Parallel computing process
由于采用了面向?qū)ο蟮能浖O(shè)計(jì)方法,并充分考慮多飛行階段狀態(tài)轉(zhuǎn)移的情況,推進(jìn)式狀態(tài)轉(zhuǎn)移模型和反饋式狀態(tài)轉(zhuǎn)移模型可實(shí)現(xiàn)針對(duì)不同飛行階段的并行計(jì)算,在大規(guī)模平行執(zhí)行中有顯著優(yōu)勢(shì)。
本文面向平行系統(tǒng),構(gòu)建了基于狀態(tài)轉(zhuǎn)移模型的面向?qū)ο蟮暮桔E仿真模型架構(gòu),實(shí)現(xiàn)了數(shù)據(jù)與計(jì)算方法的分離,并通過(guò)狀態(tài)轉(zhuǎn)移機(jī)制實(shí)現(xiàn)了航跡計(jì)算的并行化和面向平行執(zhí)行的廣度優(yōu)先航跡計(jì)算,為航跡計(jì)算模型的架構(gòu)設(shè)計(jì)提供有力的支撐;在此基礎(chǔ)上,完成了對(duì)航跡計(jì)算相關(guān)的狀態(tài)轉(zhuǎn)移類型的分析,為面向隨機(jī)起點(diǎn)的大規(guī)模并行航跡計(jì)算奠定了理論基礎(chǔ)。