CN111831694B - 一种反应式***的快速决策方法 - Google Patents

一种反应式***的快速决策方法 Download PDF

Info

Publication number
CN111831694B
CN111831694B CN202010581381.2A CN202010581381A CN111831694B CN 111831694 B CN111831694 B CN 111831694B CN 202010581381 A CN202010581381 A CN 202010581381A CN 111831694 B CN111831694 B CN 111831694B
Authority
CN
China
Prior art keywords
node
alpha
condition
network
nodes
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
Application number
CN202010581381.2A
Other languages
English (en)
Other versions
CN111831694A (zh
Inventor
乔颖
苗晨曦
王宏安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN202010581381.2A priority Critical patent/CN111831694B/zh
Publication of CN111831694A publication Critical patent/CN111831694A/zh
Application granted granted Critical
Publication of CN111831694B publication Critical patent/CN111831694B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种反应式***的快速决策方法,其步骤包括:1)将反应式***中的模糊ECA规则解析为FECR网络;2)将反应式***中的事实数据逐一输入条件查询网络;3)对FECR网络中的节点分配优先级,然后根据FECR网络拓扑搜索出FECR网络的弱连通分支;4)对于收到的第i批数据,找到每一对应的触发节点a,修改节点a的动态属性信息并激活节点a;然后从该节点a开始,遍历FECR网络,激活该触发节点a的孩子节点,直到不满足节点的限制条件或者到达FECR网络的action节点;每个节点被激活时,会形成一个任务实例;5)调度器会根据优先级将任务实例分配给不同的工作器执行。本发明能实现准确、快速的决策。

Description

