领域规则可视化编辑与管理系统的设计与实现文献综述

 2023-08-04 11:07:05

文献综述(或调研报告):

在人工智能研究的早期阶段,专家系统是一个重要的领域分支,通过模仿人类的推理方式,利用知识表示技术来组织专家知识,在输入数据对象后通过规则引擎解决通常只有领域专家才能解决的复杂问题,最终得出专家级的结论。因为产生式规则是知识表达最有效的组织方式,所以目前使用最广泛的专家系统是基于规则的专家系统。

随着科技进步和经济的快速发展,无论是传统的银行、保险、金融行业还是当前风头正盛的互联网行业,业务逻辑的变动已经越来越频繁且复杂,这也意味着技术人员需要频繁的更新产品。但是因为代码耦合或者其它技术问题,改动原始代码的复杂度和风险越来越高,同时对更新后的产品的测试也会消耗大量的人力物力。[1]更重要的是在一个开发团队中,技术人员往往不是最熟悉业务逻辑的,但是业务逻辑的实现却是由他们完成的。这种情况下,我们急需在业务逻辑层提出一个标准的开发框架,把业务逻辑从代码中抽离出来,让业务人员来负责制定产品的业务逻辑。因此,规则引擎迎来了发展的契机。规则引擎把业务决策逻辑从代码中抽离出来形成独立的业务规则,极大地提高了代码的可维护性,使得需求变化时我们可以让业务人员迅速的修改业务逻辑。

随着规则引擎在商业上的应用,市面上也出现了许多的规则引擎产品。主流的规则引擎有Ilog,Jess,Jlisa等,国内旗正公司也推出了Visual Rules,它对中文的支持度高,同时在可视化编辑功能上比较容易上手,但是无一例外都是收费的商业软件。[2]开源的规则引擎并不多,常见的有Drools,OpenRules,OpenLexicon等。但是在易用性,拓展性,开放性,对协议规范的支持上,Drools在开源规则引擎中应该是最成功的。[3]

因为市面上的规则引擎没有一个通用的标准,各自的厂家实现自己的API,这样在开发时如果更换了别的规则引擎就需要重写代码逻辑,移植成本比较高。因此JCP在2004年推出了JSR-94规范,它统一了规则引擎的API和一系列操作,使得java规则引擎实现了标准化。不过这个规范没有统一规则语法,所以在规则引擎移植时还是需要更换规则定义。[4]

Drools是一个开源规则引擎,它具有速度快,效率高,易调整的特点。Drools规则引擎的核心算法是1979年Charles Forgy提出的Rete算法,Rete算法大大提高了规则匹配的效率,它的核心思想是将分离的匹配项根据内容动态的构造匹配树。

Rete算法通过节点共享,节点索引等方法提高了匹配的性能。节点共享是在规则网络建立的时候尽可能利用已有规则的节点,通常一个规则的约束条件中越有可能被修改的会被放在末尾使得节点的重复利用更充分。节点索引包括AlphaNode索引和和BetaNode索引,概括来说就是在部分节点存储当前的匹配结果,这样在规则增删的时候可以避免对所有规则进行重新评估。总的来说,Rete的优化思想是用空间换时间,在处理大规模数据时对内存要求比较高。[5]针对这种情况,Leaps算法被提出来。[6]Leaps是一种折中的方案,它抛弃了Rete中保存所有匹配的中间结果的策略,而只是在必要时才缓存匹配的中间结果也就是元组。实验表明在某些场景下Leaps算法有效降低了内存消耗。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。