《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > Rete算法的應(yīng)用研究
Rete算法的應(yīng)用研究
來源:微型機與應(yīng)用2013年第6期
汪璟玢,王 瑞
(福州大學(xué) 數(shù)學(xué)與計算機科學(xué)學(xué)院,福建 福州350108)
摘要: 對專家系統(tǒng)和基于規(guī)則的專家系統(tǒng)進(jìn)行了研究,尤其對基于規(guī)則的專家系統(tǒng)中的模式匹配算法進(jìn)行了深入分析和理解。在此理論基礎(chǔ)上,將一種高效的模式匹配算法——Rete算法引入到實際的故障的診斷系統(tǒng)中,以保證故障診斷的高效性和準(zhǔn)確性。為此在實際系統(tǒng)中,借助規(guī)則引擎將故障信息規(guī)則化,并將故障診斷流程以層次分明的XML文檔進(jìn)行表示,來模擬領(lǐng)域?qū)<疫M(jìn)行故障診斷和故障排除的功能。實踐表明,該故障診斷系統(tǒng)可以提高定位故障的速度和準(zhǔn)確度。
Abstract:
Key words :

摘  要: 對專家系統(tǒng)和基于規(guī)則的專家系統(tǒng)進(jìn)行了研究,尤其對基于規(guī)則的專家系統(tǒng)中的模式匹配算法進(jìn)行了深入分析和理解。在此理論基礎(chǔ)上,將一種高效的模式匹配算法——Rete算法引入到實際的故障的診斷系統(tǒng)中,以保證故障診斷的高效性和準(zhǔn)確性。為此在實際系統(tǒng)中,借助規(guī)則引擎將故障信息規(guī)則化,并將故障診斷流程以層次分明的XML文檔進(jìn)行表示,來模擬領(lǐng)域?qū)<疫M(jìn)行故障診斷和故障排除的功能。實踐表明,該故障診斷系統(tǒng)可以提高定位故障的速度和準(zhǔn)確度。
關(guān)鍵詞: 模式匹配;規(guī)則;Rete算法;故障診斷

    隨著科學(xué)技術(shù)的進(jìn)步,現(xiàn)代工業(yè)設(shè)備日益向大型化、復(fù)雜化、高效化、精密化和自動化的方向發(fā)展。這些發(fā)展在帶來機遇的同時也迎來了挑戰(zhàn),一方面提高了生產(chǎn)效率,創(chuàng)造了巨大的社會效益和經(jīng)濟(jì)效益;另一方面,對大型設(shè)備和系統(tǒng)的可靠運行提出了更高的要求。在這些可靠性要求較高的應(yīng)用中,故障診斷的主動需求性越來越高。由于機械設(shè)備的結(jié)構(gòu)復(fù)雜性,在實際維修時,傳統(tǒng)的故障診斷多是在機器出現(xiàn)運行故障后拆開檢查才知道哪部分發(fā)生故障,實時性明顯得不到保證。從傳統(tǒng)故障診斷中提煉出成功的故障排查經(jīng)驗,將其以產(chǎn)生式規(guī)則的形式表達(dá),借助Rete算法,設(shè)計出一種既能完整表達(dá)、記錄專家經(jīng)驗,又能真實模擬專家排故過程的故障診斷專家系統(tǒng),可以減少人力消耗,縮短故障維護(hù)時間,提高維修效率。
