焦思涵



摘要:分布式仿真是研究分布式系統或者通過分布式計算對大規模復雜系統進行仿真的一項非常重要的技術。在分布式仿真中,仿真成員之間需要進行頻繁的數據通信,因此數據通信的性能對整個仿真的運行速度和性能將產生重要影響。在HLA的仿真系統中,聯邦是用來達到某一特定仿真目的的分布仿真系統。文章對分布式仿真技術進行了研究。
關鍵詞:分布式仿真技術;RTI;XML;仿真成員;數據通信 文獻標識碼:A
中圖分類號:TP391 文章編號:1009-2374(2015)18-0028-03 DOI:10.13535/j.cnki.11-4406/n.2015.18.015
1 分布式仿真概述
分布式仿真是研究分布式系統或者通過分布式計算對大規模復雜系統進行仿真的一種非常重要的技術。一方面,把分布在不同地理位置的仿真模型連接起來,組成一個仿真聯邦,共同完成仿真任務;另一方面,也可以把復雜的仿真計算分布在不同的計算機上并行地運行。分布式仿真主要應用于軍事、制造、娛樂、人員培訓等方面。由于供應鏈往往涉及不同地域的多個企業,分布式仿真也廣泛應用于供應鏈的建模和仿真。
我們使用基于HLA/RTI的分布式仿真的高層體系結構來實現仿真。在HLA的仿真系統中,聯邦是用來達到某一特定仿真目的的分布仿真系統,它由若干相互作用的聯邦成員構成,從而使跨平臺仿真變得更加容易。在跨平臺的仿真中,我們面對需要傳輸大量的帶有標識的數據的問題。為解決這個問題,我們提出了采用以DOM樹方式的XML文檔的方案來實現表現、保存和傳輸我們需要的仿真數據的解決方法。使用微軟的MSXML的DOM Parser的解決方案,通過Visual C++來進行XML的編程,主要使用了其中的Document接口,并將其與仿真系統的仿真前端結合在一起,完成仿真系統內大量的數據傳輸。采用了這種方式后,使得數據的格式和表達具有跨平臺的靈活性和獨立性。
在分布式仿真中,仿真成員之間需要進行頻繁的數據通信,因此數據的通信效率對整個仿真的運行速度和性能將產生重要影響。分布式仿真是研究分布式系統或者通過分布式計算對大規模復雜系統進行仿真的一種非常重要的技術。一方面,把分布在不同地理位置的仿真模型連接起來,組成一個仿真聯邦,共同完成仿真任務;另一方面,也可以把復雜的仿真計算分布在不同的計算機上并行運行。分布式仿真主要應用于軍事、制造、娛樂、人員培訓等方面。
仿真克隆是近幾年剛剛出現的一個新的仿真優化技術,目的是避免或減少仿真中的重復計算,從而提高仿真的執行效率和效能,提高仿真軟件的健壯性及仿真優化能力。其基本思想是,在仿真運行過程中,當系統的狀態達到某種條件,或者系統到達某個決策點而面臨決策的時候,仿真過程“克隆”自己,從而產生新的仿真,原有仿真及其克隆分別沿著不同的路徑同時繼續運行,探索和試驗不同的選擇、策略和情形(Scenarios)。本課題以分布式供應鏈為研究背景,在PETRI網矩陣模型的基礎上,研究基于HLA的分布式仿真的克隆技術,在HLA的分布仿真中采用XML文檔格式來實現帶標記數據的傳輸。取得的結果也是初步的,尚存在以下問題:
1.1 仿真成員的“克隆”
仿真成員通常是仿真程序,如何在需要克隆的時候,仿真成員復制自己,并使各個情形沿著不同的路徑運行,尚沒有一個較通用的解決方法。在這個成員的復制的過程中,需要獲取成員的全部的狀態數據,從而復制出相同的成員。在建立這種結構化的可標識的數據時如何采用XML的文檔格式。
1.2 仿真代碼的可重用性
仿真成員的互操作性和仿真代碼的可重用性是HLA的兩個重要目標,如何使現有仿真代碼不經修改即可支持克隆技術,其中的仿真成員的互操作需要大量的可標識的數據文檔,而仿真代碼的重用需要對仿真代碼的結構使用XML文檔進行標記等,尚需進一步研究。
1.3 計算量平衡問題
在分布式仿真中,如果參與仿真的計算機之間實現計算量平衡,可以有效減少等待時間。如何在不同的計算資源之間重新分配計算任務,如何用XML表示計算機的計算狀態等,也是一個非常重要的問題。
在分布式仿真中,仿真成員之間需要進行頻繁的數據通信,因此數據通信的質量和效率對整個仿真的運行效果和性能將產生重要的影響。筆者在本課題中采用XML實現基于HLA的分布式仿真中的數據交換。就是要解決在上面的仿真成員的“克隆”、仿真代碼的可重用性以及計算量平衡問題中的仿真數據的跨平臺傳輸,從而實現在分布式仿真中的數據交換。
2 分支仿真中的數據傳輸
2.1 仿真分支方法
仿真克隆是近幾年剛剛出現的一個新的仿真優化技術,目的是避免或減少仿真中的重復計算,從而提高仿真的執行效率和效能,提高仿真軟件的健壯性及仿真優化能力。其基本思想是,在仿真運行過程中,當系統的狀態達到某種條件,或者系統到達某個決策點而面臨決策的時候,仿真過程“克隆”自己,從而產生新的仿真,原有仿真及其克隆分別沿著不同的路徑同時繼續運行,探索和試驗不同的選擇、策略和情形(Scenarios)。采用這種技術具有下列優點:(1)在克隆之后,多個情形同時運行,有助于提高仿真軟件的健壯性。在仿真結束的時候,將會同時得到多個仿真結果。在多CPU的場合,由于各個情形獨立運行,從而增加仿真的并行度,提高仿真運行速度;(2)在克隆之前的計算量被克隆之后的所有情形所繼承和共有,從而避免或減少了重復計算;(3)在分布式環境下,并非組成仿真聯邦的所有成員均同時克隆自己,那些參與克隆的成員可以共享那些沒有克隆的成員,從而減少了計算量。初步的試驗結果顯示,該技術可以顯著減少仿真運行時間。
2.2 在仿真中的RTI服務
如圖1所示,本設計中創建了一個包含兩個成員的聯邦。一個成員是對制造業流水線的四種加工策略(FIFO、EDD、SPT、SLK)進行仿真的應用程序(稱為Simulation),另一個成員是用于監控仿真運行的可視化人機交互界面(稱為Monitor)。
其中,交互類Control有兩個參數,ConCode表示控制命令的編號,ConData表示控制命令的參數。同樣,交互類Report也有兩個參數,RepCode表示報告的狀態編號,RepData表示狀態參數。
如圖2所示,描述了本設計的基本交互過程和在該過程中主要用到的RTI服務。
2.2.1 聲明管理服務。
第一,publishInteractionClass()。聯邦成員使用publishInteractionClass()服務來公布指定的交互類,表明聯邦成員可以生成指定交互類的交換實例。在本設計中,Simulation聯邦公布交互類Control,Monitor聯邦公布交互類Report。
第二,subscribeInteractionClass()。聯邦成員利用subscribeInteractionClass()服務來訂購指定的交互類。RTI將隨后出現的指定交互類的交互實例傳給此聯邦成員。訂購一個交互類就訂購了其所有的參數。在本設計中,Simulation聯邦公布交互類Report,Monitor聯邦公布交互類Control。
2.2.2 對象管理服務。
第一,sendInteraction()。聯邦成員使用sendInteraction()服務來向聯邦發送交換實例。在聯邦中,交互實例用于表示瞬間的事件或任何其他不適合用持久的屬性狀態來表示的信息。
第二,receiveInteraction()。receiveInteraction()是在FederateAmbassador中定義的回調函數,用來通知聯邦成員所訂購的交互實例已被發送。
2.3 仿真中的數據傳輸
整個分布式仿真的數據傳輸可以分為從仿真前端到仿真程序和從仿真程序到仿真前端兩個部分。
2.3.1 從仿真前端到仿真程序。包括配置文件和監控命令兩部分組成。如圖3所示:
第一,配置文件。為用戶提供了自定義仿真參數的功能,增強了仿真軟件的可用性,同時也提高了用戶操作的效率。仿真配置模塊是由三個部分組成的,包括新建配置文件、打開原有的配置文件和保存當前的配置文件。如果用戶需要定義一個全新的仿真模型,那么可以新建配置文件,將仿真參數逐個填入其中;如果用戶只想在原有仿真模型的基礎上稍作修改,那么可以選擇打開原有的配置文件;如果用戶新建或修改完后,需要對當前配置進行保存,以備下次使用,那么可以選擇保存當前的配置文件。在采用XML標準時,數據文件的樹狀結構如圖4所示:
第二,監控命令。向遠端仿真程序發布命令以高層體系結構HLA作為數據傳輸的橋梁。仿真前端向遠端仿真程序發布的命令包括發送配置文件,命令仿真開始,暫?;蛑兄鼓硞€仿真成員的運行、向遠端仿真程序請求提供仿真運行數據以及修改仿真的某個參數等。在采用XML標準時,數據文件的樹狀結構如圖5所示。
2.3.2 從仿真程序到仿真前端。包括系統狀態分支運行狀態兩部分組成。如圖6所示:
仿真前端從遠端程序接收返回的數據包括仿真在某個分支觸發條件下的分支情況、應仿真前端請求發送的仿真運行數據以及某個仿真成員退出仿真時返回的數據等。包括系統狀態和分支運行狀態的仿真狀態數據。
在采用XML時,數據文件的樹狀結構如圖7所示。
本課題的研究基于仿真“克隆”的思想,主要應用的是并行和分支技術。分支過程監視界面為用戶提供了觀察仿真“克隆”過程的窗口,將遠端仿真程序的運行情況直觀地顯示在仿真前端,用圖形代替了數據,形象地展示了仿真“克隆”這一思想。若想更加深入地了解仿真運行的情況,必須根據遠端仿真程序返回的數據進行分析。返回數據顯示界面將遠端程序返回的數據顯示在仿真前端的人機界面上,方便用戶觀察并加以判斷做出決策。
2.4 小結
本文主要介紹了基于RTI服務的仿真分支方法,從RTI的服務和仿真數據的XML文檔結構兩個方面介紹。在仿真分支基于RTI的數據傳輸中,采用XML文檔來實現數據的結構化表示,實現數據的可標記的識別,同時也可以體現數據的層次化結構。
參考文獻
[1] 肖田元,張燕云,陳加棟.系統仿真導論[M].北京:清華大學出版社,2002.
[2] 熊光楞,肖田元.連續系統仿真與離散事件系統仿真[M].北京:清華大學出版社,2000.
[3] Averill M.Law,W.David Kelton.Simulation Modeling and Analysis(Third Edition).McGraw Hill,2000.
[4] Steven Holzner.XML完全探索[M].北京:中國青年出版社,2001.
[5] 邵敏,李力鴻,鄭震坤,何川,等.XML編程實踐[M].北京:清華大學出版社,2002.
[6] 但正剛,李順,等.XML高級網絡應用[M].北京:清華大學出版社,2002.
[7] Fabio Arciniegas.C++XML高級編程指南[M].北京:中國科學出版社,2002.
[8] Frederick Kuhi,Richard Weatherly,Judith Dahmann.計算機仿真中的HLA技術[M].北京:國防工業出版社,2003.
[9] 衛軍胡.半導體制造系統的仿真調度方法及其應用研究[D].西安交通大學,2001.
[10] 姚益平,時向泉,李國寬,王勇軍.新一代分布交互仿真體系HLA[A].1999全國仿真技術學術會議論文集[C].1999.
[11] 周智洪,肖璋,劉榮輝.基于C++的XML使能技術原理及應用[J].暨南大學學報(自然科學版),2004,25(5).
[12] 李勇軍,冀汶莉,馬光思.用DOM解析XML文檔
[J].計算機應用,2001,21(8).
[13] 王芳,李正凡.用SAX解析XML文檔的實現方法
[J].華東交通大學學報,2004,21(1).
[14] 須文波,徐悅.解析XML文檔[J].電子計算機,2001,(150).
[15] 朱前飛,高芒.XML解析技術研究[J].電腦開發與應用,2004,17(11).
(責任編輯:周 瓊)