傻瓜纯洁思想里的沙子

愿意当傻瓜的人都快乐
posts - 7, comments - 3, trackbacks - 0, articles - 11

第一章 规则引擎

Posted on 2006-08-10 23:52 哈迪尤 阅读(1517) 评论(0)  编辑  收藏

     规则引擎
  


      1。什么叫规则引擎


          I  来源和背景
                  人工智能是集中研究使计算机像人类一样来想问题用现实中自然来描述问题的宽广的研究领域,列于规则,决策树和专家系统等。AI在知识表示时关心多少知识需要被记录和维护。专家系统把知识逻辑整理成规则放入用于推理的知识库中来表示为学习(我们使用基于知识库中推理来得到结论)。知识管理系统和基于知识库的专家系统被考虑用于人工智能,在这个过程中我们称为学习引擎。EMYCIN是专家系统中第一个用来处理跟外界交互的模块(Shell),一个用于医学诊断的专家系统。成熟的专家系统从系统里剥离出里剥离出用于跟外界交互的逻辑模块。Drools是一个基于规则处理来实现专家系统的规则引擎产品。
                 规则产品这个术语是一个语法中正式的叫法,还可以简单的描述成:用无限的规则集合通过匹配一个处理流程逻辑来定义一个有限的逻辑规则。
                 商业规则管理系统为商业用户提供规则引擎系统的规则管理,部署,协作和分析的用户工具。商业规则的前景是快速的演化成专门为企业提供服务的正式学科。
                  规则引擎可以被只要使用规则的任何一个系统使用。一个简单的认证和根据结果动态表示的系统通过规则引擎来处理数据得到结果被Malcolm Chisholm 在“How to Build a Business Rules Engine (2004)”书上作为一个例子。这本书事实上关于通过用vb代码来控制不同的认证规则来建立或更改数据库中的表和验证登陆数据。当非常有效和有用的一些话题,没有觉察到与规则引擎微妙的不同点,作者希望找出隐藏的一些秘密来改善Drools引擎。jBPM 使用决策点中的表达式和代理来控制工作流中的流程。在每个决策点评估一个规则来决定采用那个处理动作,这个也属于规则引擎。虽然一个规则产品系统属于规则引擎或专家系统的一种,像上面提及的通过编程表达式来确定规则不属于专家系统。
                  一个规则系统产品完全的关注知识表现和简明的定制的执行逻辑。规则产品系统的思考是一个接口引擎用来度量很大数量的规则和事实。接口引擎匹配事实,数据和依靠已有的规则,或则直接调用已有的案例或仅仅规则集来推断出执行动作的结论。规则产品库一般由两部分组成,第一部分是条件执行逻辑。
匹配新的或则依靠已有的规则的处理过程叫模式匹配,同样它也是通过接口引擎执行。用于模式匹配的算法的接口引擎包括:
         
  • Linear

  • Rete

  • Treat

  • Leaps
    Drools 实现Rete和Leaps算法,Leaps 是经过试验证明的,尽管它还非常新。Drools 's Rate被为是Rete算法的一个面向对象的Java实现。市面上还有其他几种经过增强的Rete的商业Rete算法引擎,例如:RetePlus 和Rete III 。Rete III不像原始的Rete算法一样,它是完全商业化的产品,并不公开算法的重要细节。提出“为什么Drools不使用Rete III 算法”是非常无趣的。更多的详细内容请参阅<< Production Matching for Large Learning Systems (Rete/UL)">>(1995) by Robert B. Doorenbos。
                     将多个规则( Rules) 存储在Production Memory里,初始数据(facts的)接口引擎输入到Working Memory(工作内存区)。Working Memory里的 初始数据(Facts)是可以更改和替换的。一个系统里有一定数量的rules 和 facts,并且根据rules判断的出相同的结果,则可以说这些 rules是冲突的(执行规则冲突)。Agenda管理使用多次规则匹配规则冲突策略来确定执行命令。

    Rule_Engine.bmp


                                                                    Figure 1.1. ABasic Rete network
                      一个规则引擎系统的的接口引擎应该是声明式的,并且能够根据声明的事实来执行。它被称为Truth Maintence。执行的动作的逻辑关系是确定好的,当根据逻辑关系推论出action的状态值为真便执行动作。如果不符合条件则不执行动作。下面“真实的政客”就是Truth Maintence的一个例子。当政客存在时候,总是只有确保希望存在条件下才执行动作。

     

                     规则引擎有两种推理方式。Forward Chaining (推理)和Backward Chaining(归纳法)。实现两种算法的规则引擎称为混合型规则系统。理解两种方式操作上的不同是理解不同的规则引擎的优点。Forward chaing是数据驱动的,当把数据放入working memory 得到一个或多个执行结果。当有多个多个规则匹配时候,就用使用Agenda执行定义好的动作,直到全部执行完成。Drools 属于Forward Chaining 推理引擎。

    Forward_Chaining.bmp

    Backward chaining 是根据假设目标来驱动的。开始后试图不断找到符合的结论,如果不能找到符合的规则时候,则设定下一个子假设来帮助当前的假设来找到符合的规则,这样重复不断查找,直到找完全部的结论或者没有子假设时候才停止。Backward Chaining 的规则引擎的例子是Prolog 。Drools将在下一个发行版加入 Backward Chaining。

    Backward_Chaining.bmp


  • 只有注册用户登录后才能发表评论。


    网站导航: