正向推理规则引擎中的Rete模式匹配算法研究

合集下载

Rete算法现状与挑战

Rete算法现状与挑战

R e t e A l o r i t h m: C u r r e n t I s s u e s a n d F u t u r e C h a l l e n e g g
GU X i a o d o n Y a n - GAO g g
( , , ) S t a t e K e L a b o r a t o r f o r N o v e l S o f t w a r e T e c h n o l o N a n i n U n i v e r s i t N a n i n 2 1 0 0 9 3, C h i n a y y g y j g y j g
1 引言
随着系统逻辑的不断复杂以及环境的日渐开放和动态 变 化, 业务逻辑也由封装代码的形式逐渐转变为额外的业务规 早期的产 生 式 推 理 系 统 应 运 而 生 。 产 生 式 推 理 系 则的形式 , 统是根据用户定 义 的 规 则 ( 产生式) 和当前系统获取的事实 ( ) 进行规则匹配并进行冲 突 消 解 , 产生的推理结果供用 F a c t s 一个产生 户或运行系统使用 的 一 种 推 理 机 制 。 如 图 1 所 示 , , 式系统通常包括一组产 生 式 ( 规则) 每个产生式包括一组条 ) ) , 件( 和一组动作( 当规则的所有条件都 C o n d i t i o n s A c t i o n s ) 规则的动作被加 入 到 议 程 ( 中 等 待 执 行。系 满足时 , A e n d a g 统包括 的 所 有 产 生 式 的 集 合 称 为 产 生 式 内 存 ( P r o d u c t i o n - ) ) 或规则库 ( 以及工作内存 ( M e m o r R u l e B a s e W o r k i n M e m- y g ) 。 工作内存是一个 包 含 数 据 元 素 的 全 局 数 据 库 , 每个数 o r y , 据元素 ( 称为 工 作 内 存 单 元 W 简称 o r k i n M e m o r E l e m e n t g y 都可以被规则条件引用 , 被规则动作创建 、 修改、 移除。 WME) 产生式内存是一种长期存储的表示如何执行一项任务的知 识 集合, 而工作内存一般包括任务实例执行时的临时信息或结

RETE算法的改进与实现

RETE算法的改进与实现

技术创新中文核心期刊《微计算机信息》(管控一体化)2006年第22卷第12-3期360元/年邮局订阅号:82-946《现场总线技术应用200例》软件时空RETE算法的改进与实现TheImprovementAndImplementationofRETEAlgorithm(解放军信息工程大学)闫丽萍潘正运YANLIPINGPANZHENGYUN摘要:本文详细描述了模式匹配算法—RETE算法,深入分析了RETE算法的性能,并对其进行了改进。

改进后,事实的删除过程利用了事实添加过程中的信息,使得删除过程中不需要联结测试操作与查找操作,大大提高了删除事实时的性能。

关键词:RETE算法;模式匹配;业务规则中图分类号:TP311.52文献标识码:AAbstract:ThispaperdetailsRETEalgorithm,analyzestheperformanceofRETEalgorithmandimprovesit.Informationoffactad-dtionisrecordedandisutlizedinfactdeletion,whichimprovestheperformanceoffactdeletion.KeyWords:RETEAlgorithm,patternmatch,bussinessrule文章编号:1008-0570(2006)12-3-0290-031引言当前,人们常用业务规则系统将业务逻辑本身和实现分离开来,以适应不断变化的业务需求。

而业务规则系统的核心之一就是业务规则引擎。

业务规则引擎将业务规则与当前系统所存在的事实进行匹配,当某个规则的条件满足时,就执行该规则的活动,从而实现业务逻辑。

业务规则引擎的匹配速度是影响系统运行速度的重要因素,Forgy提出了快速模式匹配算法—RETE算法,并在ILOG,JESS等业务规则系统中实现。

但是RETE算法存在以下不足:(1)事实的删除与事实的添加顺序相同,除了要执行与事实添加相同的计算外,还需要执行查找,开销很高;(2)RETE算法使用了β存储区存储已计算的中间结果,以空间换取时间,从而加快系统的速度。

规则引擎研究之Rete算法

规则引擎研究之Rete算法

规则引擎研究之Rete算法1rete概述Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。

Rete是拉丁文,对应英文是net,也就是网络。

Rete算法通过形成一个rete网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy)和结构相似性(structural similarity),提高系统模式匹配效率。

2相关概念2.1事实(fact)事实:对象之间及对象属性之间的多元关系。

为简单起见,事实用一个三元组来表示:(identifier ^attribute value),例如如下事实:w1:(B1 ^ on B2) w6:(B2 ^color blue)w2:(B1 ^ on B3) w7:(B3 ^left-of B4)w3:(B1 ^ color red) w8:(B3 ^on table)w4:(B2 ^on table) w9:(B3 ^color red)w5:(B2 ^left-of B3)2.2规则(rule)由条件和结论构成的推理语句,当存在事实满足条件时,相应结论被激活。

一条规则的一般形式如下:(name-of-this-productionLHS /*one or more conditions*/-->RHS /*one or more actions*/)其中LHS为条件部分,RHS为结论部分。

下面为一条规则的例子:(find-stack-of-two-blocks-to-the-left-of-a-red-block(^on)(^left-of)(^color red)-->...RHS...)2.3模式(patten)模式:规则的IF部分,已知事实的泛化形式,未实例化的多元关系。

(^on)(^left-of)(^color red)3模式匹配的一般算法规则主要由两部分组成:条件和结论,条件部分也称为左端(记为LHS, left-hand side),结论部分也称为右端(记为RHS, right-hand side)。

基于专家系统的电网操作票自动生成系统

基于专家系统的电网操作票自动生成系统

基于专家系统的电网操作票自动生成系统曾利;孟文【摘要】An automatic generation system is realized for the switch change operation order by means of expert system technology in view of inadequate intelligence of the power network operation order system.The two core components of the operation order expert system-knowledge base and inference engine-are studied through analysis of the characteristics of the electrical power system.The knowledge base is designed in a more compact knowledge representation mode,and the inference engine of the expert system is studied by means of Rete algorithm.Thus,we complete our preliminary design of the operation order expert system.In the meanwhile,a Web-based basic platform of the operation order is built up in Visual Studio 2010 development environment.The expert system module is called in the service mode to realize automatic generation of operational sequences based on assigned operation task.The system is safe and reliable and can basically meet the requirements of users.%针对电网操作票系统智能性不足的问题,运用专家系统技术实现倒闸操作票自动生成系统.通过分析电力系统特点,对操作票专家系统的两大核心组成部分知识库和推理机分别进行了研究,采用更简洁的知识表示方式进行知识库的设计,采用Rete 算法对专家系统推理机制进行研究,完成了操作票专家系统的初步设计.同时,在Visual Studio2010开发环境中搭建基于Web的操作票系统基础平台,通过服务方式调用专家系统模块实现了指定操作任务下操作步骤的自动生成,系统安全可靠,基本满足了用户的需求.【期刊名称】《电气自动化》【年(卷),期】2017(039)001【总页数】3页(P64-65,69)【关键词】操作票;专家系统;知识库;Rete算法;自动生成【作者】曾利;孟文【作者单位】西南交通大学机械工程学院,四川成都610031;西南交通大学机械工程学院,四川成都610031【正文语种】中文【中图分类】TM732电力操作票制度是我国电力系统运行管理中有效的安全措施[1],编写操作票是电力调度人员重要工作之一。

理解模式匹配算法的基本原理

理解模式匹配算法的基本原理

理解模式匹配算法的基本原理模式匹配算法是计算机科学中一种重要的算法,它在各个领域都有广泛的应用,如文本搜索、图像识别、数据分析等。

本文将介绍模式匹配算法的基本原理,帮助读者更好地理解和应用这一算法。

一、什么是模式匹配算法模式匹配算法是一种用于在文本中查找特定模式的算法。

它通过比较输入的模式和文本中的子串,找到与模式完全匹配或近似匹配的子串。

模式可以是一个字符串、一个正则表达式或其他形式的数据结构。

二、基本的模式匹配算法最简单的模式匹配算法是暴力匹配算法,也称为朴素匹配算法。

该算法的思想是从文本的第一个字符开始,逐个比较模式和文本中的字符,直到找到匹配的子串或到达文本的末尾。

暴力匹配算法的时间复杂度为O(n*m),其中n是文本的长度,m是模式的长度。

这种算法的效率较低,特别是在处理大规模文本时,需要耗费大量的时间。

三、改进的模式匹配算法为了提高模式匹配算法的效率,人们提出了许多改进算法,其中最著名的是KMP算法和Boyer-Moore算法。

KMP算法是由D.E.Knuth、J.H.Morris和V.R.Pratt三位计算机科学家于1977年提出的,它的核心思想是利用已经匹配过的信息,避免不必要的比较。

KMP算法通过构建一个部分匹配表,记录模式中每个位置的最长公共前后缀的长度。

在匹配过程中,当出现不匹配的字符时,根据部分匹配表的信息,可以跳过一些比较操作,从而提高匹配的效率。

Boyer-Moore算法是由R.S.Boyer和J.S.Moore于1977年提出的,它的核心思想是从模式的末尾开始匹配,并利用模式中的字符出现位置的信息,跳过一些比较操作。

Boyer-Moore算法通过构建一个坏字符表和一个好后缀表,根据这两个表的信息,可以确定每次跳跃的位置,从而提高匹配的效率。

四、应用举例模式匹配算法在实际应用中有很多例子。

以文本搜索为例,当我们在一个文本编辑器中输入关键词进行搜索时,编辑器会利用模式匹配算法找到与关键词匹配的子串,并高亮显示。

四大匹配原理的应用实例

四大匹配原理的应用实例

四大匹配原理的应用实例1. 正向最长匹配原理正向最长匹配原理是一种文本匹配算法,常用于中文分词。

它的原理是从字符串的起始位置开始,逐个字符匹配,直到找到最长的匹配词。

这种匹配方式能够更准确地将中文句子切分成词。

应用实例: - 中文分词系统:正向最长匹配原理常用于中文分词系统中,通过预先构建一个词典,将输入的中文文本按照最长匹配原则,切分成一个个有效的词语。

这种方式能够确保分词的准确性。

2. 反向最长匹配原理反向最长匹配原理与正向最长匹配原理相反,从字符串的末尾开始匹配,逐个字符向前匹配,直到找到最长的匹配词。

这种匹配方式相比正向最长匹配原理更适用于特定场景。

应用实例: - 搜索引擎关键词匹配:在搜索引擎中,常常需要将用户输入的关键词与索引中的关键词进行匹配。

反向最长匹配原理可以有效地在用户输入关键词时,匹配到较为准确的搜索结果。

3. KMP匹配算法KMP匹配算法是一种字符串匹配算法,用于在一个主串中查找一个模式串的出现位置。

它利用已经匹配过的字符信息,对模式串的匹配位置进行优化,达到了O(n+m)的时间复杂度。

应用实例: - 文本编辑器中的查找和替换功能:KMP匹配算法可以高效地在文本编辑器中查找和替换字符串。

通过利用已匹配的字符信息,可以快速定位到目标字符串,并进行相关操作。

4. Boyer-Moore匹配算法Boyer-Moore匹配算法是一种高效的字符串匹配算法,能够快速定位模式串在主串中的位置。

它利用了模式串中的特定规律,在比较时跳过多个字符,从而减少比较操作的次数。

应用实例: - 文件搜索:在计算机系统中,通常需要通过关键词搜索文件。

Boyer-Moore匹配算法可以高效地在大量文件中搜索目标关键词,快速定位到符合条件的文件。

以上是四大匹配原理在不同领域的应用实例。

正向最长匹配原理在中文分词系统中具有重要意义,反向最长匹配原理适用于特定场景的关键词匹配等,而KMP匹配算法和Boyer-Moore匹配算法则在字符串匹配、搜索功能中发挥着重要作用。

RETE算法

RETE算法

1.Rete 算法:Rete 在拉丁语中是”net” ,有网络的意思。

RETE 算法可以分为两部分:规则编译( rule compilation )和运行时执行( runtime execution )。

编译算法描述了规则如何在 Production Memory 中产生一个有效的辨别网络。

用一个非技术性的词来说,一个辨别网络就是用来过滤数据。

方法是通过数据在网络中的传播来过滤数据。

在顶端节点将会有很多匹配的数据。

当我们顺着网络向下走,匹配的数据将会越来越少。

在网络的最底部是终端节点( terminal nodes )。

在 Dr Forgy 的 1982 年的论文中,他描述了 4 种基本节点: root , 1-input, 2-input and terminal 。

下图是 Drools 中的 RETE 节点类型:Figure 1. Rete Nodes根节点( RootNode )是所有的对象进入网络的入口。

然后,从根节点立即进入到 ObjectTypeNode 。

ObjectTypeNode 的作用是使引擎只做它需要做的事情。

例如,我们有两个对象集: Account 和 Order 。

如果规则引擎需要对每个对象都进行一个周期的评估,那会浪费很多的时间。

为了提高效率,引擎将只让匹配 object type 的对象通过到达节点。

通过这种方法,如果一个应用 assert 一个新的 account ,它不会将 Order 对象传递到节点中。

很多现代 RETE 实现都有专门的 ObjectTypeNode 。

在一些情况下,ObjectTypeNode 被用散列法进一步优化。

Figure 2 . ObjectTypeNodesObjectTypeNode 能够传播到 AlphaNodes, LeftInputAdapterNodes 和 BetaNodes 。

1-input 节点通常被称为 AlphaNode 。

RETE算法的改进及其应用

RETE算法的改进及其应用

RETE算法的改进及其应用作者:王威马秀丽来源:《中国新技术新产品》2008年第24期摘要:本文先对Rete模式匹配算法进行了概述,然后又从网络结构对Rete模式匹配算法加以改进和优化,使Rete模式匹配算法更加高效快捷。

然后我们又分别从规则引擎介绍了Rete算法的应用。

关键词: RETE算法;RETE网络;模式匹配;规则引擎;业务规则1 引言Rete算法是一个用来实现产生式规则系统的高效模式匹配算法。

该算法是由卡内基梅隆大学的Charles L.Forgy在1974年发表的论文中所阐述的算法,该算法提供了专家系统的一个高效实现.自Rete算法提出以后,它就被用到一些大型的规则系统中,比如比较流行的商用规则引擎ILog、Jess、JBoss Rules等都实现了RETE算法。

而在国内还没有一个真正的业务规则系统,所以对Rete算法的研究还是很有价值的。

2 Rete算法概述一条规则由左(LHS)、右(RHS)部分组成,构成if(LHS) then (RHS)的结构。

左边(LHS)由一个或多个正、负模式组成,右边(RHS)由一个或多个动作(Action)组成。

如果一条规则所包含的模式都得到满足,那么称这条规则被满足。

Rete算法将规则的左边模式编译成类似于数据流网络形式的模式识别网络。

反映工作存储器变化的标牌从网络顶端流入,并在网络的节点间流动。

网络中的单输入结点负责测试标牌是否能够匹配一个模式,成功通过测试的标牌被存到Alpha存储器。

双输入结点负责测试2个匹配于不同模式的标牌是否满足变量的一致性约束,通过测试的2个标牌被合成一个并被存到Beta 存储器。

标牌分为2种类型---正标牌和负标牌,正标牌表示工作存储器增添了新元素,负标牌表示工作存储器中有元素被删除。

如果有标牌流动到某一规则所对应的终结结点,则表示此标牌满足终结结点所对应的规则;此时要将规则的所包含的动作(Action)放入动作执行队列(Agent-data)中,即冲突集(Conflict Set)就发生了变化。

人工智能中的逻辑推理算法使用方法研究

人工智能中的逻辑推理算法使用方法研究

人工智能中的逻辑推理算法使用方法研究引言人工智能(Artificial Intelligence,简称AI)是计算机科学的重要领域,其目标是通过模仿人类智能的方式,使计算机能够执行智能化任务。

其中,逻辑推理是人工智能领域中的关键问题之一。

逻辑推理算法广泛应用于机器学习、自然语言处理、专家系统等领域,其作用是基于给定的前提和规则,推导出正确的结论。

1. 逻辑推理算法的基本原理逻辑推理算法基于数理逻辑和谓词逻辑的理论基础,通过使用逻辑运算符、量词和推理规则等手段,对命题和谓词进行推理和推断。

主要包括前向推理、后向推理和双向推理等方法。

1.1 前向推理前向推理是一种基于规则的推理方法,它从已知的前提出发,根据事实和规则进行推理,最终得出结论。

这种方法适用于问题的规模相对较小且解空间可预测的情况。

前向推理算法包括正向链接和链反射等方法,如专家系统中的规则引擎。

1.2 后向推理后向推理是指从已知结论出发,逆向推导出可能的前提或条件。

这种方法适用于问题解空间较大或解空间可变的情况下,并且通常用于问题求解和诊断。

后向推理算法包括反向链接和证实驱动等方法,如诊断系统和推理引擎等。

1.3 双向推理双向推理是前向推理和后向推理的结合,从已知的前提和已知的结论两个方向同时推理,以减少不必要的推理步骤,并提高推理效率。

这种方法综合了前向推理和后向推理的优点,并在实际应用中取得了重要的成果。

2. 人工智能中逻辑推理算法的实际应用逻辑推理算法在人工智能的各个领域中都有广泛的应用,以下将介绍一些典型的应用案例。

2.1 机器学习中的逻辑推理机器学习是人工智能的重要支柱,逻辑推理算法在机器学习中扮演着重要的角色。

比如,基于知识图谱的推理模型,可以帮助机器理解和推理出语义关系,从而提升文本分类、实体关系抽取等自然语言处理任务的效果。

此外,基于逻辑推理的归纳推理算法也可以应用于逻辑回归、朴素贝叶斯等分类算法中。

2.2 自然语言处理中的逻辑推理自然语言处理是人工智能中的重要分支,逻辑推理算法在自然语言处理领域发挥着重要作用。

【java规则引擎】之Drools之Rete算法

【java规则引擎】之Drools之Rete算法

【java规则引擎】之Drools之Rete算法⼀:规则引擎--->规则引擎的核⼼是Pattern Matcher(模式匹配器)。

不管是正向推理还是反向推理,⾸先要解决⼀个模式匹配的问题。

--->对于规则的模式匹配,可以定义为:⼀个规则是⼀组模式的集合。

如果事实/假设的状态符合该规则的所有模式,则称为该规则是可满⾜的。

模式匹配的任务就是将事实/假设的状态与规则库中的规则⼀⼀匹配,找到所有可满⾜的规则。

⼆:什么是模式匹配对于模式匹配我们都应该不陌⽣,我们经常使⽤的正则表达式就是⼀种模式匹配。

正则表达式是⼀种“模式(pattern)”,编程语⾔提供的“正则表达式引擎”就是Pattern Matcher。

⽐如python中的re模块。

⾸先输⼊“知识”:pile(r'string'),然后就可以让其匹配(match)事实(字符串)。

最后通过正则表达式引擎可以得到匹配后的结果。

对于规则匹配,通常定义如下:条件部分,也称为LHS(left-hand side)事实部分,也称为RHS(right-hand side)假设系统中有N条规则,平均每个规则的条件部分有P个模式,在某个时点有M个事实需要处理。

则规则匹配要做的事情就是:对每⼀个规则r,判断当前的事实o是否满⾜LHS(r)=True,如果满⾜,则将规则r的实例r(o),即规则+满⾜该规则的事实,加到冲突集中等待处理。

通常采取如下过程:从N条规则中取出⼀条r;从M个事实中取出P个事实的⼀个组合c;⽤c测试LHS(r),如果LHS(r(c))=True,将RHS(r(c))加⼊队列中;如果M个事实还存在其他的组合c,goto 3;取出下⼀条规则r,goto 2;实际的问题可能更复杂,在规则的执⾏过程中可能会改变RHS的数据,从⽽使得已经匹配的规则实例失效或者产⽣新的满⾜规则的匹配,形成⼀种“动态”的匹配链。

三:模式匹配算法上⾯的处理由于涉及到组合,过程很复杂。

一种基于共享度模型的改进Rete算法

一种基于共享度模型的改进Rete算法

第43卷第9期自动化学报Vol.43,No.9 2017年9月ACTA AUTOMATICA SINICA September,2017一种基于共享度模型的改进Rete算法孙新1严西敏1尚煜茗1欧阳童1董阔1摘要专家系统是人工智能领域的重要分支,其中知识表示和知识推理是专家系统的重要组成部分.Rete算法是一种高效的模式匹配算法,能够解决专家系统中推理效率的问题,但是Rete算法在构建Rete网络和推理过程中存在空间和性能方面问题.本文采取有穷自动机理论的思想,阐述了Rete算法中的模式共享度和节点共享度模型,提出了一种Rete网络构建和推理算法来降低Rete网络的复杂度,提升Rete网络推理的速度.最后实验结果表明,本算法能够降低网络复杂度,提升推理速度.关键词专家系统,Rete算法,有穷自动机,推理机引用格式孙新,严西敏,尚煜茗,欧阳童,董阔.一种基于共享度模型的改进Rete算法.自动化学报,2017,43(9): 1571−1579DOI10.16383/j.aas.2017.c160674An Improved Rete Algorithm Using Shared Degree ModelSUN Xin1YAN Xi-Min1SHANG Yu-Ming1OUYANG Tong1DONG Kuo1Abstract Expert system is an important brunch of artificial intelligence.Knowledge representation and inference engine is an important part of the expert system.As an efficient pattern-matching algorithm,Rete algorithm can solve the ratiocination efficiency problem in expert system.However,there always exist the problems such as storage and efficiency in building and using Rete network.In this paper,we introduce the idea offinite automata,and the pattern sharing degree and node sharing degree model into Rete algorithm.We propose a Rete network construction and inference algorithm to reduce the complexity of Rete network and improve the speed of Rete network inference.Finally,experimental results show that it can reduce the complexity of the network greatly and raise the inference speed.Key words Expert system,Rete,finite automaton,ratiocination machineCitation Sun Xin,Yan Xi-Min,Shang Yu-Ming,Ouyang Tong,Dong Kuo.An improved Rete algorithm using shared degree model.Acta Automatica Sinica,2017,43(9):1571−1579专家系统(Expert system)是一种运用专家提供的领域知识进行推理和判断,求解那些需要专家才能解决的复杂问题的智能计算机程序[1].专家系统在人工智能领域应用广泛.在很多领域,专家系统发挥了很大作用,例如智能医疗和决策规划等[2].专家系统是推理机和知识库的结合[3],知识库用来保存专门的知识,推理机使用知识库里的知识来解决问题.一直以来,专家系统面临两个核心问题[4]:知识表示和知识推理.其中,知识推理是专家收稿日期2016-09-19录用日期2017-05-06Manuscript received September19,2016;accepted May6,2017国家高技术研究发展计划(863计划)(2015AA015404)资助Supported by National High Technology Research and Devel-opment Program of China(863Program)(2015AA015404)本文责任编委周涛Recommended by Associate Editor ZHOU Tao1.北京理工大学计算机学院北京市海量语言信息处理与云计算应用工程技术研究中心北京1000811.Beijing Engineering Research Center of High Volume Lan-guage Information Processing and Cloud Computing Applica-tion,School of Computer Science and Technology,Beijing Insti-tute of Technology,Beijing100081系统中的关键技术,也是近些年来优化专家系统的主要方向.Rete算法是Forgy针对专家系统中推理问题提出的一种解决方法[5],作为一种前向链形推理算法,其核心思想是采用增量匹配的概念,根据内容动态构造匹配树,以达到显著降低计算量的效果.目前大部分规则推理引擎都使用Rete算法作为核心推理算法.但Rete算法也存在诸如推理网络构造复杂、推理速度过低等问题.在生成推理网络的时候, Rete算法没有考虑规则中节点的分布情况,生成的规则网络可能过于复杂,导致存储Rete网络的代价过大,影响Rete网络的推理速度.针对Rete算法推理过程中存在的问题,本文提出了一种基于节点共享度模型的高共享性Rete网络构建算法(Rete algorithm based on the shared degree model,ReteSDM),结合自动机理论优化推理系统中Rete网的构建过程.实验结果显示,该算法有效提高Rete网络的节点共享性能,减少冗余节点,提升推理效率.1572自动化学报43卷1有穷自动机理论和Rete算法1.1有穷自动机理论有穷自动机理论最先是在讨论计算理论中的问题时被提出[6].它用来描述计算能力和资源极其有限的计算机模型[7].首先给出确定型有穷自动机(Deterministicfi-nite automaton,DFA)的形式化定义[8].定义1.确定型有穷自动机是一个5元组(Q,Σ,δ,q0,F),其中1)Q是一个有穷集合,称为状态集;2)Σ是一个有穷集合,称为字母表;3)δ:Q×Σ→Q称为转移函数;4)q0∈Q称为起始状态;5)F⊆Q称为接受状态集.非确定型有穷自动机的形式化定义与确定型有穷自动机的形式化定义类似,不同点在于两者的转移函数.下面给出非确定型有穷自动机(Non deterministicfinite automaton,NFA)的形式化定义[9].定义2.非确定型有穷自动机是一个5元组(Q,Σ,δ,q0,F),其中1)Q是一个有穷集合,称为状态集;2)Σ是一个有穷集合,称为字母表;3)δ:Q×Σε→P(Q)称为转移函数;4)q0∈Q称为起始状态;5)F⊆Q称为接受状态集.这里,称P(Q)为Q的幂集,Σ∪{ε}称为Σε.在DFA中,转移函数取一个输入符号和一个状态,产生下一个状态.而在NFA中,状态函数取一个输入符号或者空串,以及一个状态,产生下一个状态的集合.可以证明,每一台非确定型有穷自动机都等价于某一台确定型有穷自动机.1.2Rete算法Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关.在该算法中,有以下几个重要的基本概念.1)事实.对象之间及对象属性之间的多元关系,一般使用一个三元组表示;2)规则.由条件及其结论构成的推理语句,当满足事实时,相应的结论被激活;3)模式.规则的IF部分,是已知事实的泛化形式,未实例化的多元关系.Rete算法将规则集转化为Rete网络进行规则匹配.Rete网络是一个用于过滤事实数据的有向无环图,包括三个部分:根节点(Root node),Alpha 网络和Beta网络[10].根节点是所有事实对象进入网络的入口,是一个虚拟节点,不具有实际意义.Al-pha网络用于过滤事实,通过模式匹配找出事实集中所有符合的模式集合.Alpha网络包括两种节点:类型节点(Object type node)和条件节点(Alpha node).类型节点是根节点的直接子节点,保存了规则中事实对象对应的类型.如果对某一对象类型的模式有条件约束,则该约束会进入Alpha网络形成条件节点;当对象存在多个条件约束时,则从类型节点出发,对每一条规则形成一个条件节点链,允许模式之间存在节点共享.Beta网络用于匹配规则,通过连接操作将模式集组合形成匹配集,最终将匹配集转化为规则结论(Action)并执行.Beta网络包含两类节点:连接节点(Beta node)和终端节点(Terminal node).连接节点接收条件节点的输入,并将规则中关联的条件节点组合起来.终端节点对应规则的结论部分.Rete网络和有穷自动机结构类似,可以这么说,依据Rete网络推理机其实本身就是自动机的一种,下面给出基于有穷自动机的Rete网络的定义.定义3.Rete网络形如为(Q,Σ,δ,q0,F)的五元组,其中1)状态集Q:Rete网络中的各节点,包含Root 节点,Alpha节点,Beta节点和Terminal节点.其中,Root节点为初始状态,Terminal节点为终止状态,Alpha节点和Beta节点对应自动机中的普通状态节点.2)字母表Σ:Rete网络中事实的幂集,即Al-pha和Beta节点中描述语言.3)转移函数δ:Rete网络中节点合并的规则.表示为δ:Q×Σε→P(Q),当然在一般环境下,此笛卡尔积的规模是一个稀疏结构.4)初始状态q0:Rete网络中的Root节点.5)终止状态集F:Rete网络中的Terminal节点.通过使用有穷自动机对Rete网络推理机描述,我们可以使用更加规范的语言来表示Rete网络推理机.Rete网络的构造算法如下.算法1.Rete网络构造算法输入.规则集合输出.Rete节点网络for i=1;i≤RuleNum;i++do取出规则R ifor j=1;j≤ConditionNum of R i;j++doif Condition j不存在于Alpha网络中then将Condition j作为Alpha(j)节点插入Alpha网络endifif j=2then9期孙新等:一种基于共享度模型的改进Rete 算法1573将Beta (1)节点插入Beta 网络中,其父节点为Alpha(1)和Alpha (2);endifif j >2then将Beta (j )节点插入Beta 网络中,其父节点为Beta (j −1)和Alpha (j );endif endfor endfor通过Rete 网络构造的过程不难发现,条件顺序对Alpha 网络和Beta 网络的节点共享性能有较大影响,先加入的条件被优先共享.这样会导致Rete 网络趋向复杂,从而影响Rete 网络的推理速度[11].2基于共享度模型的改进Rete 算法2.1问题分析节点共享是Rete 网络的一大特性,通过节点共享,可以避免重复匹配,提高匹配效率[12].但是在建立Rete 网络时,模式的条件顺序会极大影响网络的节点共享性能,下面分析模式的条件顺序对共享性能的影响.Rete 网络包含Alpha 网络和Beta 网络,模式的条件顺序对这两个网络节点共享性能的影响不同,首先分析对Alpha 网络的影响.假设存在两个规则,其模式分别为(c 1,c 2,···,c n ,c a 1,c a 2,···,c ap )和(c 1,c 2,···,c n ,c b 1,c b 2,···,c bq ),这里c i 表示同一类型条件.显然这两个模式有n 个相同条件,对应的Alpha 网络模型如图1(a)所示.这里将第二个模式的第一个条件移到第n 个条件后,即将模式变为(c 2,···,c n ,c 1,c b 1,c b 2,···,c bq ).那么当建立Rete 网络时,由于两个模式相同条件的条件顺序不同,虽然有n 个相同节点但是却没有一个共享节点,节点共享失败,其对应的Rete 网络如图1(b)所示.可以看出,对于同一类型的条件,其排列顺序对Alpha 网络的节点共享有很大影响.下面分析模式的条件顺序对Beta 网络的影响.假设存在两条规则,其模式分别为(C,D,E )和(C ,D,E,F ),其中C,D,E,F 代表不同类型的条件,其对应的Beta 网络如图2所示.如果将第二条规则的条件顺序改变为(D,E,F,C ),那么构建Rete 网络时,将不存在节点共享,如图3所示.通过上面的分析可以看出,条件顺序对Alpha 网络和Beta 网络的节点共享性能有较大影响,先加入的条件被优先共享.因此,对条件进行排序可以降低对性能的影响.为了使排序更加合理,提高Rete 网络的共享性,本文提出共享度模型的概念.图1Alpha 网络节点共享模型图Fig.1The shared model of alpha network node图2Beta 网络节点共享模型Fig.2The shared model of beta network node2.2共享度模型节点共享度代表一个节点需要被共享的程度,这里使用引用该节点条件的规则数对其进行量化.例如,一个条件如果被三条规则引用,则该条件对应节点的共享度为3.下面给出形式化定义.定义4.节点共享度为其在规则集中被共享的1574自动化学报43卷程度.设d c 为节点c 的节点共享度,则d c =n i =1Contains (Rule i ,d )(1)其中Contains (Rule i ,d )=1,Rule i 包含c 0,Rule i 不包含c(2)图3变换顺序后Beta 网络节点共享模型Fig.3The shared model of beta network node shuffled在理想情况下,整个Rete 网络中不存在相同节点,则节点的共享度为该条件出现的次数,显然d c 越大,条件的共享程度应当越高.由于条件的共享程度和顺序相关,条件顺序越靠前其共享程度越高,因此需要将条件按其节点共享度排序.例如由模式(c 1,c 2)和(c 3,c 1)组成的模式集,将其按节点度排序后变为(c 1,c 2),(c 1,c 3),在构造Rete 网络时,c 1被先加入网络并得到共享.这种简单排序可以解决一部分共享问题,但是对于节点共享度相同的条件,由于其排序是随机的,同样会对网络的共享性能造成影响,例如由模式(c 1,c 2,c 4),(c 1,c 3),(c 1,c 2,c 3,c 4)组成的模式集,按照节点度对其降序排列,c 1排在第一位,剩余的c 2,c 3,c 4由于节点共享度相同,其排序是随机的,假设其排序为c 2,c 3,c 4,那么对应的Alpha 网络如图4(a)所示.只有c 2被共享,c 3和c 4没有共享,如果将排序变为c 2,c 4,c 3,则Alpha 网络变为如图4(b)所示.此时,c 2,c 4被共享,c 3没有共享.图4节点共享度相同示例图Fig.4The situation that the node shared degree is equal实际中,节点共享度相同是比较普遍的现象,当同一节点共享度的条件数量很多时,其排序对Rete 网络的节点共享性能影响很大.因此需要对有相同节点共享度的条件进一步排序.这里再引入模式节点共享度的概念,其形式化定义如下.定义5.模式是由若干条件组成的,将模式的节点共享度定义为模式中所有条件节点共享度的和,设模式M 包含n 个条件(c 1,c 2,···,c n ),则其模式共享度d M =n i =1c i (3)模式的节点共享度反映了整个模式在网络中的共享程度,d M 越大,则模式的共享程度越高.由于模式包含条件,模式的共享程度高则表示其包含的条件共享程度高,因此可以使用模式的节点共享度对具有相同节点共享度的条件做进一步排序.条件会出现在多个模式中,设条件c 出现在p 个模式(M 1,M 2,···,M p )中,模式的节点共享度为(d M 1,d M 2,···,d Mp ).则c 的模式共享度d cM = pi =1d Mi .模式共享度反映了其他条件对该条件的依赖情况,d cM 越大,依赖程度越高,而依赖程度越高,其共享程度就越高,顺序应当靠前.因此,可以依据模式共享度对节点共享度相同的条件降序排列,来区分相同节点共享度的条件.根据节点共享度和模式的共享度,我们可以对节点在规则集中的共享程度进行排序,构建高共享性Rete 网络.9期孙新等:一种基于共享度模型的改进Rete 算法15752.3高共享性Rete 网构建算法2.3.1Alpha 网络构建在一个Rete 网络中,规则通过网络节点的形式呈现.规则的条件构成Alpha 网络,每一个条件都对应一个Alpha 节点;规则模式构成Beta 网络,Beta 节点由Alpha 节点相互连接形成,每一个Beta 节点代表模式的一部分,Beta (n )节点代表规则的全部模式,规则的结论对应终端节点,是Beta 网络的叶子节点,也是Beta (n )节点的子节点.因此,构建Rete 网络需要完成Alpha 网络和Beta 网络的构建.Alpha 网络实际上是规则条件的网络,其共享性能依赖条件顺序,首先使用第2.2节提出的节点共享度模型和模式共享度模型,对条件进行降序排序.获得按共享度降序排列的条件集合之后,可以使用这个集合直接构造Alpha 网络,不需要再次读取规则集.2.3.2Beta 网络构建Beta 网络使用连接和投影的方式进行模式匹配,连接的对象是Alpha 节点而不是条件,因此在考虑条件节点共享度的同时也需要考虑Alpha 节点的共享度.Rete 算法在构造Alpha 网络时会对Alpha 节点进行分类,节点共享度模型可以保证在同一类型中Alpha 节点的排序,但是却无法保证各个类型的排序,这不仅影响节点共享性,还会大大增加匹配的计算规模.因此需要对构建好的Alpha 分类进行排序,Al-pha 分类包含多个Alpha 节点,每一个Alpha 节点对应一个条件,根据节点共享度模型,可以计算出整个Alpha 分类的共享度.设Alpha 分类中有n 个Alpha 节点,对应的节点共享度为(d 1,d 2,···,d n ),那么Alpha 分类的共享度d category = ni =1d i .共享度高的分类,顺序应当靠前.对于共享度相同的分类,随机排列顺序可能会降低Beta 网络的节点共享性.设两个Alpha 分类的共享度均为n ,一个分类只含1个节点,一个分类含n 个节点.如果含n 个节点的分类被排在前面,那么每次都需要先和n 个节点进行n 次连接;如果含1个节点的分类排在前面,每次只需要进行1次连接即可.为了反映分类中节点个数对共享性能的影响,这里为Alpha 分类引入平均共享度的概念,对于一个含有m 个Alpha 节点,共享度为n 的Alpha 分类,其平均共享度d avgCategory =n/m .共享度相同的分类,平均共享度高的顺序靠前.Alpha 分类排序算法如下.算法2.Alpha 分类排序算法输入.Alpha 网络输出.分类排序之后的Alpha 网络步骤1.建立分类集合H .步骤2.遍历Alpha 网络,计算Alpha 分类的共享度保存至分类集合H 中.步骤3.对Alpha 分类按共享度降序排列.步骤4.按平均共享度对共享度相同的Alpha 分类降序排列.步骤5.返回排序后的Alpha 网络.通过算法2可以获得按Alpha 分类降序排列的Alpha 网络,使用这个网络可以保证共享度高的Alpha 分类被优先连接,从而提高Beta 网络的节点共享性能.Alpha 网络配合规则集可以构造Beta 网络,具体描述如下.算法3.Beta 网络构建算法输入.排序后的Alpha 网络输出.Beta 网络for i =1;i ≤规则集数目;i ++do 取出规则R ifor j =1;j ≤R i 中规则条件数目;j ++do if j ≥2then将Beta (j )节点插入Beta 网络中,其父节点为Beta (j −1)和Alpha (j );endif endfor将规则R i 的结论封装成终端节点,作为Beta (n )的子节点endfor 返回Beta 网络.2.4Rete 网络共享性指标及推理优化2.4.1Rete 网络共享性指标为了体现算法的优化效果,需要对Rete 网络的节点共享性能进行量化,这里引入Rete 网络节点共享性能的概念.Rete 网络分为Alpha 网络和Beta 网络,下面分别讨论这两种网络的节点共享性能.设规则集R 共有n 条规则r 1,r 2,···,r n ,每个规则模式包含的条件数为c 1,c 2,···,c n .设T 为规则集R 的Rete 网络,A 为Alpha 网络中的总节点数,B 为Beta 网络中的总节点数.则T 的Alpha 共享性能为Alpha 节点数与条件总数的比值,记为S A ,则S A =Ani =1c i(4)考虑Beta 网络,对于含有c i 个条件的规则r i ,共进行c i −1次连接操作,考虑终端节点,至多生成c i 个Beta 节点,将其Beta 共享性能记为S B ,则1576自动化学报43卷S B =Bni =1c i(5)显然,Rete 网络的总节点共享性能为Alpha 共享性能和Beta 共享性能的和,记为S ,则S =S A +S B (6)在极端情况下,则Rete 网络没有一个共享节点,那么,A =B = ni =1c i .S A 和S B 的值域均为(0,1],则S 的值域为(0,2].对于一个Rete 网络而言,S 的值越大,其节点共享性能越差.反之,其节点共享性能越好,这同样适用于Alpha 网络和Beta 网络.2.4.2高共享性Rete 网络推理优化在使用传统Rete 算法进行推理每次查找Al-pha 节点时,总会遍历所有的Alpha 节点.其时间复杂度为O(n ),其中n 为Alpha 节点的数量.对于一次查找操作,O(n )的时间复杂度可以忽略.但是随着查找次数上升,查找时间对总的推理时间仍会产生巨大影响.另外,在使用传统Rete 算法进行推理时,一般按照严格的顺序,即先根据事实产生Alpha 节点,再由Alpha 节点生成Beta 节点依次进行推理.如果可以根据事实产生的Alpha 节点,直接找出后面出现的Beta 节点,推理的速度将会有很大的提升.针对上述现象,可以建立一个Hash 表快速定位Alpha 节点和Beta 节点,加快查找的速度.引入Hash 表存储对象的位置映射,将Alpha 节点及Beta 节点和其在网络中的存储位置相互对应.那么在Rete 网络事实匹配的过程中,对于一些节点的查找工作将在O(1)的时间复杂度之内完成.这样操作之后,可以大大提升事实匹配的整体效率.上述对Rete 网络的优化构建方法,主要对规则中的条件依据共享度重新排序,而对规则本身不产生任何影响.假设有下面一条规则:Cond 1∧Cond 2···CondN ⇒Result (7)无论其规则中条件如何改变,对于一个待推理的事件包含且仅包含这条规则中的所有条件,其推理的结果不会发生变化.这确保了本算法推理结果同传统Rete 网络构建的推理结果的一致性.3实验结果及分析3.1Rete 网络构建选择UCI 的Adult [13]、Bank marketing [14]和Nursery [15]作为测试数据集.其中Adult 数据集包含了14维的48842条数据,通过Apriori 算法,挖掘出3285条规则;Bank marketing 数据集包含了17维的45211条数据,一共挖掘出5987条规则;Nursery 数据集包含了8维的12960条数据,最后挖掘出91条规则.在上述数据挖掘过程中,Apriori 算法的置信度均设置为0.5,支持度均设置为0.025.对于挖掘出来的规则,我们进行了统一的编码,条件之间使用空格分隔,条件和结果之间使用符号$分隔,编码的规则如下:Rule i =Cond 1Cond 2···CondN $Result (8)由于UCI 数据集的条件是按照条件分类进行排序,本身具有一定的次序,因此采用传统构造方法得到的Rete 网络有较好的节点共享性能.为了更一般的显示各个算法的推理性能,将规则集中的规则进行打乱操作(Shuffle)作为一个对照实验.对于每一个数据集,我们使用传统方法在原规则集、传统方法在打乱的规则集和改进方法在原规则集中分别进行实验,每个实验均进行4次.其结果如表1所示.其中,Rete 组表示使用传统Rete 算法构建网络,Rete Shuffled 组表示在打乱的规则集上使用传统Rete 算法构建网络,ReteSDM 组表示使用基于共享度模型的Rete 算法构建网络.从表1可以看出,使用优化之后的基于共享度模型的网络构建算法,无论是在打乱的数据集和有顺序的数据集中,Rete 网络中节点的共享性能都有提升.特别是对于大数据集来说,提升的幅度更大.在Adult 数据集中,在原数据集上提升了19%,在打乱的数据集上提升了74%;在Bank Marketing 数据集中,在原数据集上提升了23%,在打乱的数据集上提升了80%;对于小数据集Nursery 而言,其节点共享性能也略有提升.主要原因是本文提出的ReteSDM 算法使用了节点共享度和模式共享度对条件进行了重新排序,提升了网络中节点的共享性.在构建时间上,ReteSDM 算法构建时间与传统的算法相比略有增加(增加幅度均不超过50%),主要原因是增加了条件排序和Alpha 分类节点排序,但是增加的时间较其获得的效果(节点共享性能)来说,其代价是比较小的.在实际应用中,规则集是稳定且不轻易发生变化的.因此,Rete 网络的构建频率很低,网络构建时间不是衡量推理机性能的重要指标,其时间增加的幅度是完全可以接受的.3.2Rete 网络推理使用在Rete 网络构建实验中的三个数据集(Adult 、Bank marketing 和Nursey 数据集)进行事实匹配算法的对比实验.实验条件分别为:9期孙新等:一种基于共享度模型的改进Rete算法15771)在传统Rete网络上(由原规则集产生)使用传统事实匹配算法推理,记为Rete.2)在传统Rete网络上(由打乱的规则集产生)使用传统事实匹配算法推理,记为Rete shuffled.3)在共享性Rete网络上使用传统事实匹配算法推理,记为ReteSDM.4)在共享性Rete网络上使用基于哈希索引的Rete推理算法,记为Hashed ReteSDM.实验分为3组.在Adult和Bank marketing 数据集中,第1组选择其中的10000条数据,第2组选择其中的20000条数据,第3组选择其中的30000条数据;在Nursery数据集中,第1组选择其中的4000条数据,第2组选择其中的8000条数据,第3组选择其中的12000条数据.以上实验均进行了3次,然后对结果取均值,其结果如表2所示.表1网络构建对比实验结果(ms)Table1The result of network construction(ms)数据集序号Rete Rete Shuffled ReteSDM构建时间共享性构建时间共享性构建时间共享性1380.095430.301530.0772310.095380.301470.077 Adult3310.095380.302550.077 4320.095370.302470.077AVG330.095390.30150.50.0771610.077640.296720.0592610.077660.296750.059 Bank marketing3610.077660.296740.059 4600.077620.295720.059AVG60.750.07764.50.29573.250.059130.49230.54950.477240.49240.55450.477 Nursery340.49240.53850.477 430.49230.51850.477AVG 3.50.492 3.50.53950.477表2推理性能对比实验结果(s)Table2The result of ratiocination effiency(s)数据集分组Rete Rete Shuffled ReteSDM Hashed ReteSDM偏差率10.8650.9620.7360.5350Adult2 1.721 1.950 1.472 1.07103 2.633 2.735 2.202 1.553010.996 1.1150.8230.6250 Bank marketing2 2.102 2.327 1.650 1.25603 3.001 3.423 2.436 1.903010.1050.1150.0890.0800Nursery20.2030.2170.1930.159030.3120.3320.2900.25001578自动化学报43卷在表2中,偏差率是指在ReteSDM组和Hashed ReteSDM组中的推理结果与在Rete中的推理结果的不一致的个数.由于本算法实质是改变规则中条件的顺序,理想环境下,不会与传统的网络推理结果产生偏差.实验的结果也验证了这一点.可以看出,高共享性网络和基于哈希索引的Rete推理算法对推理速度都有较大的提升.高共享性网络通过节点共享度调整规则的条件和Alpha节点的顺序,提高了整个Rete网络的节点共享性能,减少了冗余节点.在事实推理时,就可以有效减少节点匹配次数,进而缩短推理时间,提高推理效率.基于哈希索引的Rete推理算法通过对事实进行分类减少计算规模,再通过Hash索引加快查找分类的速度,有效提高推理效率.综合来看,同时采用高共享性网络和基于哈希索引的Rete推理算法可使推理效率提高,而且随着事实集的增加,推理效率会有进一步提升.4总结近年来,人工智能在各方面都取得了良好的应用[16−18],专家系统在人工智能领域扮演了很重要的角色.在专家系统中,推理机是一个重要的组成部分.但是专家系统在推理过程上存在不足,例如规则保存和推理速度等.Rete算法是专家系统中的经典算法,但是传统的Rete算法也存在空间和性能方面问题.本文根据节点共享度模型和模式共享度模型,提出了一种新型Rete网络构造算法,在Rete网络的构建中,将规则中条件按照共享度进行排序,构建出高共享性的Rete网络.并且在此基础上,使用索引的方法对其进行推理优化.实验结果表明,使用本算法创建Rete网络之后,能够降低Rete网络的复杂度,提升节点的共享度,进而加快推理速度.References1Bemley J L.An introduction to expert systems.In:Proceed-ings of the7th Annual National Convention and10th An-niversary of Black Data Processing Associates“A Decade of Professional Growth”.Washington,DC,USA,1985.27−34 2Giarratano J C,Riley G D.Expert Systems:Principles and Programming.New York:Thomson Learning,2005.78−1223Munaiseche C P C,Liando O E S.Evaluation of expert sys-tem application based on usability aspects.In:Proceedings of the2016International Conference on Innovation in En-gineering and Vocational Education.Bandung,Indonesia: IOP,2016.128−1354Ochab M,Wajs W.Expert system supporting an early pre-diction of the bronchopulmonary puters in Biology and Medicine,2016,69(1):236−2445Forgy C L.Rete:a fast algorithm for the many pattern/ many object pattern match problem.Artificial Intelligence, 1982,19(1):17−376Sipser M.Introduction to the Theory of Computation(3rd edition).Boston:Cengage Learning,2013.44−807Kornoushenko E K.Operation of closure on the set of states of an incompletely defined deterministic automaton.Cyber-netics,1976,12(1):10−178Topencharov V,Peeva K.Mathematical automata theory:a categorical approach.Problems of Control and Information Theory,1980,9(2):141−1619Ilie L,Yu S.Reducing NFAs by invariant equivalences.The-oretical Computer Science,2003,306(1):373−39010Perlin M.Topologically traversing the RETE network.Ap-plied Artificial Intelligence,1990,4(3):155−17711Shatueva T A.Method for classical Rete algorithm ef-ficiency improvement for the system of production rules aimed at knowledge extraction from terminological dictio-naries.Control Systems and Information Technologies,2012, 4(3):31−3412Xiao D,Zhong X A.Improving Rete algorithm to enhance performance of rule engine systems.In:Proceedings of the 2010International Conference on Computer Design and Ap-plications.Qinhuangdao,China:IEEE,2010.572−57513UCI Machine Learning Repository.Adult data set[Online], available:/ml/datasets/Adult, February3,201714UCI Machine Learning Repository.Bank marketing data set [Online],available:/ml/datasets/ Bank+Marketing,February3,201715UCI Machine Learning Repository.Nursery data set [Online],available:/ml/datasets/ Nursery,February3,201716Duan Yan-Jie,Lv Yi-Sheng,Zhang Jie,Zhao Xue-Liang, Wang Fei-Yue.Deep learning for control:the state of the art and prospects.Acta Automatica Sinica,2016,42(5):643−654(段艳杰,吕宜生,张杰,赵学亮,王飞跃.深度学习在控制领域的研究现状与展望.自动化学报,2016,42(5):643−654)17Yu Bin-Feng,Ji Hai-Bo.Sparse bayesian mixture of experts and its application to spectral multivariate calibration.Acta Automatica Sinica,2016,42(4):566−579(俞斌峰,季海波.稀疏贝叶斯混合专家模型及其在光谱数据标定中的应用.自动化学报,2016,42(4):566−579)。