一种反应式***的快速决策方法
技术领域
本发明属于规则***和实时技术领域,具体涉及一种面向流式数据的高性能模糊ECA(event-condition-action)规则匹配方法以及一种规则匹配任务的执行调度方法,尤其涉及一种反应式***的快速决策方法。
背景技术
反应式***需要对传感器采集的大量流式数据流进行及时处理,从中识别出所关注的场景,并触发相应动作对这些场景进行自动响应。近些年来,反应式***广泛应用于社会生活的各个领域,在医疗、交通、教育、通信、军事和建筑等行业发挥了重要作用,例如智能建筑中的火灾报警和温度控制,生产过程安全控制,医疗中的行为监测等。随着反应式***应用场景的日趋复杂,其对智能化要求也越来越高。由于规则能够方便地描述反应式***的领域知识,并能够实现对指定场景的高效响应,因此采用规则推理引擎来实现反应式***便成为了一种趋势。此时,反应式***的领域知识以规则的形式表示,传感器采集的数据流作为规则引擎的输入,通过规则与数据的匹配,触发并给出响应,从而实现反应式***的自动决策。
一些主流规则引擎,如CLIPS(参考http://clipsrules.sourceforge.net/)和JBoss Drools Fusion(参考https://www.drools.org/),已与实时反应式***结合,在工业领域中有了广泛的应用。然而在实际应用中,传感器采集的数据存在误差,同时领域知识也具有不确定性,类似CLIPS这类采用确定推理的规则引擎将会导致决策误差。例如在火灾报警中,当温度大于60度,并且烟雾浓度水平超过15,一个火灾事件便被检测到。然而传感器的误差可能导致检测值小于实际值,因此便会导致对火灾事件的漏报,以致做出错误决策。另一方面60和15是设置的一个精确阈值,作为专家知识的表述,这种精确规则不具有灵活性,当温度为59.5度,烟雾浓度水平为15时,此时规则并不会触发。因此,需要采用模糊规则推理引擎来实现反应式***对所需关注场景的自动响应,以提高其决策的可靠性。目前的模糊规则推理引擎,如NRC FuzzyJ Toolkit(参考http://alvarestech.com/)和jFuzzyLogic(参考http://jfuzzylogic.sourceforge.net/),将模糊逻辑和规则推理结合,支持模糊的if-then规则(即,产生式规则),但这些模糊规则推理引擎无法表述事件间的模糊时序关系,也不能处理流式数据,面对海量流式数据时,响应速度达不到反应式***的要求。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种反应式***的快速决策方法,本发明通过面向流式数据的高性能模糊ECA(event-condition-action)规则推理方法,在支持事件间模糊时序关系的同时,大大提高了面向海量流式数据时的推理速度,实现准确、快速的决策。
其具体步骤如下:
1.将***中的模糊ECA(event-condition-action)规则解析为FECR(fuzzyevent-condition rete-based)网络。模糊ECA规则可以表示成如下形式:ON event(threshold1)IF condition(threshold2)DO action。在event部分用于检测模糊复杂事件,当event被检测到,且event的发生度me大于threshold1时,此时会执行由condition部分定义的查询,当condition部分的匹配度mc大于threshold2时,action被激活,并且action的匹配度ma=me*mc
模糊ECA规则需要使用事件检测语言和条件查询语言来表达其事件和条件部分,在此,我们可在事件部分嵌入产生式规则来定义模糊复杂事件;在条件部分嵌入产生式规则,用于执行模糊条件查询。当产生式规则用于定义复杂事件时,其形式可以表示为IF
Figure BDA0002552444120000021
THEN CE。事件由类型名和若干属性名-属性值组成,事件具有时间戳和发生度,对于模糊事件,其发生度范围为[0,1],对于一个精确事件其发生度为0(不发生)或1(发生);事件表示成/>
Figure BDA0002552444120000022
其中EventType是事件类型名称,attri是第i个属性的属性名,vi是对应的属性值(常量)(1≤i≤m1),m1表示属性值的数量;Ei(1≤i≤n1)被称为事件条件元素,n1是事件条件元素的数量,事件条件元素Ei可以和事件(event)匹配,事件条件元素表示为(EventType:constrainti(attrk))(1≤k≤m1,1≤i≤n1),其含义为类型名为EventType的事件其名为attrk的属性值需要满足约束constrainti;约束constrainti可以是精确的(返回值是0或1,此时对应条件元素也称为是精确的),也可以是模糊的(返回值是[0,1]区间里的一个值,此时对应条件元素也称为是模糊的);CE是所定义的复杂事件,当条件元素全是精确的,CE是精确事件,当条件元素含有模糊时,CE是模糊事件;viope是事件条件元素连接符,包括and,or,not等逻辑连接符以及before,after(参考Allen,James F.“Maintaining Knowledgeabout Temporal Intervals.”Expert Systems,1991,pp.248–259)等时序操作符及其模糊形式(参考Schockaert,S.,et al.“Fuzzifying Allen’s Temporal IntervalRelations.”IEEE Transactions on Fuzzy Systems,vol.16,no.2,2008,pp.517–533)。当产生式规则用于条件查询,其形式可以表示为IF/>
Figure BDA0002552444120000023
事实由类型名和若干属性名-属性值组成,可以表示成/>
Figure BDA0002552444120000031
其中FactType是事实类型名称,attri是第i个属性的属性名,vi是对应的属性值(常量)(1≤i≤m2),m2是属性值的数量;Ci(1≤i≤n2)被称为查询条件元素,n2表示条件查询元素的数量,查询条件元素可以与事实(fact)相匹配,表示为(FactType:constrainti(attrk))(1≤k≤m2,1≤i≤n2),其含义为类型名为FactType的事实其名为attrk的属性值需要满足约束constrainti;查询条件元素中的constrainti可以是精确(返回值是0或1),也可以是模糊的(返回值是[0,1]区间里的一个值);(FactType:attr1v1,attr2v2,...,attrnvn)attriviopc是查询条件元素连接符,主要包括and,or,not等逻辑连接符。FECR网络的构建步骤如下:
1.1根据应用场景,为反应式***中每一个传感器数据源建立一个对应的触发节点。例如,第三层的第一个房间的有一个温度传感器,便是一个数据源,它对应了一个触发节点。一个触发节点TN可以表示成TN=(NI,SI,SS,NT,V)。NI,SI,SS,NT,V表示节点TN的特征信息。其中,Ni=(nt,a1,a2,...,an)表示触发节点信息,nt是节点类型,例如温度节点,烟雾浓度节点,a1,a2,...,an是节点可选附加属性,比如节点状态是否可用,节点创建时间等;SI=(id,b1,b2,...,bn)表示触发节点所对应的传感器的信息,id是传感器的唯一标志,b1,b2,...,bn是传感器可选附加属性,比如传感器状态是否正常等;SS=(c1,c2,...,cn)表示触发节点所对应的传感器的空间语义信息,例如房间号,楼层,空间坐标等;在反应式***中,传感器检测到数据被认为是一个事件,NT=(ts,te)表示触发节点对应的传感器检测到的最新的事件发生的起止时间,ts表示开始时间,te表示结束时间;V表示触发节点对应的传感器检测的最新数据的值,例如若触发节点对应温度节点,则该值为检测的温度值。由于触发节点与传感器数据相对应,因此,其属性可以划分为静态属性(属性值一般不会发生变化)和动态属性(属性值不断变化),其中上述触发节点描述中,NT和V是属于动态属性,其余部分为静态属性,例如温度触发节点,其所在房间号为静态属性,而检测的温度值为动态属性。
1.2根据模糊ECA规则中定义模糊事件的产生式规则对步骤1.1中建立的触发节点进行聚类,划分为若干节点簇。在一个簇中的触发节点需要满足一组设定的过滤条件。节点簇可以定义为NodeClasses:filter1∧filter2∧...∧filtern,NodeClasses是类别过滤条件,用来约束节点簇里所含有的触发节点的类别,filteri表示定义在触发节点属性上的过滤条件,比如,Temperature x,Smoke y,Light z:x.roomid=y.roomid&&y.roomid=z.roomid表示在同一个房间的一个温度类别节点,一个烟雾类别节点,一个光照类别节点会被聚到一个簇中。具体来说,节点簇的划分方法为:取出每个定义模糊事件的产生式规则中的静态条件(定义在触发节点静态属性上的条件,每个产生式规则的静态条件可能有多个)作为一组过滤条件。如果有L个产生式规则,则有L组过滤条件,针对每组过滤条件找到所有满足该组过滤条件的触发节点,形成相应的节点簇。
1.3在每个产生式规则的静态条件所形成的节点簇上建立模糊事件检测网络来检测模糊事件,模糊事件检测网络是基于模糊rete网络(建立模糊rete网络参考Pan,J.,etal.“FuzzyShell:A Large-Scale Expert System Shell Using Fuzzy Logic forUncertainty Reasoning.”IEEE Transactions on Fuzzy Systems,vol.6,no.4,1998,pp.563–581)。由于rete的建立是基于节点簇,节点簇里包含的触发节点在聚簇过程中已经满足了该产生式规则的静态条件,因此模糊事件检测网络只需要评估动态条件(定义在触发节点动态属性上的条件)。模糊事件检测网络中的α网络是由α节点串联而成。α节点用于检测α条件(定义在单个类属性上的条件),α条件分为模糊和精确,匹配结果通过匹配度来反映,精确α条件(不带有模糊集的条件)的匹配度只有0和1,模糊α条件(带有模糊集的条件)的匹配度取值为[0,1]区间,只有α条件匹配度大于0,数据才可以通过。α网络是一颗节点树,从触发节点到叶子α节点形成的链路记为一条α串联链,叶子α节点具有模糊α内存,存储着满足该α节点链上所有的α条件的数据,即alpha匹配(alpha match,AM)。相比于精确的α内存,模糊α内存中的AM具有一个匹配度属性,用来保存匹配度值。β网络由β节点组成,每个β节点有一个β内存,事件检测中,β网络的终点是事件节点(Event Node),在模糊事件检测网络中检测到的模糊事件,被保存在事件节点里,用来触发条件查询,事件节点记为E。β网络也是一颗节点树,从β根节点(记为β0)到事件节点形成的链路为一条β串联链。假设一条β串联链涉及p个class,class1,class2,…,classp,每个class对象对应一个β节点,即β1β2,…,βp,链路上的第j(2≤j≤p)个节点βj用来评估AM中的classj对象与在βj-1内存里的元组tj-1是否满足βj节点中的β条件(定义在不同类属性之间的条件)。一个元组tj-1是一个从class1到classj-1的对象组成的链表,tj-1数据组满足βj-1节点及其祖先节点的所有条件。如果满足βj节点中的β条件,AM中的classj对象与元组tj-1形成新的元组tj存储在βj内存里。另外如果结论里含有模糊变量,需要建立聚集和去模糊化节点来得到最终结论(参考Pan,J.,et al.“FuzzyShell:A Large-Scale Expert System Shell Using Fuzzy Logic forUncertainty Reasoning.”IEEE Transactions on Fuzzy Systems,vol.6,no.4,1998,pp.563–581)。
1.4根据模糊ECA规则的condition部分(condition部分即用于条件查询的产生式规则)建立条件查询网络。条件condition部分也分为α条件和β条件。当一个α条件或β条件涉及的事实的属性值不会发生变化,称此α条件或β条件为静态的;同理,若其涉及的事实的属性值会不断发生变化,则称这类α条件或β条件为动态的。如果一个rete节点用来评估的条件是静态的,那么该节点是静态节点;如果一个节点用来评估的条件含有动态条件,该节点是动态节点。为了减少在线计算,条件查询网络将静态节点和动态节点分离,并对静态节点进行缓存。令O1,O2,...,Ou表示模糊ECA规则中主动规则涉及到的所有事实类,P1,P2,...,Pv表示主动规则中静态β条件涉及到的事实类,其中(v≤u),Q1,Q2,...,Qu-v表示没有被静态β条件涉及的事实类,E表示触发主动规则的事件节点(这里的事件节点是1.3步骤中建立的事件节点),条件查询网络的建立步骤如下:
1.4.1对于定义在事实类P1,P2,...,Pv的属性上的静态α条件和静态β条件,建立普通的模糊rete网络,该部分的节点全为静态节点,构成静态查询网络,静态查询网络的最后一个β节点记为Ne。
1.4.2.在E节点之后建立一个α节点,记为Eα,Eα节点是用来评估ECA规则中的事件的发生度是否满足大于threshold1的节点;之后建立一个连接节点N0作为Eα和Ne两个节点的孩子节点,N0用来评估定义在事件E和事实类P1,P2,...,Pv的属性上的动态α条件和动态β条件。
1.4.3.针对定义在Q1,Q2,...,Qu-v上的静态α条件,建立静态α节点;针对定义在Q1,Q2,...,Qu-v上的动态α条件在静态α节点之后建立动态α节点;针对定义在Q1,Q2,...,Qu-v上的动态β条件在动态α节点之后建立动态β节点。这里的静态α节点、动态α节点和动态β节点建立过程与rete网络类似,区别在于,对于一个静态α节点,如果它的子节点中含有动态节点,则为其建立α内存来保存满足其本身静态α条件以及其祖先节点(全为静态α条件)的α匹配。对于动态β节点Ni,建立指针使其拥有两个父节点,一个是以Qi(1≤i≤u-v)为开始节点的α节点链的末尾节点,另一个是Ni-1
1.4.4.将父节点为静态α节点的动态α节点记为αd节点,并建立连接使所有的αd节点成为Eα节点的孩子节点。
2.经过步骤1得到FECR网络之后,将当前***中的事实数据逐一输入条件condition查询网络。由于事实不具有时间属性,所以执行顺序不影响结果。事实数据在条件查询网络的传递方式类似于传统的模糊rete网络,每次条件查询网络里的节点被激活,计算激活其的事实或者元组是否满足节点里的条件,若满足,如果节点里有存储区,则将该事实(对应α内存)或者新形成的元组(对应β内存)存放于存储区里,没有存储区(对应没有内存的α节点)则不存储,之后遍历其子节点,激活其中所有的静态节点;经过这种计算,所有的中间结果(包括α内存的事实和β内存的元组)会保留在那些孩子节点为动态节点的静态节点的内存中,并且这些中间结果在计算过程中不会发生变化。
3.步骤2对条件查询的静态部分进行缓存后,对FECR网络中的节点分配优先级。优先级用于节点调度(见步骤5)中控制节点执行顺序,实现节点互斥,提高并发度。此值越小,则优先级别越高,优先级分为主优先级和副优先级,主优先级设置方式如下:触发节点和条件查询网络中的所有静态节点主优先级设置为0;对于剩下的节点,它的主优先级等于其所有父节点里主优先级的最大值加一。副优先级设置方式如下:如果一个节点没有孩子节点,其副优先级等于主优先级的值;如果节点有孩子节点,其副优先级的大小等于所有孩子节点副优先级里的最大值减一。分配优先级之后,基于FECR的网络拓扑结构通过深度优先搜索识别出FECR网络的弱连通分支,假设有w个分支,每个分支对应一个编号i(1≤i≤w)。
4.上述步骤1-3属于离线操作,本步骤开始对传感器数据流进行在线推理计算。传感器数据以<sensorid,value,timestamp>的形式传输,其中sensorid表示传感器的ID,value表示传感器本次检测到的值,timestamp表示检测该数据的时间戳。在每个时刻,会传输进来一批具有该时刻时间戳的数据,当数据传输进来后,推理引擎会根据sensorid从触发节点的SI特征中的id属性找到其对应的触发节点,同时根据value和timestamp修改触发节点的V和NT信息,并将该触发节点激活。之后从触发节点开始,数据会以宽度优先的方式遍历FECR推理网络,如果数据满足当前节点里所定义的条件,那么数据会激活当前节点的孩子节点;直到数据不满足当前节点的限制条件(此时不激活孩子节点)或者到达FECR的action节点(没有孩子节点)。每个节点(包括触发节点)被激活时,会形成一个任务实例,任务实例中有两个成员,一是被激活节点,二是时间戳,两个成员组合起来唯一标志该任务实例,被激活节点的优先级也看做是该任务实例的优先级。任务实例时间戳的产生规则如下:如果激活其的是sensor数据,其时间戳为sensor数据的时间戳;如果激活其的是其他任务,那么其时间戳等于激活该任务的其他任务的时间戳。在多核执行环境下,为每个核建立一个工作器worker,用来并行执行任务实例。任务实例被激活后按照优先级加入优先队列,然后调度器会根据优先级将任务实例分配给不同的工作器执行,具体优先队列的创建以及节点的分配方式见步骤5。当某个工作器空闲时,会请求任务,如果请求成功,则执行请求到的任务。根据节点的类别不同,工作器对任务的处理方式也不同。
4.1如果任务实例的被激活节点是α节点,工作器会对其接收到的且时间戳等于任务实例时间戳的所有事件(对应产生式规则的α节点)或者事实(对应条件查询里的α节点)进行评估,如果满足该α节点的条件,那么事件或者事实通过该α节点且激活该α节点的孩子节点(此时形成新的任务实例),如果该α节点里有α内存,则存放这些满足该α节点里的α条件的事件或事实。
4.2如果任务实例被激活节点是β节点,工作器会从其左存储(指向其左父节点的β内存)中所有时间戳等于任务实例时间戳的元组与右存储(指向其右父节点的α内存)里的AM一一进行评估;再从右存储中所有时间戳等于任务实例时间戳的AM与左存储里时间戳小于任务实例时间戳的元组一一进行评估。如果通过该节点的条件,则激活孩子节点,形成新的任务实例,并形成新的元组,存放于节点的β内存。
4.3如果任务实例对应事件节点,则说明在产生式规则中识别出了复杂模糊事件,针对该节点里所有等于该任务实例时间戳的事件,判断其发生度是否大于规则中所定义的发生度阈值,如果满足,则激活其孩子节点(条件查询网络里的N0和αd节点)。
5.步骤4说明了,任务如何被激活和被执行的过程,本步骤对调度机制进行说明。调度机制采用基于优先级的顺序,利用主优先级保证了互斥和正确性,副优先级进一步来提高并发度。数据是按时间戳分批进行处理的,当第i批数据(假设时间戳为t)进入FECR网络时,需要创建针对该批数据带来的计算任务的优先队列一维数组,记为qi[w]=(qi,1,qi,2,...,qi,w),qi,w表示一个优先队列,其中i表示该批数据是第i批被处理的数据,w等于弱连通分支的个数。当有时间戳为t且节点属于弱连通分支j(1≤j≤w)的对应任务被激活后,将其放在qi,j优先队列中,任务在队列中的排列规则如下:如果有a,b两个任务实例在同一优先队列qi,j中,a排在b前面(即,a优先于b)当且仅当满足下列两个条件之一:(1)a的主优先级小于b的主优先级;(2)a的主优先级等于b的主优先级且a的副优先级小于或等于b的副优先级。由于下一批数据到来时,存在之前的数据还没计算完成的情况,那么在推理***中存在不同批次的数据产生的任务,所以***中存在优先队列的二维数组,即q[k][w]={qi[w],qi+1[w],...,qi+k-1[w]},表示***中存在k个批次的数据产生的任务。定义一个任务(记为Task1)是另一个任务(记为Task2)的前置任务,那么Task1的被激活节点需要满足是Task2被激活节点的祖先节点。一个时间戳为t的任务可以被执行当且仅当时间戳小于或等于t的前置任务已经被执行完毕。为了保证正确性,当工作器(worker)空闲时,将按如下策略选择任务在其上运行:令x取值从0到k-1,y取值从1到w,遍历队列二维数组q[k][w],如果q[x][y](即qi+x[y]所代表的队列)不为空,且q[x][y]的队首任务记为headx,y是可执行的,则将其从队列中删除,并分配给空闲工作器。假设headx,y主优先级为r,副优先级为s,其可执行当且仅当下列条件同时满足:(1)队列q[x][y]中所有主优先级小于r的任务已经分配完毕且被工作器执行完;(2)队列q[x-1][y]中所有节点都被执行完或者令headx-1,y表示q[x-1][y]的队首任务,s小于等于headx-1,y的副优先级减二。
本发明的有益效果
本发明提供了一种面向流式数据的高性能模糊ECA规则推理方法,该方法可同时支持精确推理和模糊推理,并且可处理事件间的模糊时序关系,适用于流式数据。同时基于rete网络提出了一种新的推理网络结构,减少在线计算,提高效率,并进一步设计一种基于优先级的节点调度方式,提高了推理过程的并发度,进而提高了面向海量流式数据时的推理速度。
附图说明
图1是模糊三角隶属函数实例。
图2是本发明的一个触发节点聚类结果展示。
图3是本发明中一种事件带有模糊变量和触发节点聚类簇的用于检测事件的产生式规则对应的FECR网络图。
图4是本发明中一种事件中不带有模糊变量和不带触发节点聚类簇的用于检测事件产生式规则对应的FECR网络图。
图5是带有静态和动态条件的模糊ECA规则对应的FECR网络的条件查询图。
图6是不带有condition部分的模糊ECA规则对应的FECR网络的条件查询图。
图7是推理引擎的执行过程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整的描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合具体规则和相关数据,对本发明进行说明。
Figure BDA0002552444120000081
Figure BDA0002552444120000091
(1)上述规则中,Rule1和Rule2是产生式规则,分别识别两个复杂事件E1和E2,Rule3和Rule4是主动规则,分别由E1和E2触发,Alarm1和Alarm2是规则的触发行为。规则中以”X is Y”的形式的条件为模糊条件,X是模糊变量,Y是模糊集,由一个隶属函数来表示。模糊集需要用户定义其类型和参数,比如Rule1中的H,L以及Rule2中的M是模糊集,模糊集有多中形状,以三角模糊函数为例,对H,M,L定义如下:
H:Triangle(1,2,3)
M:Triangle(0,1,2)
L:Triangle(-1,0,1)
其所对应的函数形状如图1所示。在Rule1中Define E1(v1,v2)定义了E1含有两个属性,当E1被检测到时,v1的值等于C1.v2,v2的值等于C3.v3。Rule1中的x.V1,y.V1,y.V3,z.V3属性名大写,说明这些属性是触发节点里的静态属性,可以用来聚类。
(2)当前触发节点的静态属性情况如表1,每个触发节点对应一个特定传感器。根据Rule1的静态条件”y.V1=x.V1”和”z.V3=y.V3”,对触发节点进行聚类,聚类结果如图2所示,编号1,3,5的节点聚为一簇,编号2,4,6的触发节点聚为一簇。在这1,3,5节点簇上根据Rule1的动态条件节点建立FECR网络如图3所示,其中α1,α3,α5节点分别评估“x.v2 isH”,“y.v2 is H”,“z.v2 is H”;α2,α4,α6分别评估“x.v2 is L”,“y.v2 is L”,“z.v2 isL”;由于Rule1中没有动态β条件,所以图3的β节点不进行条件评估;γ1节点得到”E1 isEH”的匹配度,γ2节点得到“E1 is EL”匹配度,EH和EL是表示E1发生程度的模糊变量,最后在γ3点进行聚合和去模糊化得到最终的E1发生度。2,4,6节点簇上的结构于此相同,不做赘述。在Rule2中没有静态条件,所以对触发节点不进行聚类,建立网络如图4,其中α7评估“x.v1 is M”,β8评估“y.v2=x.v2”,α8和β7不作评估,由于E2定义中不带模糊变量,不需要进行聚合和去模糊化。
表1触发节点的静态属性
编号 NI SI SS
1 nt=C1 id=1 V1=1
2 nt=C1 id=2 V1=2
3 nt=C2 id=3 V1=1,V3=1
4 nt=C2 id=4 V1=2,V3=2
5 nt=C3 id=5 V3=1
6 nt=C3 id=6 V3=2
7 nt=C4 id=7
8 nt=C4 id=8
9 nt=C5 id=9
10 nt=C5 id=10
(3)主动规则Rule3中,“y.V3=x.V3”是静态β条件,x.V2 is H是静态α条件,建立FECR网络如图5,其中粗线条节点表示动态节点,细线条是静态节点。节点α11和β10不作评估,节点α10评估“x.V2 is H”,β11评估“y.V3=x.V3”,节点α9评估“E1发生度是否大于阈值0.6”,节点β9(连接节点)评估“x.v1=e.v1”和“y.v1=‘Z’”,α12评估“z.v1 is M”,节点β12评估“z.v2=y.v2”。对于主动规则Rule4,由于不需要对fact进行评估,直接β13(连接节点)激活Action节点,如图6,其中α13评估“E2发生度是否大于阈值0.7”,β13不作评估。
(3)将fact数据输入条件图5和图6的查询网络,此时推理过程和rete一样,但是推理会停止在动态节点之前。假定有以下事实进入***:
(f1:F1 v1=1,V2=2,V3=1),(f2:F1 v1=2,V2=2,V3=2),
(f3:F2 v1=‘Z’,v2=2,V3=1),(f4:F2 v1=‘Z’,v2=3,V3=2),
(f5:F3 v1=1,v2=2),(f6:F3 v1=1,v2=3)
根据模糊的rete匹配结果,中间结果会保存在图5的网络中的β11节点和F3的类节点,F3的类节点存储f5,f6两个事实,β11其存储元组情况如下:
元组 匹配度 事实成员
1 1 f1,f3
2 1 f2,f4
(4)将事实输入网络,得到中间结果以后,遍历图3,4,5,6中的整个网络,给节点分配主优先级和副优先级如下表。根据FECR网络拓扑图可知,整个网络分为两个弱连通分支,记为分支1,分支2,其中图3和5属于分支1,图4和6属于分支2。
Figure BDA0002552444120000111
Figure BDA0002552444120000121
(5)接下来推理引擎开始接收流式数据,流式数据以<sensorid,value-list,timestamp>的形式传输,假设在时间戳1时刻,来了如下两条数据(数据只含有动态属性,静态属性不需要从传感器接收):(9,v2=2,timestamp=1),(10,v2=3,timestamp=1)。根据sensorid,触发节点9和触发节点10被激活,开始执行;执行时,由于FECR网络有两个分支,首先建立一个优先队列数组q1[2]=(q1,1,q1,2),由于触发节点9和10属于分支2,所以由两个数据产生的任务都放入q1,2中,两个节点的主副优先级相同,且此时没有其他任务,因此两个任务可以同时分配给空闲工作器worker执行,如果此时分配到触发节点9的工作器执行较快,激活了节点α8,并将其放入q1,2中,此时由于q1,2有主优先级小于α8的触发节点10在执行,因此α8节点必须等待触发节点10执行完毕。当触发节点10执行完后,α8节点可以执行,此时里面有(9,v2=2,timestamp=1),(10,v2=3,timestamp=1)两条数据,都满足α8的通过条件,因此两条数据保存在α8节点的α内存里,并激活β8节点,存入q1,2中;假设此时到达时间戳2,来了一条数据(7,v1=1,v2=2,t timestamp=2),此时需要建立一个优先队列数组q2[2]=(q2,1,q2,2),与q1,2形成二维优先队列数组q[2][2]={q1[2],q2[2]},触发节点7被激活放入q2,2中,此时q1,2中存在一个任务β8,且触发节点7的副优先级小于等于β8的副优先级减二,所以触发节点7可以执行。假设触发节点7执行完毕后激活了α7节点,此时q1,2中存在一个任务β8,且α7节点的副优先级小于等于β8的副优先级减二,所以α7节点可以执行,数据(7,v1=1,v2=2,timestamp=2)满足α7节点的“x.v1 is M”条件,且匹配度为1,因此该数据存在α7的α内存里,并激活β7节点,放入q2,2中,由于β7节点副优先级等于β8的副优先级减一,所以此时β7节点必须等待q1,2中的β8节点执行完毕。由于q1,2中的β8节点左存储中没有数据,因此不能激活γ4节点,此时q1,2中的β8节点在时间戳1时执行完。之后β7节点可以执行,数据满足β7节点,因此将(7,v1=1,v2=2,timestamp=2)存入β7节点的β内存里,并激活β8节点放入q2,2中;q2,2中的β8节点满足可执行条件(q1,2中没有任务且q2,2中没有主优先级低于β8的节点),可以被执行,且此时左存储数据为(7,v1=1,v2=2,timestamp=2)与右存储(即α8的α内存)中的数据(9,v2=2,timestamp=1)满足”y.v2=x.v2”条件,且匹配度为1,所以会检测到一个E2事件的实例,记为e2,其发生度为1,表示为(e2:E2,v1=1,v2=2,timestamp=2,degree=1),之后会激活α13节点,由于发生度大于阈值,所以最终激活λ2节点。λ2(6)整个数据处理过程如图7,假设***有n+1个核,对应工作器0(worker0)到工作器n(workern)。执行流程如下,其中流程2中任务在优先队列中的排列和流程3队首任务可执行的判断条件见说明书的步骤5:
流程1:工作器0按时间戳收集数据,工作器0收集完毕一批数据后立刻激活该批数据对应的触发节点,产生任务实例。
流程2:对FECR网络中的2个弱连通分支,针对每批数据创建2个优先队列,每个优先队列存放该批次激活的一个分支上的任务。对于第i批数据,如果其激活了分支j(j=1,2)的节点,则将该任务放入q[i][j]。
流程3:调度器遍历二维优先队列,从队首找到可执行的任务,将其分配给空闲工作器。
流程4:工作器对收到的任务进行计算,当节点的条件满足的时候,激活其孩子节点,生成新的任务实例。
上述实施例仅为例示性说明本发明的原理及其功效,而非用于限制本发明的范围。任何熟于此技术的本领域技术人员均可在不违背本发明的技术原理及精神下,对实施例作修改与变化。本发明的保护范围应以权利要求书所述为准。

Claims (10)

1.一种反应式***的快速决策方法,其步骤包括:
1)将反应式***中的模糊ECA规则解析为FECR网络;其中得到所述FECR网络的方法为:
11)对反应式***中的每一个传感器数据源建立一个对应的触发节点;
12)根据模糊ECA规则中模糊事件的产生式规则对触发节点进行聚类,得到若干触发节点簇;其中同一簇中的触发节点满足一组设定的过滤条件;
13)对每一触发节点簇建立一用来检测模糊事件的模糊事件检测网络,所述模糊事件检测网络为模糊rete网络;
14)根据模糊ECA规则的条件condition部分建立条件查询网络;条件condition部分为用于条件查询的产生式规则;条件condition部分为α条件或β条件,当一个α条件或β条件涉及的事实的属性值不会发生变化,称此α条件或β条件为静态的;若α条件或β条件涉及的事实的属性值会发生变化,则称α条件或β条件为动态的;当一个rete节点用来评估的α条件或β条件是静态的,则该rete节点为静态节点;如果一个rete节点用来评估的α条件或β条件为动态的,则该rete节点为动态节点;
2)将反应式***中的事实数据逐一输入条件查询网络,每次节点被激活,计算激活该节点的事实或者元组是否满足该节点里的条件,若满足且该节点里有存储区,则将该事实或者元组存放于该节点的存储区里,若满足但该节点没有存储区,则遍历该节点的子节点,激活其中所有的静态节点,将该事实或者元组保留在子节点为动态节点的静态节点的内存中;
3)对FECR网络中的节点分配优先级,然后根据FECR网络拓扑搜索出FECR网络的弱连通分支;
4)对于收到的第i批数据;该第i批数据中的传感器数据为<sensorid,value,timestamp>,其中sensorid表示传感器的ID,value表示传感器检测到的值,timestamp表示时间戳;反应式***的推理引擎根据sensorid找到其对应的触发节点a,根据value和timestamp修改该触发节点a的动态属性信息,并激活该触发节点a;然后从该触发节点a开始,遍历FECR网络,激活该触发节点a的孩子节点,直到不满足节点的限制条件或者到达FECR网络的action节点;每个节点被激活时,会形成一个任务实例,对于第i批数据中属于分支j的节点被激活后,将该节点对应的任务实例放在优先队列qi,j中,得到一个一维数组qi[w]=(qi,1,qi,2,...,qi,j,...,qi,w),1≤j≤w;w为FECR网络的分支数;
5)调度器会根据优先级将任务实例分配给不同的工作器worker执行。
2.如权利要求1所述的方法,其特征在于,令O1,O2,...,Ou表示模糊ECA规则中主动规则涉及到的所有事实类,P1,P2,...,Pv表示主动规则中静态β条件涉及到的事实类,其中v≤u,Q1,Q2,...,Qu-v表示没有被静态β条件涉及的事实类,E表示触发主动规则的事件节点;建立所述条件查询网络的方法为:
141)对于定义在事实类P1,P2,...,Pv的属性上的静态α条件和静态β条件,建立模糊rete网络作为静态查询网络,静态查询网络的最后一个β节点记为Ne;
142)在事件节点E之后建立一个α节点,记为Eα;然后建立一个连接节点N0作为Eα和Ne两节点的孩子节点,N0用来评估定义在事件节点E和事实类P1,P2,...,Pv上的动态α条件和动态β条件;
143)对于Q1,Q2,...,Qu-v上的静态α条件,建立对应的静态α节点;对于Q1,Q2,...,Qu-v上的动态α条件和动态β条件分别建立动态α节点和动态β节点;对于一个静态α节点,如果它的子节点中含有动态节点,则为其建立α内存来保存满足其本身静态α条件以及其祖先节点的α匹配;对于动态β节点Ni,其有两个父节点,一个是以Qi为开始节点的α节点链的末尾节点,另一个是Ni-1;其中1≤i≤u-v;
144)将父节点为静态α节点的动态α节点记为αd节点,并建立连接使所有的αd节点成为Eα节点的孩子节点。
3.如权利要求1所述的方法,其特征在于,所述步骤5)中,工作器worker根据任务实例对应的节点的类别不同,对任务实例执行方式不同:a)如果任务实例的被激活节点是α节点,则worker对时间戳等于任务实例时间戳的所有事件或者事实进行评估,如果通过,则激活其子节点,形成新的任务实例,如果α节点有α内存,则存放满足条件的事件或事实;b)如果任务实例被激活节点是β节点,则worker从该β节点左存储中查找时间戳等于任务实例时间戳的元组与右存储里的AM一一进行评估;再从该β节点右存储中查找时间戳等于任务实例时间戳的AM与左存储里时间戳小于任务实例时间戳的元组一一进行评估;如果通过,则激活孩子节点,形成新的任务实例和新的元组,存放于节点的β内存;
c)如果任务实例对应事件节点,则对该事件节点里所有等于该任务实例时间戳的事件,判断其发生度是否大于设定发生度阈值,如果大于设定发生度阈值,则激活其孩子节点。
4.如权利要求1所述的方法,其特征在于,所述触发节点TN表示成TN=(NI,SI,SS,NT,V);其中,NI=(nt,a1,a2,...,an)表示触发节点信息,nt是节点类型,a1,a2,...,an是节点可选附加属性,SI=(id,b1,b2,...,bn)表示触发节点所对应的传感器的信息,id是传感器的唯一标志,b1,b2,...,bn是传感器可选附加属性,SS=(c1,c2,...,cn)表示触发节点所对应的传感器的空间语义信息;NT=(ts,te)表示触发节点对应的传感器检测到的最新的事件发生的起止时间,ts表示开始时间,te表示结束时间;V表示触发节点对应的传感器检测的最新数据的值;NT、V是触发节点的动态属性,NI、SI、SS为触发节点的静态属性。
5.如权利要求1所述的方法,其特征在于,所述触发节点簇的划分方法为NodeClasses:filter1∧filter2∧...∧filtern;其中,NodeClasses是类别过滤条件,用来约束触发节点簇里所含有的触发节点的类别class,filteri表示定义在触发节点属性上的过滤条件。
6.如权利要求5所述的方法,其特征在于,所述模糊rete网络中的α网络是由α节点串联而成,α节点用于检测α条件;α网络是一颗节点树,从触发节点到叶子α节点形成的链路记为一条α串联链,叶子α节点具有模糊α内存,存储满足该α节点链上所有的α条件的数据,即alpha匹配AM;β网络由β节点组成,每个β节点有一个β内存,每个class对象对应一个β节点,第j个β节点βj用来评估AM中的第j个classj对象与在βj-1内存里的元组tj-1是否满足该节点中的β条件;元组tj-1是一个从class1到classj-1的对象组成的链表,如果元组tj-1满足βj-1节点及其祖先节点的所有条件,则将AM中的classj对象与元组tj-1形成元组tj存储在βj内存里;将模糊rete网络中检测到的模糊事件保存在事件节点E里,用来触发条件查询。
7.如权利要求1所述的方法,其特征在于,优先级值越小则优先级别越高,所述优先级分为主优先级和副优先级,其中主优先级设置方式为:触发节点和条件查询网络中的所有静态节点主优先级设置为0;剩余节点的主优先级等于其所有父节点里主优先级的最大值加一;副优先级设置方式为:如果一个节点没有孩子节点,则该节点的副优先级等于该节点的主优先级的值;如果节点有孩子节点,则其副优先级的大小等于所有孩子节点副优先级里的最大值减一。
8.如权利要求1所述的方法,其特征在于,任务在优先队列中的排列规则为:对于同一优先队列qi,j中的任务实例a、b,当且仅当满足下列两个条件之一时将任务实例a排在任务实例b前面:(1)任务实例a的主优先级小于任务实例b的主优先级;(2)任务实例a的主优先级等于任务实例b的主优先级且任务实例a的副优先级小于或等于任务实例b的副优先级。
9.如权利要求1或8所述的方法,其特征在于,如果推理***中同时存在k批数据产生的任务实例,则创建一优先队列的二维数组,即q[k][w]={qi[w],qi+1[w],...,qi+k-1[w]};然后令x取值从0到k-1、y取值从1到w,遍历队列二维数组q[k][w],如果q[x][y]不为空且q[x][y]的首任务headx,y是可执行的,则将其从队列q[x][y]中删除,并分配给空闲worker。
10.如权利要求9所述的方法,其特征在于,当且仅当同时满足下列条件(a)、(b)时判定headx,y为可执行;设headx,y主优先级为r、副优先级为s;条件(a):队列q[x][y]中所有主优先级小于r的任务已经分配完毕且被worker执行完;(b)队列q[x-1][y]中所有节点都被执行完或者令headx-1,y表示q[x-1][y]的队首任务,s小于或等于headx-1,y的副优先级减二。
CN202010581381.2A 2020-06-23 2020-06-23 一种反应式***的快速决策方法 Active CN111831694B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010581381.2A CN111831694B (zh) 2020-06-23 2020-06-23 一种反应式***的快速决策方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010581381.2A CN111831694B (zh) 2020-06-23 2020-06-23 一种反应式***的快速决策方法

