張俊瑞,陳立潮,潘理虎,3
(1.晉中學(xué)院 信息技術(shù)與工程學(xué)院,山西 晉中 030619;2.太原科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,山西 太原 030024;3.中國科學(xué)院 地理科學(xué)與資源研究所,北京 100101)
中國煤炭工業(yè)協(xié)會會長王顯政在出席2016年世界煤炭協(xié)會技術(shù)委員會會議時表示,雖然中國一直在減少煤炭在能源消費結(jié)構(gòu)中的比例,但2015年中國的煤炭消費量仍占世界的一半。煤礦從業(yè)人數(shù)眾多,因此煤礦安全仍是需要重點討論的一個問題。雖然現(xiàn)在的研究成果很多[1-4],并在數(shù)學(xué)建模、虛擬現(xiàn)實技術(shù)(virtual reality,VR)[5-6]、疏散模擬[7]、計算機建模[8-9]等方面取得了一定的研究成果,但是利用ABMS方法(Agent-based modeling and simulation)對煤礦安全逃生問題進行研究的卻很少。
利用ABMS方法設(shè)計了煤礦井下逃生模型的總體架構(gòu)和仿真程序中的主要類,然后對模型的UML類圖和時序圖進行了分析,最后通過RePast仿真平臺對模型進行仿真,實現(xiàn)了井下礦工的逃生模擬。
ABMS是基于Agent的建模和仿真方法,它是復(fù)雜適應(yīng)系統(tǒng)(complex adaptive system,CAS)與分布式人工智能技術(shù)兩種理論相融合的結(jié)果,是研究復(fù)雜系統(tǒng)的新途徑和新方法?;贏gent的建模和仿真包括基于Agent的建模(Agent-based modeling)和基于Agent的仿真(Agent-based simulation)兩方面,二者相互聯(lián)系但又有所不同,不可分割。
煤礦井下逃生模型的組成模塊如圖1所示。模型包括系統(tǒng)初始化模塊、運行模塊和數(shù)據(jù)統(tǒng)計模塊[10]。
圖1 模型組成模塊
系統(tǒng)初始化模塊用于對模型進行初始化設(shè)置。首先將巷道地圖數(shù)字化處理后生成的柵格地圖導(dǎo)入模型中作為Agent的空間活動環(huán)境[10];然后對模型進行初始參數(shù)配置,模型中的初始參數(shù)包括井下Agent的數(shù)量、不同類型Agent所占的比例、Agent的行走速度、災(zāi)害的類型和參數(shù)(如災(zāi)害是否火災(zāi)、火災(zāi)的蔓延速度)等;最后對Agent的屬性進行初始設(shè)置,如Agent的工號、年齡、婚否、受教育程度、是否帶班組長等[10]。
運行模塊是煤礦井下逃生模型的核心模塊,負(fù)責(zé)整個模型的運行。模型仿真結(jié)果的顯示、Agent行為決策的量化實現(xiàn)、模型的時鐘控制(可參考文獻[11])等都在這個模塊實現(xiàn)。
數(shù)據(jù)統(tǒng)計模塊用于統(tǒng)計模型運行過程中產(chǎn)生的大量統(tǒng)計數(shù)據(jù),如火災(zāi)的蔓延情況、Agent逃生和死亡的數(shù)量等[10-11]。
在RePast提供的類庫基礎(chǔ)上,針對煤礦井下逃生模型開發(fā)了CoalMineDemo類包,用于實現(xiàn)模型的初始化設(shè)置、模型的運行控制和模型中的數(shù)據(jù)統(tǒng)計。CoalMineDemo類包中包括CoalMineModel類、CoalMineSpace類和CoalMineAgent類。CoalMineModel類最復(fù)雜,因為它是整個模型運行的起點,是被最優(yōu)先執(zhí)行的,控制著整個仿真模型的運行。在CoalMineModel類中包括了Private void buildModel()方法、Private void buildDisplay()方法和Private void buildSchedule()方法等,分別負(fù)責(zé)創(chuàng)建模型的底層結(jié)構(gòu)、向用戶顯示表層結(jié)構(gòu)和模型的狀態(tài)時間表。CoalMineSpace類用于模型空間的初始化、災(zāi)害的初始發(fā)生地、Agent在空間活動環(huán)境中的初始化分布等的設(shè)置[10],用到的主要方法有public void setFire()、public boolean addAgent()、public int getTypeAt()和public boolean moveAgentAt()等[10],分別用于火災(zāi)的設(shè)置、Agent的添加、災(zāi)害類型的設(shè)置以及Agent移動情況的統(tǒng)計[10]等。CoalMineAgent類用于實現(xiàn)Agent的活動,用到的主要方法有public void step()、public void setVxVy()、public void draw()和public void report()等,用于實現(xiàn)每一個“tick”(RePast仿真平臺的時間單位)模型要執(zhí)行的內(nèi)容、Agent的移動方向及位移量、顯示方式及狀態(tài)報告等的設(shè)置。
除此之外,還有Disaster類和Point類,均用于對災(zāi)害的類型和巷道環(huán)境中的避災(zāi)硐室[12-13]等進行描述[10]。
文中引入了UML(unified modeling language,統(tǒng)一建模語言)類圖對模型中的CoalMineModel、CoalMineSpace、CoalMineAgent、Disaster和Point五個類之間的關(guān)系加以介紹,類描述情況如圖2所示。
模型中各個類之間是關(guān)聯(lián)關(guān)系。其中,CoalMineModel類與CoalMineSpace類是一對一的關(guān)系,即一個Model(模型)對應(yīng)一個Space(空間活動環(huán)境);CoalMineModel類與CoalMineAgent類是一對多的關(guān)系,一個Model可以對應(yīng)多個Agent(主體對象);CoalMineSpace類與CoalMineAgent類是一對多的關(guān)系,一個Space上可能有若干個Agent進行活動;CoalMineModel類與Disaster類是一對多的關(guān)系,一個Model中可能同時有多個Disaster(井下災(zāi)害)發(fā)生;CoalMineModel類與Point類也是一對多的關(guān)系,即一個Model中涉及到多個Point(井下硐室);CoalMineSpace類與Disaster類是一對多的關(guān)系,一個Space上可以有多個Disaster;CoalMineSpace類與Point類是一對多的關(guān)系,即一個Space上有多個Point。
煤礦井下逃生模型中,不同類型的Agent對象存儲在不同的對象列表中,由CoalMineModel對象統(tǒng)一進行存儲和調(diào)用。
模型啟動后,CoalMineModel對象調(diào)用buildModel()方法對模型的參數(shù)進行初始化設(shè)置,然后調(diào)用buildDisplay()方法對CoalMineSpace對象進行初始化,最后調(diào)用buildSchedule()方法啟動模型。buildSchedule()方法里有一個內(nèi)部類CoalMineAgentStep,該類能夠?qū)τ脩舻牟僮鬟M行響應(yīng)。模型啟動后,當(dāng)用戶點擊RePast工具條上的“開始”按鈕時,CoalMineAgentStep類開始執(zhí)行,一個“tick”之后,space.update()方法完成對CoalMineSpace空間對象的更新。最后,CoalMineModel對象調(diào)用updateDisplay()方法對模型空間的顯示界面進行更新并顯示。
在模型執(zhí)行過程中,模型對象model始終處于活動狀態(tài),所有Agent的活動都在模型對象model的管理之下,由model統(tǒng)一進行調(diào)度。模型對象的執(zhí)行內(nèi)容和時序非常重要,它決定了系統(tǒng)的可靠性和穩(wěn)定性。
模型的時序圖如圖3所示。
RePast仿真平臺是在Java開發(fā)平臺Eclipse的基礎(chǔ)上導(dǎo)入RePast類庫實現(xiàn)的。其仿真界面與Eclipse相似但又有所不同。一個Demo程序在RePast平臺上的運行界面,包括顯示界面、圖表和直方圖三個顯示部分。RePast可以顯示模型的運行情況,還可以通過圖表和直方圖對模型運行中的實驗數(shù)據(jù)進行統(tǒng)計。因此,RePast能夠較好地對模型進行仿真。
圖3 模型的時序圖
圖4是模型的仿真界面,其中的灰色柵格表示井下巷道,巷道旁突出的黑色柵格為井下硐室,巷道中的黑色柵格表示火災(zāi)的發(fā)生地和蔓延地,巷道最上方的黑色柵格為出口位置。仿真結(jié)果顯示,Agent會在火災(zāi)發(fā)生時向著出口或者避災(zāi)硐室的位置逃生,因此該模型能夠?qū)崿F(xiàn)井下逃生模擬。
圖4 模型的仿真界面
圖5為火災(zāi)發(fā)生后Agent的逃生情況統(tǒng)計,分別用于統(tǒng)計活著的Agent、死亡的Agent、逃到出口的Agent及逃到避災(zāi)硐室的Agent數(shù)量。每有一個Agent成功逃到出口,模型中統(tǒng)計的活著Agent的數(shù)量相應(yīng)減少,而逃到出口的Agent數(shù)量相應(yīng)增加,火災(zāi)發(fā)生時死亡的Agent數(shù)量為零。統(tǒng)計井下火災(zāi)發(fā)生時Agent的逃生情況對研究煤礦井下逃生具有一定的參考價值。
圖5 模型的數(shù)據(jù)統(tǒng)計
使用ABMS方法對煤礦逃生問題進行研究是研究煤礦安全問題的一個較好的手段。通過對模型的總體架構(gòu)進行研究,詳細分析了模型的UML類圖和時序圖,并設(shè)計了實現(xiàn)模型所需的所有類對象,最后在RePast仿真平臺上利用Java語言對模型進行了仿真。仿真結(jié)果表明,模型架構(gòu)設(shè)置較合理,可以較好地對煤礦安全逃生問題進行研究。
[1] COTTON S,DENNISON-JOHNSON A,GIRALDO L.Mine escape vehicle (MEV) concept development[C]//SME annual meeting and exhibit 2010.United States:[s.n.],2010:206-209.
[2] DZIURZYNSKI W,ROSZKOWSKI J,TOBICZYK J.Monitoring and control of ventilation in polish coal mines[C]//8th international mine ventilation congress-proceedings.Australa:[s.n.],2005:309-315.
[3] STANISAW W.Monitoring of natural hazards in the underground hard coal mines[C]//New technological solutions in underground mining international mining forum.Poland:[s.n.],2006:87-94.
[4] PAPASTEFANOU C.Escaping radioactivity from coal-fired power plants (CPPs) due to coal burning and the associated hazards:a review[J].Journal of Environmental Radioactivity,2010,101(3):191-200.
[5] 汪云甲,伏永明.礦井巷道三維自動建模方法研究[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2006,31(12):1097-1100.
[6] 仵自連,王德永,樊 繼.虛擬礦井生產(chǎn)仿真系統(tǒng)的分析與設(shè)計[J].微計算機信息,2006,22(9-2):308-310.
[7] 肖勇杰,封衛(wèi)兵,晁 媛.基于LBM算法的大規(guī)模人群疏散研究[J].計算機技術(shù)與發(fā)展,2011,21(7):21-24.
[8] 蔡林沁.基于Agent的煤礦智能虛擬環(huán)境研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2007.
[9] 張俊瑞.基于Multi-Agent的煤礦井下礦工逃生模型研究[D].太原:太原科技大學(xué),2012.
[10] 張俊瑞,陳立潮,潘理虎,等.基于多Agent的煤礦井下礦工逃生模型研究[J].計算機工程與設(shè)計,2012,33(12):4657-4662.
[11] 王 麗.煤礦井下避災(zāi)硐室研究[D].西安:西安科技大學(xué),2009.
[12] 王 淇.煤礦井下避難硐室系統(tǒng)研究[D].武漢:武漢科技大學(xué),2013.
[13] 肖時景.煤礦井下避難硐室的設(shè)計及位置優(yōu)化的研究[D].邯鄲:河北工程大學(xué),2012.