Rete算法的应用研究
2013-05-14汪璟玢
汪璟玢,王 瑞
(福州大学 数学与计算机科学学院,福建 福州350108)
随着科学技术的进步,现代工业设备日益向大型化、复杂化、高效化、精密化和自动化的方向发展。这些发展在带来机遇的同时也迎来了挑战,一方面提高了生产效率,创造了巨大的社会效益和经济效益;另一方面,对大型设备和系统的可靠运行提出了更高的要求。在这些可靠性要求较高的应用中,故障诊断的主动需求性越来越高。由于机械设备的结构复杂性,在实际维修时,传统的故障诊断多是在机器出现运行故障后拆开检查才知道哪部分发生故障,实时性明显得不到保证。从传统故障诊断中提炼出成功的故障排查经验,将其以产生式规则的形式表达,借助Rete算法,设计出一种既能完整表达、记录专家经验,又能真实模拟专家排故过程的故障诊断专家系统,可以减少人力消耗,缩短故障维护时间,提高维修效率。
1 Rete算法
1.1 Rete模式匹配算法
Rete算法通过形成一个Rete网络,利用基于规则的系统的两个特征,即时间冗余性(Temporal Redundancy)和结构相似性(Structural Similarity),来提高模式匹配的效率[1]。时间冗余性是指,由于在实际工作内存中的事实内容在规则推理过程中的变化是缓慢的,即在每个规则的匹配和执行周期中,真正增删的事实只占很小的比例。因此,因工作内存中事实数据的变化而受影响规则也只占很少的一部分。这样,只要在每个执行周期中记录并暂时忽略己经匹配过的事实数据对象,并且只需要处理已修改的事实以及受到影响的规则[2]。而结构相似性指Rete算法考虑到了事实上很多规则的模式和模式组是很相似的,可以充分利用这种特性来提高算法的效率[3]。所以Rete算法的基本思想就是:牺牲一部分内存空间来保存并充分利用在之前模式匹配过程中的信息(事实、规则、匹配情况、规则模式等),来提高整体算法的匹配效率,达到显著降低计算量的效果[4]。
1.2 规则的表达
规则的表达起源于人工智能领域中的知识表达,有产生式、框架、语义网络等表示形式[5]。也可以简单地理解为一组条件和满足此条件下的操作[6]。Drools使用产生式知识表示规则,可简化表示为一个三元组(对象、属性、值),用事件的因果关系来定义业务规则,即“当条件为真,那么执行动作”[7]。
产生式规则由条件和结论两部分组成,分别称为规则的前件和后件[8],通常表示为如下形式:
其中,Cn为条件名称;Fn为对条件Cn的描述。
2 设备故障诊断系统
2.1 系统框架
本文设计的故障诊断专家系统与实时监控系统构成了诊断系统的两大核心组成部分,两者通过接口管理模块进行交互[9]。故障诊断系统的系统框架图如图1所示。
图1 诊断系统框架图
图1中,实时监控系统负责实时监测机械设备的各种信号状态和故障发生时的各种故障现象,为故障诊断专家系统提供数据支持[10]。规则知识管理模块实现专家知识和经验的获取以及知识更新[11]。诊断模块主要由诊断推理模块、故障征兆提取模块、解释机构等组成。故障征兆提取模块从接口管理模块中获得实时监控系统监测到的异常信号状态和故障现象,并从中提取有用的故障征兆信息[12]。解释机构可以在进行故障诊断的同时给操作员一些说明信息,便于操作员明白诊断过程[13]。
2.2 设备故障诊断步骤
本文设计的设备故障诊断的步骤如下:
(1)故障诊断专家系统通过规则知识管理模块获取专家知识和经验,以Drools规则文件的形式定义异常规则文件和故障现象规则文件。
(2)故障诊断专家系统通过接口管理模块从实时监控系统中得到异常信号状态和故障现象数据。
(3)故障征兆提取模块从步骤(2)得到的数据中提取征兆信息并传给诊断推理模块。
(4)诊断推理模块根据征兆信息借助Drools规则引擎,运用Rete算法进行规则匹配,在匹配过程中解释机构可以给操作员一些说明信息,便于操作员明白诊断过程。
(5)当步骤(4)的诊断结果是故障排除流程时,系统转而解析以XML格式存在的故障诊断流程,进而找到故障原因。如果此时仍未找到故障根源,可以借助专家会诊对故障进行进一步的分析。
2.3 设备故障诊断知识库
知识库的主要功能是存储和管理专家系统中的知识和经验。知识库中拥有知识的多少及知识的质量决定了一个专家系统所具有的解决问题的能力[14]。本系统采用Drools规则引擎,Drools的规则文件就是知识库。本文以异常信号规则文件为例进行说明。
一个设备有多个信号点,例如电机控制信号、常规电源板电压信号等,为了保证设备的正常运转,每个信号点的信号都需要时刻处于正常状态。一旦设备出现某种异常信号,应该尽快地找出导致异常信号出现的故障原因,进行故障恢复,将损失降至最小。实时监控系统实时监测设备的每个信号点,当某个信号出现异常时,就会触发Drools规则引擎,并将一个全局的异常信号状态组合向量传递给Drools规则引擎,然后Drools规则引擎根据事先编译好的异常信号规则文件进行规则匹配,找出导致信号出现异常的故障原因或者某种故障处理流程,然后按照这个处理流程进行故障排查。
异常信号规则文件对应一个事实对象异常信号规则类(SignalRule)。根据系统对异常信号的处理方式,可以定义这个异常信号规则类,它的类图如图2所示。
图2 异常信号规则类图
在SignalRule类中,属性ruleNumber代表规则的编号,signalStatus代表实时监测系统传递给Drools的全局信号状态组合向量(以0、1的组合形式出现,其中 0代表某个信号正常,1代表某个信号异常),processFlow代表导致信号出现异常的故障原因所对应的故障排除流程。
2.4 设备故障诊断排除流程
鉴于故障排除流程含有多层嵌套关系,本文将故障诊断排除流程以XML格式存储,当Drools规则引擎借助Rete算法进行匹配的结果不是具体的故障原因而是故障排除流程时,就会解析XML文档,按照给定的故障流程进行故障排除。
诊断流程录入模块将故障诊断排除流程以XML格式进行保存。系统设计了清晰的录入界面,方便用户进行录入。
诊断流程控制模块负责解析XML文档并控制XML文档中结点之间的跳转。所谓结点之间的跳转指在故障原因A由故障原因B间接引起的情况下,当诊断到A时,诊断流程的下一步即跳转到B所对应的XML文档。
诊断流程获取模块获取故障诊断专家系统的诊断结果,故障诊断专家系统的诊断结果是故障诊断流程时,诊断流程获取模块获得的与这个诊断流程相对应的XML文档名称并传递给诊断流程控制模块。
显示模块以SVG图形的格式显示整个诊断流程,并对当前的诊断步骤以红色进行高亮显示。当诊断流程比较复杂时,可以帮助用户定位当前的诊断步骤和下一步骤。
3 实验与分析
3.1 故障诊断运行环境
本系统的开发环境:MyEclipse 8.5+Java(JDK1.6)+Struts 1.2+ExtJs+Json。
本系统的运行环境:Web服务器为Tomcat 6.0,数据库为SQL Server 2008,规则引擎使用 Drools 5.1,浏览器使用 FireFox。
3.2 规则匹配效率测试
Rete算法的执行效率主要由规则文件编译和规则匹配两部分组成。本系统中,在系统启动运行时即创建监听器,分别对异常信号规则文件和故障现象规则文件进行编译,之后使用规则引擎时只需进行规则匹配,而不需要再次对规则文件进行编译,提高了程序的响应速度。这种设计方式下,可以忽略规则引擎进行规则编译的效率,所以Rete算法的执行效率就是规则匹配效率。
以故障现象规则匹配为例进行说明,其测试用例如表1所示。
表1 故障现象规则匹配效率测试结果
由测试结果可以看出,无论规则为多少条,使用Rete算法进行规则匹配的运行耗时都在16ms左右。将规则文件编译和规则匹配分离开来,用户在使用系统时,不必理会规则文件编译的时间,只需响应规则匹配的时间,使得系统执行效率增加的同时,又提高了用户的体验效果。
本文设计的故障诊断专家系统已经应用于实际项目中,即使是初级故障排除人员在该系统的逐步指导下也能快速准确地定位故障,获得了用户的好评。该系统以产生式规则的形式表达专家的知识和经验,使得用户能够充分利用这些经验真实地模拟专家排故过程,通过测试结果可以看到:将Rete算法应用在故障诊断中可以提高故障诊断的定位速度。本系统具有一定的通用性,从技术角度和实用角度来说,都具有一定的意义。此外,将故障诊断中的知识和领域专家经验以规则的形式保存在规则文件中,一旦有新的专家知识和经验需要表达,只需要更改规则文件,而不需要对系统的源代码进行更改。
[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]海滨.基于业务规则方法的 MIS系统研究与实现[D].天津:天津大学,2007.
[4]汪峰.基于规则软件开发的研究及其在医疗保险系统中的应用[D].天津:天津大学,2009.
[5]缴明洋,谭庆平.Java规则引擎计算研究[J].计算机与信息技术,2006,6(3):41-43.
[6]戎月莉.计算机模糊控制原理及应用[M].北京:北京航空航天大学出版社,1995.
[7]张渊,夏清国.基于Rete算法的 JAVA规则引擎[J].科学技术与工程,2006,6(11):1548-1550.
[8]杨智.基于Rete算法规则引擎的研究及其实现与应用[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]彭磊.规则引擎原理分析[J].福建电脑,2006(9):42-45.
[13]杨智.基于Rete算法规则引擎的研究及其实现与应用[D].沈阳:东北大学,2007.
[14]航电设备故障诊断专家系统研究与实现[D].北京:北京航空航天大学,2007.