基于Rete算法的规则引擎JBossRules

基于Rete算法的规则引擎JBossRules
Rete 在拉丁语里是“net”, 有网络的意思。Rete 算法可以分 为 两 部 分 : 规 则 编 译( rule complication) 和 运 行 时 执 行( runtime execution) 。
在 Charles L. Forgy 的 1982 年 的 论 文 中 , 描 述 了 四 种 节 点 : root, 1- input, 2- input 和 terminal。 编 译 算 法 描 述 了 规 则 如何产生一个有效的辨识网络, 其方法就是通过数据在网络 中的传播来过滤数据。在顶端, 节点将会有很多匹配的数据, 然后顺着网络往下走, 匹配的数据就会越来越少, 网络的最低 部 便 是 终 端 节 点( TerminalNode) 。 图 3 是 Drools 中 的 Rete 节 点 类 型[4]:
规则引擎是一种嵌入在应用程序中的组件, 它起源于基 于 规 则 的 专 家 系 统 (RBES), 而 基 于 规 则 的 专 家 系 统 又 是 专 家系统的一个分支。专家系统属于人工智能的范畴, 它模仿 人类的推理方式, 使用试探性的方法进行推理, 并使用人类 能理解的术语解释和证明它的推理结论。规则引擎的任务 是把当前提交给引擎的数据对象与加载在引擎中的业务规 则进行比较, 激活那些符合当前数据状态下的业务规则, 根据 业务规则中声明的执行逻辑, 对当前数据对象执行对应的 操 作[2]。
JBoss Rules 的 前 身 是 Codehaus 的 一 个 开 源 项 目 Drools, 近 来 被 纳 入 JBoss 门 下 , 更 名 为 JBoss Rules, 成 为 了 JBoss 应 用 服 务 器 的 规 则 引 擎 。 Drools 是 为 Java 量 身 定 制 的 基 于 Charles L. Forgy 的 Rete 算 法 的 规 则 引 擎 的 实 现 。 Drools 的 Rete 实现被称为 Rete00, 表示 Drools 对 Rete 算法进行了 加 强 和优化。

