任偉建 韓開旭 霍鳳財
(東北石油大學電氣信息工程學院,黑龍江 大慶 163318)
大氣污染事故指會對人體有致毒的氣體,由于泄漏、燃燒及爆炸等,在有限的時間內急劇擴散并給人員帶來傷害的事故[1]。相較于其他污染事故,大氣污染的排污途徑和方式具有不確定性,事故具有突發性,毒物在有限的時間內會急劇擴散。大氣污染事故處理,即在污染出現的第一個小時內[2],為降低事故所帶來的危害和影響,而構建的全面的突發污染應急救援系統。在此,筆者根據泄漏擴散、火災及爆炸等突發性大氣污染事故類型的應急處理處置特點,基于規則引擎技術和動態路徑規劃,研發其應急處理系統。
1.1 規則引擎及其優化
現有的大氣污染事故救援決策輔助系統包含了成熟的計算模型[3],并融入了很多非結構化且具有先驗特點的知識,如業務決策支持和輔助分析。如果依照傳統的系統構建思路,把事故救援處置的業務流程直接嵌入到突發污染應急救援系統中,就會導致系統升級和擴展困難;此外,直接嵌入業務流程到系統中,還不得不采用if-else等多重分支嵌套語句,由于系統救援決策的業務流程分支組合繁多,使得系統的修改和擴展變得難上加難。為此,筆者提出了一種基于規則引擎的方法,以期從根源上解決上述問題。
規則引擎技術是一種組件開發技術,可以將規則文件和業務流程嵌入到應用程序中,其主要工作是將系統中業務層的邏輯和分支分離出來,同時將已規則化的業務邏輯當作數據對象提交給規則引擎,并與已加載的業務邏輯進行規則比對,啟動符合條件的業務邏輯,觸發程序中相應的操作。
突發性大氣污染事故的救援路徑規劃與事故的污染擴散狀態有著很大的關系,事故的污染擴散程度是規劃救援路徑的首要條件。
突發性大氣污染事故與其他環境污染事故的區別在于,污染物質在周圍空氣中的擴散受污染物本身性質、氣象因素與下墊面的影響極大,因此如何準確估計突發事故中污染物的擴散濃度與范圍成為研究重點,直接影響到應急處置其他階段的策略制定,如疏散、救援路徑制定及災害風險后果評估等。文獻[3]總結了適用于突發性大氣污染事故的相關模型的多個模型的核心公式與適用條件,但其中的公式需在理想狀態下才能模擬,比如:要求大氣處于某種穩態及下墊面平坦等。
根據文獻[3]中的公式,可以求出以事故源為原點的污染區域的空間濃度和污染范圍,不同的大氣污染事故都有對應的濃度危害區域標準,根據相應的安全標準,可以在地理信息系統上動態規劃出致死區域、重傷區域、輕傷區域和安全區域,并根據事故現場的實際情況實時調整。前3個區域都屬于首要的人群疏散區域,同時也是救援路徑和疏散路徑規劃需要避開的區域。
傳統的最短路徑算法(如Dijkstra)都是基于靜態網絡環境的,沒有考慮動態交通信息,很難直接應用于動態網絡環境[4]。以往的動態路徑研究多基于蟻群算法及遺傳算法等[5],對于動態路況信息的更新也只能由人工采集進行[6];對于有些危險區域,是無法由人工采集路況信息的,如:毒氣覆蓋區域,這就需要根據突發大氣污染事故對應的大氣擴散模型和實時的大氣穩態級別,即時計算出毒氣覆蓋區域的濃度,以判斷相應路況的危險程度,進而得出道路的實時路阻系數。
筆者提出的方法需要根據危險區域的危險程度來確定相應道路的路阻系數,也就是道路安全通過的代價。處在致死區域的代價最高,處在重傷區域和輕傷區域的依次次之,橫跨不同危險區的道路代價則按危險程度高的代價計算。最后將路阻系數結合到A*算法中形成新的路徑規劃方法,該方法可以即時規劃出最優路徑,并根據實時變動的路阻系數對救援線路進行調整,具有對隨機事件和突發事件的實時處理功能,可有效應用于救援車輛路徑的規劃上。
突發性大氣污染事故包括有毒氣/液態化學品泄漏、易燃氣體/液體導致的火災及爆炸等類型。毒氣/液態化學品泄漏會對人直接造成中毒傷害;而易燃氣/液體導致的火災的危害來自于火焰的炙烤和燃燒帶來的有毒有害產物;爆炸的破壞來源于爆炸時刻的沖擊波能量。根據突發性大
氣污染事故的應急處理與救援類型,需要考慮的因素及其基本處理流程如圖1所示。

