?

多實例并行機動仿真模型開發

2017-04-28 02:21趙長寬杭立杰
導彈與航天運載技術 2017年2期
關鍵詞:面向對象機動實例

何 麗,吳 艷,趙長寬,杭立杰

(1. 北京航天發射技術研究所,北京,100076;2. 東北大學,沈陽,110819)

多實例并行機動仿真模型開發

何 麗1,吳 艷1,趙長寬2,杭立杰1

(1. 北京航天發射技術研究所,北京,100076;2. 東北大學,沈陽,110819)

針對仿真系統中對機動模型的多實例并行需求,提出基于C++和Matlab混合編程的方式進行模型開發。就Matlab Function實現的功能函數在多實例運行過程中將出現的數據混用問題,在分析Matlab數據管理調用方式的基礎上,提出基于Map的數據管理方法實現不同對象實例數據,并完成了模型開發。

Matlab;機動模型;多實例;并行仿真

0 引 言

隨著武器系統實戰化要求的不斷提升,開展武器系統作戰效能評估的需求日益迫切,需要針對武器系統借助虛擬仿真的手段來評價其作戰效能[1~4]。而車輛的機動特性作為武器系統射前生存能力評估的重要內容,需要依托車輛機動仿真模型開展多種戰場環境下的效能仿真,作為武器系統作戰效能評估的重要支撐[5]。

裝備在實際作戰過程中并非單車作戰,而是多車分散作戰,為了迷惑敵人還需配備一定數量的佯動、示假車輛,因此在武器作戰效能評估仿真系統的單次仿真中需要多車同時執行多種作戰任務,要求機動模型具備單次仿真的多實例運行功能。然而由于機動模型運行過程需要基于大量的數值計算,對外提供姿態、位置、狀態等信息數據,對于機動過程中的核心算法采用了專用數值語言的Matlab進行開發??紤]模型的面向對象特性與擴展性,提出了基于C++和Matlab混合編程、采用Map數據管理方法的多實例并行仿真模型開發技術。

1 模型概述

機動模型作為武器運輸的支撐平臺,承擔著武器的運輸、打擊前的準備等重要任務。根據其在整個戰場環境中的使用模式,分析獲得與機動模塊存在交互的外部系統,如圖1所示。

根據車輛作戰使用流程,搭建了機動過程的概念模型,并明確了機動過程仿真模型的功能,具體包括:

a)根據想定信息和配置文件對模型的幾何屬性、質量屬性、行駛策略、路徑信息和運動參數進行初始化;

b)根據裝備在彎道等的通行能力,以行駛時間最小為目標,以車輛能通行為約束條件,進行路徑規劃;

c)根據概念模型中的行動模型,將裝備的行動分解為若干基本行動進行編碼,利用基本行動組合成各種指令,通過指令控制機動過程中裝備的行為;

d)輸出裝備的運動信息、姿態信息和狀態信息,便于其他模型的集成調用。

2 多實例仿真解決方案

武器作戰效能評估仿真系統采用面向對象的編程思想、基于 C++語言環境進行開發,由對象實例維護各自屬性與功能。因此機動仿真模型勢必也要采用面向對象的方式來滿足其與仿真系統的集成使用需求。

2.1 模型開發架構

由于機動模型在實時仿真過程中,需要進行大量的數值運算。而目前常用面向對象的編程語言 C++、C#、Java等對數值運算的支撐力度有限,較為高級的數值運算功能需要耗費大量的時間進行算法開發與功能驗證,而Matlab作為采用C語言編寫、重點關注數值計算的數學應用軟件,在數值運算算法上有明顯的優勢,且Matlab提供了與C++混合編程的豐富接口[6]。因此在模型開發之初確定了采用 Matlab、C++聯合的開發模式,其中Matlab負責實現模型的功能算法以及仿真模型的運算,C++負責實現模型與外部模型、上層框架的交互以及模型功能接口調度。模型開發架構如圖2所示。

圖2中,接口層與中間轉換層在C++中實現,功能執行層在Matlab中實現。接口層采用了面向對象的編程方式,將機動模型作為一個對象類,包含屬性與功能函數,可供外部仿真系統調用并實例化為多個對象執行不同的仿真任務;中間轉換層將外部仿真系統中接收的模型屬性參數、路徑、天氣等信息傳遞給Matlab功能執行模塊,供仿真解算過程中調用;功能執行層將根據從中間轉換層中接收到的信息類別,執行相應的機動與狀態轉換功能;數據層為機動模型的固有屬性配置文件,可按車輛的實際屬性信息修改配置文件。

2.2 風險預估

機動模型由仿真運行總線進行調度使用,在仿真系統初始化過程中分配機動模型數量與相關初始屬性設定,創建多個實例進行多任務仿真。對于面向對象的 C++在多實例仿真方面不存在調用以及數據管理問題,Matlab自身也有面向對象的編程機制[7],但針對C++與Matlab混合編程模式無法應用Matlab的面向對象特性,因此執行層還應依托功能函數(Function)的方式實現。

在Matlab Function中,為方便數據傳遞、避免功能函數中形式參數過多而導致參數不易管理,使用了大量的全局變量進行參數傳遞。Matlab運行機制為每啟動一次Matlab實例均會啟動一個進程,且各進程中的數據相互隔離,即全局變量在多個進程中是相互獨立的,不會存在數據混用的情況。但在單進程、多線程的運行模式下,各線程共用同一個全局變量,在多個實例運行時由于共用全局變量,使得模型在執行相應的機動任務時因無法隔離數據導致模型運行功能不正確。因此基于Matlab采用功能函數的方式在進行多實例并行仿真時的運行效果為:

a)多進程并行仿真(一個進程內運行一個模型實例)時,各模型數據正常,仿真模型正常運行;