规则引擎设计方法论

规则引擎设计方法论

一种灵活的规则引擎设计❶引言规则引擎起源于基于规则的专家系统(CLIPS:源于1984年NASA的人工智能项目),规则引擎通过模拟人类的思考方式,使用试探性推理方法得到结果,并使用人类能够理解的方式证明其结论。

规则引擎自80年代至今,已经产生了多种商业及开源的产品,基本上都是基于Java开发, 既有商业产品,也有开源项目,其中最出名的是Drools。

目前绝大部分规则引擎都基于RETE算法设计,RETE 算法是一种归纳法推理算法,主要由规则库,工作内存和推理引擎三部分组成,通过构建网络保存中间信息,能极大的提高规则匹配的效率。

自1982年Forgy提出该算法以来经过几次优化,受到广泛的认可,其他还有一些匹配算法比如LFA,TREAI,LEAPS,但效率比不上RETE。

规则引擎目前主要的应用场景是CRM和审批系统。

通过规则引擎企业得以快速灵活的制定和实施业务规则,从而快速的对市场做出反应或者是对审批流程进行快速的调整。

近年来经济形势的发展要求企业提高更快更好的服务,而且同时需要控制快速上涨的人力成本,越来越多的企业正在引入人工智能技术,其中之一就是规则引擎。

