?

消息驅動的分布式方案推演引擎設計

2020-08-22 01:28田朝暉
江蘇科技信息 2020年20期
關鍵詞:步長引擎消息

田朝暉,陳 清,石 暢

(中國電子科技集團公司第二十八研究所,江蘇南京 210007)

0 引言

目前很多大型軟件系統采用引擎式設計,例如搜索系統的搜索引擎[1]、游戲系統的游戲引擎[2]、殺毒軟件的殺毒引擎等,它們都是將核心基礎功能抽離出來形成一個被稱為引擎的通用部件,實現組件式開發與集成、控制系統的運轉?;谝?,研發人員可以較為容易地制作相應的軟件產品,而不必把資源浪費在重復的基礎功能實現上。在推演軟件研究方面,一些較為合理的系統[3]、框架[4]設計方案被提出,文章以滿足指揮信息系統的需求[5]為目標,分布式設計參考數據-業務-協作架構[6]。

1 模型描述

推演模型中的車輛、飛行器、坦克等作戰單元模型都可視為對現實物體的模擬稱實體,記為o。

實體模型在推演中的某一時刻有具有它的狀態,使用實體屬性進行描述,將屬性值表示為時間函數記為p(t),其中t為推演時間,將實體狀態記為So(t),因此:

將模擬世界本身也視作一個實體并包含屬性值,將整個推演模擬世界記為W,世界狀態由世界本身屬性與所屬組成實體屬性組成,有:

Sw(t)是時間連續映射,世界狀態的第tn時刻取值Sw(tn)確定了該時刻的世界靜態信息,Sw(tn)的所包含的信息可唯一確定一個用于計算機屏幕顯示的靜態圖像。我們把Sw(tn)的值稱為邏輯幀,把由邏輯幀所確定的靜態圖像稱為顯示幀,一個邏輯幀為引擎對時間連續的世界狀態的一次采樣。

用一類消息表示導致實體狀態轉換的作用,在數學上對應一個映射,記為e,tn時刻作用于某實體的e使得實體值變換為tn+1時刻的相應屬性新值,故有:

將tn時刻的模擬世界消息全集記作E,有E={e1,e2,…,eN},于是引擎邏輯幀推進模型有:tn+1-tn的值稱為模擬推演時間步長記作Tstep,Tstep對應的真實時長稱為邏輯幀周期記作TL,兩個顯示幀之間的真實時長稱作顯示幀周期記為Ts。

推演引擎的核心功能為使模擬世界狀態按預定時間步長推進。

2 推演引擎構建

推演系統中各個模擬對象以預設的運動模型、行為模式與規則、預設條件等內容根據當前模擬時刻的實時狀態生成各類消息,通過消息中心驅動推演邏輯幀更新實現模擬世界狀態更新。

2.1 消息驅動與幀率控制

將消息封裝為對象,依據關注事情的不同將消息劃分為不同的類型進行相應地處理。在每一個循環開始,各組件由當前的邏輯幀為初始條件,根據各自的規則模式生成相關消息送入消息中間件,在消息分發與處理結果匯總過程中采用了分治策略的Fork/Join設計,使得處理過程支持并行計算,從而提升推演效率,推演引擎工作流程如圖1所示。

圖1 推演引擎工作流程

時間推進方式采用等模擬時間步長的方式,即每一輪推演循環使得推演模擬時間遞增一個預設步長來控制推演過程。即有tn+1=tn+Tstep,這使得推演時間值與現實時間脫離直接關聯,控制推演速率僅需要在推演循環中加入等待時長參數即可控制推演速率。因為顯示幀數據提取自邏輯幀,邏輯幀未變化時更新顯示幀沒有意義,因此顯示幀周期在max(20毫秒,Tstep)即可滿足視覺需求(假定顯示幀率上限設置為50 Hz)。幀率控制算法流程如下所示。

0.開始

1.設定邏輯幀周期為TL,設定顯示幀周期為Ts,定義變量t0=0,ts0=0;

2.更新邏輯幀獲取當前系統時間戳為t1,當t1-t0>TL時設置t0=t1,進入步驟4,否則進入步驟3;

3.推演循環線程等待TL-(t1-t0);

4.獲取當前系統時間戳為ts1,當ts1-ts0>Ts時更新顯示幀緩沖、設置ts0=ts1;推演幀內數據處理、消息分發、狀態更新等操作;

5.判斷推演是否結束,是則進入步驟6,否則回到步驟2;

6.結束。

2.2 分布式設計

圖2 推演引擎分布式結構

分布式結構如圖2所示,引擎的消息中間件需要維護全系統組件引用,因此各節點需要向消息調度模塊注冊自身,例如一個模擬飛行器實體組件可以簡單地向注冊服務注冊自身加入推演系統,參與收發消息。模擬實體組件采用獨立節點部署并注冊至消息調度與服務中心,通過遠程過程調用(RPC方式)獲取數據,通過消息系統更新狀態和發送信息。采用這種設計方式,可以配置化實現組件在系統的加入和移除,實現推演系統的可伸縮與模塊間低耦合。

針對推演引擎的基本特點,節點數據同步策略采用邏輯幀同步,使得系統在一個邏輯幀周期上實現最終一致性,即在邏輯幀開始,過程管理系統將邏輯幀分發至全節點,在邏輯幀結束過程管理系統接收全節點的數據,匯總處理生成下一邏輯幀,保證在一個新邏輯幀開始后全系統的狀態基準最終一致,具體同步過程如圖3所示。

圖3 推演引擎邏輯幀同步過程示意

3 結語

本文所述的方案推演引擎是推演系統中與推演案例無直接相關的基礎結構,它協調控制系統的各組件,根據預設規則及可配置的參數逐步推進模擬世界實體組態,其中狀態更新采用消息驅動,并在狀態演進處理中應用了分治算法使得系統支持并行計算,在功能劃分與部署上采用分布式設計,這使得系統具備可伸縮性與分布式并行計算的能力。這里僅分析研究了推演引擎的核心部分,實現完整的推演引擎還有很多內容有待研究。

猜你喜歡
步長引擎消息
基于Armijo搜索步長的BFGS與DFP擬牛頓法的比較研究
新海珠,新引擎,新活力!
基于隨機森林回歸的智能手機用步長估計模型
一張圖看5G消息
基于Armijo搜索步長的幾種共軛梯度法的分析對比
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
基于動態步長的無人機三維實時航跡規劃
消息
消息
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合