1 Rete算法
1.1 Rete模式匹配算法  

    Rete算法通過形成一個Rete網(wǎng)絡(luò),利用基于規(guī)則的系統(tǒng)的兩個特征,即時間冗余性(Temporal Redundancy)和結(jié)構(gòu)相似性(Structural Similarity),來提高模式匹配的效率[1]。時間冗余性是指,由于在實際工作內(nèi)存中的事實內(nèi)容在規(guī)則推理過程中的變化是緩慢的,即在每個規(guī)則的匹配和執(zhí)行周期中,真正增刪的事實只占很小的比例。因此,因工作內(nèi)存中事實數(shù)據(jù)的變化而受影響規(guī)則也只占很少的一部分。這樣,只要在每個執(zhí)行周期中記錄并暫時忽略己經(jīng)匹配過的事實數(shù)據(jù)對象,并且只需要處理已修改的事實以及受到影響的規(guī)則[2]。而結(jié)構(gòu)相似性指Rete算法考慮到了事實上很多規(guī)則的模式和模式組是很相似的,可以充分利用這種特性來提高算法的效率[3]。所以Rete算法的基本思想就是:犧牲一部分內(nèi)存空間來保存并充分利用在之前模式匹配過程中的信息(事實、規(guī)則、匹配情況、規(guī)則模式等),來提高整體算法的匹配效率,達(dá)到顯著降低計算量的效果[4]。
1.2 規(guī)則的表達(dá)
    規(guī)則的表達(dá)起源于人工智能領(lǐng)域中的知識表達(dá),有產(chǎn)生式、框架、語義網(wǎng)絡(luò)等表示形式[5]。也可以簡單地理解為一組條件和滿足此條件下的操作[6]。Drools使用產(chǎn)生式知識表示規(guī)則,可簡化表示為一個三元組(對象、屬性、值),用事件的因果關(guān)系來定義業(yè)務(wù)規(guī)則,即“當(dāng)條件為真,那么執(zhí)行動作”[7]。
  

2 設(shè)備故障診斷系統(tǒng)
2.1 系統(tǒng)框架

    本文設(shè)計的故障診斷專家系統(tǒng)與實時監(jiān)控系統(tǒng)構(gòu)成了診斷系統(tǒng)的兩大核心組成部分,兩者通過接口管理模塊進(jìn)行交互[9]。故障診斷系統(tǒng)的系統(tǒng)框架圖如圖1所示。

    圖1中,實時監(jiān)控系統(tǒng)負(fù)責(zé)實時監(jiān)測機械設(shè)備的各種信號狀態(tài)和故障發(fā)生時的各種故障現(xiàn)象,為故障診斷專家系統(tǒng)提供數(shù)據(jù)支持[10]。規(guī)則知識管理模塊實現(xiàn)專家知識和經(jīng)驗的獲取以及知識更新[11]。診斷模塊主要由診斷推理模塊、故障征兆提取模塊、解釋機構(gòu)等組成。故障征兆提取模塊從接口管理模塊中獲得實時監(jiān)控系統(tǒng)監(jiān)測到的異常信號狀態(tài)和故障現(xiàn)象,并從中提取有用的故障征兆信息[12]。解釋機構(gòu)可以在進(jìn)行故障診斷的同時給操作員一些說明信息,便于操作員明白診斷過程[13]。
2.2 設(shè)備故障診斷步驟
    本文設(shè)計的設(shè)備故障診斷的步驟如下:
    (1)故障診斷專家系統(tǒng)通過規(guī)則知識管理模塊獲取專家知識和經(jīng)驗,以Drools規(guī)則文件的形式定義異常規(guī)則文件和故障現(xiàn)象規(guī)則文件。
    (2)故障診斷專家系統(tǒng)通過接口管理模塊從實時監(jiān)控系統(tǒng)中得到異常信號狀態(tài)和故障現(xiàn)象數(shù)據(jù)。
    (3)故障征兆提取模塊從步驟(2)得到的數(shù)據(jù)中提取征兆信息并傳給診斷推理模塊。
    (4)診斷推理模塊根據(jù)征兆信息借助Drools規(guī)則引擎,運用Rete算法進(jìn)行規(guī)則匹配,在匹配過程中解釋機構(gòu)可以給操作員一些說明信息,便于操作員明白診斷過程。
    (5)當(dāng)步驟(4)的診斷結(jié)果是故障排除流程時,系統(tǒng)轉(zhuǎn)而解析以XML格式存在的故障診斷流程,進(jìn)而找到故障原因。如果此時仍未找到故障根源,可以借助專家會診對故障進(jìn)行進(jìn)一步的分析。