Publications (2)

Publication Number Publication Date
CN111831694A CN111831694A (zh) 2020-10-27
CN111831694B true CN111831694B (zh) 2023-06-20

Family

ID=72898033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010581381.2A Active CN111831694B (zh) 2020-06-23 2020-06-23 一种反应式***的快速决策方法

Country Status (1)

Country Link
CN (1) CN111831694B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013098830A1 (en) * 2011-12-30 2013-07-04 Yogesh Chunical Rathod A system and method for dynamic, portable, customize, contextual, unified and integrated network(s).
CN104899205A (zh) * 2014-03-05 2015-09-09 张航 基于星型结构业务模型的动态搜索框架
CN110175676A (zh) * 2019-04-28 2019-08-27 中国科学院软件研究所 一种面向内存受限环境的高性能规则匹配方法
CN110830539A (zh) * 2018-08-14 2020-02-21 贵州白山云科技股份有限公司 一种网络存储***及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101133991B1 (ko) * 2009-11-27 2012-07-09 한국과학기술정보연구원 규칙 추론기 및 이를 포함하는 와일드 패턴 규칙의 동적인 구체화 방법
US9148465B2 (en) * 2013-04-01 2015-09-29 Oracle International Corporation Update management for a distributed computing system
US10812318B2 (en) * 2017-05-31 2020-10-20 Cisco Technology, Inc. Associating network policy objects with specific faults corresponding to fault localizations in large-scale network deployment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013098830A1 (en) * 2011-12-30 2013-07-04 Yogesh Chunical Rathod A system and method for dynamic, portable, customize, contextual, unified and integrated network(s).
CN104899205A (zh) * 2014-03-05 2015-09-09 张航 基于星型结构业务模型的动态搜索框架
CN110830539A (zh) * 2018-08-14 2020-02-21 贵州白山云科技股份有限公司 一种网络存储***及方法
CN110175676A (zh) * 2019-04-28 2019-08-27 中国科学院软件研究所 一种面向内存受限环境的高性能规则匹配方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Efficient rule engine for smart building systems;Yan Sun等;《IEEE Transactions on computers》;第64卷(第6期);2658-1669 *
事件驱动的云制造车间调度研究;杨屹;《中国优秀硕士学位论文全文数据库 工程科技II辑》;C029-228 *

