一种提高规则引擎响应速度的方法技术

技术编号:14801506 阅读:75 留言:0更新日期:2017-03-14 22:35
本发明专利技术涉及一种提高规则引擎响应速度的方法,所述方法包括:建立事实集;所述事实集是若干个事实的集合;建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作部分;对所述规则集中的每条规则增加优先级属性;基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。本发明专利技术的方法提高了规则引擎的响应速度,从而提高了规则引擎的实时性。

【技术实现步骤摘要】

本专利技术涉及人工智能领域中的规则引擎技术,特别是涉及一种提高规则引擎响应速度的方法
技术介绍
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。由于规则引擎是软件组件,所以只有开发人员才能通过程序接口的方式来使用和控制它,通常情况下,开发人员在程序中使用规则引擎的五个步骤为:1)创建规则引擎对象;2)向引擎中加载规则集或更换规则集;3)向引擎提交需被规则集处理的事实集;4)命令引擎执行;5)导出引擎执行结果,从引擎中撤出处理过的数据。规则引擎常应用于业务规则经常发生变化的系统。规则引擎可以将用户的业务规则和应用系统的开发相分离,使业务规则的变更不会影响到应用系统的开发,而且用户可以基于规则引擎灵活定制自己的业务规则。规则引擎的推理步骤如下:1)将事实集输入至工作内存;2)将规则集中的规则和事实集中的事实比较;3)如果执行规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合;4)解决冲突,将激活的规则按顺序放入;5)执行规则,重复,直至执行完所有的规则。在对实时性要求比较高的规则引擎应用系统中,在其它条件等同的情况下,提高规则引擎的响应速度尤为重要。目前已有很多方法用于提高规则引擎的响应速度。1999年,美国范德堡大学JohnHeusinkveld等人提出了用html来定义规则的方法;2008年,韩国信息与通信大学ChangbaiChoi等人提出了在移动设备上通过限制Rete算法匹配过程中的规则集和事实集的大小的方法来提高规则引擎的执行效率;2009年,武汉大学ZhangRuijun等人提出了将用xml文件表示的规则集转化为and/ortree,再转换为0-1matrix的方法,进一步提高规则引擎的执行效率;2010年,北京邮电大学的重点智能通信软件实验室DingXiao等人提出了通过优化rete算法来提高规则引擎的的执行效率的方法;2010年,天津大学计算机系GangZhang等人提出了预先编译规则文件、详述规则文件内容、子功能包划分三种提高规则引擎执行效率的方法;2012年,美国托雷多大学SomaShekaraSreenadhReddyDepuru等人提出了数据分类的思想:不同类型的用户所进行匹配的规则不一样,由此减少规则集的数量,提高系统响应速度。上述这些研究方法在不同程度上提高了规则引擎的响应速度,但是这些研究方法大多适用于运行在PC机或服务器上的规则引擎,而对于轻量化设备上规则引擎不适用,主要原因是轻量化设备的计算能力和存储能力有限,直接应用上述这些研究方法会有一定的局限性。由于传统的规则引擎是将规则集和事实集完全匹配之后,再去执行匹配成功的所有规则对应的动作,这样的执行顺序会让较先匹配成功的规则不能及时得到执行,而越先匹配成功的规则,等待执行的时间越长,这样的串行执行顺序会影响应用系统的实时性。
技术实现思路
本专利技术的目的在于克服目前规则引擎中规则匹配过程和规则执行过程串行工作方法存在的缺陷,提出了边匹配边执行的并行工作方法,并在匹配过程中,优先匹配优先级高的规则,从而提高了规则引擎的响应速度。为达到上述目的,本专利技术提供了一种提高规则引擎响应速度的方法,所述方法包括:建立事实集;所述事实集是若干个事实的集合;建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作部分;对所述规则集中的每条规则增加优先级属性;基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。上述技术方案中,所述规则的优先级属性包含两个属性值:优先级级数和规则的创建时间;其中,所述优先级级数为用户自定义的属性值。上述技术方案中,所述匹配算法为古典Leaps算法或Rete算法。上述技术方案中,基于古典Leaps算法进行事实集与规则集的匹配,具体包括:步骤104-1)新建栈,存储所述事实集的若干个事实;步骤104-2)新建队列,按照规则的优先级顺序存储所述规则集的若干个规则;步骤104-3)弹出栈顶元素,获取一个事实F;步骤104-4)从队列中取出一条规则R;步骤104-5)判断所述事实F是否使所述规则R的条件部分的结果为真,如果判断结果是肯定的,转入步骤104-6);否则,转入步骤104-7);步骤104-6)执行所述规则R的动作部分,并用执行后的结果更新事实集;步骤104-7)判断队列是否为空,如果判断结果是肯定的,转入步骤104-8);否则,转入步骤104-4);步骤104-8)判断栈是否为空;如果判断结果是肯定的,转入步骤104-9);否则,转入步骤104-3);步骤104-9)流程结束。上述技术方案中,所述步骤104-2)中规则的优先级顺序的确定方法为:首先比较规则的优先级级数,如果规则的优先级级数不相等,则通过规则的优先级级数直接确定规则的优先级顺序,即规则的优先级级数越大表明该规则的优先级越高;若两条规则的优先级级数相同,则用规则的创建时间的先后确定规则的优先级的顺序,即规则的创建时间越早表明该规则的优先级越高。此外,本专利技术还提供了一种规则引擎,所述规则引擎采用所述提高规则引擎响应速度的方法实现。本专利技术的优点在于:1、本专利技术的方法在规则集与事实集匹配前,对规则集中的规则按照优先级进行了排序,使优先级高的规则优先与事实集进行匹配,提高了规则引擎的平均响应速度,从而提高了规则引擎的实时性。2、本专利技术的方法对规则集中匹配成功的规则立即进行执行,提高了规则引擎的响应速度,此方法适用于轻量化设备上的规则引擎,特别适用于轻量级的物联网网关上的规则引擎,能有效地保证物联网网关设备的实时性,满足实际场景的需求。附图说明图1为本专利技术的提高规则响应速度的方法的流程图;图2为采用本专利技术的方法与采用现有方法的规则引擎的平均响应时间的对比图。具体实施方式在本专利技术的方法中,在规则集和事实集进入匹配之前,首先将规则集中的规则按照优先级的高低进行排序,即优先级越高的规则会越早进行匹配,而且只要规则匹配成功就会立即执行,而不是规则集中的所有规则全部进行匹配完之后再执行匹配成功的规则。这种边匹配边执行的并行工作方式,能够显著提高规则引擎的响应...

