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

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

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

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

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

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

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

    在SignalRule類中,屬性ruleNumber代表規(guī)則的編號,signalStatus代表實時監(jiān)測系統(tǒng)傳遞給Drools的全局信號狀態(tài)組合向量(以0、1的組合形式出現,其中0代表某個信號正常,1代表某個信號異常),processFlow代表導致信號出現異常的故障原因所對應的故障排除流程。
2.4 設備故障診斷排除流程
    鑒于故障排除流程含有多層嵌套關系,本文將故障診斷排除流程以XML格式存儲,當Drools規(guī)則引擎借助Rete算法進行匹配的結果不是具體的故障原因而是故障排除流程時,就會解析XML文檔,按照給定的故障流程進行故障排除。
    診斷流程錄入模塊將故障診斷排除流程以XML格式進行保存。系統(tǒng)設計了清晰的錄入界面,方便用戶進行錄入。
    診斷流程控制模塊負責解析XML文檔并控制XML文檔中結點之間的跳轉。所謂結點之間的跳轉指在故障原因A由故障原因B間接引起的情況下,當診斷到A時,診斷流程的下一步即跳轉到B所對應的XML文檔。
    診斷流程獲取模塊獲取故障診斷專家系統(tǒng)的診斷結果,故障診斷專家系統(tǒng)的診斷結果是故障診斷流程時,診斷流程獲取模塊獲得的與這個診斷流程相對應的XML文檔名稱并傳遞給診斷流程控制模塊。
    顯示模塊以SVG圖形的格式顯示整個診斷流程,并對當前的診斷步驟以紅色進行高亮顯示。當診斷流程比較復雜時,可以幫助用戶定位當前的診斷步驟和下一步驟。
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服務器為Tomcat 6.0,數據庫為SQL Server 2008,規(guī)則引擎使用Drools 5.1,瀏覽器使用FireFox。
3.2 規(guī)則匹配效率測試
    Rete算法的執(zhí)行效率主要由規(guī)則文件編譯和規(guī)則匹配兩部分組成。本系統(tǒng)中,在系統(tǒng)啟動運行時即創(chuàng)建監(jiān)聽器,分別對異常信號規(guī)則文件和故障現象規(guī)則文件進行編譯,之后使用規(guī)則引擎時只需進行規(guī)則匹配,而不需要再次對規(guī)則文件進行編譯,提高了程序的響應速度。這種設計方式下,可以忽略規(guī)則引擎進行規(guī)則編譯的效率,所以Rete算法的執(zhí)行效率就是規(guī)則匹配效率。
    以故障現象規(guī)則匹配為例進行說明,其測試用例如表1所示。

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。