汪璟玢,王 瑞
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福建 福州350108)
隨著科學(xué)技術(shù)的進(jìn)步,現(xiàn)代工業(yè)設(shè)備日益向大型化、復(fù)雜化、高效化、精密化和自動(dòng)化的方向發(fā)展。這些發(fā)展在帶來機(jī)遇的同時(shí)也迎來了挑戰(zhàn),一方面提高了生產(chǎn)效率,創(chuàng)造了巨大的社會(huì)效益和經(jīng)濟(jì)效益;另一方面,對(duì)大型設(shè)備和系統(tǒng)的可靠運(yùn)行提出了更高的要求。在這些可靠性要求較高的應(yīng)用中,故障診斷的主動(dòng)需求性越來越高。由于機(jī)械設(shè)備的結(jié)構(gòu)復(fù)雜性,在實(shí)際維修時(shí),傳統(tǒng)的故障診斷多是在機(jī)器出現(xiàn)運(yùn)行故障后拆開檢查才知道哪部分發(fā)生故障,實(shí)時(shí)性明顯得不到保證。從傳統(tǒng)故障診斷中提煉出成功的故障排查經(jīng)驗(yàn),將其以產(chǎn)生式規(guī)則的形式表達(dá),借助Rete算法,設(shè)計(jì)出一種既能完整表達(dá)、記錄專家經(jīng)驗(yàn),又能真實(shí)模擬專家排故過程的故障診斷專家系統(tǒng),可以減少人力消耗,縮短故障維護(hù)時(shí)間,提高維修效率。
Rete算法通過形成一個(gè)Rete網(wǎng)絡(luò),利用基于規(guī)則的系統(tǒng)的兩個(gè)特征,即時(shí)間冗余性(Temporal Redundancy)和結(jié)構(gòu)相似性(Structural Similarity),來提高模式匹配的效率[1]。時(shí)間冗余性是指,由于在實(shí)際工作內(nèi)存中的事實(shí)內(nèi)容在規(guī)則推理過程中的變化是緩慢的,即在每個(gè)規(guī)則的匹配和執(zhí)行周期中,真正增刪的事實(shí)只占很小的比例。因此,因工作內(nèi)存中事實(shí)數(shù)據(jù)的變化而受影響規(guī)則也只占很少的一部分。這樣,只要在每個(gè)執(zhí)行周期中記錄并暫時(shí)忽略己經(jīng)匹配過的事實(shí)數(shù)據(jù)對(duì)象,并且只需要處理已修改的事實(shí)以及受到影響的規(guī)則[2]。而結(jié)構(gòu)相似性指Rete算法考慮到了事實(shí)上很多規(guī)則的模式和模式組是很相似的,可以充分利用這種特性來提高算法的效率[3]。所以Rete算法的基本思想就是:犧牲一部分內(nèi)存空間來保存并充分利用在之前模式匹配過程中的信息(事實(shí)、規(guī)則、匹配情況、規(guī)則模式等),來提高整體算法的匹配效率,達(dá)到顯著降低計(jì)算量的效果[4]。
規(guī)則的表達(dá)起源于人工智能領(lǐng)域中的知識(shí)表達(dá),有產(chǎn)生式、框架、語義網(wǎng)絡(luò)等表示形式[5]。也可以簡(jiǎn)單地理解為一組條件和滿足此條件下的操作[6]。Drools使用產(chǎn)生式知識(shí)表示規(guī)則,可簡(jiǎn)化表示為一個(gè)三元組(對(duì)象、屬性、值),用事件的因果關(guān)系來定義業(yè)務(wù)規(guī)則,即“當(dāng)條件為真,那么執(zhí)行動(dòng)作”[7]。
產(chǎn)生式規(guī)則由條件和結(jié)論兩部分組成,分別稱為規(guī)則的前件和后件[8],通常表示為如下形式:
其中,Cn為條件名稱;Fn為對(duì)條件Cn的描述。
本文設(shè)計(jì)的故障診斷專家系統(tǒng)與實(shí)時(shí)監(jiān)控系統(tǒng)構(gòu)成了診斷系統(tǒng)的兩大核心組成部分,兩者通過接口管理模塊進(jìn)行交互[9]。故障診斷系統(tǒng)的系統(tǒng)框架圖如圖1所示。
圖1 診斷系統(tǒng)框架圖
圖1中,實(shí)時(shí)監(jiān)控系統(tǒng)負(fù)責(zé)實(shí)時(shí)監(jiān)測(cè)機(jī)械設(shè)備的各種信號(hào)狀態(tài)和故障發(fā)生時(shí)的各種故障現(xiàn)象,為故障診斷專家系統(tǒng)提供數(shù)據(jù)支持[10]。規(guī)則知識(shí)管理模塊實(shí)現(xiàn)專家知識(shí)和經(jīng)驗(yàn)的獲取以及知識(shí)更新[11]。診斷模塊主要由診斷推理模塊、故障征兆提取模塊、解釋機(jī)構(gòu)等組成。故障征兆提取模塊從接口管理模塊中獲得實(shí)時(shí)監(jiān)控系統(tǒng)監(jiān)測(cè)到的異常信號(hào)狀態(tài)和故障現(xiàn)象,并從中提取有用的故障征兆信息[12]。解釋機(jī)構(gòu)可以在進(jìn)行故障診斷的同時(shí)給操作員一些說明信息,便于操作員明白診斷過程[13]。
本文設(shè)計(jì)的設(shè)備故障診斷的步驟如下:
(1)故障診斷專家系統(tǒng)通過規(guī)則知識(shí)管理模塊獲取專家知識(shí)和經(jīng)驗(yàn),以Drools規(guī)則文件的形式定義異常規(guī)則文件和故障現(xiàn)象規(guī)則文件。
(2)故障診斷專家系統(tǒng)通過接口管理模塊從實(shí)時(shí)監(jiān)控系統(tǒng)中得到異常信號(hào)狀態(tài)和故障現(xiàn)象數(shù)據(jù)。
(3)故障征兆提取模塊從步驟(2)得到的數(shù)據(jù)中提取征兆信息并傳給診斷推理模塊。
(4)診斷推理模塊根據(jù)征兆信息借助Drools規(guī)則引擎,運(yùn)用Rete算法進(jìn)行規(guī)則匹配,在匹配過程中解釋機(jī)構(gòu)可以給操作員一些說明信息,便于操作員明白診斷過程。
(5)當(dāng)步驟(4)的診斷結(jié)果是故障排除流程時(shí),系統(tǒng)轉(zhuǎn)而解析以XML格式存在的故障診斷流程,進(jìn)而找到故障原因。如果此時(shí)仍未找到故障根源,可以借助專家會(huì)診對(duì)故障進(jìn)行進(jìn)一步的分析。
知識(shí)庫的主要功能是存儲(chǔ)和管理專家系統(tǒng)中的知識(shí)和經(jīng)驗(yàn)。知識(shí)庫中擁有知識(shí)的多少及知識(shí)的質(zhì)量決定了一個(gè)專家系統(tǒng)所具有的解決問題的能力[14]。本系統(tǒng)采用Drools規(guī)則引擎,Drools的規(guī)則文件就是知識(shí)庫。本文以異常信號(hào)規(guī)則文件為例進(jìn)行說明。
一個(gè)設(shè)備有多個(gè)信號(hào)點(diǎn),例如電機(jī)控制信號(hào)、常規(guī)電源板電壓信號(hào)等,為了保證設(shè)備的正常運(yùn)轉(zhuǎn),每個(gè)信號(hào)點(diǎn)的信號(hào)都需要時(shí)刻處于正常狀態(tài)。一旦設(shè)備出現(xiàn)某種異常信號(hào),應(yīng)該盡快地找出導(dǎo)致異常信號(hào)出現(xiàn)的故障原因,進(jìn)行故障恢復(fù),將損失降至最小。實(shí)時(shí)監(jiān)控系統(tǒng)實(shí)時(shí)監(jiān)測(cè)設(shè)備的每個(gè)信號(hào)點(diǎn),當(dāng)某個(gè)信號(hào)出現(xiàn)異常時(shí),就會(huì)觸發(fā)Drools規(guī)則引擎,并將一個(gè)全局的異常信號(hào)狀態(tài)組合向量傳遞給Drools規(guī)則引擎,然后Drools規(guī)則引擎根據(jù)事先編譯好的異常信號(hào)規(guī)則文件進(jìn)行規(guī)則匹配,找出導(dǎo)致信號(hào)出現(xiàn)異常的故障原因或者某種故障處理流程,然后按照這個(gè)處理流程進(jìn)行故障排查。
異常信號(hào)規(guī)則文件對(duì)應(yīng)一個(gè)事實(shí)對(duì)象異常信號(hào)規(guī)則類(SignalRule)。根據(jù)系統(tǒng)對(duì)異常信號(hào)的處理方式,可以定義這個(gè)異常信號(hào)規(guī)則類,它的類圖如圖2所示。
圖2 異常信號(hào)規(guī)則類圖
在SignalRule類中,屬性ruleNumber代表規(guī)則的編號(hào),signalStatus代表實(shí)時(shí)監(jiān)測(cè)系統(tǒng)傳遞給Drools的全局信號(hào)狀態(tài)組合向量(以0、1的組合形式出現(xiàn),其中 0代表某個(gè)信號(hào)正常,1代表某個(gè)信號(hào)異常),processFlow代表導(dǎo)致信號(hào)出現(xiàn)異常的故障原因所對(duì)應(yīng)的故障排除流程。
鑒于故障排除流程含有多層嵌套關(guān)系,本文將故障診斷排除流程以XML格式存儲(chǔ),當(dāng)Drools規(guī)則引擎借助Rete算法進(jìn)行匹配的結(jié)果不是具體的故障原因而是故障排除流程時(shí),就會(huì)解析XML文檔,按照給定的故障流程進(jìn)行故障排除。
診斷流程錄入模塊將故障診斷排除流程以XML格式進(jìn)行保存。系統(tǒng)設(shè)計(jì)了清晰的錄入界面,方便用戶進(jìn)行錄入。
診斷流程控制模塊負(fù)責(zé)解析XML文檔并控制XML文檔中結(jié)點(diǎn)之間的跳轉(zhuǎn)。所謂結(jié)點(diǎn)之間的跳轉(zhuǎn)指在故障原因A由故障原因B間接引起的情況下,當(dāng)診斷到A時(shí),診斷流程的下一步即跳轉(zhuǎn)到B所對(duì)應(yīng)的XML文檔。
診斷流程獲取模塊獲取故障診斷專家系統(tǒng)的診斷結(jié)果,故障診斷專家系統(tǒng)的診斷結(jié)果是故障診斷流程時(shí),診斷流程獲取模塊獲得的與這個(gè)診斷流程相對(duì)應(yīng)的XML文檔名稱并傳遞給診斷流程控制模塊。
顯示模塊以SVG圖形的格式顯示整個(gè)診斷流程,并對(duì)當(dāng)前的診斷步驟以紅色進(jìn)行高亮顯示。當(dāng)診斷流程比較復(fù)雜時(shí),可以幫助用戶定位當(dāng)前的診斷步驟和下一步驟。
本系統(tǒng)的開發(fā)環(huán)境:MyEclipse 8.5+Java(JDK1.6)+Struts 1.2+ExtJs+Json。
本系統(tǒng)的運(yùn)行環(huán)境:Web服務(wù)器為Tomcat 6.0,數(shù)據(jù)庫為SQL Server 2008,規(guī)則引擎使用 Drools 5.1,瀏覽器使用 FireFox。
Rete算法的執(zhí)行效率主要由規(guī)則文件編譯和規(guī)則匹配兩部分組成。本系統(tǒng)中,在系統(tǒng)啟動(dòng)運(yùn)行時(shí)即創(chuàng)建監(jiān)聽器,分別對(duì)異常信號(hào)規(guī)則文件和故障現(xiàn)象規(guī)則文件進(jìn)行編譯,之后使用規(guī)則引擎時(shí)只需進(jìn)行規(guī)則匹配,而不需要再次對(duì)規(guī)則文件進(jìn)行編譯,提高了程序的響應(yīng)速度。這種設(shè)計(jì)方式下,可以忽略規(guī)則引擎進(jìn)行規(guī)則編譯的效率,所以Rete算法的執(zhí)行效率就是規(guī)則匹配效率。
以故障現(xiàn)象規(guī)則匹配為例進(jìn)行說明,其測(cè)試用例如表1所示。
表1 故障現(xiàn)象規(guī)則匹配效率測(cè)試結(jié)果
由測(cè)試結(jié)果可以看出,無論規(guī)則為多少條,使用Rete算法進(jìn)行規(guī)則匹配的運(yùn)行耗時(shí)都在16ms左右。將規(guī)則文件編譯和規(guī)則匹配分離開來,用戶在使用系統(tǒng)時(shí),不必理會(huì)規(guī)則文件編譯的時(shí)間,只需響應(yīng)規(guī)則匹配的時(shí)間,使得系統(tǒng)執(zhí)行效率增加的同時(shí),又提高了用戶的體驗(yàn)效果。
本文設(shè)計(jì)的故障診斷專家系統(tǒng)已經(jīng)應(yīng)用于實(shí)際項(xiàng)目中,即使是初級(jí)故障排除人員在該系統(tǒng)的逐步指導(dǎo)下也能快速準(zhǔn)確地定位故障,獲得了用戶的好評(píng)。該系統(tǒng)以產(chǎn)生式規(guī)則的形式表達(dá)專家的知識(shí)和經(jīng)驗(yàn),使得用戶能夠充分利用這些經(jīng)驗(yàn)真實(shí)地模擬專家排故過程,通過測(cè)試結(jié)果可以看到:將Rete算法應(yīng)用在故障診斷中可以提高故障診斷的定位速度。本系統(tǒng)具有一定的通用性,從技術(shù)角度和實(shí)用角度來說,都具有一定的意義。此外,將故障診斷中的知識(shí)和領(lǐng)域?qū)<医?jīng)驗(yàn)以規(guī)則的形式保存在規(guī)則文件中,一旦有新的專家知識(shí)和經(jīng)驗(yàn)需要表達(dá),只需要更改規(guī)則文件,而不需要對(duì)系統(tǒng)的源代碼進(jìn)行更改。
[1]ISHIDA T.An optimization algorithm for production systems[J].IEEE Transactions on Knowledge and Data Engineering,1994,6(4):549-558.
[2]FORGY C L.Rete:a fast algorithm for the many pattern/many object pattern match problem[J].Artificial Intelligence,1982,19(1):17-37.
[3]海濱.基于業(yè)務(wù)規(guī)則方法的 MIS系統(tǒng)研究與實(shí)現(xiàn)[D].天津:天津大學(xué),2007.
[4]汪峰.基于規(guī)則軟件開發(fā)的研究及其在醫(yī)療保險(xiǎn)系統(tǒng)中的應(yīng)用[D].天津:天津大學(xué),2009.
[5]繳明洋,譚慶平.Java規(guī)則引擎計(jì)算研究[J].計(jì)算機(jī)與信息技術(shù),2006,6(3):41-43.
[6]戎月莉.計(jì)算機(jī)模糊控制原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1995.
[7]張淵,夏清國(guó).基于Rete算法的 JAVA規(guī)則引擎[J].科學(xué)技術(shù)與工程,2006,6(11):1548-1550.
[8]楊智.基于Rete算法規(guī)則引擎的研究及其實(shí)現(xiàn)與應(yīng)用[D].沈陽:東北大學(xué),2007.
[9]PROCTOR M,NEALE M,LIN P,et al.Drools Documentation[EB/OL].http://www.drools.com.2006.
[10]WISEMAN G.A rule engine primer[A].2006.
[11]ABRAHAM A.Rule-based expert systems[D].Stillwater:Oklahoma State University,2005.
[12]彭磊.規(guī)則引擎原理分析[J].福建電腦,2006(9):42-45.
[13]楊智.基于Rete算法規(guī)則引擎的研究及其實(shí)現(xiàn)與應(yīng)用[D].沈陽:東北大學(xué),2007.
[14]航電設(shè)備故障診斷專家系統(tǒng)研究與實(shí)現(xiàn)[D].北京:北京航空航天大學(xué),2007.