一种提高规则引擎运行效率的方法

文档序号:9810267阅读:411来源:国知局
一种提高规则引擎运行效率的方法
【技术领域】
[0001] 本发明涉及人工智能领域中的规则引擎技术,特别涉及一种提高规则引擎运行效 率的方法。
【背景技术】
[0002] 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务 决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。由于规则引擎 是软件组件,所以只有开发人员才能通过程序接口的方式来使用和控制它,通常情况下,开 发人员在程序中使用规则引擎的五个步骤为:
[0003] 1)创建规则引擎对象;
[0004] 2)向引擎中加载规则集或更换规则集;
[0005] 3)向引擎提交需被规则集处理的事实集;
[0006] 4)命令引擎执行;
[0007] 5)导出引擎执行结果,从引擎中撤出处理过的数据。
[0008] 规则引擎常应用于业务规则经常发生变化的系统。规则引擎可以将用户的业务规 则和应用系统的开发相分离,使业务规则的变更不会影响到应用系统的开发,而且用户可 以基于规则引擎灵活定制自己的业务规则。
[0009] 规则引擎的推理步骤如下:
[0010] 1)将事实集输入至工作内存;
[0011] 2)将规则集中的规则和事实集中的事实比较;
[0012] 3)如果执行规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集 合;
[0013] 4)解决冲突,将激活的规则按顺序放入;
[0014] 5)执行规则,重复,直至执行完所有的规则。
[0015] 任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问 题,当引擎执行时,会根据执行队列中的优先顺序逐条执行规则执行实例,由于规则的执行 部分可能会改变工作区的数据对象,从而会使队列中的某些规则执行实例因为条件改变而 失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进 入队列;于是就产生了一种"动态"的规则执行链,形成规则的推理机制。
[0016] 引擎需要迅速测试工作区中的数据对象,从加载的规则集中发现符合条件的规 贝1J,生成规则执行条例。规则条件匹配的效率决定了规则引擎的运行效率,决定了规则引擎 的性能。
[0017] 目前已有很多方法用于提高规则引擎的运行效率。1999年,美国范德堡大学 John Heusinkveld等人提出了用html来定义规则的方法;2008年,韩国信息与通信大学 Changbai Choi等人提出了在移动设备上通过限制Rete算法匹配过程中的规则集和事实 集的大小的方法来提高规则引擎的执行效率;2009年,武汉大学Zhang Ruijun等人提出 了将用xml文件表示的规则集转化为and/or tree,再转换为O-lmatrix的方法,进一步提 高规则引擎的执行效率;2010年,北京邮电大学的重点智能通信软件实验室Ding Xiao等 人提出了通过优化rete算法来提高规则引擎的的执行效率的方法;2010年,天津大学计 算机系Gang Zhang等人提出了预先编译规则文件、详述规则文件内容、子功能包划分三种 提高规则引擎执行效率的方法;2012年,美国托雷多大学Soma Shekara Sreenadh Reddy Depuru等人提出了数据分类的思想:不同类型的用户所进行匹配的规则不一样,由此减少 了规则集的数量,提高运行效率。
[0018] 上述这些研究方法在不同程度上提高了规则引擎的运行效率,但是这些研究方法 大多适用于运行在PC机或服务器上的规则引擎,而对于轻量化设备上规则引擎不适用,主 要原因是轻量化设备的计算能力和存储能力有限,直接应用上述这些研究方法会有一定的 局限性。在这些研究方法中,Changbai Choi等人提出的限制匹配过程中规则集和事实集 大小的方法,虽然这个方法能够在轻量化的移动设备上实现,但是这个方法在执行过程中 存在下述问题:每次进行规则匹配时,由于无法准确预测哪些规则能够被触发,哪些规则不 能够被触发,也就不能准确找出每次匹配时挑选哪些规则进行匹配。因此,如果规则挑选不 精准的话,会造成本次匹配的执行结果不精准,从而影响规则引擎的运行效率。

【发明内容】