目前规则引擎基本是使用Java构建的,一般只有大型企业才有技术和资金实力来构建这样的系统。

本文以信贷审批作为默认的业务场景,提出一种新的灵活的规则引擎设计,完全使用Python实现。

规则引擎把复杂、冗余的业务规则与程序分离,做到架构的可复用移植。

通过约定好的规范,接受用户的输入,解析用户的业务规则,最后执行解析好的业务规则作出决策。

一般情况下,所有的业务规则都可以表达成类似IF …THEN的条件语句,但由于企业的快速发展,业务规则会迅速增加,维护和管理这些业务规则会变得越来越困难,而规则引擎将至少具有三个作用:(1)管理复杂的规则(2)使用过程不再需要二次编程(3)知识的管理和发现以上三方面可以使得业务人员把注意力放到真正有意义的领域,减少重复性工作。

专家系统

专家系统
專家系統 資工3A 0523023 林國豪 9.9 ห้องสมุดไป่ตู้ETE PATTERN-MATCHING 算法
基於規則的語言譬如CLIPS、Jess 、Eclipse, 和OPS5 用途一種非常高 效率的算法為匹配的事實反對樣式在規則確定哪個規則有他們的情況滿意了。 這種算法稱Rete 樣式匹配的算法(Forgy 79) (Forgy 85) (Brownston 85) 。 寫高效率的CLPS 規則不要求對Rete 算法的理解。但是對部下的算法的, 對部 下的算法的理解被使用在CLIPS和其它基於規則的語言使它更加容易瞭解為什 麼文字規則單程比文字高效率的他們其它方式。 瞭解為什麼Rete 算法是高效率的, 它是有用看匹配事實的問題對規則總 之和然後審查不是像高效率的其它算法。圖9.6 顯示問題由Rete 算法論及。 圖9.6 模式匹配: 規則和事實
如果唯一更新對事實名單然後被處理各個規則必須記住什麼已經匹配它。 那是如果一個新事實匹配了規則的第三個樣式, 關於比賽的資訊為第一二個 樣式必須有時間完成匹配的過程。這類型狀態資訊表明匹配了早先樣式在規 則的事實稱一次部份比賽。一次部份比賽為規則滿足規則的樣式任何的被設 置事實, 開始從規則的第一樣式並且結束以任一個樣式大到持續。因而, 一 個規則以三個樣式會有部份比賽為第一樣式, 第一個和第二個樣式, 和一, 秒鐘, 和第三個樣式。所有的一次部份比賽規則的樣式並且將是活化作用。 另一類型狀態資訊被保存稱樣式比賽。樣式比賽發生當事實滿足了一個唯一 樣式在任一個規則不關於可變物在也許制約匹配的過程的其它樣式。 Rete 樣式匹配的算法的主要不利是, 這是記憶密集。簡單地比較所有 事實與所有樣式不要求記憶。保存系統的狀態使用樣式比賽和部份比賽可能 消耗可觀的相當數量記憶。總之, 記憶這種交易為速度是值得的, 然而, 它 重要記得一個窮地書面規則可能慢慢地不僅運行, 它可能用盡可觀的相當數 量記憶。 Rete 算法並且改進基於規則的系統效率經過利用結構相似性在結構相 似性提到事實的規則許多規則經常包含相似的樣式或小組樣式。Rete 算法使 用這個特點增加效率由合併共同的組分因此他們不必須被計算更多比一次。