b)多線程并行仿真(一個進程中運行多個模型實例)時,將出現模型數據混亂,所有模型數據一致,且運行數據異常。

實際作戰效能仿真系統包含了多進程、多線程的運行模式,因此在通過Matlab Function進行機動功能實現時,應重點解決多線程仿真運行過程中的數據隔離存儲與調用問題。

2.3 解決方案

利用非面向對象的Function方式實現多實例機動解算功能實現時,借鑒并行仿真時的獨有變量概念[8],尋求一種將各仿真實例中的參數進行隔離的方式。Matlab中數據可通過數組、結構體、containers.Map容器等多種方式進行管理。其中containers.Map容器可以將一個復雜的數據結構映射為一個簡單的數值或字符串,常用在組織大型數據的場合。Map通過key快速方便地查詢相應的值,其中key為唯一標識,當Map中存放了2個key相同的量,則后者會覆蓋/替換前者。因此多實例仿真時,可將不同對象使用過程中產生的參數變量存放在容器中,進行隔離維護,需要時取出,從而避免各對象參數混亂的情況。

綜合考慮后選擇通過 containers.Map管理參數的方式進行多模型并行仿真方案實施。其具體步驟如下:

a)在模型初始化階段(即對象創建時),建立Map容器,以模型唯一標識ID作為key值,管理該模型對應的全局變量集合;

b)每一個模型對象對應一個總的全局變量集合,通過結構體的形式存儲模型運行過程中的所有參數;

c)仿真解算過程中,通過模型ID獲取其對應的全局變量結構體,并從中取出需要的參數,參與仿真;

d)仿真解算完成后,更新結構體中被改變參數的信息,并將更新后的全局變量結構體存入Map容器中。

通過ID將各模型對象的屬性參數進行隔離,保證了仿真運行過程中數據的獨立性,實現過程簡單,并且有效解決了內存數據混用問題。Map容器中參數存放代碼示例如圖3所示。

3 機動模型開發

3.1 功能模塊開發

從機動模型與外部系統的交互調用需求分析,將機動模型分為初始化、輸入、解算以及輸出4大基本功能模塊,機動模型主要功能模塊及相應的子功能見表1,具體仿真運行時的使用流程如圖4所示。

表1 機動模型功能模塊及實現方式

續表1

3.2 實施效果

車輛機動仿真模型能夠模擬多種車輛在不同機動任務下的技術性能參數,具備隨機路徑規劃功能,提供實時平臺姿態、速度和通行情況等模型輸出。將多實例并行機動仿真模型加載至武器作戰效能仿真系統中進行集成測試,測試結果表明機動模型功能性能正常,并能有效地管理實例對象的獨有數據,實現了不同對象執行不同機動任務的需求。機動模型運行可視化效果如圖5所示,單車機動曲線如圖6所示。

4 結束語

本文針對武器系統作戰使用過程中的多實例并行仿真需求,利用C++與Matlab混合編程的方式,采用面向對象的編程思想構建了多實例并行機動仿真模型,提供不同任務剖面下車輛運動姿態、位置、狀態等信息,實現不同行駛策略、環境條件下車輛機動過程戰術技術性能分析,為分析車輛的生存能力提供必要的基礎性數據。

[1] 陳景亮, 朱一凡, 等. 導彈攻防對抗作戰效能仿真分析方法論[J]. 國防科技大學學報, 1999(1): 20-24.

[2] 邢清華, 劉付顯. 攻防對抗系統建模與仿真[J]. 計算機仿真, 2002, 19(5) : 12-14.

[3] 羅鵬程, 傅攀峰, 周經倫. 武器裝備體系作戰能力評估框架[J]. 系統工程與電子技術, 2005, 27(1): 1072-1075.

[4] 張亮, 趙振南, 王利, 等. 基于體系作戰效能的武器裝備體系評估[J].四川兵工學報, 2015, 34(3): 50-58.

[5] 斗計華. 艦空導彈武器系統攻防對抗作戰效能仿真研究[J]. 彈箭與制導學報, 2007(1): 290-293.

[6] 劉維. 精通Matlab與C/C++混合程序設計[M]. 北京: 北京航空航天大學出版社, 2008.

[7] 苗志宏, 馬金強. MATLAB面向對象程序設計[M]. 北京: 電子工業出版社, 2014.

[8] 劉維. 實戰MATLAB之并行程序設計[M]. 北京: 北京航空航天大學出版社, 2011.

Development of Parallel Multi-instance Mobile Model

He Li1, Wu Yan1, Zhao Chang-kuan2, Hang Li-jie1
(1. Beijing Institute of Space Launch Techology, Beijing, 100076; 2. Northeastern University, Shenyang, 110819)

Tomeet the objectives of parallel multi-instance model in simulation system C++ and Matlab hybrid programming to bulid mobile model is proposed. The problem of data confusion that appears in the model runs multiple instances which mobile based on Matlab Function is analysised. This paper suggests a way of Map-based approach to data management in function run.

Matlab; Mobile model; Multi-instance; Parallel simulation

V553.1

A

1004-7182(2017)02-0076-04

10.7654/j.issn.1004-7182.20170217

2016-09-26;

2016-11-30

何 麗(1984-),女,工程師,主要從事復雜系統仿真分析與虛擬試驗方向的研究

猜你喜歡
面向對象機動實例
GEE平臺下利用物候特征進行面向對象的水稻種植分布提取
基于深度學習與融合地形特征的黃土陷穴面向對象提取方法
基于機動數據的摩托化機動演訓組織效果評估
12萬畝機動地不再“流浪”
面向對象方法在水蓄冷PLC編程中應用分析
機動三輪車的昨天、今天和明天
從面向過程到面向對象思維方式的教學引導
完形填空Ⅱ
完形填空Ⅰ
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合