CN105635328A - 一种提高规则引擎响应速度的方法 - Google Patents
一种提高规则引擎响应速度的方法 Download PDFInfo
- Publication number
- CN105635328A CN105635328A CN201410602360.9A CN201410602360A CN105635328A CN 105635328 A CN105635328 A CN 105635328A CN 201410602360 A CN201410602360 A CN 201410602360A CN 105635328 A CN105635328 A CN 105635328A
- Authority
- CN
- China
- Prior art keywords
- rule
- priority
- regulation engine
- response speed
- true
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种提高规则引擎响应速度的方法,所述方法包括:建立事实集;所述事实集是若干个事实的集合;建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作部分;对所述规则集中的每条规则增加优先级属性;基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。本发明的方法提高了规则引擎的响应速度,从而提高了规则引擎的实时性。
Description
技术领域
本发明涉及人工智能领域中的规则引擎技术,特别是涉及一种提高规则引擎响应速度的方法。
背景技术
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。由于规则引擎是软件组件,所以只有开发人员才能通过程序接口的方式来使用和控制它,通常情况下,开发人员在程序中使用规则引擎的五个步骤为:
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所示,一种提高规则引擎响应速度的方法,包括:
步骤101)建立事实集;所述事实集是若干个事实的集合;
所述事实包含若干个事实变量,每个事实变量为与规则引擎相关的变量状态,通常用“事实变量+逻辑描述符(是或等于)+数值或状态值”的形式来表示。
以事实“空气温度等于20℃”为例,此事实表示当前空气温度的值为20℃。
步骤102)建立规则集;所述规则集是若干个规则的集合;
所述规则包括条件部分和动作部分,通常用“如果……,则……”的形式表示,条件部分为“如果……”,动作部分为“则……”。条件部分包含若干个条件元素,动作部分包含若干个动作元素。若干个条件元素之间用“并且”或“或者”相连接,表示这些条件元素之间的逻辑关系。每个条件元素的结果是一个布尔类型,条件部分就是若干个布尔类型表达式的组合,其组合结果仍然是一个布尔类型。只有在条件部分为真的情况下才会执行动作部分中的若干个动作元素。
步骤103)对所述规则集中的每条规则增加优先级属性;
所述优先级属性包含两个属性值:优先级级数和规则的创建时间;其中,优先级级数为用户自定义的属性值。
步骤104)基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。
所述匹配算法为古典Leaps算法或Rete算法。
如图1所示,作为一种优选的实施方式,基于古典Leaps算法,步骤104)进一步包括:
步骤104-1)新建栈,存储所述事实集的若干个事实;
步骤104-2)新建队列,按照规则的优先级顺序存储所述规则集的若干个规则;
所述规则的优先级顺序的确定方法为:首先比较规则的优先级级数,如果规则的优先级级数不相等,则通过规则的优先级级数直接确定规则的优先级顺序,即规则的优先级级数越大表明该规则的优先级越高;若两条规则的优先级级数相同,则用规则的创建时间的先后确定规则的优先级的顺序,即规则的创建时间越早表明该规则的优先级越高。
例如,规则R1的优先级级数是3,规则R2的优先级级数是1,则规则R1的优先级比规则R2的优先级高。
例如,规则R1的优先级级数是3,创建时间是2014年9月21日12:30:40,规则R2的优先级级数是3,创建时间是2014年9月21日12:35:40,则规则R1的优先级比规则R2的优先级高。
步骤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)流程结束。
此外,本发明还提供了一种规则引擎,所述规则引擎采用所述提高规则引擎响应速度的方法实现。
在android4.0.3的实际环境中对未采用本发明的方法的规则引擎和采用本发明的方法的规则引擎进行系统实现和实验测试。测试目标是规则引擎对每条规则的平均响应时间,平均响应时间是指系统响应完所有被触发的规则花费的时间与被触发规则条目的比值。测试的事实集包括10个事实;测试的规则集分别包括5、10、20、30、40、50个规则。
测试结果如表1所示:
表1
上述数据对应的曲线图为图2,从图2可以看出在规则引擎中,采用本发明的方法,将规则集中的规则在进行模式匹配前按优先级排序后,规则引擎的平均响应时间有明显的减少,提高了规则引擎的平均响应速度。
Claims (6)
1.一种提高规则引擎响应速度的方法,其特征在于,所述方法包括:
建立事实集;所述事实集是若干个事实的集合;
建立规则集;所述规则集是若干个规则的集合,所述规则包括条件部分和动作部分;对所述规则集中的每条规则增加优先级属性;
基于匹配算法将事实集的事实与规则集的规则按照规则的优先级顺序进行匹配,只要有匹配成功的规则,就执行规则的动作部分,执行完毕后,继续进行匹配,重复上述过程直至事实集中的所有的事实与规则集中的规则匹配完毕。
2.根据权利要求1所述的提高规则引擎响应速度的方法,其特征在于,所述优先级属性包含两个属性值:优先级级数和规则的创建时间;其中,所述优先级级数为用户自定义的属性值。
3.根据权利要求2所述的提高规则引擎响应速度的方法,其特征在于,所述匹配算法为古典Leaps算法或Rete算法。
4.根据权利要求3所述的提高规则引擎响应速度的方法,其特征在于,基于古典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)流程结束。
5.根据权利要求4所述的提高规则引擎响应速度的方法,其特征在于,所述步骤104-2)中规则的优先级顺序的确定方法为:
首先比较规则的优先级级数,如果规则的优先级级数不相等,则通过规则的优先级级数直接确定规则的优先级顺序,即规则的优先级级数越大表明该规则的优先级越高;若两条规则的优先级级数相同,则用规则的创建时间的先后确定规则的优先级的顺序,即规则的创建时间越早表明该规则的优先级越高。
6.一种规则引擎,其特征在于,所述规则引擎采用权利要求1-5所述的提高规则引擎响应速度的方法实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410602360.9A CN105635328A (zh) | 2014-10-31 | 2014-10-31 | 一种提高规则引擎响应速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410602360.9A CN105635328A (zh) | 2014-10-31 | 2014-10-31 | 一种提高规则引擎响应速度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105635328A true CN105635328A (zh) | 2016-06-01 |
Family
ID=56049797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410602360.9A Pending CN105635328A (zh) | 2014-10-31 | 2014-10-31 | 一种提高规则引擎响应速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105635328A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777029A (zh) * | 2016-12-08 | 2017-05-31 | 中国科学技术大学 | 一种分布式规则引擎系统及其构建方法 |
CN107133741A (zh) * | 2017-05-05 | 2017-09-05 | 东软集团股份有限公司 | 待办任务处理方法、装置、可读存储介质及电子设备 |
CN108960584A (zh) * | 2018-06-13 | 2018-12-07 | 东软集团股份有限公司 | 工作流任务分类方法、装置、可读存储介质和电子设备 |
CN109376988A (zh) * | 2018-09-11 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 一种业务数据的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004799A (zh) * | 2007-01-16 | 2007-07-25 | 中山大学 | 一种时态产生式系统 |
CN101409885A (zh) * | 2008-11-18 | 2009-04-15 | 中国移动通信集团福建有限公司 | 基于规则引擎的异常指标分析方法 |
CN102968309A (zh) * | 2012-11-30 | 2013-03-13 | 亚信联创科技(中国)有限公司 | 一种实现基于规则引擎的规则匹配方法和装置 |
CN105573737A (zh) * | 2014-10-30 | 2016-05-11 | 中国科学院声学研究所 | 一种提高规则引擎运行效率的方法 |
-
2014
- 2014-10-31 CN CN201410602360.9A patent/CN105635328A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004799A (zh) * | 2007-01-16 | 2007-07-25 | 中山大学 | 一种时态产生式系统 |
CN101409885A (zh) * | 2008-11-18 | 2009-04-15 | 中国移动通信集团福建有限公司 | 基于规则引擎的异常指标分析方法 |
CN102968309A (zh) * | 2012-11-30 | 2013-03-13 | 亚信联创科技(中国)有限公司 | 一种实现基于规则引擎的规则匹配方法和装置 |
CN105573737A (zh) * | 2014-10-30 | 2016-05-11 | 中国科学院声学研究所 | 一种提高规则引擎运行效率的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777029A (zh) * | 2016-12-08 | 2017-05-31 | 中国科学技术大学 | 一种分布式规则引擎系统及其构建方法 |
CN107133741A (zh) * | 2017-05-05 | 2017-09-05 | 东软集团股份有限公司 | 待办任务处理方法、装置、可读存储介质及电子设备 |
CN107133741B (zh) * | 2017-05-05 | 2020-12-25 | 东软集团股份有限公司 | 待办任务处理方法、装置、可读存储介质及电子设备 |
CN108960584A (zh) * | 2018-06-13 | 2018-12-07 | 东软集团股份有限公司 | 工作流任务分类方法、装置、可读存储介质和电子设备 |
CN109376988A (zh) * | 2018-09-11 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 一种业务数据的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105573737A (zh) | 一种提高规则引擎运行效率的方法 | |
CN104699772B (zh) | 一种基于云计算的大数据文本分类方法 | |
Tang et al. | Coselect: Feature selection with instance selection for social media data | |
EP3841531A1 (en) | Machine learning optimisation method | |
CN106254321A (zh) | 一种全网络异常数据流分类方法 | |
CN104915717A (zh) | 数据处理方法、知识库推理方法及相关装置 | |
CN105635328A (zh) | 一种提高规则引擎响应速度的方法 | |
WO2015094269A1 (en) | Hybrid flows containing a continuous flow | |
CN105574156B (zh) | 文本聚类方法、装置及计算设备 | |
Lai et al. | Performance analysis of evolutionary algorithms for the minimum label spanning tree problem | |
CN115563610B (zh) | 入侵检测模型的训练方法、识别方法和装置 | |
Ye et al. | Variable selection via penalized neural network: a drop-out-one loss approach | |
CN110009045A (zh) | 物联网终端的识别方法和装置 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN105335368A (zh) | 一种产品聚类方法及装置 | |
Zhang et al. | RFCL: A new under-sampling method of reducing the degree of imbalance and overlap | |
Rodriguez-Torres et al. | Deterministic oversampling methods based on SMOTE | |
Wu et al. | Collective prediction of protein functions from protein-protein interaction networks | |
CN103699653A (zh) | 数据聚类方法和装置 | |
CN105631210A (zh) | 一种基于MapReduce的有向图强连通分量分析方法 | |
Goldberg et al. | CASTLE: crowd-assisted system for text labeling and extraction | |
Huang et al. | Internet traffic classification based on min-max ensemble feature selection | |
Dai et al. | A targeted universal attack on graph convolutional network | |
Taqi et al. | OBKA-FS: AN OPPOSITIONAL-BASED BINARY KIDNEYINSPIRED SEARCH ALGORITHM FOR FEATURE SELECTION. | |
Singh et al. | Comparative analysis of Gaussian mixture model, logistic regression and random forest for big data classification using map reduce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160601 |
|
RJ01 | Rejection of invention patent application after publication |