尹緒雨, 顧登明
(國(guó)核電站運(yùn)行服務(wù)技術(shù)有限公司, 上海 200233)
核安全是核能源發(fā)展的前提,核應(yīng)急則是核安全防御體系的最后一道屏障[1]。然而,核島發(fā)生嚴(yán)重事故的概率很小且造成的后果嚴(yán)重,因此很難在實(shí)際的核應(yīng)急行動(dòng)中掌握逃生技巧。同時(shí),在核能安全領(lǐng)域通常采用應(yīng)急演練的方式提高應(yīng)急救援人員對(duì)應(yīng)急規(guī)程的熟練程度以及應(yīng)變能力,但是這種方式難以模擬出逼真的核事故現(xiàn)象,并針對(duì)這些事故現(xiàn)象開(kāi)展針對(duì)性的行動(dòng),往往不能實(shí)質(zhì)達(dá)到訓(xùn)練效果。因此,設(shè)計(jì)一套核島應(yīng)急逃生演練的模擬系統(tǒng)能很好地幫助相關(guān)工作人員訓(xùn)練逃生知識(shí)和技能,具有很強(qiáng)的實(shí)際意義。目前在其他工業(yè)和生活場(chǎng)景中已經(jīng)存在不少的逃生演練系統(tǒng),如火災(zāi),礦難,氣象災(zāi)害等[2-4]。然而,由于核事故的特殊性和其產(chǎn)生的核輻射,使得其他場(chǎng)景下的逃生演練系統(tǒng)設(shè)計(jì)方法難以簡(jiǎn)單移植到核應(yīng)急逃生演練中。在針對(duì)核島嚴(yán)重事故應(yīng)急逃生中,如何獲取最優(yōu)逃生路徑,最大程度上保證工作人員的生命安全,是開(kāi)發(fā)能有效提高核應(yīng)急逃生技能的模擬訓(xùn)練系統(tǒng)的重要目的。
本文的核島應(yīng)急逃生演練模擬系統(tǒng)在充分考慮影響逃生因素(如正常避障)、核輻射擴(kuò)散濃度及擴(kuò)散模型的基礎(chǔ)上,使用A*算法[5]為核島核泄漏事故的人員逃生規(guī)劃最優(yōu)路徑,在安全逃生的同時(shí),逃生人員體內(nèi)吸收最小的輻射劑量為目標(biāo),使逃生人員以系統(tǒng)最優(yōu)的方式到達(dá)安全區(qū)域。
(1) 3D建模
3D建模是利用專(zhuān)門(mén)的制作軟件構(gòu)建出具有三維數(shù)據(jù)的模型,并能在二維屏幕上顯示。在建模軟件中,通過(guò)模型色彩灰度和光線(xiàn)的調(diào)節(jié)、物體材質(zhì)的選擇和不同圖形的變形和組合,可以構(gòu)建出核島環(huán)境的三維模型。3D建模生成的逼真的視覺(jué)空間能大致的還原核島內(nèi)的整體環(huán)境,使演練人員能在虛擬的逃生環(huán)境中達(dá)到較好的訓(xùn)練效果。
(2) Unity 3D技術(shù)
Unity 3D是一個(gè)能輕松創(chuàng)建建筑可視化和實(shí)時(shí)三維動(dòng)畫(huà)的綜合型游戲開(kāi)發(fā)工具和專(zhuān)業(yè)游戲引擎,具有跨平臺(tái)性和開(kāi)放性等特點(diǎn)。通過(guò)Unity 3D絢麗的3D渲染效果可以增強(qiáng)模擬環(huán)境的真實(shí)性[6]。
Unity 3D給用戶(hù)提供了多窗口的綜合一體化的開(kāi)發(fā)環(huán)境,用戶(hù)可以根據(jù)需求將模型的大小比例進(jìn)行調(diào)整。本文使用C#作為Unity3D的腳本語(yǔ)言,通過(guò)Unity編程實(shí)現(xiàn)演練人員逃生路徑可視化和逃生人員在模擬系統(tǒng)中的走、跑、跳和繞開(kāi)障礙物等基本動(dòng)作的實(shí)現(xiàn)。利用Unity3D的粒子系統(tǒng),模擬逃生環(huán)境中核輻射的泄露和擴(kuò)散,使得不同輻射濃度區(qū)可視化。
A*算法是一種利用啟發(fā)式探索方式來(lái)求解最短路徑最有效的直接搜索方法,在每一步搜索或探路中利用估價(jià)函數(shù)對(duì)即將參與遍歷節(jié)點(diǎn)進(jìn)行估值和排序,估價(jià)值更優(yōu)的節(jié)點(diǎn)將被優(yōu)先遍歷,如式(1)。
f(n)=g(n)+h(n)
(1)
式中,f(n)是從初始節(jié)點(diǎn)經(jīng)由節(jié)點(diǎn)n到目標(biāo)節(jié)點(diǎn)的估計(jì)距離;g(n)是從初始節(jié)點(diǎn)到節(jié)點(diǎn)n的實(shí)際距離;h(n)是從節(jié)點(diǎn)n到目標(biāo)節(jié)點(diǎn)的預(yù)估距離。從該公式可以看出,估價(jià)函數(shù)帶有問(wèn)題自身的啟發(fā)式信息。因此A*算法是一個(gè)典型的啟發(fā)式搜索算法。
A*算法將搜索區(qū)域劃分成若干個(gè)大小相等的正方形網(wǎng)格,所有的網(wǎng)格抽象成一個(gè)二維數(shù)組。每個(gè)網(wǎng)格代表一個(gè)節(jié)點(diǎn),每個(gè)網(wǎng)格只有可通和不通兩種狀態(tài)[7]。A*算法將所有節(jié)點(diǎn)分為兩個(gè)集合,一個(gè)為待遍歷節(jié)點(diǎn)集合,通常稱(chēng)為open列表,另一個(gè)為已遍歷節(jié)點(diǎn)集合,通常稱(chēng)為close列表。確立起始節(jié)點(diǎn)后,將該節(jié)點(diǎn)存入到open列表中,查看以該起始節(jié)點(diǎn)為中心的周?chē)?個(gè)節(jié)點(diǎn)的狀態(tài),將可通狀態(tài)和可到達(dá)狀態(tài)的節(jié)點(diǎn)存入open列表。然后把起始節(jié)點(diǎn)設(shè)置為這些節(jié)點(diǎn)的父節(jié)點(diǎn),并移出open列表存入closed列表中。在open列表中選擇f(n)最小的節(jié)點(diǎn)作為當(dāng)前處理節(jié)點(diǎn),然后移至closed列表,如果節(jié)點(diǎn)狀態(tài)是不可到達(dá)或者節(jié)點(diǎn)在closed列表中,忽略考慮,否則進(jìn)行判斷:①若不在open列表中,則加入open列表中并把當(dāng)前節(jié)點(diǎn)設(shè)為父節(jié)點(diǎn);②若在open列表中,那么檢查路徑距離是否更小,并重新計(jì)算f(n)的值。重復(fù)以上過(guò)程。如果終點(diǎn)加入了open列表或者open列表空了,那么停止。最后從終點(diǎn)開(kāi)始,每個(gè)節(jié)點(diǎn)跟隨父節(jié)點(diǎn)移動(dòng)到起點(diǎn)。
需要指出的是,通過(guò)調(diào)節(jié)啟發(fā)函數(shù)中的g(n)和h(n)可以控制算法的速度和精確度。比如有些情況不一定要找最短路徑,而是希望能夠盡快找到一個(gè)路徑,那么用A*算法可以靈活控制這個(gè)過(guò)程。此外,A*算法關(guān)注點(diǎn)到點(diǎn)的最短路徑,而Dijkstra算法是計(jì)算源點(diǎn)到其他所有點(diǎn)的最短路徑長(zhǎng)度,實(shí)質(zhì)是廣度優(yōu)先搜索,是一種發(fā)散式的搜索,所以空間復(fù)雜度和時(shí)間復(fù)雜度都比A*算法高。
核島3D逃生演練系統(tǒng)的目標(biāo)是:設(shè)計(jì)規(guī)劃最優(yōu)逃生路徑使得逃生人員吸收核輻射最少,同時(shí)使逃生演練過(guò)程3D可視化,包括核島3D建筑場(chǎng)景,逃生路徑指示、輻射粒子效果及其輻射總量等,最后還需支持用戶(hù)交互與靈活配置。
因此演練系統(tǒng)需要解決如下問(wèn)題。
(1) 人員定位和預(yù)警可視化。在場(chǎng)景中可以自定義添加輻射泄露點(diǎn),在只考慮障礙物的阻礙和距離因素的情況下,輻射大小模擬電磁場(chǎng)強(qiáng)計(jì)算方法;不同輻射濃度的區(qū)域使用不同顏色來(lái)表示。在逃生過(guò)程中,隨機(jī)添加障礙物并且保證障礙物的多樣性,同時(shí)在UI界面上顯示人體中輻射吸收的總劑量,判斷人體中輻射劑量是否超標(biāo)。
(2) 逃生路徑規(guī)劃和可視化。與其他工業(yè)場(chǎng)景相比,核島環(huán)境有其特殊性,具體表現(xiàn)在:1)核電站內(nèi)部結(jié)構(gòu)復(fù)雜,內(nèi)部管道及組件比較多,結(jié)構(gòu)復(fù)雜,且要考慮安全門(mén)及其它地方堆積物品等實(shí)際情況的影響,同時(shí)用不同的顏色區(qū)域代表不同輻射量區(qū)域,當(dāng)逃生人員進(jìn)入不同顏色區(qū)域,人體內(nèi)的輻射劑量的累計(jì)不同;2)出口及路徑選擇。逃生路徑及出口的選擇是影響核輻射泄漏的重要因素。首先判斷了人的初始位置后,然后根據(jù)核輻射泄漏的方向、核輻射濃度的情況、人距離出口距離等情況,選擇最優(yōu)的逃生出口及逃生路徑。由于輻射的不斷擴(kuò)散和隨機(jī)障礙物的阻攔,需要不斷更新逃生路徑;3)核輻射對(duì)人的影響。輻射的擴(kuò)散可能導(dǎo)致同一段通路中左右兩邊的輻射計(jì)量是不同的,且不同身體狀況的逃生人員承受能力不同,當(dāng)體內(nèi)輻射劑量超標(biāo),逃生人員可能失去行動(dòng)能力。
(3) 友好的用戶(hù)交互和靈活配置。人物模型在核島中的移動(dòng),例如演練人員在逃生過(guò)程中走、跑、跳、蹲等基礎(chǔ)動(dòng)作需要有良好的3D展示效果,同時(shí)還需要顯示人物走過(guò)的路徑,并使用箭頭提示逃生路徑。此外,支持用戶(hù)靈活隨機(jī)設(shè)置出生點(diǎn)、輻射泄露區(qū)域以及即時(shí)觀測(cè)輻射區(qū)域及劑量。
根據(jù)系統(tǒng)的問(wèn)題描述和需求分析,結(jié)合A*算法與核島輻射等相關(guān)知識(shí),本文研究的思路設(shè)計(jì),如圖1所示。
圖1 總體方案
設(shè)計(jì)的總體思路是:①利用Navmesh組件將地形進(jìn)行掃描,方便標(biāo)記出可行走區(qū)域以及障礙物,同時(shí)將可爬行坡度設(shè)置為50度;②建立并且初始化逃生點(diǎn)和輻射點(diǎn)以及AI逃生人員;③將逃生點(diǎn)與輻射點(diǎn)坐標(biāo)代入算法中進(jìn)行計(jì)算,得出最優(yōu)路徑,并對(duì)最優(yōu)路徑進(jìn)行平滑處理;④利用線(xiàn)渲染器LineRender控件將計(jì)算出的路徑實(shí)體化,同時(shí)將位置坐標(biāo)值抓取到路徑數(shù)組中,并保證可隨時(shí)隱藏。
創(chuàng)建一個(gè)空的GameObject對(duì)象,可以在其上任意放置所需的物體,命名為A′,在A′尋路步驟算法運(yùn)算之前,對(duì)場(chǎng)景地圖進(jìn)行一次檢索,將地圖的虛擬化范文、可行走的最高坡道、以及場(chǎng)景中的可行走物與障礙物辨識(shí)出來(lái)。由于本次演練所要求的精度需求較高,所以將精度設(shè)置在0.1 m。
在成功虛擬化地形之后,開(kāi)始進(jìn)行A*算法運(yùn)算,首先建立f(n)、g(n)和h(n),將起點(diǎn)A添加到open列表中。然后檢查open列表,選取f(n)花費(fèi)最小的節(jié)點(diǎn)M,直到M為終點(diǎn)。對(duì)于與M相鄰的每一個(gè)節(jié)點(diǎn)N。
Step 1:如果N是阻擋物或在closed列表中,那么就不需要考慮;
Step 2:如果N不在open列表中,添加它然后計(jì)算出花費(fèi)的f(n);
Step 3:如果N在open列表中,檢查f(n)花費(fèi)是否比原來(lái)的路徑更小,如果是,則更新F和父節(jié)點(diǎn);
Step 4:重復(fù)檢索N是否在open列表或closed列表,分別進(jìn)行計(jì)算;
Step 5:計(jì)算完成后將f(n)中的節(jié)點(diǎn)連接,得出最后路徑。
在使用A*算法的過(guò)程中關(guān)鍵步驟是得到估計(jì)函數(shù)f(n)的值,本系統(tǒng)的目標(biāo)是使得經(jīng)過(guò)逃生路徑后所受核損傷最少。因此估價(jià)函數(shù)實(shí)質(zhì)就是所受核輻射劑量值,這跟核輻射擴(kuò)散模型緊密相關(guān)。結(jié)合實(shí)際核島應(yīng)用場(chǎng)景,核輻射擴(kuò)散模型,如式(2)。
(2)
式中,A為活度,單位是kBq;Te為照射時(shí)間,當(dāng)計(jì)算劑量率時(shí),不考慮Te;而d和d1/2在不考慮屏蔽時(shí)可以忽略;X為在輻射區(qū)域內(nèi)逃生人員到輻射源的距離,單位為m。該公式為計(jì)算有效劑量的公式,計(jì)算出的單位為mSv/h。
此外,CF6=2.5E-07(CF6為點(diǎn)狀放射源,與放射源素有關(guān),該項(xiàng)目以Co-60計(jì)算)設(shè)置float變量X1,X2,Y1,Y2,X,通過(guò)GetComponent.position得到人物坐標(biāo)和輻射點(diǎn)并賦值到X1,X2,Y1,Y2中。接著通過(guò)如下距離,如式(3)。
(3)
通過(guò)核輻射公式可以得出所吸收的輻射劑量。最后將輻射劑量以權(quán)值的方式放入A*算法中得出最優(yōu)路徑。
A*算法能很好地通過(guò)啟發(fā)式搜索得到距離最短的逃生路徑,但在核島環(huán)境下逃生路徑更需要考慮吸收的核輻射劑量。為此,將在路徑規(guī)劃中計(jì)算出通過(guò)核輻射區(qū)域所吸收的輻射劑量作為一項(xiàng)重要權(quán)值附加在各區(qū)域節(jié)點(diǎn)上,若沒(méi)有輻射,則權(quán)值為0,如圖2所示。
圖2 考慮核擴(kuò)散模型的路徑搜索
若使用傳統(tǒng)的A*算法,則只需保證逃生距離最短,此時(shí)逃生的路徑應(yīng)為1→2→6→7→8→9,但如果在6與7之間插入輻射源,則可能會(huì)導(dǎo)致人會(huì)受到輻射的傷害,因此若考慮核輻射擴(kuò)散模型產(chǎn)生的核輻射,則該逃生路徑變?yōu)?→2→3→4→5→8→9,這樣才能確保逃生人員最安全的逃生。
同時(shí),本系統(tǒng)中的所用的A*算法節(jié)點(diǎn)權(quán)值不考慮距離,只考慮兩點(diǎn),一是節(jié)點(diǎn)是否可通,不可通權(quán)值用0表示??赏ǖ那闆r則用所受核輻射劑量值表示權(quán)值,在核輻射擴(kuò)散模型中有一個(gè)因素是時(shí)間Te,由距離和平均速度之比得到。因此在本系統(tǒng)A*算法中還是綜合考慮了距離、核損傷因素,如圖3所示。
圖3 A*算法與核輻射算法結(jié)合示意圖
該算法以所受輻射劑量最小為第一目標(biāo),從而最大效率地保證逃生人員以最小代價(jià)達(dá)到安全區(qū)域,即在可以滿(mǎn)足在保證所受核輻射劑量最小的前提下規(guī)避相應(yīng)障礙物。
在A*算法和輻射值算法計(jì)算完成以后,會(huì)得出一條在核島環(huán)境下路徑最近,所受到的輻射值最小的一條線(xiàn)路。利用Unity 3D中線(xiàn)渲染器LineRender將該路線(xiàn)實(shí)體化??梢暬菥毩鞒?如圖4所示。
圖4 演練流程圖
首先初始化逃生人員,支持用戶(hù)自主靈活設(shè)置輻射點(diǎn)和逃生初始位置。接著利用前述所提方法搜索和計(jì)算出下一步位置。
系統(tǒng)運(yùn)行效果圖,如圖5所示。
圖5 系統(tǒng)運(yùn)行效果圖
本實(shí)驗(yàn)采用Unity3D軟件進(jìn)行實(shí)驗(yàn)驗(yàn)證,分別采用傳統(tǒng)A*算法與本項(xiàng)目所用的A*算法結(jié)合核輻射算法技術(shù),同時(shí)在優(yōu)化方面引入了優(yōu)化路徑的算法,使路徑從鋸齒線(xiàn)轉(zhuǎn)化成更加光滑的路徑,更有利于試驗(yàn)的嚴(yán)謹(jǐn)性??紤]到算法改進(jìn)的有效性。本項(xiàng)目在實(shí)驗(yàn)中做了兩種算法的比較的試驗(yàn)后,得出結(jié)論為本項(xiàng)目所采用的算法很好地規(guī)避了輻射泄露區(qū)域,并且相對(duì)其他規(guī)避輻射區(qū)域的路徑,所用時(shí)間更少,效率更高更有利于逃生人員的逃生,如圖6、圖7所示。
通過(guò)觀察圖6及圖7,如果只啟用A*算法進(jìn)行逃生模擬演練,則很大程度會(huì)導(dǎo)致逃生人員進(jìn)入輻射范圍區(qū),從而造成一些輻射傷害,其后果往往不可估量,但若加入核輻射算法所得到的值,則可以采取更加安全的逃生路徑進(jìn)行逃離。此外,在不滿(mǎn)足有0輻射劑量的逃離路線(xiàn)的條件下,還能通過(guò)計(jì)算得出相對(duì)吸收輻射劑量最小的路徑以及在吸收劑量最小前提下所逃離的路徑最短,從而更有效率進(jìn)行逃離。
圖6 A*算法效果演示
圖7 A*算法與核輻射算法結(jié)合效果演示
綜上所述,最短路徑算法只能滿(mǎn)足于沒(méi)有任何動(dòng)態(tài)障礙物或者可觸碰障礙物的情況下,往往不能夠做到高效率的逃生。對(duì)于在核島環(huán)境下的逃生演練,吸收的核輻射最少是最優(yōu)的目標(biāo),結(jié)合A*算法和核輻射擴(kuò)散模型能有效找出最優(yōu)的逃生路徑。同時(shí)利用Unity 3D技術(shù)可以將逃生演練過(guò)程很好的進(jìn)行3D可視化,有效提升演練實(shí)效。下一步將探索基于VR技術(shù)的核島逃生模擬演練。