版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、规则引擎是什么起源于专家系统, 人工智能领域的商业应用方向基于产生式规则的推理系统,将领域知识和业务规则集合作为知识库进行存储和管理; 规则引擎根据给定数据及知识库进行推理,执行相应规则,从而作出决策;使用预定义的规则语言编写业务规则,将业务逻辑从应用程序中分离,业务规则更加可读、可编辑、动态可配置, 从而应对复杂多变的商业规则;嵌入到应用程序中的可复用计算组件。适用场景: 替换复杂嵌套难以维护的条件、分支语句; 业务规则变化迅速, 且不能经常重新编译和部署应用; 必须由业务专家动态地维护和管理可变的业务规则和商业机密; 计费系统、积分系统、知识推理系统等; 规则引擎的组成(一)产生式规则库
2、(Production Memory): 存放企业规则的可编译形式;工作内存区(Working Memory): 存放事实, 对应于企业应用系统中的数据对象;推理引擎(Inference Engine) :决定哪些规则满足事实,并授予规则执行优先级,满足要求的待执行规则被加入议程。推理引擎由模式匹配器、议程和执行引擎组成。模式匹配器决定哪些规则满足事实,并授予规则执行优先级,满足要求的待执行规则被加入议程;议程使用指定的冲突消解策略,来决定已匹配的规则集的执行次序;执行引擎负责执行规则,输出结果。模式匹配器(Pattern Matcher)是规则引擎的核心,决定着规则引擎实现的效率。一个经典而
3、高效的算法是 ReteOO 算法。规则引擎的组成(二) RETE 算法的基本思想是将产生式规则库预编译成一个规则匹配网络 RETE 网络。规则/规则流可以使用excel, xml, drl, rf 等多种格式存储和表达。规则引擎的组成(三)步骤一: 应用程序启动规则引擎,激活指定的规则/断言集区。激活的规则/断言集被加载入内存,并通过规则/断言编译器,最终构建出规则匹配网络;步骤二: 工作内存区从应用程序接收输入数据或对象,将其插入规则匹配网络,经过数据-规则匹配过程,产生完全匹配的集合;步骤三:选择器根据元规则集合提供的优先级描述从集合中选择出集合并包装成Activation实例集作为候选执
4、行单位;步骤四:议程用来管理Activation实例集合的活动,支持添加、删除和更新等操作。它将优先执行的Activation实例集合交给调度器;步骤五:调度器会预先从外部获取控制过程子例程集合。当接收到由议程传来的Activation实例集合时,通过一定的调度算法调度一个过程,并根据过程控制程序来选出将要执行的规则动作,交给解释器执行。此外,调度器还负责未能完成的Activation实例执行过程的调度处理。步骤六:解释器拥有一个执行栈,用于存放要执行的动作。当解释器执行完一个Activation时,就会从议程中删除已执行的Activation;如果有必要,会产生两种可能的附加结果和操作:或者
5、更新工作内存区,并触发新的数据到规则匹配网络中进行匹配;或者激活新的规则/断言集合,放入规则/断言编译器,更新规则匹配网络;步骤七:解释器依次执行完所有的Activation实例集合并输出结果,或者根据用户指定的执行策略执行Activation实例集合,并在指定时刻输出结果;步骤八:用户通过规则引擎提供的API接口取出结果,进一步由应用程序处理。RETE算法Charles L.Forgy 1982多模式/多对象匹配前向推理产生式规则解释器美国国防高级研究计划局发起Artificial Intelligence 19 (1982) 17-37前向推理是根据已有事实,不断地应用规则进行推理或者执行
6、动作,从而得出某些结论或结果,类似于演绎法;后向推理是首先进行假设和猜想,然后不断应用规则来寻找符合假设的事实,从而证明或否定假设或猜想,类似于回溯法。分析判断系统通常采用前向推理,而证明诊断系统通常采用后向推理。 RETE 算法 - 基本概念产生式:亦称规则,指一条由IF-THEN表述的语句,其中包括规则条件及规则动作;规则条件:通常称为LHS,是产生式的IF部分的表达,其中含有待匹配的“模式”元素;规则动作:通常称为RHS,是产生式的THEN部分的表达,含有当规则被激活和调度时要执行的操作;对象: 用来匹配产生式的事实或数据,在面向对象的语境中统称对象;工作内存:全局数据区,包含运行时将会
7、插入、删除或更新的对象;当工作内存区插入、删除或更新对象时,都将引发事实在规则集合中的匹配过程。冲突集:冲突集是一个集合,其中的每一个元素都是一条规则及与之完全匹配的对象集合。 Rule LHS: $account: Account(balance100,type=STUDENT), $customer: Customer(account contains $account)rule Award“ Rule ID ruleflow-group award_punish“ Rule Attribute when LHS emp: Employ(awardPunish=award) then RH
8、S System.out.println(exec rule Award . ); emp.setPercent(1.10);endRETE 算法 预编译匹配网络RETE算法通过对指定产生式集合的LHS部分,即规则条件部分,构建起一个RETE匹配网络,从而避免对规则集合的重复遍历,提高匹配效率。例如:有如下几条规则的LHS:R1 P: a = 1, b = 1 R2 P: a = 1, b = 2 R3 P: a = 2, b = 1 R4 P: a = 2, b = 2 R5 P: b = 1 R6 P: b = 1, T: p=P假设有对象P1(a=2,b=1),T1(p(a=1,b=1)
9、 依次插入到工作内存。RETE算法 七种基本节点和四种结构七种基本节点类型: 【RETE Node】 RETE网络的根节点, 默认入口点,任何插入的token都要经过此节点进入RETE匹配网络 【 EntryPointNode 】 RETE根节点的后继节点,它将进入的token创建多个副本并分发到其所有的后继节点(类型检测) 【ObjectTypeNode】 对象类型检测节点,即判断分发的事实副本是否属于某个类的对象,不满足的直接被丢弃 【 AlphaNode 】第一级匹配节点,用于匹配单个对象的单个属性 【 LeftInputAdapterNode 】适配器节点,用于为匹配AlphaNode
10、类型的对象创建元组并将其加入BetaNode节点的左工作区,是通向BetaNode类型的入口点。 【BetaNode】第二级匹配节点,用于匹配多个对象之间的属性约束联系, BetaNode通常有两个工作区,分别称为左工作区和右工作区。左工作区用于存放匹配前驱AlphaNode类型或BetaNode类型的元组,右工作区用于存放匹配AlphaNode类型的对象。 【TerminalNode】叶节点类型。当元组和对象集合完全匹配某个规则中的模式时,就会到达该节点,并创建包含该规则及匹配对象集的元组。这些元组将在适当的时候加入到议程中获得调度和执行。四种结构: 【Alpha匹配网络】 负责单对象单属性
11、的模式元素匹配,由大量AlphaNode类型的节点集合组成; 【Alpha内存区】 负责存储Alpha匹配网络中匹配AlphaNode模式元素的对象集合; 【Beta匹配网络】 负责多对象多属性的模式元素组合匹配,由大量BetaNode类型的节点集合组成; 【 Beta内存区】负责存储从Alpha内存区或Beta内存区中进入的仅匹配BetaNode模式类型中的部分模式元素的对象集合 RETE 算法 三种匹配网络RETE算法 四种匹配子例程 RETE网络的匹配过程由一个总控制程序进行调度,当对象token副本到达Alpha匹配网络,或者Alpha内存区或者Beta匹配网络,或Beta内存区,均会
12、激发相应的子例程,从而实现对象在RETE网络中的匹配过程。可以采用观察者模式实现。 Alpha 匹配网络子例程 对进入的对象进行类型测试和单属性测试,并将匹配的对象传入对应的Alpha内存区,接着,调用相应的Alpha内存子例程。 Alpha 内存区子例程 当有满足单对象单属性的对象进入Alpha内存区时,首先将其加入到所匹配模式元素的对象集合中,然后调用与之相连的每一个BetaNode的右激发子例程。Alpha内存区可以通过对所有的类型检测模式、单属性模式建立全局索引表,从而提高匹配效率,通常可以达到O(1)的效率。因此,规则引擎的匹配效率主要取决于Beta网络的匹配效率。 BetaNode
13、 子例程 BetaNode 具有两个子例程:左激发子例程和右激发子例程。 当匹配BetaNode部分模式元素的元组进入与之相连的父Beta内存区时,就会调用左激发子例程,查找是否有对象满足给定模式; 当匹配BetaNode部分模式元素的对象进入与之相连的Alpha内存区时,就会调用其右激发子例程,查找是否有元组满足给定模式。 若找到,则将相应的元组和对象包装成更大的元组,传入与之相连的子Beta内存区,并激发相应的Beta内存区子例程。 Beta 内存子例程 当有元组进入Beta内存区时,就会激发Beta内存子例程。 Beta内存区首先将元组加入到所匹配模式元素的对象集合中,然后将其传入与之相
14、连的每一个BetaNode,调用其左激发子例程。Beta内存区同样可建立一个全局索引表来提高匹配效率。Java 开源规则引擎 Drools JBoss Drools基于Rete算法的改进形式Rete-算法,增加了对面向对象的支持,支持声明式程序设计以及使用领域特定语言(Domain Specific Languages,DSL)来描述用户问题域,是一个非常完善而出色的规则引擎产品。提供了丰富而完善的规则/规则流语言支持提供了面向对象支持支持规则LHS表达中的函数定义和插入特性支持大规模的规则处理支持规则流的定义和执行提供了基于WEB的BRMSGuvnor 规则引擎实现的最小子集drools-a
15、pi-5.1.1.jar 提供了应用程序与JBoss Drools规则引擎进行交互的接口。主要包括:规则资源的加载、编译与全局知识库的创建生成;与工作区的交互;启动规则引擎进行应用会话;查询计算结果;提供选项配置和改变规则库及规则引擎的某些行为等。此外,还提供日志功能,知识库显示,规则匹配情况等drools-compiler-5.1.1.jar 提供了构建知识包的功能。它将外部的可编辑的文本形式的规则文件加载到内存,转换为规则的内部表示,构建RETE网络,输出可用于部署的二进制规则包drools-core-5.1.1.jar Drools规则引擎的核心实现drools-bpmn2-5.1.1.
16、jar 提供了XML格式的规则流文件的支持,这有利于规则流文件的自动生成和管理规则引擎的优势逻辑表达与执行的分离。业务逻辑的实现可以细分为业务逻辑的表达和执行。 在传统代码中,表达与执行是混在一起的,均是由代码来表达和执行;而在基于规则和规则引擎的系统中,规则用于逻辑表达,引擎进行执行。逻辑表达与执行分离了;基于规则的系统中, 系统的正确性取决于规则的正确性。规则就像一系列表达“KNOW-HOW”的小片, 通过将规则片合理的组合起来(规则流的作用),从而表达完整的计算逻辑。规则、规则流和规则引擎是核心概念;动态可配置的计算逻辑,具备固有的可扩展性。由于计算逻辑通过规则来表达和实现,而规则是动态
17、可配置的,这就使得计算逻辑是动态可配置的。 这对于复杂多变、要求快速部署的现代商业应用是非常具有潜力和优势的;规则比代码更具可读性。如果将规则生成和管理系统做到更人性化,就可以让用户(通常是业务人员和业务专家)通过编写规则和规则流来创建应用逻辑了。规则具备自解释性。可以跟踪规则的执行, 清晰地看到最终计算结果的产生过程。而在传统代码中,虽然能够打印出一些语句,但是受程序结构限制, 通常仅限于程序员来调试。计算组件的复用性。 规则用于表达, 引擎用于执行。 业务逻辑的多变性通常体现在表达上,而不是执行上。 因此, 表达部分是多变的,而执行部分是相对稳定的。规则引擎是计算组件中的可复用部分。策略与
18、机制的分离。在软件设计的角度来说,这也体现了策略与机制的分离。 规则表达是策略, 引擎是机制。 策略可变,机制稳定。人类专家、基于规则引擎的解决方案和传统计算方案的对比人类专家在计算智能和自适应性上具有很大的优势,其不足之处在于计算效率慢,难以胜任大量的计算工作;基于规则引擎的计算方案汲取了人类专家的“经验和智慧”,具备一定的智能性,同时计算效率要远高于人类专家;传统方案: 仅在计算效率方面略高于前者,而在其它方面都有难以比拟的劣势。参考文献Forgy C.L.Rete: A fast algorithm for the many pattern/many object pattern match problemJ/OL.Artificial Intelligence,1982,19:17-37Doorenbos RB.Production matching for large learning systemsD. CMU-CS-95-113, 1995Frederick Hayes-roth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瑞金市2025年公开招聘城市社区工作者【46人】(公共基础知识)测试题附答案
- 2025昆明市就业促进会人工智能高质量数据集基地AI人工智能训练师招聘(30人)(公共基础知识)综合能力测试题附答案
- 2026年黔西南民族职业技术学院单招(计算机)考试备考题库附答案
- 2025南平市建阳区治安巡防大队公开招聘队员10人(公共基础知识)测试题附答案
- 抱枕生产线项目投资计划书
- 2025四川外国语大学孔子学院国际中文教育骨干专职汉语教师招聘2人(公共基础知识)综合能力测试题附答案
- 2025黑龙江鹤岗市萝北县残疾人托养中心医护人员招聘1人参考题库附答案
- 亲人合伙生意协议书
- 2026年湖南省常规选调生900人(公共基础知识)综合能力测试题附答案
- 2026招银网络科技海外校园招聘(公共基础知识)测试题附答案
- DB37-T4975-2025分布式光伏直采直控技术规范
- 2025下半年贵州遵义市市直事业单位选调56人参考笔试题库附答案解析
- 【试卷】吉林省松原市2025-2026学年八年级上学期12月期末测试道德与法治试题
- 反霸凌宣传课件
- 车子棚出租协议书
- 民航空管局面试题及答案
- 云南民族大学附属高级中学2026届高三联考卷(四)语文+答案
- 期末综合测试卷一(试卷)2025-2026学年二年级语文上册(统编版)
- 2025山东青岛上合控股发展集团有限公司社会招聘31人参考笔试试题及答案解析
- 2025年大学康复治疗学(运动疗法学)试题及答案
- 2025年10月自考14701中外服装史(本).试题及答案
评论
0/150
提交评论