支持演化规则引擎的Rete算法研究

支持演化规则引擎的Rete算法研究
t h e b a s i s o f t h e c l a s s i c R e t e a l g o r i t h m a n d ro f m t h e p e r s p e c t i v e o f t h e c o mp l e x i t y o f a l g o it r h m s p a c e ,i t a n a l y z e d Re t e n e t wo r k s t uc r t u r e ma t c h i n g e ic f i e n c y ,c o mb i n e d w i t h c h a r a c t e r i s t i c s o f s y s t e m d y n a mi c e v o l u t i o n o f t h e s t r o n g d y n a mi c a n d h i g h e f f i — c i e n c y,a n d i n t r o d u c e d n o d e mu l t i p l e x i n g t e c h n i q u e f o r c o n s t r u c t i n g R e t e n e t w o r k .An d b a s e d o n ul r e w e i g h t s a n d e n t e i r n g
W U Da n — f e n g .Z E NG Gu a n g - p i n g .YAN J i n g — y i n g
( 1 . a . S c h o o l o f C o m p u t e r &C o m mu n i c a t i o n E n g i n e e r i n g, b . S c h o o l f Ma o t h e ma t c i s &P h  ̄i c s , U n i v e r s i t y fS o c i e n c e& T e c h n o l o g y B e i j i n g, B e i — i r n g 1 0 0 0 8 3, C h i n a ; 2 . S c h o o l fS o o f t w a r e , L i a o n i n g T e c h n i c a l U n i v e r s i t y , Hu l u d a o L i a o n i n g 1 2 5 1 0 5, C h i n a )

