郝天軒, 趙立楨
(1.河南理工大學(xué) 安全科學(xué)與工程學(xué)院, 河南 焦作 454000;2.河南省瓦斯地質(zhì)與瓦斯治理重點(diǎn)實(shí)驗(yàn)室—省部共建國家重點(diǎn)實(shí)驗(yàn)室培育基地,河南 焦作 454000; 3.煤炭安全生產(chǎn)河南省協(xié)同創(chuàng)新中心, 河南 焦作 454000)
應(yīng)急救援路徑優(yōu)化是煤礦緊急避險(xiǎn)系統(tǒng)的重要組成部分,對(duì)于災(zāi)害發(fā)生時(shí)遇險(xiǎn)人員和救援人員的路徑選取具有指導(dǎo)意義[1-2]。目前煤礦使用的應(yīng)急救援路徑一般是在煤礦運(yùn)轉(zhuǎn)初期確定的,與災(zāi)害發(fā)生時(shí)的實(shí)際情況有一定偏差。當(dāng)實(shí)際事故發(fā)生時(shí),事先確定的應(yīng)急救援路徑會(huì)被各種因素影響,必須綜合考慮后規(guī)劃出最可靠的路徑,以減少災(zāi)害所造成的損失[3]。
煤礦應(yīng)急救援路徑優(yōu)化是一個(gè)經(jīng)典問題,常用的路徑尋優(yōu)算法有粒子群算法、蟻群算法[4]、遺傳算法[5]等。粒子群算法的學(xué)習(xí)過程較簡(jiǎn)單,但粒子數(shù)量較少時(shí)易陷入局部最優(yōu)。蟻群算法適用于在圖上搜索最優(yōu)路徑,但由于受多種因素影響,計(jì)算量較大[6]。遺傳算法具有較強(qiáng)的全局搜索能力,適用于離散問題,但對(duì)新空間的探索能力不足?,F(xiàn)有研究多處于計(jì)算機(jī)模擬計(jì)算階段[7-9],要在實(shí)際應(yīng)用中發(fā)揮作用,仍需進(jìn)一步研究。
Dijkstra算法是圖論的經(jīng)典算法,非常適用于圖論中的解算,計(jì)算負(fù)載小,對(duì)硬件要求不高,可以部署在輕量級(jí)平臺(tái)[10-11]。本文提出一種跨平臺(tái)礦井應(yīng)急救援路徑尋優(yōu)方案,使用綜合考慮了巷道實(shí)際長(zhǎng)度與通行難度的當(dāng)量值作為路徑長(zhǎng)度,采用Dijkstra算法求解礦井應(yīng)急救援路徑,并結(jié)合Unity引擎的跨平臺(tái)特性,在計(jì)算機(jī)、移動(dòng)端等平臺(tái)運(yùn)行應(yīng)急救援路徑尋優(yōu)算法,為井下避險(xiǎn)和救援提供支持。
巷道實(shí)際長(zhǎng)度L是判斷巷道最優(yōu)路徑的基礎(chǔ),此外還要分析巷道通行難度[12]。在巷道出現(xiàn)災(zāi)情時(shí),不同巷道區(qū)段會(huì)受到不同程度的影響,其通行難度會(huì)發(fā)生變化。引起通行阻力的因素有很多,在實(shí)際巷道行進(jìn)過程中,巷道高度、寬度、坡度、風(fēng)速、局部障礙物(礦用機(jī)械設(shè)備、風(fēng)墻、風(fēng)門等)的數(shù)量、實(shí)時(shí)災(zāi)害(如火災(zāi)時(shí)的高溫?zé)煔?、水?zāi)時(shí)的巷道積水、巷道坍塌等)都會(huì)對(duì)井下人員的通行速度造成影響。因?yàn)閷?shí)時(shí)災(zāi)害對(duì)巷道能否通行的影響是決定性的,所以在程序中將發(fā)生災(zāi)害的點(diǎn)或段設(shè)置為不可通行。將巷道通行影響因素抽象為方便計(jì)算的影響因子,設(shè)巷道高度為γ1,巷道坡度為γ2,巷道泥濘度為γ3,機(jī)械數(shù)量為γ4,風(fēng)門數(shù)量為γ5,則通行難度因子γ為
γ=γ1+γ2+γ3+γ4+γ5
(1)
γi(i=1~5)的計(jì)算公式為[13-14]
γi=(Ti-ti)/ti
(2)
式中:Ti為存在某因素時(shí)通行需要的時(shí)間,s;ti為不存在某因素時(shí)通行需要的時(shí)間,s。
巷道當(dāng)量Ls為
Ls=L(1+γ)
(3)
Dijkstra算法實(shí)現(xiàn)步驟如下:
(1) 讀取包含巷道當(dāng)量信息的csv文件并將其處理為二維矩陣R。
(2) 初始化5個(gè)集合S,U,D,P,I。其中S存放已計(jì)算過的節(jié)點(diǎn)的下標(biāo),U存放尚未計(jì)算的節(jié)點(diǎn)的下標(biāo),D為某一點(diǎn)到下一位置的最小距離集合,P存放前一個(gè)點(diǎn)的下標(biāo),I為Bool集合,表示是否已為最短路徑。
(3) 設(shè)置網(wǎng)絡(luò)圖中的起點(diǎn)m和終點(diǎn)n。
(4) 將起點(diǎn)m加到集合S中,標(biāo)記I[m]=true。將其他點(diǎn)加到集合U中,遍歷集合U,從矩陣R中篩選出m點(diǎn)到其他各點(diǎn)的距離并添加到集合D中。若兩點(diǎn)之間不直接連通,則以一個(gè)不會(huì)對(duì)系統(tǒng)造成影響的極大值代替,本文用9 999填充矩陣。
(5) 求出集合D中的最小值,將最小值對(duì)應(yīng)的點(diǎn)x加入集合S中,標(biāo)記I[x]=true。如果x點(diǎn)到集合U中i點(diǎn)的距離與m點(diǎn)到x點(diǎn)的距離之和小于D[i]的值,則將D[i]值更新為前者,并將P[x]的值更新為m。
(6) 判斷集合U中是否還存在元素。若存在,則重復(fù)步驟(3);若不存在,則結(jié)束計(jì)算,并將結(jié)果拼接為字符串,選擇終點(diǎn)為點(diǎn)n的結(jié)果輸出并顯示。
Unity是應(yīng)用非常廣泛的實(shí)時(shí)內(nèi)容開發(fā)平臺(tái),利用Unity底層的跨平臺(tái)機(jī)制,可將同一套程序發(fā)布到計(jì)算機(jī)端、移動(dòng)端等不同平臺(tái)。將礦井巷道CAD圖導(dǎo)入U(xiǎn)nity引擎,設(shè)置相關(guān)參數(shù)并計(jì)算巷道當(dāng)量值;利用C#編程實(shí)現(xiàn)Dijkstra算法,求解礦井應(yīng)急救援路徑并在用戶界面標(biāo)記和顯示。
若選擇在計(jì)算機(jī)端發(fā)布,可直接打開Unity, 依次選擇File→Build Settings→PC, Mac & Linux Standalone,直接發(fā)布即可輸出可執(zhí)行程序。計(jì)算機(jī)端發(fā)布菜單界面如圖1所示。
若選擇在安卓端發(fā)布,首先需要配置Unity的Android環(huán)境,在開發(fā)機(jī)上安裝Android軟件開發(fā)工具包(Android SDK Tools)與Java軟件開發(fā)工具包JDK。菜單選擇:Unity→Preferences (on OSX) or Edit→Preferences(on Windows);在打開的窗口中導(dǎo)航到外部工具(External Tools);點(diǎn)擊“Browse”,找到安裝Android SDK Tools的文件夾,注意不要細(xì)分進(jìn)去,選擇到SDK文件夾即可。
圖1 計(jì)算機(jī)端發(fā)布菜單界面Fig.1 Computer-side release menu interface
配置好Android環(huán)境后,依次選擇File→Build Settings→Android,在打開的頁面底部選擇“Switch Platform”切換平臺(tái),切換平臺(tái)所需時(shí)間與項(xiàng)目大小正相關(guān)。以上設(shè)置完畢,就可將程序發(fā)布為移動(dòng)端使用的APK文件。
對(duì)于大型的全礦計(jì)算,可將程序部署在高性能計(jì)算機(jī)端,以加快運(yùn)行速度。而井下避災(zāi)和救援人員可使用移動(dòng)端發(fā)布的軟件來選擇最優(yōu)路徑。
選取河南永煤集團(tuán)股份有限公司新橋煤礦的部分礦圖,共選出37個(gè)節(jié)點(diǎn),組成47段巷道,其CAD圖如圖2所示,巷道當(dāng)量長(zhǎng)度見表1。
圖2 新橋煤礦部分巷道CAD圖
Fig.2 CAD drawings of some roadways in Xinqiao Coal Mine
根據(jù)表1中的當(dāng)量值數(shù)據(jù)將巷道信息編制為csv文件,并將其處理為二維矩陣R:
(4)
Dijkstra算法程序讀取矩陣R中的巷道信息并進(jìn)行計(jì)算,完成后顯示最優(yōu)路徑及該路徑的當(dāng)量值。計(jì)算得出從掘進(jìn)巷36到副井0的最優(yōu)路徑為36→23→22→26→27→28→29→30→14→15→0,路徑當(dāng)量值為2 393 m;由掘進(jìn)巷36到永久避難硐室8的最優(yōu)路徑為36→23→22→21→20→19→18→4→5→6→7→8,路徑當(dāng)量值為3 165 m;由工作面32到達(dá)副井0的最優(yōu)路徑為32→31→10→11→12→13→14→15→0,路徑當(dāng)量值為3 524 m;由工作面32到達(dá)避難硐室8的最優(yōu)路徑為32→31→10→8,路徑當(dāng)量值為2 499 m。
表1 巷道當(dāng)量長(zhǎng)度Table1 Roadway equivalent values
救援路徑與避災(zāi)路徑相反,如從副井0到掘進(jìn)巷36的最佳救援路徑為0→15→14→30→29→28→27→26→22→23→36。
井下膠帶運(yùn)輸巷是礦井主要易發(fā)火災(zāi)區(qū)域,由于其發(fā)生突然,發(fā)展迅速,極易對(duì)井下工作人員造成威脅[15]。假設(shè)27—28段膠帶上山巷道中的帶式輸送機(jī)故障造成火災(zāi)事故,則該段巷道無法通行。計(jì)算時(shí)需將28—27段膠帶上山巷道當(dāng)量值設(shè)為9 999 m,再次運(yùn)行后得出從掘進(jìn)巷36到副井0的最優(yōu)路徑為36→23→22→21→20→19→18→17→4→3→2→1→0,從而繞過了因火災(zāi)而無法通行的28—27路段,給出了準(zhǔn)確有效的井下避災(zāi)路徑。
提出一種跨平臺(tái)礦井應(yīng)急救援路徑尋優(yōu)方案,介紹了巷道當(dāng)量長(zhǎng)度的計(jì)算方法、Dijkstra算法的實(shí)現(xiàn)步驟和基于Unity引擎的跨平臺(tái)部署方法。該方案可部署于計(jì)算機(jī)端和各種移動(dòng)平臺(tái),為井下避險(xiǎn)和救援路徑選擇提供支持。實(shí)際應(yīng)用結(jié)果表明,該方案能夠繞過因事故而無法通行的路段,在發(fā)生災(zāi)情時(shí)及時(shí)找到最優(yōu)路徑。