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

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

    隨著科學(xué)技術(shù)的進步,,現(xiàn)代工業(yè)設(shè)備日益向大型化、復(fù)雜化,、高效化,、精密化和自動化的方向發(fā)展。這些發(fā)展在帶來機遇的同時也迎來了挑戰(zhàn),,一方面提高了生產(chǎn)效率,,創(chuàng)造了巨大的社會效益和經(jīng)濟效益,;另一方面,對大型設(shè)備和系統(tǒng)的可靠運行提出了更高的要求,。在這些可靠性要求較高的應(yīng)用中,,故障診斷的主動需求性越來越高。由于機械設(shè)備的結(jié)構(gòu)復(fù)雜性,,在實際維修時,,傳統(tǒng)的故障診斷多是在機器出現(xiàn)運行故障后拆開檢查才知道哪部分發(fā)生故障,實時性明顯得不到保證,。從傳統(tǒng)故障診斷中提煉出成功的故障排查經(jīng)驗,,將其以產(chǎn)生式規(guī)則的形式表達,借助Rete算法,,設(shè)計出一種既能完整表達,、記錄專家經(jīng)驗,又能真實模擬專家排故過程的故障診斷專家系統(tǒng),,可以減少人力消耗,,縮短故障維護時間,提高維修效率,。
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ī)則模式等),,來提高整體算法的匹配效率,達到顯著降低計算量的效果[4],。
1.2 規(guī)則的表達
    規(guī)則的表達起源于人工智能領(lǐng)域中的知識表達,,有產(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)的兩大核心組成部分,,兩者通過接口管理模塊進行交互[9]。故障診斷系統(tǒng)的系統(tǒng)框架圖如圖1所示,。

    圖1中,,實時監(jiān)控系統(tǒng)負責(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)可以在進行故障診斷的同時給操作員一些說明信息,,便于操作員明白診斷過程[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算法進行規(guī)則匹配,在匹配過程中解釋機構(gòu)可以給操作員一些說明信息,,便于操作員明白診斷過程,。
    (5)當(dāng)步驟(4)的診斷結(jié)果是故障排除流程時,系統(tǒng)轉(zhuǎn)而解析以XML格式存在的故障診斷流程,,進而找到故障原因,。如果此時仍未找到故障根源,可以借助專家會診對故障進行進一步的分析,。
2.3 設(shè)備故障診斷知識庫
    知識庫的主要功能是存儲和管理專家系統(tǒng)中的知識和經(jīng)驗,。知識庫中擁有知識的多少及知識的質(zhì)量決定了一個專家系統(tǒng)所具有的解決問題的能力[14],。本系統(tǒng)采用Drools規(guī)則引擎,Drools的規(guī)則文件就是知識庫,。本文以異常信號規(guī)則文件為例進行說明,。
    一個設(shè)備有多個信號點,例如電機控制信號,、常規(guī)電源板電壓信號等,,為了保證設(shè)備的正常運轉(zhuǎn),每個信號點的信號都需要時刻處于正常狀態(tài),。一旦設(shè)備出現(xiàn)某種異常信號,,應(yīng)該盡快地找出導(dǎo)致異常信號出現(xiàn)的故障原因,進行故障恢復(fù),,將損失降至最小,。實時監(jiān)控系統(tǒng)實時監(jiān)測設(shè)備的每個信號點,當(dāng)某個信號出現(xiàn)異常時,,就會觸發(fā)Drools規(guī)則引擎,,并將一個全局的異常信號狀態(tài)組合向量傳遞給Drools規(guī)則引擎,然后Drools規(guī)則引擎根據(jù)事先編譯好的異常信號規(guī)則文件進行規(guī)則匹配,,找出導(dǎo)致信號出現(xià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算法進行匹配的結(jié)果不是具體的故障原因而是故障排除流程時,,就會解析XML文檔,按照給定的故障流程進行故障排除,。
    診斷流程錄入模塊將故障診斷排除流程以XML格式進行保存,。系統(tǒng)設(shè)計了清晰的錄入界面,方便用戶進行錄入,。
    診斷流程控制模塊負責(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)前的診斷步驟以紅色進行高亮顯示。當(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ī)則文件進行編譯,之后使用規(guī)則引擎時只需進行規(guī)則匹配,,而不需要再次對規(guī)則文件進行編譯,,提高了程序的響應(yīng)速度。這種設(shè)計方式下,,可以忽略規(guī)則引擎進行規(guī)則編譯的效率,,所以Rete算法的執(zhí)行效率就是規(guī)則匹配效率。
    以故障現(xiàn)象規(guī)則匹配為例進行說明,,其測試用例如表1所示,。

    由測試結(jié)果可以看出,無論規(guī)則為多少條,,使用Rete算法進行規(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ī)則的形式表達專家的知識和經(jīng)驗,,使得用戶能夠充分利用這些經(jīng)驗真實地模擬專家排故過程,,通過測試結(jié)果可以看到:將Rete算法應(yīng)用在故障診斷中可以提高故障診斷的定位速度。本系統(tǒng)具有一定的通用性,,從技術(shù)角度和實用角度來說,,都具有一定的意義。此外,,將故障診斷中的知識和領(lǐng)域?qū)<医?jīng)驗以規(guī)則的形式保存在規(guī)則文件中,,一旦有新的專家知識和經(jīng)驗需要表達,只需要更改規(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è)務(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)載,。