drools rete算法

drools rete算法

Drools Rete算法什么是DroolsDrools是一个基于规则引擎的业务规则管理系统,用于管理和执行复杂的业务规则。

它是一个开源的、高性能的规则引擎,可以帮助开发人员将业务规则从应用程序中分离出来,实现规则的动态管理和变更。

Drools提供了基于规则的决策引擎,可以将规则和决策逻辑与应用程序代码分离,实现业务逻辑的灵活和可扩展性。

什么是Rete算法Rete算法是一种用于实现规则匹配和推理引擎的算法。

它是由Charles Forgy在1982年提出的,基于正向先验条件的匹配算法。

Rete算法通过构建一个类似于有向无环图的网络,将规则与事实(也称为工作内存中的对象)进行匹配,从而实现规则的高效匹配和执行。

Drools中的Rete算法Drools使用了Rete算法作为其底层规则引擎的实现机制。

Rete算法在Drools中起着关键的作用,实现了规则的高效匹配和执行。

下面将详细介绍Drools中的Rete算法的工作原理和核心概念。

Rete网络Rete网络是Rete算法的核心数据结构,它由节点(Node)和连接(Join)组成。

节点表示规则,连接表示规则之间的依赖关系。

Rete网络可以看作是一个多层次的有向无环图,每一层都代表着不同的规则匹配条件。