2.3 設(shè)備故障診斷知識庫
    知識庫的主要功能是存儲和管理專家系統(tǒng)中的知識和經(jīng)驗。知識庫中擁有知識的多少及知識的質(zhì)量決定了一個專家系統(tǒng)所具有的解決問題的能力[14]。本系統(tǒng)采用Drools規(guī)則引擎,Drools的規(guī)則文件就是知識庫。本文以異常信號規(guī)則文件為例進(jìn)行說明。
    一個設(shè)備有多個信號點,例如電機控制信號、常規(guī)電源板電壓信號等,為了保證設(shè)備的正常運轉(zhuǎn),每個信號點的信號都需要時刻處于正常狀態(tài)。一旦設(shè)備出現(xiàn)某種異常信號,應(yīng)該盡快地找出導(dǎo)致異常信號出現(xiàn)的故障原因,進(jìn)行故障恢復(fù),將損失降至最小。實時監(jiān)控系統(tǒng)實時監(jiān)測設(shè)備的每個信號點,當(dāng)某個信號出現(xiàn)異常時,就會觸發(fā)Drools規(guī)則引擎,并將一個全局的異常信號狀態(tài)組合向量傳遞給Drools規(guī)則引擎,然后Drools規(guī)則引擎根據(jù)事先編譯好的異常信號規(guī)則文件進(jìn)行規(guī)則匹配,找出導(dǎo)致信號出現(xiàn)異常的故障原因或者某種故障處理流程,然后按照這個處理流程進(jìn)行故障排查。
    異常信號規(guī)則文件對應(yīng)一個事實對象異常信號規(guī)則類(SignalRule)。根據(jù)系統(tǒng)對異常信號的處理方式,可以定義這個異常信號規(guī)則類,它的類圖如圖2所示。

    在SignalRule類中,屬性ruleNumber代表規(guī)則的編號,signalStatus代表實時監(jiān)測系統(tǒng)傳遞給Drools的全局信號狀態(tài)組合向量(以0、1的組合形式出現(xiàn),其中0代表某個信號正常,1代表某個信號異常),processFlow代表導(dǎo)致信號出現(xiàn)異常的故障原因所對應(yīng)的故障排除流程。
2.4 設(shè)備故障診斷排除流程
    鑒于故障排除流程含有多層嵌套關(guān)系,本文將故障診斷排除流程以XML格式存儲,當(dāng)Drools規(guī)則引擎借助Rete算法進(jìn)行匹配的結(jié)果不是具體的故障原因而是故障排除流程時,就會解析XML文檔,按照給定的故障流程進(jìn)行故障排除。
    診斷流程錄入模塊將故障診斷排除流程以XML格式進(jìn)行保存。系統(tǒng)設(shè)計了清晰的錄入界面,方便用戶進(jìn)行錄入。
    診斷流程控制模塊負(fù)責(zé)解析XML文檔并控制XML文檔中結(jié)點之間的跳轉(zhuǎn)。所謂結(jié)點之間的跳轉(zhuǎn)指在故障原因A由故障原因B間接引起的情況下,當(dāng)診斷到A時,診斷流程的下一步即跳轉(zhuǎn)到B所對應(yīng)的XML文檔。
    診斷流程獲取模塊獲取故障診斷專家系統(tǒng)的診斷結(jié)果,故障診斷專家系統(tǒng)的診斷結(jié)果是故障診斷流程時,診斷流程獲取模塊獲得的與這個診斷流程相對應(yīng)的XML文檔名稱并傳遞給診斷流程控制模塊。
    顯示模塊以SVG圖形的格式顯示整個診斷流程,并對當(dāng)前的診斷步驟以紅色進(jìn)行高亮顯示。當(dāng)診斷流程比較復(fù)雜時,可以幫助用戶定位當(dāng)前的診斷步驟和下一步驟。