[0019] 本发明的目的在于克服目前应用在轻量化设备上的规则引擎存在的运行效率低 的缺点,在现有匹配算法的基础上,提出了一种为每条规则添加"关联事实"属性的方法,此 方法可以提高规则引擎的运行效率。
[0020] 为达到上述目的,本发明提供了一种提高规则引擎运行效率的方法,所述方法包 括:
[0021] 步骤101)建立事实集;所述事实集是若干个事实的集合;
[0022] 步骤102)建立规则集;所述规则集是若干条规则的集合;每条规则包含条件部分 和动作部分;
[0023] 步骤103)对规则集中的每条规则增加其对应的"关联事实"属性;
[0024] 步骤104)基于匹配算法将事实集与规则集进行匹配,建立匹配规则集;
[0025] 步骤105)将匹配规则集中的规则按照规则优先级确定规则的执行顺序;
[0026] 步骤106)按照规则的执行顺序执行规则的动作部分,并用执行后的结果更新事 实集。
[0027] 上述技术方案中,步骤103)进一步包括:
[0028] 所述规则集中的每条规则的条件部分由若干个条件元素组成;所述条件元素为一 个事实变量的数量关系,由"事实变量+关系描述符+具体数值或状态值"的形式表示;所 述条件元素的"关联事实"为该条件元素对应的"事实变量",对应于规则集中的每条规则的 "关联事实"属性的值是若干个条件元素关联的"事实变量"的集合。
[0029] 上述技术方案中,所述步骤104)中匹配算法为古典Leaps算法或Rete算法。
[0030] 上述技术方案中,基于古典Leaps算法建立匹配规则集的具体步骤为:
[0031] 步骤104-1)新建栈,存储所述事实集的若干个事实;
[0032] 步骤104-2)新建队列,存储所述规则集的若干个规则;
[0033] 步骤104-3)弹出栈顶元素,获取一个事实F ;
[0034] 步骤104-4)从队列中取出一条规则R ;
[0035] 步骤104-5)判断所述事实F与所述规则R是否关联,如果判断结果是肯定的,转 入步骤104-6);否则,转入步骤104-8);
[0036] 步骤104-6)判断所述事实F是否使所述规则R的条件部分的结果为真,如果判断 结果是肯定的,转入步骤104-7);否则,转入步骤104-8);
[0037] 步骤104-7)将所述规则R放入匹配规则集;
[0038] 步骤104-8)判断队列是否为空,如果判断结果是肯定的,转入步骤104-9);否则, 转入步骤104-4);
[0039] 步骤104-9)判断栈是否为空,如果判断结果是肯定的,转入步骤105);否则,转入 步骤 104-3)。
[0040] 上述技术方案中,在所述步骤104-5)中,判断所述事实F与所述规则R是否关联 进一步包括:
[0041] 所述规则的"关联事实"属性的值是若干个条件元素关联的"事实变量"的集合, 将所述事实F的每个事实变量与所述规则R的"事实变量"的集合进行比较,若事实F存在 一个事实变量属于规则R的"事实变量"的集合,则认为该事实F与该规则R关联;否则,认 为该事实F与该规则R不关联。
[0042] 本发明的优点在于:
[0043] 1、本发明的提高规则引擎运行效率的方法,能够提高规则引擎推理中事实集和规 则集的匹配命中率,减小时间损耗,有效提高规则引擎的运行效率。
[0044] 2、本发明的提高规则引擎运行效率的方法适用于轻量化设备上的规则引擎,特别 适用于轻量级的物联网网关上的规则引擎,规则引擎能够运行于物联网网关上,能够方便 用户根据自己实际场景的需求来灵活定制业务规则,解决了当前的物联网网关只能适用于 特定应用场景的问题。
【附图说明】
[0045] 图1是本发明的提高规则引擎运行效率的方法的流程图;
[0046] 图2是本发明的基于古典Leaps算法建立匹配规则集的流程图;
[0047] 图3是本发明的方法与现有方法的规则引擎的运行时间仿真对比图。
【具体实施方式】
[0048] 与现有的规则引擎技术相比,本发明的方法为规则集中的每条规则添加了 "关联 事实"属性,在将事实集与规则集进行匹配的时候,首先将事实集中的每个事实与规则集中 的每条规则进行初步匹配,即将每个事实与每条规则的"关联事实"
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1