通过构建Rete网络,Drools可以高效地实现规则的匹配和推理。

节点(Node)节点是Rete网络中的基本单位,用于表示一个规则。

每个节点都包含了规则的条件和操作。

Drools中的节点有多种类型,包括入口节点、测试节点、连接节点和终止节点等。

•入口节点(Entry Node):用于接收外部输入的事实数据,并将其引入Rete网络中进行匹配。

•测试节点(Test Node):用于对事实数据进行测试或过滤,判断其是否满足规则条件。

•连接节点(Join Node):用于将多个规则条件进行组合和匹配,生成新的事实或触发规则操作。

•终止节点(Terminal Node):用于触发规则的执行操作,将输出发送到下一层或外部。

Drools规则引擎应用看这一篇就够了

Drools规则引擎应用看这一篇就够了

Drools规则引擎应⽤看这⼀篇就够了1 .场景1.1需求商城系统消费赠送积分100元以下, 不加分100元-500元加100分500元-1000元加500分1000元以上加1000分......1.2传统做法if (order.getAmout() <= 100){order.setScore(0);addScore(order);}else if(order.getAmout() > 100 && order.getAmout() <= 500){order.setScore(100);addScore(order);}else if(order.getAmout() > 500 && order.getAmout() <= 1000){order.setScore(500);addScore(order);}else{order.setScore(1000);addScore(order);}interface Strategy {addScore(int num1,int num2);}class Strategy1 {addScore(int num1);}......................interface StrategyN {addScore(int num1);}class Environment {private Strategy strategy;public Environment(Strategy strategy) {this.strategy = strategy;}public int addScore(int num1) {return strategy.addScore(num1);}}以上解决⽅法问题思考:如果需求变更,积分层次结构增加,积分⽐例调整?数据库?遇到的问题瓶颈:第⼀,我们要简化if else结构,让业务逻辑和数据分离!第⼆,分离出的业务逻辑必须要易于编写,⾄少单独编写这些业务逻辑,要⽐写代码快!第三,分离出的业务逻辑必须要⽐原来的代码更容易读懂!第四,分离出的业务逻辑必须⽐原来的易于维护,⾄少改动这些逻辑,应⽤程序不⽤重启!2.是什么2.1概念规则引擎由发展⽽来,是⼀种嵌⼊在应⽤程序中的组件,实现了将业务决策从应⽤程序代码中分离出来,并使⽤预定义的语义模块编写业务决策。