【技术保护点】
一种提高规则引擎响应速度的方法,其特征在于,所述方法包括:建立事实集;所述事实集是若干个事实的集合;建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作部分;对所述规则集中的每条规则增加优先级属性;基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。

【技术特征摘要】
1.一种提高规则引擎响应速度的方法,其特征在于,所述方法包括:
建立事实集;所述事实集是若干个事实的集合;
建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作
部分;对所述规则集中的每条规则增加优先级属性;
基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹
配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,
重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。
2.根据权利要求1所述的提高规则引擎响应速度的方法,其特征在于,所述优
先级属性包含两个属性值:优先级级数和规则的创建时间;其中,所述优先级级数
为用户自定义的属性值。
3.根据权利要求2所述的提高规则引擎响应速度的方法,其特征在于,所述匹
配算法为古典Leaps算法或Rete算法。
4.根据权利要求3所述的提高规则引擎响应速度的方法,其特征在于,基于古
典Leaps算法进行事实集与规则集的匹配,具体包括:
步骤104-1)新建栈,存储所述事实集的若干个事实;
步骤104-2)新建队列,按照规则的优先级顺序存储所述规则集的若干个规则;
步骤104-3)弹出栈顶元素,获取一个事实F;<...

【专利技术属性】
技术研发人员:田瑞琴唐鼎杨兴华杨国立赵志军慈松谭红艳
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1