Also Published As

Publication number Publication date
CN111831694A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
Meng et al. Rating the crisis of online public opinion using a multi-level index system
Tvoroshenko et al. The Application of Hybrid Intelligence Systems for Dynamic Data Analysis
Laskey et al. Hypothesis management in situation-specific network construction
Wang et al. Skyline preference query based on massive and incomplete dataset
Diaz et al. DEAR: a DEbugger for Active Rules in an object-oriented context
CN110033125A (zh) 一种基于模糊逻辑Petri网的业务流程分析方法
RU2610287C1 (ru) Способ контроля состояния сети передачи данных
CN110838055A (zh) 一种基于大数据的电力企业财务数据管理***
CN110175676B (zh) 一种面向内存受限环境的高性能规则匹配方法
Kargin et al. Internet of Things smart rules engine
Liu TOPSIS Model for evaluating the corporate environmental performance under intuitionistic fuzzy environment
CN111814981B (zh) 一种分布式实时规则推理调度方法
CN111831694B (zh) 一种反应式***的快速决策方法
Mambe et al. A belief entropy-based approach for conflict resolution in IoT applications
Tomaszek et al. On performance improvement of the soma swarm based algorithm and its complex network duality
Alam et al. Fuzzy priority CPU scheduling algorithm
Khayut et al. Modeling, Planning, Decision-making and Control in Fuzzy Environment
Maleszka Observing collective knowledge state during integration
CN101114275A (zh) 一种基于概念模型的本体复杂性分析评估方法
Blake et al. Reinforcement learning based decision tree induction over data streams with concept drifts
Yavari et al. Assessment of effective risk in software projects based on Wallace’s classification using fuzzy logic
Hooda et al. An interval type‐2 fuzzy ontological model: Predicting water quality from sensory data
Iancu et al. Mamdani fuzzy logic controller with mobile agents for matching
Wright et al. Use of domain knowledge models to recognize cooperative force activities
Shi et al. A possibility-based method for ranking fuzzy numbers and applications to decision making

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
GR01 Patent grant
GR01 Patent grant