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