圖1 大氣污染事故救援處置流程
突發污染應急救援系統采用對象-關系型數據庫Oracle Spatial來存儲所有數據,Oracle Spatial支持空間中的對象、索引、操作函數及操作符等功能,可以在ArcGisServer與ArcSDE的支持下完成地理信息數據的發布與交互。C#+.NetFramework作為微軟主推的開發架構,可以將.Drools.Net融入到系統中,管理并發布所有的規則內容,實現業務層和用戶層的分離和獨立。
通過設計并實現一個面向多種突發大氣污染類型且環境復雜的救援處理系統,可避免單一種類的模型模擬大氣污染擴散的局限性,提高應急決策的精確性和針對性。基于規則引擎的核心功能在獲取相關的規則參數后,結合系統內置的模型與方法,通過規則文件進行邏輯匹配,自動生成具有較高參考價值的應急處理處置方案。筆者設計的突發污染應急救援系統的整體架構如圖2所示。

圖2 系統整體架構
2.3.1應急處理處置規則
依照大氣污染事故救援處置流程,突發污染應急救援系統中的規則引擎主要設計了大氣模型選擇、風險級別評估和救援路徑規劃三大類規則,規則引擎的流程如圖3所示。通過后臺數據將初始化數據(地點、類型、風速、地形等)傳至規則引擎后,通過預先編寫的規則選擇大氣擴散模型,并依照所匹配的模型來計算擴散的濃度和面積,識別風險區級別并規劃最優救援路徑等。

圖3 規則文件調用流程
Drools.Net作為主流的規則引擎技術之一,基于Rete和Leaps算法,可以提供高效的匹配規則方式。采用規則引擎,可以將業務邏輯和業務數據分離,減少了開發過程中數據層和業務層的耦合度,更容易適應與時俱進的成長型業務流程。
Drool.Net與Java版本不同,它不依賴Jre虛擬機,在應用時需要單獨將drools-3.0.dll、IKVM.GNU.Classpath.dll、drools.dotnet.dll這3個文件加載到項目中,同時引用命名空間(using org.drools.dotnet.compiler;using org.drools.dotnet.rule)后,才可以在項目開發中調用,規則創建與調用的局部代碼如下:
using org.drools.dotnet.compiler;
using org.drools.dotnet.rule;
…
Package pkg=builder.getPackage();
WorkingMemory engine=ruleBase.NewWorkingMemory();
TestModel model=new TestModel();
engine.AssertObject(model);
RuleBase ruleBase=RuleBaseFactory.NewRuleBase();
ruleBase.AddPackage(pkg);
engine.FireAllRules();
…
2.3.2泄漏擴散模型匹配規則
為方便規則文件的管理,需要對其數據結構進行規范化設計,一個標準的規則結構分為條件部分與行為部分。大氣污染擴散模擬模型的正確匹配對于處置大氣污染擴散事故的效果而言至關重要,參考文獻[3]中大氣污染擴散模型的條件因子并融入空間算子后,所設計的大氣污染模型選擇規則見表1。