Rete匹配算法在知识库机中的实现方案

Rete匹配算法在知识库机中的实现方案

Rete匹配算法在知识库机中的实现方案
郭福顺;张学海
【期刊名称】《小型微型计算机系统》
【年(卷),期】1992(013)009
【摘要】Rete算法是目前公认的用于产生式系统的高速匹配算法。

本文根据Rete算法的主要特点,提出在知识库机中实现 Rete算法的方案,并讨论了该方案中的流水匹配等技术问题,目的在于提高匹配效率,从而加快产生式系统的执行速度。

【总页数】8页(P9-15,35)
【作者】郭福顺;张学海
【作者单位】不详;不详
【正文语种】中文
【中图分类】TP18
【相关文献】
1.Rete算法的优化及在动车组故障知识库推理中的应用 [J], 吴冬华;崔玉龙;张春
2.专家系统中的Rete算法在Jess中的实现 [J], 杨琳
3.OCLIPS中RETE算法的改进实现 [J], 吴志英;鲁汉榕
4.基于Intranet的知识库系统匹配算法的研究与实现 [J], 赵建华;张同珍
5.正向推理规则引擎中的Rete模式匹配算法研究 [J], 魏毅峰
因版权原因,仅展示原文概要,查看原文内容请购买。

基于Rete算法的JAVA规则引擎

基于Rete算法的JAVA规则引擎

基于Rete算法的JAVA规则引擎
张渊;夏清国
【期刊名称】《科学技术与工程》
【年(卷),期】2006(006)011
【摘要】在软件应用中若能抽取出规则,可以使软件实体更灵活,规则引擎使得这成为可能.其算法Rete也逐渐发展成为了一种最重要的主流算法.先着重叙述了规则引擎的原理及其JAVA API,其次阐述了Rete算法,最后简单介绍了Jess与开源项目产品Drools.
【总页数】3页(P1548-1550)
【作者】张渊;夏清国
【作者单位】西北工业大学计算机学院,西安,710072;西北工业大学计算机学院,西安,710072
【正文语种】中文
【中图分类】TP311.11
【相关文献】
1.基于规则引擎技术的Rete算法的研究 [J], 鲍金玲
2.基于Rete算法的规则引擎JBoss Rules [J], 郭芳;白建军
3.基于规则引擎的JAVA声明式编程 [J], 郑浩然;肖伟
4.基于Java规则引擎的Acegi域对象安全扩展 [J], 闵联营;罗强
5.基于JAVA反射机制的规则引擎设计与实现 [J], 张聪品;刘超
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长 江大学学报 ( 自然 科 学 版 ) 理 工 21 年 3 第 9 第 3 02 月 卷 期 J unl fY nte ies y ( a c E i c&E g Ma. 0 2 o ra agz vri N t i dt i n o Un t S )S r2 1 ,Vo. o 3 19N .
Rt ee算法 的 核心 思想 是通 过 在 内存 中维 护 一 个 极 其 复 杂 的 数 据 结 构 R t 络来 保 存 中 间 匹 配 结 ee网 果 ,以达 到显 著减 少计 算量 的效果 ,即牺 牲 内存 空 间 来 换取 运 行 时 间 。Ree网络 的构 建 主 要 是 基 于 规 t 则 的 LHS有很 大 的相 似 性 的 这个 特 点 ,通 过 保 存 规 则 的条 件 部 分 ( 称 为 左 端 ,即 L ,lf h n 也 HS et a d — sd ) 的各个 模 式 的匹配 结果 ,以便 别 的规则 直接 利 用该 模 式 匹配 结 果 ,可 以极 大 地 减少 重 复 的 匹配 运 ie 算 ,从 而 达 到提升 模 式 匹配效 率 的效果 。当前 ,大 部分 规则 引 擎产 品 的模式 匹 配算 法 ,基本 上都 来 自于 C alsL o g h r .F r y博 士于 1 7 e 9 9年 在其 博士 论文 中提 出的 R t 算 法及 其变 体 , t 算 法 是 目前 在 正 向推 ee Ree 理 规 则引 擎 中的效 率 最高 的一 个模 式 匹 配算 法 L ] 1 。下 面 ,笔 者 对 R t ee网络 的构 建 和 R t 算 法 的执 行 ee
过 程 进 行 了详 细 分 析 。
[ 键 词 ] 规 则 引 擎 ;正 向推 理 规 则 引 擎 ;Re 关 t 式 匹 配 算 法 e模 [ 图分 类 号] TP 1 中 31 [ 献标 识 码 ] A 文 [ 章 编 号 ] 1 7 —1 0 (0 2 3一 9 —0 文 6 3 4 9 2 1 )0 N0 3 3
点 的输入 ,也可 以作 为 B t ea节点 的右 输人 ,To e 点 只能作 为 B t k n节 ea节点 的左输 入 。每个 Alh p a节点
或 B t 节 点 都对应 这 一个 模 式 ,叶子 节点 则对 应 着 某 一 条规 则 , 因此从 根 节 点 到 叶 子节 点 的路 径对 应 ea 着 该 规则 的 LHS ,当有 F c 或 To e at k n被传 递 到一个 叶子节 点 时 ,表示 该规 则 的条件 已经满 足 了 ,可 以
被 触 发执 行 。
Rt ee网络 的构建 过 程如 下所 述 : 1 )创建 网络 的根节 点 ,根 节点 是 R t ee网络 的人 口。
2 )读取 规 则库 中 的一 条 规 则 ,按 照 如 下 方 式 创 建 Alh p a节 点 和 B t 点 到 R t ea节 ee网络 中。其 中 Alh 节 点从 1开始 编号 ,B t 点则 从 2开 始编 号 。①读 取该 规 则 的一 个 模 式 ,检查 该 模 式 的模 板类 pa ea节 型 ,如果 是 新 的模板 类 型 ,则创 建 一个 子节 点 ,作 为代 表这 一模 板类 型 的类 型节 点 ( p No e 。② 检 Ty e d ) 查该 模 式是 否有 对 应 的 Alh 节 点 已存 在 ,如 果 存 在则 记 录下 节 点 位 置 ,否 则 添加 一 个 新 的代 表 该 模 pa 式 的 Alh 节 到 网络 中 。③ 重 复② 直 到该规 则 的所 有模 式都 处 理完 毕 。④按 照 如下 方式创 建 B t pa ea节点 :
过 程 进行 了详 细 的分 析 。
1 R t 网 络 的 构 建 ee
R t 算法 在 进行 模式 匹 配时 ,是 根据 预 先构 建 的 Ree网络 来进 行 的[ 。R t ee t 1 ] ee网络 的根 节 点 是 网络 的入 口 ,非 根节 点有 2种类 型 的节 点 :Alh 节 点 和 B t 节 点 。 由 Alh pa ea p a节点 组成 局 部 网络称 为 Alh pa 网络 ,由 B t ea节点 组 成 的另 一局部 网络称 为 B t ea网络 。每个非 根 结点 都有 一 个 存储 区 ,用 于保 存模 式 匹配 的 中间 结果 。其 中 Alh 节 点 有 一个 Alh 存 储 区和一 个 输 入 V ,B t pa pa 1 ea节点 有 左 右 2个 存储 区和 左 右 2个 输 入 口 ,左 存储 区也 称 为 B t 存 储 区 ,右存储 区也 称 为 Alh 存 储 区 。在 Alh ea pa p a节 点 和 B t ea 节 点 中 ,Alh p a存储 区存 储 的都 是一 组 事实 F c,B t at ea存储 区存 储 的都 是一 组 T k n o e ,其 中每个 T k n o e 由一 个或 若 干个 事实 F c 通过 ji,slc,poet n等操 作 合 并 而 成 。事 实 F c 可 以做 为 Alh at on eet rjci o at p a节
[ 要 ] 规 则 引 擎 技 术 是 专 家 系统 中算 法 是 R t 式 匹配 算 法 。深 入 研 摘 ee模
究 了被 广 泛 应 用 于 正 向推 理 规 则 引 擎 中 的 R t 式 匹 配 算 法 , 对 R t ee模 ee网 络 的构 建 和 Ree 法 的执 行 全 t算
d i 0 3 6 /.sn 1 7 —4 9( o :1 . 9 9 jis . 6 31 0 N). 0 2 0 . 3 2 1. 30 1
正 向推理 规 则 引擎 中 的 Ree 式 匹配 算 法研 究 t模
魏 毅 峰 ( 郧阳师范 高等专科学校数学与财经系, 湖北 十堰 420) 400
相关文档
最新文档