[发明专利]一种面向内存受限环境的高性能规则匹配方法有效
申请号: | 201910347564.5 | 申请日: | 2019-04-28 |
公开(公告)号: | CN110175676B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 王宏安;姚媛;乔颖 | 申请(专利权)人: | 中国科学院软件研究所;国网辽宁省电力有限公司电力科学研究院 |
主分类号: | G06N5/04 | 分类号: | G06N5/04 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 内存 受限 环境 性能 规则 匹配 方法 | ||
1.一种面向内存受限环境的高性能规则匹配方法,其步骤包括:
1)将目标领域的规则集解析生成RETE网络;在RETE网络中,对于每一条规则,从β网络根节点到规则终止节点路径上的β节点构成了该规则的规则路径;每条规则都对应一块规则内存单元RMU,用于增量存储该规则路径上每个β节点的PM数据,共同构成一条规则约束的PM之间使用边进行相连;同一规则路径上的所有β节点共享对应规则的规则内存单元RMU;每个β节点设有一β内存,分为左存储区和右存储区,左存储区用来存储从其前驱β节点传递来的PM结果及其在RMU中的位置,右存储区用来存储从与该β节点相连的α节点处传递来的AM数据;其中PM为满足β节点对应约束的事实数据;
2)对于一待处理的事实数据F,将该事实数据F依次与该RETE网络中各个节点的约束进行匹配,直至叶子节点或没有满足约束的节点,获取与该事实数据F匹配的推理结果;具体方法为:
21)将该事实数据F与该RETE网络中的α网络内的α节点进行匹配,得到与该事实数据F的事实类型所对应的α节点,然后根据得到的每一α节点对应的约束对该事实数据F的属性和值进行判断,若满足约束,则将该事实数据F封装成为AM传递到满足约束的α节点所有后继β节点中,并且将这些β节点激活并加入到相应的激活队列中等待调度,并启动调度机制;
22)调度机制从激活队列中选取节点进行调度处理;若当前所选β节点接收到的是AM,则获取该β节点和对应的AM后,将AM存储在该β节点右存储区中;
23)β节点将新收到的AM与已有的PM进行约束匹配,得到与该AM成功匹配的PM;
24)如果有成功匹配的PM,则将该AM添加到该PM所在的规则内存单元RMU中,并将该AM与对应的PM相连,然后将该AM及其在RMU中的位置封装成新的PM传递给所有后继β节点,并且将这些后继β节点激活,按照设置的放置机制加入到相应的激活队列中等待调度,并启动调度机制;
25)调度机制从激活队列中选取节点进行调度处理,若当前所选β节点接收到的是PM,则获取β节点和对应的PM后,将PM存储在β节点的左存储区中;
26)β节点将新收到的PM与已有的AM进行约束匹配,得到与该PM成功匹配的AM,然后在该PM所在的规则内存单元RMU中往当前β节点所在层上添加该AM,并与与之匹配成功的上一层PM数据相连,然后将该AM及其在RMU中的位置封装成新的PM传递给所有后继β节点,并且将这些β节点激活,按照放置机制加入到相应的激活队列中等待调度,并启动调度机制;
27)重复步骤25)~26),将每次新生成的PM沿着规则路径不断往后继节点传递,直至抵达规则终止节点,得到与该事实数据F匹配的推理结果。
2.如权利要求1所述的方法,其特征在于,将β节点激活并加入到相应的激活队列中的方法为:
31)根据RETE网络构建一张任务关系图;其中,RETE网络中的β网络内节点对应任务关系图中的节点,根据β网络中节点相连关系连接在任务关系图中的节点;该任务关系图为无向图;
32)将β网络的根节点在任务关系图中对应的节点作为源点,从源点开始依次对任务关系图中节点进行着色,将源点着为红色,与源点相连的节点着为黑色,每当遇到还未着色的节点,选取与之相连的已着色节点的对立颜色对该节点进行着色,直至整个任务图都着色完毕,得到红黑两种颜色的节点集合,即两个互斥节点集;同种颜色的节点集合里任意一对节点所对应的任务并行执行,不同颜色的节点集合里至少有一对节点所对应的任务不能并行执行;
33)设置两激活队列,每一激活队列对应一种颜色的节点集合;当β网络中任一β节点被激活时,根据该β节点所属的节点集合将其加入到对应的激活队列中。
3.如权利要求2所述的方法,其特征在于,调度机制从激活队列中选取节点进行调度处理的方法为:调度机制先比较两个激活队列中的节点数量,选择其中节点更多的激活队列,再按照节点进入所选激活队列时的先后顺序,从队首取出N个节点,分配给N个CPU核去完成匹配任务;当被选择的激活队列为空时,调度机制选择另一激活队列进行调度;其中,N为可并发执行的线程个数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所;国网辽宁省电力有限公司电力科学研究院,未经中国科学院软件研究所;国网辽宁省电力有限公司电力科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910347564.5/1.html,转载请声明来源钻瓜专利网。