表1 大氣污染模型選擇規則
注:“是”表示進行布爾型運算;“否”表示不進行布爾型運算;“無”表示此項不參與規則運算。
此處的動態路徑規劃基于ArcGIS Server平臺,開發語言采用C#,編程環境為VS2010。
首先在Arccatalog中創建拓撲規則,必須保證數據為Geodatabase格式,且滿足要進行拓撲規則檢查的要素類在同一要素集下。通過規則引擎和上文提到的初始化必須數據,判斷并選取合適的大氣擴散模型;根據大氣擴散模型和事發點的經緯坐標,求取污染范圍或危險疏散區域,將相應范圍的多邊形作為擦除區域多邊形;將目標特征與擦除區域多邊形進行補集運算,只有落在擦除區域多邊形外的區域可以保留下來,即非污染區。需要注意的是,擦除區域多邊形只能是面元素,不能使用點元素或線元素。
在計算出非污染區后,直接應用A*算法就可以得出傳統路徑規劃。但是實際應用中,可能會要求救援人員深入污染區,或者時間緊迫需要通過污染區的捷徑來完成救援工作,這時就要用到本研究針對路阻因子的改進。
根據污染區的3個級別,分別對應3種不同的高風險道路代價,通過大氣擴散模型,先將求出的污染區范圍坐標信息傳到ArcGIS Server的ArcObject接口——IGeometry中,然后調用IFeatureLayer要素圖層接口,選擇相應的查詢圖層,在IGeometry的幾何范圍內,對目標圖層(道路圖層)的要素進行查詢檢索,可以得到一個道路要素的集合,對該集合內的道路要素遍歷,將每一條道路的代價進行大幅升高,便可以得到污染區內動態更新后的路阻因子了。
將上述方法依不同的權重進行3次修改,即可得到致死區、重傷區和輕傷區更新后的路阻因子。把這些路阻因子賦給用于動態規劃的A*算法[7],即可得到更準確的動態道路規劃結果,如圖4所示,三角標志點為救援力量的動態位置,白色線為傳統最優路徑規劃結果,黑色線為改進后的動態規劃結果。本模塊的局部核心代碼如下:
///
///嘗試尋路
///
///開始節點
private void TryToFindPaht(PathNode node)
{
if(openPath.Count>0)
{
closePath.Add(openPath[0]);//每次從開啟列表中取第一個添加到關閉列表,注意這個列表已經是排序后的,第一個即是F值最小的
openPath.RemoveAt(0);//把該節點從開啟列表中移除
}
AddOpenNode(node);//以這個節點為基準,把它四周的節點添加到開啟列表中,排除障礙物、已經在開啟列表或關閉列表中的
//當目標節點已經在開啟列表中時表示尋路成功
if(IsInOpenPaht(endNode))
{
closePath.Add(endNode);//將目標節點添到關閉列表中
endNode.ParentPoint=currentNode.Point;//目標節點的父節點為當前節點
findSuccess=true;
return;
}
SortPathByF();//依F值從小到大排序
if(openPath.Count>0)
{
currentNode=openPath[0];//從開啟列表中取F值最小的作為當前節點
TryToFindPaht(currentNode);//遞歸調用,再次尋路
}
}
…
…

圖4 針對事故危險區的動態最優路徑規劃
從圖4中可以看出,雖然白線更短,但是穿越了大部分大氣污染區;為了安全起見,黑線雖然更長,但是仍為最佳路徑。這就是筆者設計的動態路徑規劃與傳統路徑規劃的最大區別。
以大慶油田某油罐爆炸燃燒事故演習為例,現場初始信息:平均風速1.25m/s、風向東北、大氣穩態B級、爆炸燃燒源高度12m。
突發性大氣污染應急救援系統的污染系統主界如圖5所示,獲取事故類型、地點坐標及現場氣象等信息后,根據事先定義好的規則文件,自動在大氣擴散模型庫中精確匹配相應的大氣擴散模型。最終,系統會對運算結果以文字、圖片及表格等形式輸出。通過ArcGIS Server的空間拓撲運算,可以計算出事故的影響范圍,估算敏感點與風險源,規劃最優疏散救援路徑,并在地圖上進行標繪,最后給出整體的事故救援疏散解決方案。

圖5 污染系統主界面
此次進行的油罐爆炸演練,證明該程序可以在第一時間根據所需信息判斷出污染的事故類型,根據大氣擴散模型模擬出擴散的濃度與范圍,并根據規則文件提示處置方法供救援者參考,如自動推薦疏散途徑及最小代價的救援規劃等。相比較傳統的應急處置救援系統,使得救援和指揮具有高效性、靈活性和實用性。
筆者對大氣污染擴散事故應急救援的工作程序進行了分析,總結分析了適合于泄漏、火災或爆炸等不同空氣污染類型對應的數學依據和理論公式的應用范圍,對規則引擎進行改進,融合了空間
因子,基于ArcGIS Server技術,建立了面向多種空氣污染類型(燃燒及爆炸等)和多種自然環境(不同氣象和地形)的突發事故救援系統。根據多種參數(氣象、地形及自定義參數等)對大氣污染擴散的模型進行劃分,能夠根據事故的屬性信息,依托規則引擎選擇大氣污染擴散模型。針對以往動態路徑規劃的不足,改進了動態規劃算法,將事故污染的危險區作為路阻系數之一加入到算法中,既將危險區考慮到救援路徑規劃代價中,又避免了人工進入事故危險區采集路況信息,使得實時路徑規劃更具有實效性和靈活性。當然,該系統的模塊還有很多可以繼續改進的空間,規則的前件和后件的數量不多;規則的內容的粒度還不夠小、不夠細致;針對危險區域的動態路徑規劃仍然有很大的發展空間,如將區域多邊形內部的濃度作為限制條件結合到路徑代價計算上,可以更精確地計算出各個路徑的真實代價,而不是機械地躲避危險區域。