于 堯,趙忠文,呂雅帥,郭皇皇
(航天工程大學(xué) 復(fù)雜電子系統(tǒng)仿真實驗室, 北京 101416)
雷達對抗仿真屬于分析仿真,一般需要對系統(tǒng)快速準確的評估,或?qū)Σ淮_定性因素進行探索,以便讓決策者或研究者從眾多方案中快速選擇最佳策略,因此對仿真效率的要求越來越高。隨著雷達對抗系統(tǒng)裝備間交互的規(guī)模越來越大,該問題越來越凸顯,現(xiàn)有文獻中,在對雷達對抗的小規(guī)模系統(tǒng)進行分析仿真時,仍采用基于HLA[1-6]分布式仿真技術(shù)以及時間步進機制,由于該架構(gòu)中聯(lián)邦成員內(nèi)的實體仍然是串行運行,同步和通信問題的仿真開銷影響較大,極大影響了仿真效率,因此為提高仿真效率,必須拋開這種仿真架構(gòu),采用適合高性能計算機計算的并行離散事件仿真 (Parallel Discrete Event Simulation,PDES)技術(shù)[7-13]。
隨著高性能計算機技術(shù)的發(fā)展,近年來國內(nèi)一些院校對并行離散事件仿真技術(shù)展開了研究,其中以國防科大[10-13]的銀河舒跑并行仿真引擎最為著名,而且在很多領(lǐng)域取得了很好的效果,但該引擎作為一種通用型的仿真引擎,目的是適應(yīng)更多類型的仿真應(yīng)用,一些機制的選擇并沒有結(jié)合雷達對抗的特點進行選擇,樂觀協(xié)議內(nèi)的很多算法都有各自適用的場景,單純從通用性并不能發(fā)揮出它最大作用。
因此本文分析了并行離散事件的樂觀策略在雷達對抗仿真中的特征,根據(jù)雷達對抗仿真的特征進行了樂觀策略的適配及優(yōu)化,并借鑒參考了國外著名的面向事件的離散事件仿真引擎GTW和ROSS的相關(guān)論文及相關(guān)代碼,設(shè)計了樂觀策略的運行流程及數(shù)據(jù)結(jié)構(gòu),并基于ROSS引擎驗證了其有效性。
在樂觀策略中,當邏輯進程不能確定其它邏輯進程發(fā)送的未處理事件消息是否會引起因果關(guān)系錯誤時,“樂觀”的假定不會發(fā)生因果關(guān)系錯誤,繼續(xù)事件的計算,當發(fā)生了因果關(guān)系錯誤時,能夠通過一定的機制恢復(fù)正確的計算,該策略主要由本地控制機制和全局控制機制兩部分組成。
1) 本地控制機制
本地控制機制是由系統(tǒng)中各個獨立的處理器執(zhí)行的,本地控制機制能夠使得并行仿真計算與串行仿真計算得到相同的結(jié)果,當多個處理器及邏輯進程在執(zhí)行事件計算發(fā)生因果關(guān)系錯誤時,該機制用來解決將錯誤的計算還原到一個正確的狀態(tài),然后再繼續(xù)事件計算。每個處理器由若干個邏輯進程組成,每個邏輯進程可看成是一個串行仿真,也就是說每個邏輯進程都包括一個“事件列表”的數(shù)據(jù)結(jié)構(gòu),該列表用來存儲該邏輯進程上所有已調(diào)度但尚未處理的事件。為保證在發(fā)生因果關(guān)系錯誤時能夠回退到原來正確的狀態(tài),事件隊列按照時戳的大小逐個處理事件后,并不從隊列中立即刪除,而是暫時保存在隊列當中,當發(fā)生回退時(例如掉隊事件到來),這些已處理事件必須按照新的時戳次序再次被處理。因此回退需要進行兩步操作:(a)消息回收,撤銷大于錯誤事件時戳的所有事件消息;(b)恢復(fù)狀態(tài)變量,將錯誤計算而修改的狀態(tài)變量恢復(fù)為先前某時戳正確的狀態(tài)變量。
2) 全局控制機制
全局控制機制,涉及到系統(tǒng)中的所有處理器,它是為本地機制提供需要內(nèi)存的機制,由于本地機制可能產(chǎn)生回退,需要保留大量的消息、反消息及狀態(tài)變量,這會占用大量的內(nèi)存,因此需要全局虛擬時間(Global Virtual Time,GVT)計算和化石回收,需兩步操作:(a)為了保證小于仿真時間T的已處理事件所保存狀態(tài)變量的內(nèi)存可以回收,確定一個回退操作的時戳下限,這個下限稱為全局虛擬時間(Global Virtual Time,GVT),即需要進行GVT計算。(b)只有時戳值嚴格小于GVT值的消息或狀態(tài)變量才能釋放其所占用的內(nèi)存,即化石回收。
本節(jié)首先從雷達對抗仿真的特點入手,分析樂觀策略在雷達對抗中的特征,明確樂觀策略如何與雷達對抗的特點進行結(jié)合以及需要從哪些地方進行優(yōu)化,同時借鑒了國外著名的面向事件的離散事件仿真引擎GTW和ROSS的相關(guān)論文及其代碼,然后設(shè)計了樂觀策略的運行流程及支持該策略的數(shù)據(jù)結(jié)構(gòu)。
雷達對抗仿真系統(tǒng)是以研究特定作戰(zhàn)任務(wù)為仿真目標,具有仿真實體繁多、交互關(guān)系復(fù)雜等特點。由于雷達對抗仿真屬于任務(wù)級仿真,體系對抗條件下,仿真效果更多地取決于裝備的典型作戰(zhàn)能力,因此仿真不需要實現(xiàn)裝備內(nèi)部具體處理機制,采用仿真粒度較低的功能仿真即可達到仿真要求。在雷達對抗仿真中,模型交互具有較強的因果關(guān)系,例如雷達偵察的信息一定會傳輸給決策模型,然后由決策模型再傳輸給干擾或武器打擊模型,而且有嚴格的先后次序,因此雷達對抗仿真呈現(xiàn)交互事件數(shù)量規(guī)模大、事件仿真粒度低,事件的因果關(guān)系較強且要求嚴格等特點。針對上述雷達對抗的特點,樂觀策略在并行仿真中體現(xiàn)為以下5個特征。
1) 大規(guī)模事件造成較大開銷
在仿真中由于模型的頻繁交互,將會產(chǎn)生大量的事件需要處理,同時還需要及時的化石回收,由于處理事件需要進行隊列檢查,這種頻繁的檢查將會造成較大的開銷。
2) 內(nèi)存需求比較大
由于仿真交互事件數(shù)量規(guī)模大,意味著系統(tǒng)將儲存更多的狀態(tài)變量,而事件的仿真粒度低將使得事件被更快地處理,這對于提高仿真效率自然是好事,但由于事件在LP上的處理過快,使得系統(tǒng)在每一次事件處理后都需要存儲狀態(tài)變量以及事件的消息和反消息,以便仿真在發(fā)生因果關(guān)系錯誤時能夠回滾,因此內(nèi)存的需求將會比較大。
3) 頻繁的GVT計算
由于內(nèi)存需求比較大,為得到足夠的內(nèi)存需要頻繁的進行化石回收,因此GVT的計算將會很頻繁,頻繁的GVT計算本身也增加系統(tǒng)的開銷。
4) “狗咬尾巴”現(xiàn)象
在雷達對抗裝備模型緊密交互的情況下,樂觀的執(zhí)行會使得更多錯誤計算和正確計算交織在一塊,由于每個事件的計算量相對小,如果出現(xiàn)錯誤計算,將會加快錯誤計算的傳播速度,很容易出現(xiàn)“狗咬尾巴”現(xiàn)象,即錯誤傳播速度大于撤銷錯誤的速度。
5) LP過度樂觀
樂觀策略對 LP 的推進沒有太多的限制,系統(tǒng)仿真可能會因為LP過度推進,導(dǎo)致各LP的局部仿真時鐘差異過大問題,即LP過度樂觀。在雷達對抗作戰(zhàn)應(yīng)用設(shè)計中,需要根據(jù)不同的應(yīng)用場景進行相應(yīng)的并行設(shè)計,如果設(shè)計不當或在并行度較低的情況下,很可能會出現(xiàn)LP過度樂觀,這很可能會發(fā)生在兩次GVT計算期間,由于其他LP的過度樂觀處理,耗盡了所有內(nèi)存,導(dǎo)致GVT永遠無法推進,不能通過化石回收進行內(nèi)存回收,而剩余內(nèi)存不足以滿足基本的串行仿真,導(dǎo)致仿真無法繼續(xù)執(zhí)行,這將給應(yīng)用開發(fā)人員帶來極大的困難。
樂觀策略的算法需要根據(jù)其在雷達對抗中的特征進行適配性分析,挑選適合雷達對抗仿真特征的算法,對于選擇的算法仿真中可能存在的問題進行了相應(yīng)的優(yōu)化。
1) 反向計算的適配
本地控制機制中的恢復(fù)狀態(tài)變量可采用反向計算的方法,狀態(tài)保存將會導(dǎo)致大量內(nèi)存被占用,而反向計算的實質(zhì)是增加計算開銷換取內(nèi)存性能,該方法對于內(nèi)存的占用比較小。隨著現(xiàn)有新興的硬件處理器速度和內(nèi)存/存儲速度之間的差異越來越大,反向計算的計算速度將快于內(nèi)存訪問,因此在某些應(yīng)用中反向計算的效率很高。但該方法需要仿真模型容易反向操作,否則其計算性能比狀態(tài)保存效果要差得多。
但在雷達對抗仿真中這將是容易克服的,反向計算是正向計算的逆過程,這里的正向計算并不是模型的所有計算,而只是使狀態(tài)改變的計算,在雷達對抗仿真中,會涉及到很多數(shù)學(xué)模型計算,但這些數(shù)學(xué)模型并不需要反向計算,只有涉及到狀態(tài)變量的改變才需要進行反向計算。進行反向計算需要注意兩點:(a)狀態(tài)變量才需要反向計算,(b)需要記錄條件分叉點。
(a)狀態(tài)變量的反向計算
在仿真中,不同事件的到來將會執(zhí)行不同的模型,而產(chǎn)生結(jié)果如果需要記錄則為狀態(tài)變量。如果直接將產(chǎn)生結(jié)果以事件的形式發(fā)出并不記錄,那么該結(jié)果就不為狀態(tài)變量,因為隨著事件被取消,該結(jié)果對系統(tǒng)將不產(chǎn)生任何影響。
(b)條件分叉點
雷達對抗仿真中多采用蒙特卡洛法,需要現(xiàn)根據(jù)數(shù)學(xué)模型計算出識別概率或命中概率等,然后生成隨機數(shù)判斷是否成功,這個判斷的過程可認為是反向計算中的條件分叉點。
在雷達偵察時,雷達負責(zé)計算可偵察的范圍及在該范圍內(nèi)不同位置處的識別概率,然后根據(jù)蒙特卡羅法確定能否識別,然后將識別的結(jié)果發(fā)送給干擾決策模型。在發(fā)生事件回退時,這里涉及到的計算都不需要進行狀態(tài)回滾,因為沒有狀態(tài)變量的改變。干擾決策模型在接收到偵察事件后,需要對目標進行型號匹配產(chǎn)生識別概率,然后判斷是否識別,若識別則分配合適的干擾資源進行干擾。這里發(fā)生狀態(tài)變量改變的地方只有干擾資源的減少,即干擾資源數(shù)-1,因此反向計算為干擾資源數(shù)+1,這個識別判斷就是條件分叉點的位置。
由于反向計算只需記錄最后的狀態(tài)點以及條件分叉點的信息,大大減少了內(nèi)存資源的占用,也省去很多為保證LP過度樂觀的內(nèi)存管理協(xié)議,從而減少系統(tǒng)的開銷。而且這種計算極其簡單,比起狀態(tài)保存,反向計算的優(yōu)勢極其明顯。
2) 反消息機制優(yōu)化
消息回收一般采用反消息機制,針對可能出現(xiàn)的“狗咬尾巴”現(xiàn)象,需要進行優(yōu)化處理,以加快反消息機制運行,從而減少錯誤的傳播。這里可以引入直接撤銷的方法,可以加快具有因果關(guān)系的錯誤消息的撤銷速度,這需要利用消息指針來進行操作。在雷達對抗仿真中,當模型(LP)計算產(chǎn)生并向其他模型發(fā)送了新事件時,新事件的指針將被保留在該事件的數(shù)據(jù)結(jié)構(gòu)中。每個事件包含著一定數(shù)量的指針變量,一般稱為因果關(guān)系指針,調(diào)度事件被保存在鏈接列表,這在模型存在緊密關(guān)系的處理將是有效的。例如雷達偵察模型產(chǎn)生的事件一定會調(diào)度決策模型產(chǎn)生決策事件,然后傳遞給武器打擊模型,生成襲擊事件,這個過程就可以使用直接撤銷。很顯然偵察模型的偵察事件會調(diào)度決策事件和襲擊事件,此時若需要將偵察事件回退,決策事件和襲擊事件將直接插入取消隊列中以撤銷他們,從而加快了事件消息的撤銷速度。但如果模型(LP)存儲在其他處理器時,需要處理器的指針能夠指向其他處理器的數(shù)據(jù),因此該技術(shù)需要在共享內(nèi)存機制下實現(xiàn)。
3) 事件處理的優(yōu)化
為減少大規(guī)模事件造成較大開銷,可通過事件批處理方法解決,將每處理一個事件前檢查隊列,變?yōu)槊刻幚鞡個事件前檢查取消隊列和消息隊列,如果需要處理的事件沒有B個,則將現(xiàn)有的事件處理后再進行兩個隊列檢查。但這種做法會延遲消息和反消息到達,可能會引起過多錯誤發(fā)生,因此B的值設(shè)置不宜過大。這種批處理方法將隊列檢查開銷分到多個事件處理中去,減少了大規(guī)模事件帶來的開銷。
4) 異步GVT計算的適配及優(yōu)化
同步GVT計算和異步GVT計算分別基于消息確認機制和共享內(nèi)存機制兩種,而頻繁的GVT計算會使得消息確認機制的內(nèi)存變得緊張,大大降低并行仿真效率,而共享內(nèi)存機制在這方面顯示出它的優(yōu)勢,它不需要消息確認機制同步及阻塞事件所帶來的額外內(nèi)存開銷,GVT計算期間也不需要停止事件的執(zhí)行,可以緩解仿真內(nèi)存緊張的問題并且提高事件處理的效率。但在兩次GVT計算期間,可能由于其他LP的過度樂觀處理,耗盡了所有內(nèi)存,導(dǎo)致GVT永遠無法推進,不能通過化石回收進行內(nèi)存回收,而剩余內(nèi)存不足以滿足基本的串行仿真,導(dǎo)致仿真無法繼續(xù)執(zhí)行,因此異步GVT計算需要對過度樂觀問題進行優(yōu)化。
在GVT計算中,需要中央控制器發(fā)送計算GVT的命令,并在所有處理器上報本地最小時戳后,中央控制器需要進行全局最小時戳的計算,并發(fā)送給其他所有處理器。為了防止某個處理器上的LP過度樂觀進行導(dǎo)致內(nèi)存不足,可通過不設(shè)定固定的中央控制器,每個處理器定期檢查事件數(shù)目。任何處理器都可以作為中央控制器,每個處理器在調(diào)度周期的開始階段檢查該處理器的已處理事件數(shù)(或占用的內(nèi)存量)是否需要進行GVT計算,如果需要則發(fā)起GVT計算。這樣一旦某個處理器上LP過度樂觀,則該處理器就直接發(fā)起GVT計算,從而解決LP過度樂觀導(dǎo)致內(nèi)存不足的問題。
5) 批處理化石回收的適配及優(yōu)化
全局控制機制中化石回收的方法可采用傳統(tǒng)的批量化石處理的方法,其中運動中化石收集技術(shù)雖然無需掃描映射到處理器的對象列表,但這種按“需要”化石收集,會造成更頻繁的GVT計算。自適應(yīng)技術(shù)是動態(tài)地調(diào)整內(nèi)存量的技術(shù),在回滾較多的條件下會有較高的性能提升,尤其是在一個因素連續(xù)作用的情況。雷達對抗系統(tǒng)由于大量裝備的交互,很容易產(chǎn)生回滾,但這種回滾引起的是多因素,自適應(yīng)技術(shù)很難適應(yīng),而且由于事件粒度小,自適應(yīng)技術(shù)本身的開銷相對而言太重了。而傳統(tǒng)的批處理化石回收相比之下,不會引起頻繁的GVT計算,化石回收的開銷也比較小,該方法比較適合雷達對抗仿真中應(yīng)用,但該方法仍有它的缺點。由于仿真中實體裝備或作戰(zhàn)兵力可以認為是由一個或若干個功能模型組成的,每一個功能模型可以看成是一個LP,因此在仿真中LP的規(guī)模是巨大的,由于每個LP都需要一個“事件列表”存儲該邏輯進程上所有已調(diào)度但尚未處理的事件,那么每次化石回收都需要訪問處理器的所有LP,訪問搜索將花費大量的時間。
針對批處理化石回收訪問處理器所有LP的已處理事件列表花費大量時間可作如下改進,可將一部分具有緊密聯(lián)系的LP共用一個已處理的事件列表,由于已處理事件列表的減少,使得化石回收的開銷大大減少,這種優(yōu)化也將減少存儲器的使用,尤其在LP數(shù)量規(guī)模比較大時,對減少內(nèi)存占用也起到一定作用。但這種改進可能會因錯誤回滾而降低性能,當一個LP或幾個LP發(fā)生回滾,可能造成這一組LP的已處理事件列表回滾,使得回滾事件增加,這就需要在應(yīng)用設(shè)計時,將交互作用緊密的模型(LP)聚合到一個已處理事件列表中,以減少因錯誤回滾而降低性能。
2.3.1 樂觀策略運行流程的設(shè)計
在并行離散事件仿真中,樂觀策略主要研究如何實現(xiàn)全局控制機制和本地控制機制,通過樂觀策略的適配性分析,確定本地控制機制采用反向計算方法與具有直接撤銷的反消息機制,全局控制機制采用優(yōu)化的異步GVT計算和傳統(tǒng)批量化石回收的方法。
在此需要定義幾個變量:PEmin變量負責(zé)記錄每個處理器發(fā)送到中央控制器的最小時戳值;GVT變量為全局虛擬時間變量;GVTFlag變量為全局標記變量,該變量相當于一個計數(shù)器,用來記錄未發(fā)送本地最小時戳處理器的數(shù)量;SendMin變量負責(zé)記錄處理器在GVTFlag設(shè)立后,發(fā)送PEmin之前所有發(fā)送消息的最小時戳值,該參數(shù)的設(shè)立是為了解決暫態(tài)消息問題[8],s變量為處理器上報標記變量,s=1說明該處理器已經(jīng)上報過本地最小時戳。E為event_q隊列未處理事件數(shù),B為批處理參數(shù)。
本節(jié)研究優(yōu)化后的樂觀策略處理器的運行流程的設(shè)計問題,其中并行機制的整體流程設(shè)計如圖1所示。在對消息事件、模型的數(shù)據(jù)初始化后,處理器正常處理初始化的事件。當某個處理器滿足GVT計算周期(一段時間或固定數(shù)量的事件),可選取該處理器作為中央控制器。它將設(shè)置一個名為GVTFlag的全局標記變量,GVTFlag的值為系統(tǒng)中處理器的總數(shù),其他處理器向中央控制器發(fā)送本地最小時戳值。所有處理器(包括中央控制器)都需要執(zhí)行以下的事件處理、事件回滾、化石回收以及向中央控制器發(fā)送本地最小時戳,唯一區(qū)別在于中央控制器需要額外計算全局最小時戳值GVT。每個事件處理循環(huán)開始前都需要檢查GVTFlag是否設(shè)立,在設(shè)計中需要先發(fā)送事件消息后再進行GVTFlag檢查,這是為了消除互斥假設(shè)[8],Sengmin負責(zé)記錄設(shè)立后發(fā)送的消息或反消息,發(fā)送消息的時候需要區(qū)分發(fā)送LP與接收LP是否在同一處理器,若在同一處理器上則直接插入該處理器的事件隊列中,若不在同一處理器,為了支持事件批處理,需要將消息插入其他處理器的message_q和cancel_q隊列中,然后當event_q滿足批處理參數(shù)時批量取出處理,若不滿足則先處理event_q隊列的事件再將message_q和cancel_q隊列的事件消息逐個取出處理。這期間可能發(fā)生事件回滾,若發(fā)生回滾,則需要進行消息取消和狀態(tài)回滾兩個步驟,其中在消息取消中需要檢驗是該消息是否具有因果關(guān)系,若有因果關(guān)系則按照直接撤銷的方法撤銷,若不存在因果關(guān)系,則直接發(fā)送反消息進行消息泯滅,然后再次進行事件處理。若GVTFlag檢查大于0,說明此時中央控制器負責(zé)GVT計算還未完成,若未上報本地最小時戳,則需要更新GVTFlag標記設(shè)立后發(fā)送消息的最小時戳Sendmin,并將message_q和cancel_q隊列的值插入后,本地最小時戳PEmin即為發(fā)送消息事件與待處理事件時戳的最小值,并發(fā)送給中央控制器,并令GVTFlag-1進行計數(shù)統(tǒng)計,然后正常進行事件處理及事件回退。若為中央控制器,需要判斷是否所有處理器都已上報本地最小時戳,若均上報則需要計算GVT值;若GVTFlag檢查不大于0或s不為0,說明其他處理器并未發(fā)起GVT計算或本地處理器已經(jīng)上報最小時戳,然后進行GVT值更新檢查,若GVT值更新了,則釋放時戳小于GVT值的消息和反消息的內(nèi)存,若GVT未更新,則進行事件批處理。
2.3.2 樂觀策略的數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)描述的是數(shù)據(jù)之間的關(guān)系,是對事件處理、本地控制機制及全局控制機制實現(xiàn)的邏輯支持,該結(jié)構(gòu)是在共享內(nèi)存系統(tǒng)中建立的。雖說共享內(nèi)存系統(tǒng)中所有內(nèi)存可被任意處理器訪問,但為了減少同步操作以及盡量訪問本地內(nèi)存,在仿真設(shè)計上需要將每個數(shù)據(jù)結(jié)構(gòu)分配給唯一的事件、邏輯進程以及處理器,這是因為同步操作以及非本地內(nèi)存引用要比本地內(nèi)存引用開銷大得多[7]。本文的樂觀策略需要以下5個數(shù)據(jù)結(jié)構(gòu)的支持,分別是數(shù)據(jù)存儲結(jié)構(gòu)、事件結(jié)構(gòu)、邏輯進程結(jié)構(gòu)(Logical Process,LP)和內(nèi)核結(jié)構(gòu)(Kernel Processes,KP)、處理器結(jié)構(gòu)(processor,PE),他們的作用及關(guān)系設(shè)計如下。
1) 數(shù)據(jù)結(jié)構(gòu)的作用
事件結(jié)構(gòu)是樂觀策略的最基本部分,事件按照時戳的順序處理,其中應(yīng)用程序數(shù)據(jù)保存在數(shù)據(jù)存儲結(jié)構(gòu)中。仿真開始前,系統(tǒng)需要初始化一些事件,這些事件處理后離開系統(tǒng)時將創(chuàng)建新的事件,所有的事件都需要該結(jié)構(gòu)創(chuàng)建或保存。LP結(jié)構(gòu)是事件處理的地方,在雷達對抗仿真中一個或若干個LP組成一個模型,當事件傳入LP后,LP處理消息事件并產(chǎn)生新事件,新事件再由其他LP執(zhí)行,這種循環(huán)形成了事件處理循環(huán)。KP結(jié)構(gòu)也是基于共享數(shù)據(jù)結(jié)構(gòu)設(shè)計的,KP結(jié)構(gòu)是為了實現(xiàn)批量化石回收優(yōu)化而設(shè)立的,聚合多個LP的已處理事件列表為一個共享已處理事件列表,由于KP的數(shù)量比LP少得多,降低了化石收集開銷,從而允許頻繁的化石回收。PE結(jié)構(gòu)作為整個數(shù)據(jù)結(jié)構(gòu)的執(zhí)行者,每個處理器會有若干個KP結(jié)構(gòu)和LP結(jié)構(gòu),他們的映射關(guān)系是:事件由LP執(zhí)行,若干個LP聚合到KP上,然后KP再映射到相應(yīng)的PE上,從而實現(xiàn)層次化處理。
2) 數(shù)據(jù)結(jié)構(gòu)的關(guān)系
其中事件的消息數(shù)據(jù)存儲在數(shù)據(jù)存儲結(jié)構(gòu)中,事件結(jié)構(gòu)通過*message指針進行消息數(shù)據(jù)的調(diào)用,省去了數(shù)據(jù)存儲結(jié)構(gòu)存儲信息到事件中的開銷,event_time是該事件時戳,事件的處理正式按照時戳由小到大執(zhí)行。*cur_event指針指向tw_event結(jié)構(gòu),獲取事件相關(guān)信息,表示此LP正在處理的當前事件, 事件通過*dest_lp與*src_lp指針指向發(fā)送該事件的LP和接收該事件的LP,記錄事件與LP的關(guān)系,事件由發(fā)送LP發(fā)送到接收LP上進行相應(yīng)的事件處理或回退,bf作為反向計算的條件分叉點,lp_state記錄了LP在添加新事件之前LP的狀態(tài)變量值,以便當發(fā)生因果關(guān)系錯誤時,LP可通過反向計算回到正確的狀態(tài)。
整個系統(tǒng)含有event_q(事件列表)、cancel_q(取消列表)、message_q(消息列表)、lp_list(處理器上的LP列表)、kp_list(處理器上的KP列表)、cause_list (事件引發(fā)的事件列表)6種列表,其中cancel_q、message_q用來存儲來自其他處理器傳來的消息或反消息,event_q用來存儲本處理器的未處理事件,處理完的消息通過*pevent_next指針插入KP結(jié)構(gòu)的pevent_q共享已處理事件列表,若某類事件的產(chǎn)生會直接產(chǎn)生其他因果事件,cause_list列表可存儲由該事件引發(fā)的因果事件,該列表服務(wù)于直接撤銷機制的。事件結(jié)構(gòu)通過*event _next、*cancel _next、*message_next、*cause_by_me指針調(diào)用處理器結(jié)構(gòu)中的event_q、cancel_q、message_q、cause_list列表,考慮到減少內(nèi)存分配和回收操作,每個事件在整個系統(tǒng)中只有一份內(nèi)存,通過指針記錄事件列表的位置。lp_list用來保存該處理器上調(diào)用LP順序的信息,kp_list用來保存該處理器調(diào)用KP順序的信息,LP通過pe_next指針指向其在PE的lp_list中的位置,從而處理器可以按照lp_list執(zhí)行。KP結(jié)構(gòu)中的kp_next指針指向其在PE的kp_list中的位置,在進行化石回收時,可對KP進行處理。
由于每個PE、KP、LP分別會被分配唯一的PE_id、KP_id、LP_id,初始化設(shè)計時需要將LP、KP映射到PE上,LP結(jié)構(gòu)中的twlp_pe指針指向為這個LP服務(wù)的PE,實現(xiàn)了初始化LP到PE的映射,twlp_kp指向為這個LP服務(wù)的KP,實現(xiàn)了多個LP綁定到KP上,KP結(jié)構(gòu)中的twkp_pe指向為這個KP服務(wù)的PE,實現(xiàn)了多個KP綁定到PE上。整個數(shù)據(jù)結(jié)構(gòu)的關(guān)系如圖2所示。
共享內(nèi)存機制進程之間的讀寫操作、同步問題、及鎖處理比較繁瑣難以實現(xiàn),而ROSS引擎是基于共享內(nèi)存機制實現(xiàn)的,文獻[7]證明該引擎的大規(guī)模事件測試有很好的效果。該引擎采用模塊化設(shè)計,整個引擎的代碼全部開放并支持個模塊的修改,支持狀態(tài)保存和反向計算機制,綜上所述雷達對抗仿真可基于ROSS仿真引擎進行修改設(shè)計,而不必重復(fù)開發(fā)或從頭開發(fā),降低雷達對抗并行仿真的開發(fā)難度。
現(xiàn)在Ubuntu Kylin 15.10系統(tǒng)下,基于ROSS仿真引擎建立導(dǎo)彈攻防的離散事件仿真模型,明確每個模塊的狀態(tài)定義及轉(zhuǎn)換邏輯,對各參數(shù)接口進行設(shè)計并做好初始化,對每個模塊進行C語言編程實現(xiàn)?,F(xiàn)對敵方分布的目標群的地面目標進行導(dǎo)彈襲擊,導(dǎo)彈可被目標群的雷達及干擾設(shè)備偵察以及干擾,分別采用128/256/384/512/640枚導(dǎo)彈對等額的目標進行轟炸,雷達探測范圍與干擾作用范圍均為2 400 m,探測概率為0.6,識別導(dǎo)彈信息概率為0.8,干擾概率為0.8,干擾資源總共為640個,導(dǎo)彈速度為900 m/s,將模型分別映射到處理器為四、八核的處理器上進行運行,并與串行仿真進行比較,比較結(jié)果如圖3所示,經(jīng)比較發(fā)現(xiàn)并行仿真中,四核處理器仿真效率比串行提高63.0%,八核處理器仿真效率比串行提高73.6%,均能夠較好地發(fā)揮并行仿真的能力,驗證了樂觀策略在雷達對抗仿真的有效性。
傳統(tǒng)的串行仿真、HLA仿真技術(shù)不能滿足雷達對抗的大規(guī)模作戰(zhàn)分析仿真要求,本文采用并行離散事件的樂觀策略,針對樂觀策略在雷達對抗仿真中具有事件開銷較大、內(nèi)存需求較大、GVT計算較頻繁、“狗咬尾巴”現(xiàn)象、LP過度樂觀的特征,進行反向計算,在反消息機制引入直接撤銷、在事件處理及化石回收方面均進行批處理優(yōu)化,并對異步GVT計算的過度樂觀進行了優(yōu)化,設(shè)計了樂觀策略的運行流程及數(shù)據(jù)結(jié)構(gòu),運用該策略對導(dǎo)彈突襲的例子進行仿真,仿真結(jié)果證明了樂觀策略在雷達對抗仿真中的有效性。
:
[1] 楊妹,楊山亮,許霄,等.面向高層輔助決策的作戰(zhàn)分析仿真系統(tǒng)框架[J].系統(tǒng)工程與電子技術(shù),2016,38(6):1440-1449.
[2] 王國勝,戚宗鋒,徐享忠.預(yù)警機雷達電子對抗系統(tǒng)作戰(zhàn)效能仿真分析[J].裝甲兵工程學(xué)院學(xué)報,2014,28(6):76-81.
[3] 李娟,張效民.基于HLA的仿真雷達對抗系統(tǒng)的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2015(6):33-36.
[4] YIN Q,DUAN B,KANG C,et al.Design of energy system and cyber system co-simulation based on HLA/agent[J].Automation of Electric Power Systems,2016.
[5] BRITO A V,BUCHER H,OLIVEIRA H,et al.A distributed simulation platform using HLA for complex embedded systems design[C]//Distributed Simulation and Real Time Applications.2015:195-202.
[6] 陳興凱,韓壯志,封吉平,等.基于 HLA的火控雷達網(wǎng)反偵察仿真系統(tǒng)的開發(fā)[J].計算機測量與控制,2014(1).
[7] CAROTHERS C D,BAUER D,PEARCE S.ROSS:a high-performance,low memory,modular time warp system[C]//Parallel and Distributed Simulation,2000.PADS 2000.Proceedings.Fourteenth Workshop on.IEEE,2000:53-60.
[8] FUJIMOTO R M,HYBINETTE M.Computing global virtual time in shared-memory multiprocessors[J].Acm Transactions on Modeling & Computer Simulation,1997,7(4):425-446.
[9] 王嫻,吳張永,牛驍,等.并行離散事件仿真系統(tǒng)時鐘管理及推進機制研究[J].信息技術(shù),2012(6):11-14.
[10]張穎星,姚益平.樂觀策略下并行離散事件仿真動態(tài)負載劃分優(yōu)化算法[J].計算機學(xué)報,2010,33(5):000813-821.
[11]解海濤,李軒涯,姚益平.并行離散事件仿真集成開發(fā)環(huán)境的設(shè)計與實現(xiàn)[J].系統(tǒng)仿真學(xué)報,2009,21(13):3929-3932.
[12]陳莉麗,姚益平,蔡潞.多核環(huán)境下負載均衡的并行離散事件全局調(diào)度機制[J].國防科技大學(xué)學(xué)報,2012,34(4):108-113.
[13]周維貴,姚益平.并行離散事件仿真對象調(diào)度的開發(fā)框架研究[C]//系統(tǒng)仿真技術(shù)及其應(yīng)用學(xué)術(shù)會議論文集.中國科學(xué)技術(shù)大學(xué)出版社,2009.
[14]趙嚴冰.雷達對抗偵察仿真訓(xùn)練中的信號產(chǎn)生方法研究[J].兵工自動化,2017(3):31-34.
[15]呂可,鄭威,趙嚴冰.雷達對抗偵察裝備作戰(zhàn)能力的ANP冪指數(shù)評估方法[J].火力與指揮控制,2016(12):59-63.