3 實驗與分析
3.1 故障診斷運行環(huán)境

    本系統(tǒng)的開發(fā)環(huán)境:MyEclipse 8.5+Java(JDK1.6)+Struts 1.2+ExtJs+Json。
    本系統(tǒng)的運行環(huán)境:Web服務(wù)器為Tomcat 6.0,數(shù)據(jù)庫為SQL Server 2008,規(guī)則引擎使用Drools 5.1,瀏覽器使用FireFox。
3.2 規(guī)則匹配效率測試
    Rete算法的執(zhí)行效率主要由規(guī)則文件編譯和規(guī)則匹配兩部分組成。本系統(tǒng)中,在系統(tǒng)啟動運行時即創(chuàng)建監(jiān)聽器,分別對異常信號規(guī)則文件和故障現(xiàn)象規(guī)則文件進(jìn)行編譯,之后使用規(guī)則引擎時只需進(jìn)行規(guī)則匹配,而不需要再次對規(guī)則文件進(jìn)行編譯,提高了程序的響應(yīng)速度。這種設(shè)計方式下,可以忽略規(guī)則引擎進(jìn)行規(guī)則編譯的效率,所以Rete算法的執(zhí)行效率就是規(guī)則匹配效率。
    以故障現(xiàn)象規(guī)則匹配為例進(jìn)行說明,其測試用例如表1所示。

    由測試結(jié)果可以看出,無論規(guī)則為多少條,使用Rete算法進(jìn)行規(guī)則匹配的運行耗時都在16 ms左右。將規(guī)則文件編譯和規(guī)則匹配分離開來,用戶在使用系統(tǒng)時,不必理會規(guī)則文件編譯的時間,只需響應(yīng)規(guī)則匹配的時間,使得系統(tǒng)執(zhí)行效率增加的同時,又提高了用戶的體驗效果。
    本文設(shè)計的故障診斷專家系統(tǒng)已經(jīng)應(yīng)用于實際項目中,即使是初級故障排除人員在該系統(tǒng)的逐步指導(dǎo)下也能快速準(zhǔn)確地定位故障,獲得了用戶的好評。該系統(tǒng)以產(chǎn)生式規(guī)則的形式表達(dá)專家的知識和經(jīng)驗,使得用戶能夠充分利用這些經(jīng)驗真實地模擬專家排故過程,通過測試結(jié)果可以看到:將Rete算法應(yīng)用在故障診斷中可以提高故障診斷的定位速度。本系統(tǒng)具有一定的通用性,從技術(shù)角度和實用角度來說,都具有一定的意義。此外,將故障診斷中的知識和領(lǐng)域?qū)<医?jīng)驗以規(guī)則的形式保存在規(guī)則文件中,一旦有新的專家知識和經(jīng)驗需要表達(dá),只需要更改規(guī)則文件,而不需要對系統(tǒng)的源代碼進(jìn)行更改。
參考文獻(xià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)研究與實現(xiàn)[D].天津:天津大學(xué),2007.
[4] 汪峰.基于規(guī)則軟件開發(fā)的研究及其在醫(yī)療保險系統(tǒng)中的應(yīng)用[D].天津:天津大學(xué),2009.
[5] 繳明洋,譚慶平.Java規(guī)則引擎計算研究[J].計算機與信息技術(shù),2006,6(3):41-43.
[6] 戎月莉.計算機模糊控制原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1995.
[7] 張淵,夏清國.基于Rete算法的JAVA規(guī)則引擎[J].科學(xué)技術(shù)與工程,2006,6(11):1548-1550.
[8] 楊智.基于Rete算法規(guī)則引擎的研究及其實現(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ī)則引擎的研究及其實現(xiàn)與應(yīng)用[D].沈陽:東北大學(xué),2007.
[14] 航電設(shè)備故障診斷專家系統(tǒng)研究與實現(xiàn)[D].北京:北京航空航天大學(xué),2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。