CN110175676B - 一种面向内存受限环境的高性能规则匹配方法 - Google Patents
一种面向内存受限环境的高性能规则匹配方法 Download PDFInfo
- Publication number
- CN110175676B CN110175676B CN201910347564.5A CN201910347564A CN110175676B CN 110175676 B CN110175676 B CN 110175676B CN 201910347564 A CN201910347564 A CN 201910347564A CN 110175676 B CN110175676 B CN 110175676B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- beta
- data
- rule
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
- G06N5/047—Pattern matching networks; Rete networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向内存受限环境的高性能规则匹配方法。其步骤为:1)将目标领域的规则集解析生成RETE网络;2)对于一待处理的事实数据F,将该事实数据F依次与该RETE网络中各个节点的约束进行匹配,直至叶子节点或没有满足约束的节点,获取与该事实数据F匹配的推理结果。该方法可在内存资源受限的嵌入式环境下完成规则与大量实时数据的匹配,使得在具有高速的规则匹配的同时,有效降低了所需要的内存资源。该方法适用于各种实时嵌入式系统,从而扩大了规则推理系统的应用范围。
Description
技术领域
本发明属于规则系统和实时技术领域,具体涉及一种面向内存受限环境的高性能规则匹配方法。
背景技术
实时反应式系统(RTRS)具有主动行为,它可以通过一系列传感器采集外部环境数据,对连续不断的事件流进行监视,从中识别出需要关注的场景,并进行自动决策,从而实时地执行动作对识别出的场景做出响应。近几年来,实时系统已被用于社会生活的各个方面,并在医疗、工业、军事、通信和运输方面发挥了重要作用,比如生产过程监控、高速列车在线故障诊断、电网自愈控制以及金融交易风险预警等。由于在大多数实时反应式系统中自动化的功能需求越来越复杂,对智能化的需求日益增加,将规则推理技术结合到实时反应式系统中变得越发迫切。规则推理将领域知识表示为规则,通过规则与事实的匹配,触发并执行规则,从而进行自动决策,它已被广泛应用于医疗诊断、地质勘探、智能决策等各种专家系统中。
一些主流的规则引擎,如JBoss Drools Fusion(参考https://www.drools.org/)和CLIPS(参考http://clipsrules.sourceforge.net/),也提供了丰富的功能,可以自动化实时反应式系统中的功能,并已广泛应用于医院信息系统和工业环境。但是实时反应系统通常在计算资源非常有限的嵌入式环境中执行,例如车载异常诊断系统,它通过测量一些物理因素如温度、速度和压力,来发现所有通过规则预先定义好的潜在的异常情况和产生原因。在这种内存受限的操作系统中,RAM大小可能不超过4GB,因此为规则引擎保留的运行时内存很可能很小。由于受到运行环境的内存约束以及快速响应的性能挑战,实时反应式系统中规则推理引擎需要满足运行时的低内存消耗以及高性能响应。但是,上述的主流规则推理引擎都无法满足此要求,它们要么需要相当大的运行时内存,要么响应速度达不到实时反应式系统的需求。
发明内容
针对规则推理系统现有技术的不足,本发明提供一种新的面向内存受限环境的高性能的规则匹配方法,可在快速完成规则与数据匹配的同时,尽可能少的消耗内存资源。
其具体步骤如下:
1.将系统中的规则集解析生成RETE网络(参考Charles Forgy:Rete:A FastAlgorithm for the Many Pattern/Many Object Pattern Match Problem.In:Artificial Intelligence,vol.19,pp.17–37,1982.或公开号为CN107145949A的专利文献)。将目标领域的领域知识表示为规则,得到该目标领域的规则集,一般规则集中每条规则被表示为IF C1^C2^...^Cn THEN A的形式,其中Cj(1≤j≤n)被称为条件元素,条件元素Cj可以和事实(fact)匹配;事实(fact)由类型名和若干属性名-属性值组成,被表示成(TypeName:attr1x1,attr2x2,…,attrmxm),其中TypeName是事件类型名称,attri是第i个属性的属性名,xi是对应的属性值(常量)(1≤i≤m);条件元素Cj(condition)被表示为(TypeName:constraintk(attri,xi))(1≤k≤n,1≤i≤m),意为类型为TypeName的事实对象中属性为attri和它对应的值xi必须满足某个约束constraintk(attri,xi)。条件元素Cj对应于RETE网络中的一个α节点,用来过滤不满足约束中属性值与常量进行比较的事实数据,规则集中所有条件元素Cj(1≤j≤n)对应的α节点形成了RETE网络中的α网络,通过了α节点即满足α节点对应约束的事实数据被称为alpha匹配(Alpha Match,AM)。RETE网络中的β网络则由若干β节点连接而成,不同条件元素间的逻辑组合被表示为一个β节点,例如C1,C1^C2,C1^..^Cj^..^Cn(1≤j≤n),均各自对应了β网络中的某个β节点,通过了β节点即满足β节点对应约束的事实数据被称为部分匹配(Partial Match,PM)(参考Charles Forgy:Rete:A FastAlgorithm for the Many Pattern/Many Object Pattern Match Problem.In:Artificial Intelligence,vol.19,pp.17–37,1982.)。在RETE网络中,对于一条规则来说,从β网络根节点到规则终止节点(规则终止节点为RETE网络中出度为0的节点,如附图1所示)路径上的β节点构成了该规则的规则路径。每条规则都对应了一块规则内存单元(RuleMemory Unit,RMU),用于增量存储该规则路径上每个β节点的PM数据,共同构成一条规则约束的PM之间使用边进行相连。规则路径上的所有β节点共享规则内存单元,每次成功匹配时,将新匹配的PM数据存入RMU中。每个β节点也有一个β内存,分为左存储区和右存储区,左存储区用来存储从其前驱β节点传递来的PM结果和其在RMU中的位置,右存储区用来存储从与该β节点相连的alpha节点处传递来的AM数据。
2.利用步骤1中得到的RETE网络,将输入系统的事实数据与规则进行匹配,产生推理结果,在RETE网络中表现为事实数据通过各个节点的约束判断后沿着网络依次往下传递,直至叶子节点或没有满足约束。具体步骤如下:
2.1.每当一个新的事实F进入系统后,首先进入RETE网络中的α网络与其中α节点进行匹配。事实F先找到该事实类型所对应的α节点,根据该节点对应的约束对F的相关属性和值进行判断。若满足当前α节点中的约束,则将事实F封装成为AM(Alpha Match)传递到其所有后继β节点中,并且将这些β节点激活,按照设定的放置机制(详细说明见步骤4)加入到相应的激活队列中,等待调度,并启动调度机制(详细说明见步骤5)。
2.2.调度机制从激活队列中选取节点进行调度处理,选取时按照先来先服务的策略,即按照加入激活队列中的顺序选取排在队首的β节点进行调度,调度机制所采用的具体调度策略见步骤5。若该β节点接收到的是AM,则获取β节点和对应的AM后,将AM存储在β节点右存储区中,存储时按照β节点的Key属性找到AM中相同属性的值,根据这个属性值进行分块存储。β节点的Key属性可设定为其对应约束中第一个需要与其它事实数据进行比较的属性。Key属性与β节点对应约束有关,同一AM在不同β节点中的Key属性可能也有所不同。例如某β节点的约束为Equal(FactA.attr1,FactB.attr1)^Equal(FactA.attr2,FactB.attr2),即FactA需要与FactB分别比较attr1和attr2的值是否相等,那么Key属性可设定为FactA的attr1属性,存储AM时按照attr1属性的值进行分块存放,这样就将Key属性的值作为索引,将与该值相等的事实数据存储在同一块中。
2.3.步骤2.2所述存储完成后,β节点需要对新到来的AM和已有的PM进行约束匹配。先根据此AM的Key属性值在β节点的左存储区中进行索引,依次遍历该β节点所属规则路径上的RMU(因为β节点是可以共享的,因此存在一个β节点属于多条规则路径的情况),定位到RMU中Key属性的值与AM的Key属性值相等的PM数据,再让AM与这些PM依次进行剩余的约束匹配(因为根据Key属性值索引定位PM数据的操作就等同于进行第一个约束的匹配),最终得到与该AM成功匹配的PM。左存储区的具体索引和匹配机制见步骤3。根据Key属性值索引定位PM数据的操作在数据量较大时能避免对所有PM数据进行遍历,将原先全部遍历所需的O(n)时间(假设n为左存储区中所有PM的数量)减少到O(1)时间。
2.4.步骤2.3所述匹配完成后,如果有成功匹配的PM,则需要将AM添加到该PM所在的RMU中,并与该PM进行连接,需要注意的是,若有x个成功匹配的PM,则需要重复添加x次AM,一个AM连接一个匹配的PM,然后依次传递给后继β节点。具体过程如下:在RMU中往当前β节点所在层上添加该AM数据,并与与之匹配成功的上一层的PM数据相连,然后将AM和其在RMU中的位置封装成新的PM传递给所有后继β节点,并且将这些后继β节点激活,按照设置的放置机制加入到相应的激活队列中,等待调度,并启动调度机制。(RMU的数据结构如图2,描述见步骤3)。
2.5.调度机制从激活队列中选取节点进行调度处理,选取时按照先来先服务的策略,即加入激活队列中的顺序选取排在队首的β节点进行调度,调度器所采用的具体调度策略同样见步骤5。若该β节点接收到的是PM,则获取β节点和对应的PM后,将PM存储在β节点的左存储区中,存储时按照PM中事实的Key属性值进行分块存储。PM在左存储区的存储机制与AM在右存储区的存储机制类似,这里不再赘述,不同的是左存储区按索引存放的不仅仅是PM,还有PM在RMU中的位置,而右存储区只是按索引存放AM。
2.6.步骤2.5所述存储完成后,需要对新到来的PM和已有的AM进行约束匹配。先根据此PM的Key属性值在β节点的右存储区中进行索引,索引定位到AM中Key属性的值与PM的Key属性值相等的AM数据,再让PM与这些AM依次进行剩余的约束匹配,得到与该PM成功匹配的AM。具体匹配机制与步骤2.3中类似。匹配成功后在该PM所在的RMU中往当前节点所在层上添加该AM数据,并与PM进行连接,然后将AM和其在RMU中的位置封装成新的PM传递给所有后继β节点,并且将这些β节点激活,按照放置机制加入到相应的激活队列中,等待调度,并启动调度机制。
2.7.重复步骤2.5-2.6过程,将新的PM沿着规则路径不断往后继节点传递,直至抵达规则终止节点,则表明这条规则路径所对应的规则被事实F触发。
2.8.循环步骤2.1-2.7直到没有新的事实进入系统为止。
3、为了节省内存,规则内存单元(RMU)将同一规则路径上的所有β节点左存储区中的PM数据按照节点在规则路径上的前后顺序逐层存储起来,每一层只存放规则路径上对应位置的β节点的PM数据,这样会形成一个从上到下的树形结构的数据集,树上下层之间有边相连,边表示上下级PM之间的关联,通过边相连的PM数据组合在一起则共同满足了规则的约束。β节点的左存储区存放了当前层的所有PM数据和其在规则内存单元中的位置。下面详细说明左存储区的匹配机制,具体方式如下:
3.1.当新到来的AM与已有PM进行匹配时,先根据此AM的Key属性值在β节点的左存储区中进行索引,索引定位到RMU中Key属性值与AM的Key属性值相等的一批PM数据,然后对找到的每一PM,从此PM在RMU中的位置开始,自底向上不断寻找与之相连的前驱β节点的PM数据,直至根节点,将这段遍历过程中的所有PM组合在一起,形成一个PM组,记为PMs,将PMs与AM进行匹配(因为β节点对应约束所需的事实数据可能不仅仅存在于当前PM中,需要在其它构成满足约束的PM数据中寻找对应的事实数据)。若AM与PMs匹配成功,则在RMU中往当前PM的下一层上添加该AM数据,并连接该PM和AM,然后将AM和其在RMU中的位置封装成新的PM传递给所有后继β节点。
3.2.当新到来的PM与已有AM进行匹配时,先根据此PM的Key属性值在β节点的右存储区中进行索引,索引定位到AM中Key属性的值与PM的Key属性值相等的一批AM数据,再将PM按3.1中方式扩展成PMs与这些AM依次进行约束匹配。其它步骤与3.1中类似,这里不再赘述。
4、放置机制决定了将激活的β节点放入到哪个激活队列当中。为充分利用并行计算资源,多个β节点会并发执行,而由于步骤2、3中的推理算法在某些情况下会引起并发时的同步问题,因此使用两个激活队列来解决同步问题。具体如下:
4.1.根据由步骤1所获得的RETE网络构建一张任务关系图。也就是说,β网络中的节点对应任务图中的节点,β网络中相连的节点在任务图中也相连。因为规则匹配过程与节点的计算先后顺序无关,因此该任务关系图为无向图,这样就将规则匹配中的节点计算过程转化成任务关系图的节点调度过程,在多核环境中任务调度就能并发执行。
4.2.由步骤2、3中的推理算法考虑到任务关系图中相连的两个节点需要互斥地访问规则内存单元(RMU),即,这两个相连节点无法被并发执行。因此将β网络的根节点对应在任务图中的节点作为源点,从源点开始依次对图中节点进行着色,将源点着为红色,与源点相连的节点着为黑色,将与黑色节点相连且还未着色的节点着为红色,重复此过程,每当遇到还未着色的节点,选取与之相连的已着色节点的对立颜色对该节点进行着色,直至整个任务图都着色完毕。此时任务图中的节点分为红黑两种颜色的节点集合,可以看做两个互斥集。互斥集表示同种颜色的节点集合里任意一对节点所对应的任务都可以并行执行,不同颜色的节点集合里至少有一对节点所对应的任务不能并行执行。
4.3.步骤4.2中构造出的两个互斥集表明使用两个激活队列即可解决并行时的同步问题,当β网络中任一β节点被激活时,根据它所属的互斥集将它加入到对应颜色的激活队列中,等待接下来的调度。
5、调度机制采用了一种新的任务调度方法,这个任务调度方法结合了放置机制,具体如下:
在多核计算机环境下,假设计算机系统中有P个CPU核,即有P个线程可以并发执行。调度时调度机制先比较两个激活队列中的节点数量多少,为使更多的事件更快地触发,选择其中节点更多的激活队列,再按照节点进入队列时的先后顺序,从队首取出P个节点,分配给P个CPU核取完成匹配任务(假设CPU核数小于节点任务数)。当被选择的激活队列为空时,即其中所有节点都被执行完毕后,调度机制选择另一激活队列重复该过程。
本发明的有益效果
本发明提供了一种面向内存受限环境的高性能的规则推理算法,该方法可在内存资源受限的嵌入式环境下完成规则与大量实时数据的匹配,使得在具有高速的规则匹配的同时,有效降低了所需要的内存资源。该方法适用于各种实时嵌入式系统,从而扩大了规则推理系统的应用范围。
附图说明
图1是本发明一个具体例子的RETE网络结构;
图2是在输入一些数据后beta节点和规则内存单元的数据存储图;
图3是本发明中节点任务调度图。
图4是本发明的beta线程执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整的描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合3条具体规则和相关数据,对本发明进行说明。
以上三条规则可以简化成如下形式:
R1:C1^C2^C3
R2:C1^C2^C4^C5
R3:C1^C2^C4^C3
(1)图1是由上述三条规则建立的RETE网络结构。在该RETE网中,有6个β节点,β1-β6。β1,β2是规则R1,R2的共享节点,β1,β2,β4是规则R2,R3的共享节点。规则中的X,Y,Z等符号代表变量,可以是一个随机数值,或者一个字符,但在同一条规则中相同符号对应的变量值是相同的,因此可以看出在RETE网中,β1不需要做任何约束检查,而β2需要检查C1和C2的attr1属性对应的值是否相等,β3需检查C3的attr1与C1的attr2对应的值是否相等,由此类推。具体约束如下:
a.在规则R1中:
β2需要检查(C2.attr1==C1.attr1),β3需要检查(C3.attr1==C1.attr2);
b.在规则R2中:
β2需要检查(C2.attr1==C1.attr1),β4需要检查(C4.attr2==C2.attr2),β5需要检查(C5.attr1==C4.attr1);
c.在规则R3中:
β2需要检查(C2.attr1==C1.attr1),β4需要检查(C4.attr2==C2.attr2),β6需要检查(C3.attr1==C1.attr2).
当系统进入的事实数据满足了节点中各种约束测试,到达最后的规则终止节点时,表明该条规则被触发,就会立刻执行相应的警报动作。
(2)假定有以下事实进入系统,且均以通过alpha网络的约束检查,以(1)中规则Rule2为例,分析具体的存储过程,图2为对应的beta节点和规则内存数据存储图。
(f1:C1,attr1=1,attr2=10),(f2:C1,attr1=2,attr2=20),
(f3:C2,attr1=1,attr2=30),(f4:C2,attr1=1,attr2=40),
(f5:C2,attr1=2,attr2=50),(f6:C2,attr1=3,attr2=60),
(f7:C4,attr1=1,attr2=30),(f8:C4,attr1=2,attr2=60),
(f9:C4,attr1=1,attr2=50),(f10:C4,attr1=3,attr2=30),
(f11:C5,attr1=1,attr2=30),(f12:C5,attr1=2,attr2=60),
(f13:C5,attr1=3,attr2=50),(f14:C5,attr1=4,attr2=30),
当事实数据存储在相应beta节点的右存储区时,首先需要确定该节点的key属性,即对应约束中第一个与其他事实数据进行比较的属性,可以从规则Rule2的具体约束中看出,β2中的key属性为attr1,β4中的key属性为attr2,β5中的key属性为attr1。按照事实数据中对应的Key属性的值进行哈希运算,得到的值进行索引,定位到右存储区中相应的位置,将该条事实数据存放到这个位置,若这个位置里已有数据,则将该事实数据放在该区域最后一个数据之后。
根据以上进入系统的事实数据和规则Rule2的约束条件,可以得到事实数据在β1、β2、β4、β5节点的右存储区中的具体存储情况,表格中一行代表一个数据块,一行里的数据在Key属性对应的变量值上都是相等的。
a.β1不需与其他事实数据比较,故而没有Key属性,存储时不需要分块存储。
b.β2需与β1关于attr1属性进行比较,故而Key属性为attr1,数据存储如下所示:
f3:attr1=1,attr2=30 f4:attr1=1,attr2=40 |
f5:attr1=2,attr2=50 |
f6:attr1=3,attr2=60 |
c.β4需与β2关于attr2属性进行比较,故而Key属性为attr2,数据存储如下所示:
f7:attr1=1,attr2=30 f10:attr1=3,attr2=30 |
f8:attr1=2,attr2=60 |
f9:attr1=1,attr2=50 |
d.β5需与β4关于attr1属性进行比较,故而Key属性为attr1,数据存储如下所示:
(3)图4是本发明中任务执行流程图。以(1)中的三条规则为例,将它的β网络抽象成一张任务关系图,因相邻任务节点之间存在有互斥约束,这是由同时读写规则内存单元造成的同步约束问题,因此使用图着色方法来避免多线程调度时同时对相邻节点进行处理,从而减少由此产生的互斥等待时间。
a)首先对任务图中的节点进行着色。从根节点开始,自顶向下依次着色,必须满足在相连节点之间着不同的颜色,直至任务图中所有节点都着色完毕。具体步骤如下:
i.将β根节点着为红色;
ii.因为β1与β根节点相连,故将β1着为黑色;
iii.因为β2与β1相连,故将β2着为红色;
iv.因为β3、β4与β2相连,故将β3、β4着为黑色;
v.因为β5、β6与β4相连,故将β5、β6着为红色;
vi.因为β2与β1相连,故将β2着为红色;
vii.因为规则终止节点R1与β3相连,故将R1着为红色;
viii.因为规则终止节点R2、R3分别与β5、β6相连,故将R2、R3着为黑色。
着色完毕的任务图如图3所示,其中β根节点、β2、β5、β6、R1为红色,β1、β3、β4、R2、R3为黑色。
b)着色完成后,将红黑两种颜色的节点集合看作为两个互斥集,互斥集对应着4.3中提到的激活队列,互斥集中的节点在激活时会加入到相应的激活队列中。假设在多核计算环境下有p个核可以并行计算,那么先从这两个激活队列中选择节点数更多的一个,接下来这p个核会从该激活队列的队首开始,并行选择队首节点进行计算,这里的同步问题用临界区和加锁的方法解决,保证了在多核计算时不会出现同步错误。当该激活队列为空,即其中激活节点全部执行完毕后,选择另一个激活队列再次重复该过程。循环此过程,直至无新的激活节点产生。
上述实施例仅为例示性说明本发明的原理及其功效,而非用于限制本发明的范围。任何熟于此技术的本领域技术人员均可在不违背本发明的技术原理及精神下,对实施例作修改与变化。本发明的保护范围应以权利要求书所述为准。
Claims (8)
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为可并发执行的线程个数。
4.如权利要求1所述的方法,其特征在于,将β网络中同一规则路径上的所有β节点的左存储区视为一个整体,将各β节点左存储区的PM数据按其在规则路径上的拓扑顺序逐层存储在RMU中,每一层只存放规则路径上对应位置的β节点的PM数据,形成一个从上到下的树形结构的数据集,上下层之间有边相连。
5.如权利要求1所述的方法,其特征在于,步骤22)中,将AM存储在该β节点右存储区中,存储时按照该β节点的Key属性找到AM中相同属性的值,根据属性值进行分块存储。
6.如权利要求1所述的方法,其特征在于,步骤23)中,β节点将新收到的AM与已有的PM进行约束匹配的方法为:先根据AM的Key属性值在β节点的左存储区中进行索引,索引定位到RMU中Key属性的值与AM的Key属性值相等的PM数据,再让AM与这些PM数据依次进行约束匹配,得到与该AM成功匹配的PM。
7.如权利要求1或6所述的方法,其特征在于,所述左存储区的匹配机制为:
a)当新收到的AM与已有PM进行匹配时,先根据此AM的Key属性值在β节点的左存储区中进行索引,索引定位到RMU中Key属性值与AM的Key属性值相等的一批PM数据,然后对找到的每一PM,从此PM在RMU中的位置开始,自底向上寻找与之相连的前驱β节点的PM数据,直至根节点,将遍历过程中得到的所有PM组合在一起,形成一个PM组,记为PMs,将PMs与AM进行匹配;若AM与PMs匹配成功,则在RMU中往当前PM的下一层上添加该AM数据,并连接该PM和AM,然后将AM及其在RMU中的位置封装成新的PM传递给所有后继β节点;
b)当新收到的PM与已有AM进行匹配时,先根据此PM的Key属性值在β节点的右存储区中进行索引,索引定位到AM中Key属性的值与PM的Key属性值相等的一批AM数据,然后对找到的每一AM,从此AM在RMU中的位置开始,自底向上寻找与之相连的前驱β节点的PM数据,直至根节点,将遍历过程中得到的所有PM组合在一起,形成一个PM组,记为PMs,将PMs与AM进行匹配;若AM与PMs匹配成功,则在RMU中往当前PM的下一层上添加该AM数据,并连接该PM和AM,然后将AM及其在RMU中的位置封装成新的PM传递给所有后继β节点。
8.如权利要求1所述的方法,其特征在于,步骤24)中,若该AM有x个成功匹配的PM,则在RMU中往当前β节点所在层上重复添加该AM数据x次,每次添加的AM分别与对应匹配成功的上一层的PM数据相连,然后将AM及其在RMU中的位置封装成新的PM传递给所有后继β节点,并且将这些后继β节点激活,按照设置的放置机制加入到相应的激活队列中等待调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910347564.5A CN110175676B (zh) | 2019-04-28 | 2019-04-28 | 一种面向内存受限环境的高性能规则匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910347564.5A CN110175676B (zh) | 2019-04-28 | 2019-04-28 | 一种面向内存受限环境的高性能规则匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110175676A CN110175676A (zh) | 2019-08-27 |
CN110175676B true CN110175676B (zh) | 2021-04-20 |
Family
ID=67690237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910347564.5A Active CN110175676B (zh) | 2019-04-28 | 2019-04-28 | 一种面向内存受限环境的高性能规则匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110175676B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111738444B (zh) * | 2020-05-14 | 2023-08-18 | 平安科技(深圳)有限公司 | 调整Rete网络结构的方法、装置和计算机设备 |
CN111831694B (zh) * | 2020-06-23 | 2023-06-20 | 中国科学院软件研究所 | 一种反应式系统的快速决策方法 |
CN112084036A (zh) * | 2020-09-21 | 2020-12-15 | 新华三信息安全技术有限公司 | 报文检测规则的控制方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033940A (zh) * | 2010-12-21 | 2011-04-27 | 郑州峰华电子有限责任公司 | 车流最短径路查询器 |
CN106777029A (zh) * | 2016-12-08 | 2017-05-31 | 中国科学技术大学 | 一种分布式规则引擎系统及其构建方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930285B2 (en) * | 2011-10-21 | 2015-01-06 | International Business Machines Corporation | Composite production rules |
CN103678617A (zh) * | 2013-12-17 | 2014-03-26 | 北京哈工大计算机网络与信息安全技术研究中心 | 一种基于流计算的移动感知上下文处理系统及方法 |
CN104615703B (zh) * | 2015-01-30 | 2017-12-08 | 福州大学 | 一种结合Rete算法的RDF数据分布式并行推理方法 |
CN107145949B (zh) * | 2017-05-04 | 2020-07-21 | 中国科学院软件研究所 | 一种多核实时规则推理方法 |
CN107247588B (zh) * | 2017-05-26 | 2020-10-23 | 电子科技大学 | 一种基于约束频度的规则引擎优化方法 |
CN108334637A (zh) * | 2018-03-05 | 2018-07-27 | 浙江大学城市学院 | 一种面向植物工厂的环境调控规则推理方法 |
CN108549939A (zh) * | 2018-03-09 | 2018-09-18 | 中国科学院软件研究所 | 一种面向海量流式数据的分布式实时规则推理方法和装置 |
-
2019
- 2019-04-28 CN CN201910347564.5A patent/CN110175676B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033940A (zh) * | 2010-12-21 | 2011-04-27 | 郑州峰华电子有限责任公司 | 车流最短径路查询器 |
CN106777029A (zh) * | 2016-12-08 | 2017-05-31 | 中国科学技术大学 | 一种分布式规则引擎系统及其构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110175676A (zh) | 2019-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110175676B (zh) | 一种面向内存受限环境的高性能规则匹配方法 | |
Wang | Petri Nets for Dynamic Event-Driven System Modeling. | |
CN107239335B (zh) | 分布式系统的作业调度系统及方法 | |
Wu | Necessary and sufficient conditions for deadlock-free operation in flexible manufacturing systems using a colored Petri net model | |
Zhou | Modeling, analysis, simulation, scheduling, and control of semiconductor manufacturing systems: A Petri net approach | |
US20200097333A1 (en) | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis | |
CN110428054A (zh) | 基于编译技术的业务规则引擎模式匹配系统及实现方法 | |
CN112632744A (zh) | 基于超网络模型的作战体系架构建模方法及空间探索算法 | |
Shojaee et al. | A new cat swarm optimization based algorithm for reliability-oriented task allocation in distributed systems | |
Faragardi et al. | Optimal task allocation for maximizing reliability in distributed real-time systems | |
Das et al. | Deep learning-based approximate graph-coloring algorithm for register allocation | |
Xu et al. | Living with artificial intelligence: A paradigm shift toward future network traffic control | |
Liu et al. | Scheduling optimization of task allocation in integrated manufacturing system based on task decomposition | |
CN111814981B (zh) | 一种分布式实时规则推理调度方法 | |
Ye et al. | Multi-agent pathfinding with communication reinforcement learning and deadlock detection | |
Liu et al. | Deadlock and liveness characterization for a class of generalized Petri nets | |
Yen et al. | Game-theoretic approach to self-stabilizing distributed formation of minimal multi-dominating sets | |
Lu et al. | A fireworks algorithm for the system-level fault diagnosis based on MM* model | |
CN107145949B (zh) | 一种多核实时规则推理方法 | |
Fomperosa et al. | Task scheduler for heterogeneous data centres based on deep reinforcement learning | |
Wang et al. | Discrete fruit fly optimization algorithm for disassembly line balancing problems by considering human worker’s learning effect | |
Elsayed et al. | Fault-recovery and robust deadlock control of reconfigurable multi-unit resource allocation systems using siphons | |
Bengre et al. | A learning-based scheduler for high volume processing in data warehouse using graph neural networks | |
Huang et al. | A novel mission planning model and method for combat system-of-systems architecture design | |
Pimpale et al. | Analysis of Parity-Based Search Algorithms for Execution of Target Node in Relation to Automation Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200909 Address after: 100190 No. four, 4 South Street, Haidian District, Beijing, Zhongguancun Applicant after: Institute of Software, Chinese Academy of Sciences Applicant after: State Grid Liaoning Electric Power Co., Ltd. Electric Power Research Institute Address before: 100190 No. four, 4 South Street, Haidian District, Beijing, Zhongguancun Applicant before: Institute of Software, Chinese Academy of Sciences |
|
GR01 | Patent grant | ||
GR01 | Patent grant |