油氣事故通常會(huì)產(chǎn)生劇烈的化學(xué)反應(yīng),很難直接獲得出事地點(diǎn)所需的應(yīng)急資源需求信息,從而影響后續(xù)應(yīng)急資源的籌集、供應(yīng)和調(diào)運(yùn)。目前,尚沒有成熟的油氣事故應(yīng)急資源需求預(yù)測(cè)方法,而是主要以專家經(jīng)驗(yàn)判斷為準(zhǔn),因此既缺乏科學(xué)合理性,又沒有將以往事故或演習(xí)的經(jīng)驗(yàn)加以利用[1-2],而現(xiàn)有的應(yīng)急資源需求預(yù)測(cè)模型多停留在理論層面,沒有對(duì)其進(jìn)行深入的應(yīng)用研究[3]。采用科學(xué)的方法,建立相對(duì)可靠的油氣事故應(yīng)急資源需求預(yù)測(cè)模型,開發(fā)用于工程實(shí)際的應(yīng)急資源需求預(yù)測(cè)軟件對(duì)油氣事故應(yīng)急救援活動(dòng)的成功開展具有重要意義。本文采用Visual Basic.NET[4]作為軟件開發(fā)工具,使用SQL Server構(gòu)建相關(guān)數(shù)據(jù)庫,開發(fā)了油氣事故應(yīng)急資源需求預(yù)測(cè)支持決策系統(tǒng),實(shí)現(xiàn)了應(yīng)急資源需求預(yù)測(cè)數(shù)學(xué)模型的工程應(yīng)用。同時(shí),該系統(tǒng)兼具自學(xué)習(xí)功能,隨著該系統(tǒng)的不斷應(yīng)用,其相關(guān)數(shù)據(jù)庫不斷豐富,預(yù)測(cè)結(jié)果也將日趨準(zhǔn)確。油氣事故應(yīng)急資源需求預(yù)測(cè)支持決策系統(tǒng)的應(yīng)用可為事故后應(yīng)急救援活動(dòng)快速有效的開展提供科學(xué)的理論依據(jù)。
案例推理(Case-based Reasoning,CBR)是一種新興的人工智能推理方法,它是由目標(biāo)案例(Target Case)的提示而獲得記憶中的源案例(Base Case),并且通過源案例來指導(dǎo)目標(biāo)案例求解的一種策略[5]。雖然各油氣事故屬性及處置方法不盡相同,但針對(duì)某個(gè)事故而言,歷史上一般都存在與其相近的案例,在事故屬性相近的前提下,開展應(yīng)急救援活動(dòng)所需的應(yīng)急資源需求也具有相關(guān)一致性,可以考慮利用油氣長(zhǎng)輸管道事故的歷史數(shù)據(jù)建立源案例庫,構(gòu)造基于案例推理的油氣長(zhǎng)輸管道事故應(yīng)急資源需求預(yù)測(cè)模型,選取相似源案例并從中抽取決定應(yīng)急資源需求的關(guān)鍵因素,應(yīng)用相似原理對(duì)新目標(biāo)案例的應(yīng)急資源需求情況進(jìn)行預(yù)測(cè)。
假設(shè)已建立油氣長(zhǎng)輸管道歷史源案例信息庫,庫中共有n個(gè)源案例,可將源案例集記為C={C1,C2,…,Ci,…,Cn},i=1,2,…,n。每個(gè)源案例有m個(gè)屬性,可將源案例的屬性集記為F={F1,F2,…,Fj,…,Fm},j=1,2,…,n。與F相對(duì)應(yīng),每個(gè)源案例的屬性值集可記為X={X1,X2,…,Xj,…,Xm}。每個(gè)F的影響權(quán)重集記為ω={ω1,ω2,…,ωj,…,標(biāo)案例則記為T=(T1,T2,…,Tj,…,Tm)。這樣,即可構(gòu)造屬性值矩陣:
式中:Xij為第i個(gè)源案例中第j個(gè)屬性的值。
為求工程計(jì)算的準(zhǔn)確性,需將各不同量綱屬性值按式(1)進(jìn)行歸一化處理。
式中:Ω*j為屬性值整合矩陣中屬性j的無量綱值,Ωj為屬性j的實(shí)際值,maxΩj、minΩj為屬性j的最大值和最小值。
權(quán)重計(jì)算可由數(shù)學(xué)期望式(2)、標(biāo)準(zhǔn)差式(3)及屬性值權(quán)重式(4)順序求得。
(1)屬性相似度
油氣長(zhǎng)輸管道事故案例的屬性主要包括數(shù)字屬性值(Crisp Numeric,CN)和符號(hào)屬性值(Crisp Symbolic,CS)兩大類。
①數(shù)字屬性可由經(jīng)歸一化后的海明公式(Hamming)求得。
②符號(hào)屬性分為無序枚舉和有序枚舉兩類,其屬性值相似度分別由式(6)、(7)計(jì)算。
(2)結(jié)構(gòu)相似度
計(jì)算Ci與T的結(jié)構(gòu)相似度,先將Ci的所有的非空屬性構(gòu)成的集合記為Ai,T的所有非空屬性構(gòu)成的集合記為B。計(jì)算MTi=Ai∩B與NTi=Ai∪B。
(3)全局相似度
按式(9)求取源案例與目標(biāo)案例的全局相似度,相似度最大的源案例即為相似案例。
確定最相似源案例后,分析其應(yīng)急資源需求的品類和結(jié)構(gòu),抽取如事故影響范圍R、危險(xiǎn)品(油氣)耗量Q、被困人員數(shù)量U分別決定基礎(chǔ)救援設(shè)備需求量Φ1、搶險(xiǎn)救援設(shè)備需求量Φ2和醫(yī)療救援設(shè)備的需求量Φ3的關(guān)鍵因素。若目標(biāo)案例中事故影響范圍為RT,危險(xiǎn)品耗量為QT,被困人員數(shù)量為UT。根據(jù)等比例原則,目標(biāo)案例中基礎(chǔ)救援設(shè)備、搶險(xiǎn)救援設(shè)備和醫(yī)療救援設(shè)備的需求
根據(jù)決策系統(tǒng)目標(biāo),按照結(jié)構(gòu)化系統(tǒng)分析與設(shè)計(jì)的思路,該系統(tǒng)可分為三個(gè)模塊:用戶登陸模塊,數(shù)據(jù)信息管理模塊,數(shù)據(jù)錄入及計(jì)算模塊。用戶可通過對(duì)這三個(gè)模塊的操作最終得到應(yīng)急資源需求預(yù)測(cè)結(jié)果。圖1為決策支持系統(tǒng)的流程圖。
圖1 決策支持系統(tǒng)流程圖
用戶登錄模塊用來檢查客戶輸入的用戶名及密碼,只有輸入正確的用戶名和密碼,才能進(jìn)入程序主界面,用戶登錄界面如圖2。數(shù)據(jù)信息管理模塊提供對(duì)數(shù)據(jù)的添加、修改、保存和刪除等功能,便于用戶向數(shù)據(jù)庫錄入和修改案例數(shù)據(jù),并能夠直觀的顯示數(shù)據(jù)庫中的表格信息。計(jì)算模塊用來求解用戶需求的信息,并能夠?qū)⒂?jì)算結(jié)果更新至數(shù)據(jù)庫作為原始數(shù)據(jù),以實(shí)現(xiàn)系統(tǒng)的自學(xué)習(xí)功能。
圖2 用戶登錄界面
該系統(tǒng)后臺(tái)數(shù)據(jù)庫采用Microsoft SQL Server建立,使用ADO.NET[6]數(shù)據(jù)訪問模型提供所建立的數(shù)據(jù)源的訪問接口,具有良好的開放和擴(kuò)充性能。根據(jù)系統(tǒng)需實(shí)現(xiàn)的功能要求,在數(shù)據(jù)庫中建立一張包含12個(gè)字段的歷史源案例信息表。字段分別為:序號(hào)、事故等級(jí)、危險(xiǎn)品類型、儲(chǔ)罐容積半徑、罐區(qū)面積、罐區(qū)人員密度、基礎(chǔ)救援設(shè)備、搶險(xiǎn)救援設(shè)備、醫(yī)療救援設(shè)備、事故影響范圍、危險(xiǎn)品耗量、被困人員數(shù)量(表1)。該表格包含了歷史源案例的各種屬性信息和關(guān)鍵因素信息,且能夠存儲(chǔ)目標(biāo)案例的屬性信息和關(guān)鍵因素信息,計(jì)算出目標(biāo)案例的應(yīng)急資源需求量后,經(jīng)檢查修正后,可自動(dòng)將其作為一條新的案例存儲(chǔ)起來,以豐富歷史源案例數(shù)據(jù)庫,為日后應(yīng)急資源需求預(yù)測(cè)提供更為準(zhǔn)確的數(shù)據(jù)信息。用戶根據(jù)實(shí)際需求以管理員身份進(jìn)入數(shù)據(jù)庫后可對(duì)除“序號(hào)”以外的字段進(jìn)行諸如刪除、添加和變更等修改,從而使系統(tǒng)能更好的適應(yīng)不同用戶對(duì)屬性信息和關(guān)鍵因素信息需求不同的情況。
表1 案例信息表格數(shù)據(jù)類型
歷史源案例信息數(shù)據(jù)庫是該系統(tǒng)中的重要組成部分,對(duì)其進(jìn)行合理的管理維護(hù)是保證該系統(tǒng)成功應(yīng)用的前提,數(shù)據(jù)的同步更新是其中的關(guān)鍵技術(shù)。當(dāng)用戶通過客戶端對(duì)歷史源案例信息進(jìn)行添加、保存、刪除或修改命令時(shí),程序?qū)⒈3纸缑姹砀駭?shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)同步更新,將修改的數(shù)據(jù)實(shí)時(shí)地保存至數(shù)據(jù)庫,為計(jì)算目標(biāo)案例應(yīng)急資源的需求量提供原始參數(shù)。首先,利用Visual Studio工具箱[7]中的Data Grid View控件實(shí)現(xiàn)歷史案例信息的顯示功能,用戶可以在該控件中進(jìn)行添加、刪除和選中行數(shù)據(jù)等操作;然后通過“保存”與“刪除”兩個(gè)Button按鈕來實(shí)現(xiàn)數(shù)據(jù)的添加、修改和刪除功能。源程序新建了一個(gè)Data Set數(shù)據(jù)集,將其表格內(nèi)容賦予Data Grid View控件的Data Source屬性,再通過Command類里的Update()方法把DataSet數(shù)據(jù)集中的數(shù)據(jù)更新至數(shù)據(jù)庫。對(duì)數(shù)據(jù)進(jìn)行刪除操作時(shí)首先需要選中一行或多行數(shù)據(jù),然后根據(jù)選中的行數(shù)使用For循環(huán)語句逐行刪除數(shù)據(jù),最后通過End Edit()方法結(jié)束對(duì)DataGridView控件的編輯并用Update()方法再次更新數(shù)據(jù)庫。圖3為歷史源案例信息管理界面。
圖3 歷史源案例信息管理界面
根據(jù)歷史源案例信息及目標(biāo)案例屬性及關(guān)鍵因素信息,預(yù)測(cè)目標(biāo)案例應(yīng)急資源需求量是本程序的核心部分,即將前述的案例推理模型用計(jì)算機(jī)語言來實(shí)現(xiàn)。首先,從數(shù)據(jù)庫讀取歷史源案例信息,并將其用矩陣表示,依據(jù)輸入項(xiàng)目判斷數(shù)據(jù)屬性類型。然后,建立屬性矩陣并對(duì)其進(jìn)行歸一化處理,求出屬性權(quán)重后將其儲(chǔ)存在矩陣當(dāng)中。如果歷史源案例沒有屬性值缺失,該源案例與目標(biāo)案例結(jié)構(gòu)相似度為1,否則將根據(jù)權(quán)重結(jié)果來計(jì)算結(jié)構(gòu)相似度。進(jìn)而求出全局相似度后進(jìn)行數(shù)值對(duì)比,把全局相似度值最大的歷史源案例作為參考案例,用以參與后續(xù)應(yīng)急資源需求量的預(yù)測(cè)。圖4為應(yīng)急資源需求量預(yù)測(cè)求解過程。
圖4 應(yīng)急資源需求量求解過程
油氣長(zhǎng)輸管道沿線某油罐場(chǎng)站發(fā)生火災(zāi)爆炸事故,現(xiàn)對(duì)其應(yīng)急救援活動(dòng)中應(yīng)急資源需求量進(jìn)行預(yù)測(cè)。假定歷史源案例數(shù)據(jù)庫已構(gòu)建,表2~表4為數(shù)據(jù)庫中已經(jīng)儲(chǔ)存的歷史源案例信息及目標(biāo)案例相關(guān)信息,要求對(duì)目標(biāo)案例相應(yīng)應(yīng)急資源需求量進(jìn)行預(yù)測(cè)。
表2 歷史源案例應(yīng)急資源需求量
表3 歷史源案例及目標(biāo)案例屬性信息
表4 歷史源案例及目標(biāo)案例關(guān)鍵因素信息
在程序主界面輸入目標(biāo)案例屬性信息及關(guān)鍵因素信息后,計(jì)算得出目標(biāo)案例的基礎(chǔ)救援設(shè)備需求量為18 t,搶險(xiǎn)救援設(shè)備需求量為45.8 t,醫(yī)療救援設(shè)備需求量為28.8 t(圖5),為更加可靠有效的進(jìn)行應(yīng)急救援活動(dòng),可在所求應(yīng)急資源需求量的基礎(chǔ)上增加一定比例的余量。根據(jù)得到的應(yīng)急資源需求量可進(jìn)一步指導(dǎo)確定應(yīng)急資源優(yōu)化調(diào)運(yùn)方案,而后將實(shí)際應(yīng)急資源需求量記入歷史源案例數(shù)據(jù)庫實(shí)現(xiàn)系統(tǒng)自學(xué)習(xí)。
圖5 程序計(jì)算界面
(1)構(gòu)建了基于案例推理的油氣長(zhǎng)輸管道應(yīng)急資源需求預(yù)測(cè)數(shù)學(xué)模型,給出了其計(jì)算過程,以Visual Basic.NET為工具,使用SQL Server構(gòu)建相關(guān)數(shù)據(jù)庫,開發(fā)了油氣事故應(yīng)急資源需求預(yù)測(cè)支持決策系統(tǒng),用以對(duì)油氣長(zhǎng)輸管道事故中應(yīng)急救援活動(dòng)所需的應(yīng)急資源需求做出預(yù)測(cè),并通過模擬算例驗(yàn)證了該系統(tǒng)的可行性和可靠性。
(2)該系統(tǒng)能夠幫助決策者快速、客觀、科學(xué)的預(yù)測(cè)應(yīng)急資源需求量,改變了由管理人員憑借經(jīng)驗(yàn)主觀判斷需求量的現(xiàn)狀,并可將新案例自動(dòng)更新至數(shù)據(jù)庫,實(shí)現(xiàn)系統(tǒng)自學(xué)習(xí)功能,以此不斷豐富歷史源案例信息,使下一次預(yù)測(cè)結(jié)果更加趨于準(zhǔn)確。
(3)該系統(tǒng)雖然能夠根據(jù)歷史源案例直接預(yù)測(cè)應(yīng)急資源需求信息,但預(yù)測(cè)值與實(shí)際消耗的應(yīng)急資源量難免存在一定偏差,如何通過實(shí)際消耗真值來修正儲(chǔ)存在數(shù)據(jù)庫中的預(yù)測(cè)值將是本系統(tǒng)有待改進(jìn)的一個(gè)方向。另外,系統(tǒng)中案例屬性類型如模糊數(shù)、模糊區(qū)間等還需進(jìn)一步豐富。
[1] Ricci F,Avesani P,Perini A.Cases on fire:applying CBR to emergency management[J].The New Review of Applied Expert Systems,1999,5(6):175-190.
[2] ZhangD S,ZhouL N,JrNunamakerJ F.A knowledge management framework for the support of decision making in humanitarian assistance/disaster relief[J].Knowledge and Information Systems,2002,4(3):370-385.
[3] Yalta A T,Olaf J.On the importance of verifying forecasting results[J].International Journal of Forecasting,2009(25):62-73.
[4] Tanimoto H,Arai T Y,Grondahl K.Development of software for dental radiology education using VB.NET[J].International Congress Series,2005(1281):1262-1266
[5] Daniel S K,Claudia B M,Heloisa V R.Supporting modeling and problem solving from precedent experiences:the role of workflows and case-based reasoning[J].Environmental Modelling&Software,2005,20(6):689-704.
[6] Robert H,Malcolm C,David P.Programming Review of Visual Basic.NET for the Laboratory Automation Industry[J].Journal of the Association for Laboratory Automation,2007(32):25-32.
[7] ??说罓?Visual Basic.NET程序設(shè)計(jì)高級(jí)教程[M].北京:清華大學(xué)出版社,2005.