郝天轩, 赵立桢
(1.河南理工大学 安全科学与工程学院, 河南 焦作 454000;2.河南省瓦斯地质与瓦斯治理重点实验室—省部共建国家重点实验室培育基地,河南 焦作 454000; 3.煤炭安全生产河南省协同创新中心, 河南 焦作 454000)
应急救援路径优化是煤矿紧急避险系统的重要组成部分,对于灾害发生时遇险人员和救援人员的路径选取具有指导意义[1-2]。目前煤矿使用的应急救援路径一般是在煤矿运转初期确定的,与灾害发生时的实际情况有一定偏差。当实际事故发生时,事先确定的应急救援路径会被各种因素影响,必须综合考虑后规划出最可靠的路径,以减少灾害所造成的损失[3]。
煤矿应急救援路径优化是一个经典问题,常用的路径寻优算法有粒子群算法、蚁群算法[4]、遗传算法[5]等。粒子群算法的学习过程较简单,但粒子数量较少时易陷入局部最优。蚁群算法适用于在图上搜索最优路径,但由于受多种因素影响,计算量较大[6]。遗传算法具有较强的全局搜索能力,适用于离散问题,但对新空间的探索能力不足。现有研究多处于计算机模拟计算阶段[7-9],要在实际应用中发挥作用,仍需进一步研究。
Dijkstra算法是图论的经典算法,非常适用于图论中的解算,计算负载小,对硬件要求不高,可以部署在轻量级平台[10-11]。本文提出一种跨平台矿井应急救援路径寻优方案,使用综合考虑了巷道实际长度与通行难度的当量值作为路径长度,采用Dijkstra算法求解矿井应急救援路径,并结合Unity引擎的跨平台特性,在计算机、移动端等平台运行应急救援路径寻优算法,为井下避险和救援提供支持。
巷道实际长度L是判断巷道最优路径的基础,此外还要分析巷道通行难度[12]。在巷道出现灾情时,不同巷道区段会受到不同程度的影响,其通行难度会发生变化。引起通行阻力的因素有很多,在实际巷道行进过程中,巷道高度、宽度、坡度、风速、局部障碍物(矿用机械设备、风墙、风门等)的数量、实时灾害(如火灾时的高温烟气、水灾时的巷道积水、巷道坍塌等)都会对井下人员的通行速度造成影响。因为实时灾害对巷道能否通行的影响是决定性的,所以在程序中将发生灾害的点或段设置为不可通行。将巷道通行影响因素抽象为方便计算的影响因子,设巷道高度为γ1,巷道坡度为γ2,巷道泥泞度为γ3,机械数量为γ4,风门数量为γ5,则通行难度因子γ为
γ=γ1+γ2+γ3+γ4+γ5
(1)
γi(i=1~5)的计算公式为[13-14]
γi=(Ti-ti)/ti
(2)
式中:Ti为存在某因素时通行需要的时间,s;ti为不存在某因素时通行需要的时间,s。
巷道当量Ls为
Ls=L(1+γ)
(3)
Dijkstra算法实现步骤如下:
(1) 读取包含巷道当量信息的csv文件并将其处理为二维矩阵R。
(2) 初始化5个集合S,U,D,P,I。其中S存放已计算过的节点的下标,U存放尚未计算的节点的下标,D为某一点到下一位置的最小距离集合,P存放前一个点的下标,I为Bool集合,表示是否已为最短路径。
(3) 设置网络图中的起点m和终点n。
(4) 将起点m加到集合S中,标记I[m]=true。将其他点加到集合U中,遍历集合U,从矩阵R中筛选出m点到其他各点的距离并添加到集合D中。若两点之间不直接连通,则以一个不会对系统造成影响的极大值代替,本文用9 999填充矩阵。
(5) 求出集合D中的最小值,将最小值对应的点x加入集合S中,标记I[x]=true。如果x点到集合U中i点的距离与m点到x点的距离之和小于D[i]的值,则将D[i]值更新为前者,并将P[x]的值更新为m。
(6) 判断集合U中是否还存在元素。若存在,则重复步骤(3);若不存在,则结束计算,并将结果拼接为字符串,选择终点为点n的结果输出并显示。
Unity是应用非常广泛的实时内容开发平台,利用Unity底层的跨平台机制,可将同一套程序发布到计算机端、移动端等不同平台。将矿井巷道CAD图导入Unity引擎,设置相关参数并计算巷道当量值;利用C#编程实现Dijkstra算法,求解矿井应急救援路径并在用户界面标记和显示。
若选择在计算机端发布,可直接打开Unity, 依次选择File→Build Settings→PC, Mac & Linux Standalone,直接发布即可输出可执行程序。计算机端发布菜单界面如图1所示。
若选择在安卓端发布,首先需要配置Unity的Android环境,在开发机上安装Android软件开发工具包(Android SDK Tools)与Java软件开发工具包JDK。菜单选择:Unity→Preferences (on OSX) or Edit→Preferences(on Windows);在打开的窗口中导航到外部工具(External Tools);点击“Browse”,找到安装Android SDK Tools的文件夹,注意不要细分进去,选择到SDK文件夹即可。
图1 计算机端发布菜单界面Fig.1 Computer-side release menu interface
配置好Android环境后,依次选择File→Build Settings→Android,在打开的页面底部选择“Switch Platform”切换平台,切换平台所需时间与项目大小正相关。以上设置完毕,就可将程序发布为移动端使用的APK文件。
对于大型的全矿计算,可将程序部署在高性能计算机端,以加快运行速度。而井下避灾和救援人员可使用移动端发布的软件来选择最优路径。
选取河南永煤集团股份有限公司新桥煤矿的部分矿图,共选出37个节点,组成47段巷道,其CAD图如图2所示,巷道当量长度见表1。
图2 新桥煤矿部分巷道CAD图
Fig.2 CAD drawings of some roadways in Xinqiao Coal Mine
根据表1中的当量值数据将巷道信息编制为csv文件,并将其处理为二维矩阵R:
(4)
Dijkstra算法程序读取矩阵R中的巷道信息并进行计算,完成后显示最优路径及该路径的当量值。计算得出从掘进巷36到副井0的最优路径为36→23→22→26→27→28→29→30→14→15→0,路径当量值为2 393 m;由掘进巷36到永久避难硐室8的最优路径为36→23→22→21→20→19→18→4→5→6→7→8,路径当量值为3 165 m;由工作面32到达副井0的最优路径为32→31→10→11→12→13→14→15→0,路径当量值为3 524 m;由工作面32到达避难硐室8的最优路径为32→31→10→8,路径当量值为2 499 m。
表1 巷道当量长度Table1 Roadway equivalent values
救援路径与避灾路径相反,如从副井0到掘进巷36的最佳救援路径为0→15→14→30→29→28→27→26→22→23→36。
井下胶带运输巷是矿井主要易发火灾区域,由于其发生突然,发展迅速,极易对井下工作人员造成威胁[15]。假设27—28段胶带上山巷道中的带式输送机故障造成火灾事故,则该段巷道无法通行。计算时需将28—27段胶带上山巷道当量值设为9 999 m,再次运行后得出从掘进巷36到副井0的最优路径为36→23→22→21→20→19→18→17→4→3→2→1→0,从而绕过了因火灾而无法通行的28—27路段,给出了准确有效的井下避灾路径。
提出一种跨平台矿井应急救援路径寻优方案,介绍了巷道当量长度的计算方法、Dijkstra算法的实现步骤和基于Unity引擎的跨平台部署方法。该方案可部署于计算机端和各种移动平台,为井下避险和救援路径选择提供支持。实际应用结果表明,该方案能够绕过因事故而无法通行的路段,在发生灾情时及时找到最优路径。