规则引擎对比研究报告
规则引擎 Pyke 与 PyClips 对比研究报告
1. 背景综述
规则引擎主要实现的功能是存储、分类和管理规则,执行规则、推断其它事实的应用
程序。其中的规则主要是指企业或商务业务逻辑、法律条款等。在规则引擎发展的过程中
Rete 算法和 Prolog 语言是两个重要的理论分支,多数规则引擎都是基于以上二者扩展而
来的。在工业活动铸造中,发展时间较长、应用广泛的两个体系是 Clips 体系和 Prolog 体
系。
Clips 是美国航空航天局 NASA- JOHNSON 太空中心为弥补 LISP 语言的不足而开发
的 C 语言内核的专家系统。它的推理机是基于正向推理(Rete 算法)的控制策略,即在
事实的基础上通过设定的规则推演新的事实。因为 LISP 语言编写规则复杂、引擎不支持反
向推理等原因也在一定程度限制了它的发展,但在其他语言开发(javaEE、Python 等)
的规则引擎仍有很多参考、引用了 Clips,包括 Drools、Jess、PyClips 等。
Prolog 语言基于谓词逻辑的理论。最基本的写法是定立物件与物件之间的关系,之后
可以用询问目标的方式来查询各种物件之间的关系,进行匹配及回溯,找出所询问的答案
因而 Prolog 具备作为规则引擎的充分条件,也有若干开源项目(java 为主)沿用其思路
设计规则引擎,如 tuProlog 、jena 等。下文所提到的 Pyke , 普 遍 说法其前身也是
Prolog。此外,有文献提到 prolog 基于 Markov 算法。Markov 算法可以作为规则引擎的
基本准则,但是如果系统中存在着大量的规则,那么效率就会变低。
针对项目开发的实际需要,依据 “Python 语言驱动引擎、规则语言语义全面、时间开
销适中”的原则选取规则引擎,具体操作过程中选择了 Pyke 和 PyClips 分别进行研究,二
者分别对应上文提到的 Prolog 体系和 Clips 体系,有一定代表性。经过手册研读和实验测
试,目前可得到的结论是:PyClips 在规则表达和性能效率方面优于 Pyke,更符合应用
开发的需要。具体分析见下文。
2.PyClips 与 Pyke 的规则表达方式比较
2.1 Pyke 的规则描述方式和特性
Pyke 的优势、特点:
支持正向推理和反向推理两种推理方式,可以针对不同问题选用不同方式定
义规则;
可以在规则中嵌入 Python 代码段补充描述;
评论8