CN108549939A - 一种面向海量流式数据的分布式实时规则推理方法和装置 - Google Patents
一种面向海量流式数据的分布式实时规则推理方法和装置 Download PDFInfo
- Publication number
- CN108549939A CN108549939A CN201810192439.7A CN201810192439A CN108549939A CN 108549939 A CN108549939 A CN 108549939A CN 201810192439 A CN201810192439 A CN 201810192439A CN 108549939 A CN108549939 A CN 108549939A
- Authority
- CN
- China
- Prior art keywords
- reasoning
- data
- task
- node
- 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.)
- Pending
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种面向海量流式数据的分布式实时规则推理方法和装置。该方法包括:建立规则集对应的规则图;将规则图转化成数据操作图;根据数据操作图生成推理作业;根据截止期设置推理作业的优先级,将推理作业按照优先级递减顺序放入推理作业就绪队列;选择优先级最高的推理作业,创建推理任务,分配并执行推理任务;推理作业执行结束时将其从推理作业就绪队列中删除,并判断推理作业就绪队列是否为空队列:若不是空队列则继续执行;若是空队列则表示已完成输入事实与所有规则的匹配。本发明可在分布式环境下完成海量实时数据与规则的匹配,并使规则尽量在其截止期前完成,可用于具有时间约束的物联网应用,从而提高了实时物联网应用的智能化。
Description
技术领域
本发明属于规则系统和实时技术领域,具体涉及一种面向海量流式数据的分布式实时规则推理方法和装置。
背景技术
规则推理将领域知识表示为规则,通过规则与事实的匹配,触发并执行规则,从而进行自动决策。它已被广泛应用于医疗诊断、地质勘探、智能决策等各种专家系统中。
近几年来,实时系统对智能化的需求日益增加,它们需要能够感知外部环境,并对其进行自动响应。在这种情况下,实时系统需要具有强大的推理能力,可以通过一系列传感器采集外部环境数据,对连续不断的事件流进行监视,从中识别出需要关注的场景,并进行自动决策,从而实时地执行动作对识别出的场景做出响应。因此,规则推理也开始应用于生产过程监控、高速列车在线故障诊断、电网自愈控制以及金融交易风险预警等实时系统。由于实时系统具有时间约束,系统中的任务需要在其截止期前完成,因此,规则推理中的规则也必须具有截止期(在这里,从与某条规则相关联的所有数据被系统接收开始到该规则所定义的动作完成之间的时间间隔被定义为该规则的推理延迟,而规则推理延迟的上限则被定义为该规则的截止期)。例如,在工厂仓库的火灾监测中,当温度过高、湿度过低和烟雾浓度异常时,则判断可能发生火灾并发出报警信息。由于系统从接收到温度湿度烟雾等数据到推理出火灾是否发生,并发出警报需要在10秒内进行完成,那么相应规则的截止期即为10秒。
随着物联网技术的普及,实时物联网应用,例如智能报警、车联网以及智能家居监控等在工业界的应用越来越广泛。此时,实时系统需要处理物联网应用中采集节点不间断产生的实时数据流,因此,规则推理必须具备处理这些海量实时数据的能力,且规则也需要尽可能地在其截止期前完成。
传统规则推理系统,例如CLIPS,DROOLS,都缺少对规则的并行处理能力,其规则匹配效率无法应对物联网环境下的海量实时数据,甚至会使规则无法及时匹配,造成数据流阻塞,从而导致数据丢失和事件漏判。虽然,专利CN107145949A利用计算机的多核资源,设计了多核环境下的实时规则推理方法,使规则的匹配效率得到了一定程度的提高,但规则推理依然被限制在本地,其性能仍然难以满足海量实时数据处理所带来的庞大资源需求。
虽然,学者们已经提出了一些面向流式数据的分布式实时推理方法(张琦.基于MapReduce的分布式规则匹配系统的研究与实现[D].浙江大学,2011.Yi Chen,BehzadBordbar.DRESS:A Rule Engine on Spark for Event Stream Processing.BDCAT2016.)。但这些方法都没有考虑规则截止期,会导致大量的规则截止期错失,从而使上层实时物联网应用的时间约束无法得到满足。
发明内容
针对规则推理系统现有技术的不足,本发明提供一种新的面向海量流式数据的分布式实时规则推理方法和装置,该方法可在分布式环境下完成海量实时数据与规则的匹配,使规则尽可能地在其截止期前执行完毕。
本发明的一种面向海量流式数据的分布式实时规则推理方法,包括以下步骤:
1)建立规则集所对应的规则图;
2)将规则图转化成相应的数据操作图;
3)根据数据操作图生成推理作业;
4)根据各个推理作业对应规则的截止期设置推理作业的优先级,并将推理作业按照优先级递减顺序放入推理作业就绪队列;
5)选择优先级最高的推理作业,创建并执行推理任务;
6)推理作业执行结束时将其从所述推理作业就绪队列中删除,并判断所述推理作业就绪队列是否为空队列:若不是空队列则回到步骤5)继续执行;若是空队列则表示已完成输入事实与所有规则的匹配。
进一步地,步骤1)中,规则图用RETE网表示,RETE网络的概念与原理可参见“R.B.Doorenbos,“Production Matching for Large Learning Systems”TechnicalReport CS-95-113,School of Computer Science,Carnegie Mellon Univ.,1995.”。每条规则被表示成IF C1^C2^...^Cn THEN A的形式。Ci(1≤i≤n)被称为条件元素,条件元素Ci可以和事实(fact)匹配;事实(fact)由类型名和若干属性名-属性值组成,被表示成(TypeName,attri1,x1,attri2,x2...attrim,xm),其中TypeName是事实类型名称,attrik是属性名,xk是对应的属性值(常量)(1≤k≤m)。条件元素Ci(condition)可被表示成(TypeName,constraint(attrii,xi))(1≤i≤m),constraint(attrii,xi)是对类型为TypeName的事实中属性attrii所对应变量xi取值的约束(简称为条件元素Ci的一个约束)。条件元素Ci的每一个约束对应RETE网络中的一个α节点,每个α节点有一个α内存,用来存储符合α节点对应约束的所有事实。规则集中各规则条件元素Ci(1≤i≤m)的全部约束则形成了α网络;RETE网络中的β网络由若干β节点连接而成,不同条件元素间的逻辑组合被表示为一个β节点,例如C1,C1^C2,C1^...^Ck(1≤k≤n)均各自对应了β网络中的某个β节点。在此,每个β节点均对应了不同条件元素属性间的一个或多个约束。每个β节点有一个β内存,用来存储满足β节点所对应约束的部分匹配(Partial Match),部分匹配的概念参见“http://www.clipsrules.net/?q=Documentation/”。建立RETE网络的具体步骤可参见专利CN107145949 A。
进一步地,步骤2)中,数据操作图为一个有向无环图。图中各节点表示一个数据集,即在规则推理过程中被操作的相关数据,对应了1)中所述的各α节点与各β节点的α内存和β内存中的事实和部分匹配。各节点所表示的数据集被划分为多个分区(数据集的各个分区被称为一个数据分区),一个节点上各数据分区可被并行计算(为方便起见,将节点vx所表示的数据集记为Dx,1≤x≤n,n为数据操作图中节点的数目)。设Op为数据集操作,数据集操作可按一定的步骤将一个或多个数据集变化为一个新的数据集(具体Op类型由应用决定)。设数据操作图中有n个节点,V为数据操作图的节点集合,V={v1,...,vn}。对于 若有且则对于在数据操作图中加入边<vs,vi>,vs是vi的前驱节点,vi是vs的后继节点。图中没有后继的节点被称为终止节点,其所对应的数据集包含了满足规则所有条件元素约束的所有完全匹配(完全匹配的概念参见“http://www.clipsrules.net/?q=Documentation/”)。规则推理只涉及filter操作(数据集过滤操作,过滤数据集中不符合给定条件元素的某个约束的数据),beta操作(对两个数据集进行笛卡尔积,形成新的数据集,并在此数据集中过滤不符合不同条件元素间属性约束的数据)。
进一步地,将步骤1)中得到的规则图转化成相应数据操作图的具体步骤如下:
(1)创建根节点root。
(2)依次处理RETE网络中的α节点,在数据操作图G中加入一个新节点表示当前α节点对应的α内存中的事实。对于RETE网络中的两个α节点x,y,若存在边<x,y>,则在数据操作图中添加边<vx,vy>。其中vx表示α节点x对应的α内存中所有事实形成的数据集Dx,vy表示α节点y对应的α内存中的所有事实形成的数据集Dy,且边所对应的操作为filter操作,filter操作可过滤数据集Dx中不符合α节点y所对应约束的事实,从而得到数据集Dy。
(3)依次处理RETE网络中的β节点,在数据操作图G中加入一个新节点表示当前β节点对应的β内存中的部分匹配。对于RETE网络中的α节点x和β节点y,若其拥有共同的后继β节点z,则在数据操作图中添加边<vx,vz>和边<vy,vz>。其中vx表示α节点x对应的α内存中所有事实所形成的数据集Dx,vy表示β节点y对应的β内存中所有部分匹配所形成的数据集Dy,vz表示β节点z对应的β内存中所有部分匹配所形成的数据集Dz,且两条边所对应的操作为beta操作,beta操作首先对数据集Dx和数据集Dy进行笛卡尔积,再过滤这些笛卡尔积中不符合β节点z所对应的不同条件元素间约束的部分匹配,从而得到数据集Dz。
进一步地,步骤3)中,当系统接收到事实(在此,事实即为输入系统的流式数据,例如,可将传感器采集数据的数据类型、当前值以及时间戳封装成事实对象并发送给规则推理系统)时,根据数据操作图生成推理作业(Job)。生成Job的具体步骤为:
(1)找到数据操作图的所有终止节点。
(2)对于每一个终止节点v,使用宽度优先遍历找到节点v的所有祖先节点(若节点v1到节点v2存在一条路径则节点v1是节点v2的祖先节点)。为节点v及其祖先节点构成的子图上所有数据集的一系列数据集操作生成一个Job(为方便起见,将上述子图称为Job的执行图,将终止节点称为Job的执行终点)。
(3)重复b直到数据操作图中所有终止节点被处理完。
进一步地,步骤4)中,根据各个Job对应规则的截止期设置Job优先级(若Job的执行终点v根据RETE网络中的β节点x生成,且β节点x表示规则r的不同条件元素间的逻辑组合,则该Job对应规则r),规则的截止期越短则对应Job的优先级越高。将Job按照优先级递减顺序放入Job就绪队列Q。
进一步地,步骤5)中,运行时,选择优先级最高的Job执行(从就绪队列Q中选择队首的Job)。根据Job执行图中节点所代表的数据集以及这些数据集上的操作创建并执行推理任务(task)。图3是Job执行流程图,具体步骤如下:
(1)将Job执行图的根节点设为当前节点,依次遍历执行图中各个节点。
(2)对于每个节点vx,判断vx的前驱节点个数。
a.若当前节点vx只有一个前驱节点vy,,则意味着在Dy上执行filter操作得到Dx。若Dy有n个数据分区,则创建n个可并行执行的推理task。每个task在Dy的一个数据分区上执行filter操作产生Dx的一个分区数据,也就是说,生成了满足RETE网中α节点x所对应约束的所有事实形成的数据集(设在步骤2中节点vx根据α节点x创建)。
b.若当前节点vx有两个前驱节点vy和vz,则意味着在Dy和Dz上执行beta操作得到Dx。若Dy有m个数据分区,Dy有n个数据分区,则创建m×n个可并行执行的推理task。每个task在Dy的一个数据分区以及Dz的一个数据分区上执行beta操作产生Dx的一个数据分区,也就是说,生成了满足RETE网中β节点x所对应的不同条件间约束的所有部分匹配形成的数据集(设在步骤2中节点vx根据β节点x创建)。
上述task生成步骤中,若生成的task是在Job执行终点与其前驱节点所对应数据集上的操作,则称该task为结果任务。
(3)将2)中生成的task发送给任务分配器,重复2)直到所有节点被处理完。
(4)当任务分配器接收到3)发来的task时,按照任务分配策略将这些task分配到系统中各个执行器执行。分布式系统中有若干个执行器,系统为每个执行器分配一个CPU核以及内存资源使其可运行推理task,且每个执行器一个时刻只能运行一个task。各个执行器将分配到本地的task按照优先级递减放入到该执行器的task就绪队列(task优先级等于其所属Job的优先级)。对于每一个执行器,当其上运行的task完成时,从其task就绪队列中选择优先级最高的task执行,执行完成后并将该task从队列中删除。
当结果任务被执行完成,则表示结果任务所属Job执行完成,即,完成了系统接收到的所有事实与Job对应规则的匹配
Job执行结束得到其执行终点所表示数据集。若数据集不为空则表示相应规则被触发,执行规则所定义的动作;若数据集为空则表示相应规则未被触发。
进一步地,步骤6)中,当一个Job执行结束,将其从Job队列Q中删除,并判断队列Q是否为空队列:若队列Q不是空队列则回到5)继续执行;若队列Q是空队列则表示已完成系统接收到的所有事实与所有规则的匹配。
进一步地,利用遗传算法实现步骤5)中的任务分配策略,遗传算法概念与原理可参见“Darrell Whitley.A genetic algorithm tutorial.Statistics andComputing.June 1994.”。具体步骤如下:
(1)每个染色体代表一种task的分配策略。染色体的基因编码方式采用数字编码。设分布式系统中有m个执行器以及n个待分配的task,则染色体编码长度为n。系统中每个执行器有一个唯一的编号(设执行器编号为x,x为范围[1,m]之间的整数值),每个染色体第i个基因位的值表示第i个task分配到的执行器编号(1≤i≤n)。
(2)使用贪心策略计算task分配到的执行器的编号,并将对应的染色体加入到初始种群。设初始种群包含的染色体个数为l(l具体值由用户设置),对于初始种群中的其他l-1个染色体,每个染色体可通过将各个基因位的值设置为随机的执行器编号来生成。贪心策略具体步骤如下:
a.将n个task根据计算量递减放入队列Qt。计算量的计算方法如下:
假设task在数据分区d上执行filter操作,则task的计算量为对数据分区d中所有数据所对应事实的某个属性值进行相应属性约束比较的次数;
假设task基于两个数据分区d1,d2执行beta操作,则的task计算量为对数据分区d1中所有数据所对应事实的属性值与数据分区d2中所有数据所对应事实的属性值进行相应属性约束比较的次数。
b.从队列Qt中选择队首的task作为当前task。
c.将当前task分配到当前负载最小的执行器上(执行器的负载等于分配到该执行器上的所有task计算量的和),并将该task从队列Qt中删除,更新该执行器负载,将该执行器的负载值加上当前task的计算量。
d.重复b-c,直到队列Qt为空队列。
(3)进行种群繁衍,即从初始种群生成最终种群,具体步骤如下:
a.设置种群的最大繁衍次数k。
b.将初始种群设为当前种群,种群繁衍次数i赋值为0。
c.当前种群中最优秀(即适应度最高)的染色体直接遗传到下一代种群。
d.繁衍时根据染色体适应度计算染色体的选择概率,假设当前种群中有3个染色体a,b,c,其适应度分别为s1,s2,s3,则3个染色体的选择概率分别为s1/(s1+s2+s3),s2/(s1+s2+s3),s3/(s1+s2+s3)。以各染色体的选择概率选出父母染色体,在所选出的父母染色体上随机选择一个基因位点(称该基因位点为交叉点),将父母染色体上交叉点之后的基因进行互换,产生两个子染色体,判断两个子染色体是否进行变异并将两个子染色体加入到下一代种群(也就是说,通过互换父母染色体交叉点之后的基因,将产生两个新的任务分配策略)。
e.将当前种群的下一代种群设为当前种群,种群繁衍次数i的值加1。
f.重复b-e直到种群繁衍次数i的值等于种群最大繁衍次数k。此时,当前种群即为最终种群,按照最终种群中适应度最高的染色体所表示的task分配策略将task分配到各个执行器。
(4)判断两个子染色体是否变异的方法为:设置染色体变异概率为η(具体值由用户设置)。对于每个子染色体,使用随机函数生成0~1之间的随机数r,若r≤η则对该子染色体变异,否则不进行变异。
对进行变异的染色体随机选择基因位作为变异位并将变异位的值设置为随机执行器编号。
(5)染色体适应度计算方式如下:
其中,avgLoad表示由该染色体所表示的task分配策略计算得到的所有执行器负载的平均值,maxLoad表示所有执行器负载的最大值。
假设系统中有2个执行器,编号分别为1和2,有3个待分配的task t1,t2,t3,计算量分别为c1,c2,c3,染色体编码为1,1,2,表示t1,t2分配到编号为1的执行器,t3分配到编号为2的执行器,则编号为1的执行器的负载为c1+c2,编号为2的执行器的负载为c3,avgLoad=(c1+c2+c3)/2,maxLoad=max(c1+c2,c3)。
本发明还提供一种采用上述方法的面向海量流式数据的分布式实时规则推理装置,其包括:
规则图建立模块,负责建立规则集所对应的规则图;
数据操作图建立模块,负责将规则图转化成相应的数据操作图;
推理作业生成模块,负责根据数据操作图生成推理作业;
优先级设置模块,负责根据各个推理作业对应规则的截止期设置推理作业的优先级,并将推理作业按照优先级递减顺序放入推理作业就绪队列;
推理任务执行模块,负责选择优先级最高的推理作业,创建推理任务,分配并执行推理任务;推理作业执行结束时将其从所述推理作业就绪队列中删除,并判断所述推理作业就绪队列是否为空队列:若不是空队列则继续执行推理作业;若是空队列则表示已完成输入事实与所有规则的匹配。
本发明的有益效果:
本发明提供了一种面向海量流式数据的分布式实时规则推理方法,该方法可在分布式环境下完成规则与海量实时数据的匹配,并使规则在其截止期内完成。该方法适用于各种实时物联网应用,从而提高了物联网应用的智能化程度。
本发明通过将输入系统的海量流式数据(事实)以及在推理过程中所产生的数据(部分匹配)进行分区,生成可并行执行的推理任务,实现规则推理过程的并行化,提高规则推理系统在处理海量流式数据时的吞吐率。
本发明根据规则截止期为规则设置优先级,截止期短的规则可被优先执行,使规则尽可能在其截止期前完成。
本发明利用遗传算法实现基于执行器负载均衡的任务调度,提高了系统效率,缩短了规则的匹配时间。
附图说明
图1是本发明一个具体例子的RETE网络结构示意图。
图2是图1中具体例子对应的数据操作图结构示意图。
图3是本发明中Job执行流程图。
具体实施方式
下面将结合实施例和附图,对本发明的技术方案进行清楚、完整的描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合2条具体规则和相关数据,对本发明进行说明。
Rule1:
Rule2:
(1)图1是上述两条规则的RETE网络结构,其中,Alpha Network表示α网络,AM forCi(i=1,2,3,4)表示存储Ci类型事实的α内存,虚拟节点dummy top node是为表示方便而引入,没有实质性作用。该RETE网中共有4个β节点,B1-B4。B1负责将AM for C1中的事实放入其对应的β内存,B2负责检查C1和C2的attri1对应的值是否相等。B3负责检查C1的attri2的值是否等于C3的attri1值。B4负责检查C2和C3的attri2值是否相等。若存在C1,C2和C3类型事实,且满足上述所有属性约束,则规则R1被触发,若存在C1,C2,C4类型事实,且满足上述所有属性约束,则规则R2被触发。
(2)图2为上述两条规则根据对应的数据操作图,图中“P”表示数据分区。vc1所表示的数据集为所有C1类事实,vc2所表示的数据集为所有C2类事实,在vc1所表示的数据集和vc2所表示的数据集上执行beta操作得到vc1^c2所表示的数据集,即满足C1和C2间属性约束的所有部分匹配。vc3所表示的数据集为所有C3类事实,在vc1^c2所表示的数据集和vc3所表示的数据集上执行beta操作得到vc1^c2^c3所表示的数据集,即满足Rule1所有条件元素约束的完全匹配;vc4所表示的数据集为所有C4类事实,在vc1^c2所表示的数据集和vc4所表示的数据集上执行beta操作得到vc1^c2^c4所表示的数据集,即满足Rule2所有条件元素约束的完全匹配。
(3)根据2)中得到的数据操作图创建Job1和Job2,其中Job1的执行图为vroot,vc1,vc2,vc1^c2,vc3,vc1^c2^c3及其边组成的子图,对应规则Rule1;Job2执行图为vroot,vc1,vc2,vc1^c2,vc4,vc1^c2^c4及其边组成的子图,对应规则Rule2。
(4)Rule1的截止期大于Rule2的截止期,因此Job2的优先级高于Job1。按照Job2,Job1的顺序将两个推理作业放入Job就绪队列。
(5)从就绪队列中选择Job2执行。vroot从数据源读入数据,图2中vc1所表示的数据集有2个数据分区,vc2所表示的数据集有2个数据分区,因此为C1和C2间属性约束所对应的beta操作创建4个并发推理task,4个task执行完成后生成vc1^c2所表示的数据集,vc1^c2所表示的数据集有4个数据分区。vc4所表示的数据集有2个数据分区,为C1,C2以及C4间的属性约束所对应的beta操作创建8个task,8个task执行结束后生成vc1^c2^c4所表示数据集,vc1^c2^c4所表示数据集有8个分区。此时,Job2执行结束将其从Job就绪队列删除。
(6)从就绪队列中选择Job1执行。vc1^c2所表示的数据集在执行Job2时已经生成,此时不必再计算。vc3所表示的数据集有2个数据分区,为C1,C2以及C3间的属性约束所对应的beta操作创建8个并发推理task,8个task执行结束后生成vc1^c2^c3所表示数据集,vc1^c2^c3所表示数据集有8个分区。Job2执行结束将其从就绪队列删除,此时就绪队列为空队列,表示已完成输入数据与所有规则的匹配。
(7)下面结合具体实例对遗传算法进行演示:
设当前系统中有3个执行器,执行器编号分别为1,2,3。步骤5)中为步骤6)中C1,C2以及C3间的属性约束所对应的beta操作创建8个task。设task编号以及计算量如表1所示:
表1.task编号以及计算量
编号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
计算量 | 20 | 15 | 10 | 5 | 30 | 20 | 15 | 10 |
遗传算法的基本运算过程如下:
1)染色体编码方式采用数字编码。染色体编码长度等于任务个数8,基因值选择范围是{1,2,3},表示对应task分配的执行器编号,例如:
1,1,2,3,3,2,3,1
表示编号为1,2,8的task分配到编号为1的执行器,编号为3,6的task分配到编号为2的执行器,编号为4,5,7的task分配到编号为3的执行器。
2)使用贪心策略计算task的分配位置:
将task按照计算量降序排列:
5,1,6,2,7,3,8,4
按照上述排列依次处理task,将各个task分配到负载最小的执行器上(假设初始执行器负载都为0):
a.将编号为5的task分配到编号为1的执行器上,当前各个执行器负载如表2所示:
表2.步骤a中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 30 | 0 | 0 |
b.将编号为1的task分配到编号为2的执行器上,当前各个执行器负载如表3所示:
表3.步骤b中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 30 | 20 | 0 |
c.将编号为6的task分配到编号为3的执行器上,当前各个执行器负载如表4所示:
表4.步骤c中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 30 | 20 | 20 |
d.将编号为2的task分配到编号为2的执行器上,当前各个执行器负载如表5所示:
表5.步骤d中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 30 | 35 | 20 |
e.将编号为7的task分配到编号为3的执行器上,当前各个执行器负载如表6所示:
表6.步骤e中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 30 | 35 | 35 |
f.将编号为3的task分配到编号为1的执行器上,当前各个执行器负载如表7所示:
表7.步骤f中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 40 | 35 | 35 |
g.将编号为8的task分配到编号为2的执行器上,当前各个执行器负载如表8所示:
表8.步骤g中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 40 | 45 | 35 |
h.将编号为4的task分配到编号为3的执行器上,当前各个执行器负载如表9所示:
表9.步骤h中各个执行器的负载
执行器编号 | 1 | 2 | 3 |
负载 | 40 | 45 | 40 |
因此,根据贪心策略求出的染色体编码为
2,2,1,3,1,3,3,2
将该染色体加入到初始种群。
3)以上一步中使用贪心策略得到的染色体为例,计算该染色体适应度:
执行器平均负载avgLoad=(45+40+40)/3
执行器最大负载为maxLoad=45
因此该染色体的种群适应度得分为:
fitness=avgLoad/maxLoad=0.926
4)染色体选择概率与其适应度得分成比例关系。例如种群中有四个染色体,适应度分别是0.8,0.6,0.4,0.2,则染色体的选择概率计算如表10所示:
表10.染色体的选择概率
个体 | 1 | 2 | 3 | 4 |
适应度 | 0.8 | 0.6 | 0.4 | 0.2 |
选择概率 | 0.4 | 0.3 | 0.2 | 0.1 |
累计概率 | 0.4 | 0.7 | 0.9 | 1.0 |
使用随机数函数产生0~1之间的随机浮点数,并根据该随机数所属区间选择染色体,例如若产生随机数0.81则3号个体被选中(0.7≤0.81≤0.9)。
5)繁衍时随机选择基因位作为交叉点,父代染色体交换交叉点之后的染色体产生子染色体。假设父代染色体如下:
1,1,2,3,3,2,3,1
2,2,1,3,1,3,3,2
并且随机生成的交叉点是5,则产生的子代染色体如下:
1,1,2,3,3,3,3,2
2,2,1,3,1,2,3,1
6)变异运算:随机选择基因位作为变异点,变异点的基因赋随机值。
假设变异前染色体如下:
1,1,2,3,3,2,3,1
若随机产生的变异点是5,并且在范围[1,3]中产生了随机数1,则变异后的染色体为
1,1,2,3,1,2,3,1
将本方案与“Yi Chen,Behzad Bordbar.DRESS:A Rule Engine on Spark forEvent Stream Processing.BDCAT 2016”中提出的分布式规则系统(为方便起见,称该系统为DRESS)进行实验比较。实验使用16个执行器,每个执行器由一个CPU核以及大小为512M的内存组成,事实通过传感器采集并发送到系统,每条事实包含一个类型名称以及两个属性键值对。例如(classA,attribute1=25,attribute2=30)表示类型为classA,属性attribute1的值为25,属性attribute2的值为30的一个事实。为了证明本方案在任何条件下效果均更好,分别针对如下情况完成对比实验,实验结果如表11-表14所示。
1)规则集包含两条规则,每条规则的IF部分有两个条件元素,条件元素的约束主要为大于和小于等容易被满足的约束,例如a.attribute1>b.attribute1,a,b为两个事实实例(为方便起见,称为简单规则简单约束)。
2)规则集包含两条规则,每条规则的IF部分有两个条件元素,条件元素的约束主要为等于约束,即不容易被满足的约束,例如a.attribute1==b.attribute2(为方便起见,称为简单规则复杂约束)。
3)规则集包含两条规则,每条规则的IF部分有5个条件元素,条件元素的约束主要为大于和小于等容易被满足的约束(为方便起见,称为复杂规则简单约束)。
4)规则集包含两条规则,每条规则IF部分有5个条件元素,条件元素的约束主要为等于约束,即不容易被满足的约束(为方便起见,称为复杂规则复杂约束)。
表11.简单规则简单约束的实验结果
表12.简单规则复杂约束的实验结果
表13.复杂规则简单约束的实验结果
表14.复杂规则复杂约束的实验结果
实现结果表明,本方案在上述四种情况下均能使用更少的时间完成规则匹配。
本发明另一实施例提供一种采用上述方法的面向海量流式数据的分布式实时规则推理装置,其包括:
规则图建立模块,负责建立规则集所对应的规则图;
数据操作图建立模块,负责将规则图转化成相应的数据操作图;
推理作业生成模块,负责根据数据操作图生成推理作业;
优先级设置模块,负责根据各个推理作业对应规则的截止期设置推理作业的优先级,并将推理作业按照优先级递减顺序放入推理作业就绪队列;
推理任务执行模块,负责选择优先级最高的推理作业,创建推理任务,分配并执行推理任务;推理作业执行结束时将其从所述推理作业就绪队列中删除,并判断所述推理作业就绪队列是否为空队列:若不是空队列则继续执行推理作业;若是空队列则表示已完成输入事实与所有规则的匹配。
上述实施例仅为例示性说明本发明的原理及其功效,而非用于限制本发明的范围。任何熟于此技术的本领域技术人员均可在不违背本发明的技术原理及精神下,对实施例作修改与变化。本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.一种面向海量流式数据的分布式实时规则推理方法,其特征在于,包括以下步骤:
1)建立规则集所对应的规则图;
2)将规则图转化成相应的数据操作图;
3)根据数据操作图生成推理作业;
4)根据各个推理作业对应规则的截止期设置推理作业的优先级,并将推理作业按照优先级递减顺序放入推理作业就绪队列;
5)选择优先级最高的推理作业,创建并执行推理任务;
6)推理作业执行结束时将其从所述推理作业就绪队列中删除,并判断所述推理作业就绪队列是否为空队列:若不是空队列则回到步骤5)继续执行;若是空队列则表示已完成输入事实与所有规则的匹配。
2.如权利要求1所述的方法,其特征在于,步骤1)所述规则图用RETE网表示,规则的约束条件被表示成α节点或者β节点,每个α节点有一个α内存,用来存储符合α节点对应约束的所有事实;每个β节点有一个β内存,用来存储满足β节点所对应约束的部分匹配。
3.如权利要求2所述的方法,其特征在于,步骤2)所述数据操作图为一个有向无环图,图中各节点表示一个数据集,即在规则推理过程中被操作的相关数据,对应各α节点与各β节点的α内存和β内存中的事实和部分匹配;各节点所表示的数据集被划分为多个数据分区,一个节点上各数据分区可被并行计算。
4.如权利要求3所述的方法,其特征在于,步骤2)包括:
2.1)依次处理RETE网络中的α节点,在数据操作图中加入一个新节点表示当前α节点对应的α内存中的数据;对于RETE网络中的两个α节点x,y,若存在边<x,y>,则在数据操作图中添加边<vx,vy>,其中vi表示α节点i对应的α内存中所有事实形成的数据集Di,i={x,y},且边表示的操作为过滤数据集Dx中不符合α节点y所对应约束的事实,从而得到数据集Dy;
2.2)依次处理RETE网络中的β节点,在数据操作图中加入一个新节点表示当前β节点对应的β内存中的数据;对于RETE网络中的α节点x和β节点y,若其拥有共同的后继β节点z,则在数据操作图中添加边<vx,vz>和边<vy,vz>,其中vi表示α节点i对应的α内存中所有事实形成的数据集Di,i={x,y,z},且两条边表示的操作为对数据集Dx和数据集Dy进行笛卡尔积,再过滤这些笛卡尔积中不符合β节点z所对应的不同条件元素间约束的部分匹配,从而得到数据集Dz。
5.如权利要求1所述的方法,其特征在于,步骤3)使用宽度优先遍历找到数据操作图中各个终止节点的所有祖先节点,为每个终止节点及其祖先节点所构成的子图上所有数据集的一系列数据集操作生成推理作业。
6.如权利要求1所述的方法,其特征在于,步骤5)为推理作业执行图中节点所代表的数据集以及这些数据集上的操作创建并执行推理任务,包括以下步骤:
5.1)将执行图根节点设为当前节点,依次遍历执行图中各个节点;
5.2)对于每个节点vx,判断vx的前驱节点个数:
a.若节点vx只有一个前驱节点vy,且vy对应的数据集Dy有n个数据分区,则创建n个可并行执行的推理任务;
b.若节点vx有两个前驱节点vy和vz,且vy对应的数据集Dy有m个逻辑分区,vz对应的数据集Dz有n个数据分区,则创建m×n个可并行执行的推理任务;
5.3)将5.2)中生成的推理任务发送给任务分配器,重复5.2)直到所有节点被处理完;
5.4)任务分配器接收到5.3)发来的推理任务时按照任务分配策略将推理任务分配到系统中各个执行器执行;各个执行器将分配到本地的推理任务按照优先级递减放入到该执行器的推理任务就绪队列并每次从队列中选择优先级最高的推理任务执行,推理任务执行完成将其从执行器就绪队列删除。
7.如权利要求6所述的方法,其特征在于,步骤5)利用遗传算法实现所述任务分配策略,包括以下步骤:
a)染色体基因编码方式采用数字编码,设有m个执行器,n个待分配推理任务,则染色体编码长度为n,每个基因位表示一个推理任务分配的执行器编号;
b)使用贪心策略计算推理任务的分配位置:将推理任务按照计算量递减放入推理作业就绪队列Qt;每次选择Qt中队首的推理任务,将该推理任务分配到当前负载最小的执行器上并从队列Qt中删除,更新该执行器负载,将执行器负载加上该推理任务的任务量;
c)种群中适应度最高的染色体直接遗传到下一代;繁衍时根据染色体适应度计算染色体的选择概率,并根据选择概率选择父母染色体;随机选择基因位点并将父母染色体基因位点之后的基因交换产生两个子染色体,判断两个子染色体是否进行变异并将两个子染色体加入到下一代种群;
d)判断两个子染色体是否变异的方法为:设置染色体变异概率为η,对于每个子染色体,使用随机函数生成0~1之间的随机数r,若r≤η则对该子染色体变异,否则不进行变异;
对进行变异的染色体随机选择基因位作为变异位,并将变异位的值设置为随机执行器编号;
e)染色体种群适应度计算方式如下:
其中,avgLoad表示由该染色体所表示的推理任务分配策略计算得到的所有执行器负载的平均值,maxLoad表示所有执行器负载的最大值。
8.一种面向海量流式数据的分布式实时规则推理装置,其特征在于,包括:
规则图建立模块,负责建立规则集所对应的规则图;
数据操作图建立模块,负责将规则图转化成相应的数据操作图;
推理作业生成模块,负责根据数据操作图生成推理作业;
优先级设置模块,负责根据各个推理作业对应规则的截止期设置推理作业的优先级,并将推理作业按照优先级递减顺序放入推理作业就绪队列;
推理任务执行模块,负责选择优先级最高的推理作业,创建推理任务,分配并执行推理任务;推理作业执行结束时将其从所述推理作业就绪队列中删除,并判断所述推理作业就绪队列是否为空队列:若不是空队列则继续执行推理作业;若是空队列则表示已完成输入事实与所有规则的匹配。
9.如权利要求8所述的装置,其特征在于,所述规则图用RETE网表示,规则的约束条件被表示成α节点或者β节点,每个α节点有一个α内存,用来存储符合α节点对应约束的所有事实;每个β节点有一个β内存,用来存储满足β节点所对应约束的部分匹配;所述数据操作图为一个有向无环图,图中各节点表示一个数据集,即在规则推理过程中被操作的相关数据,对应各α节点与各β节点的α内存和β内存中的事实和部分匹配;各节点所表示的数据集被划分为多个数据分区,一个节点上各数据分区可被并行计算。
10.如权利要求8所述的装置,其特征在于,所述推理作业生成模块使用宽度优先遍历找到数据操作图中各个终止节点的所有祖先节点,为每个终止节点及其祖先节点所构成的子图上所有数据集的一系列数据集操作生成推理作业;所述推理任务执行模块利用遗传算法实现任务分配策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810192439.7A CN108549939A (zh) | 2018-03-09 | 2018-03-09 | 一种面向海量流式数据的分布式实时规则推理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810192439.7A CN108549939A (zh) | 2018-03-09 | 2018-03-09 | 一种面向海量流式数据的分布式实时规则推理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108549939A true CN108549939A (zh) | 2018-09-18 |
Family
ID=63515986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810192439.7A Pending CN108549939A (zh) | 2018-03-09 | 2018-03-09 | 一种面向海量流式数据的分布式实时规则推理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108549939A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175676A (zh) * | 2019-04-28 | 2019-08-27 | 中国科学院软件研究所 | 一种面向内存受限环境的高性能规则匹配方法 |
CN111814981A (zh) * | 2020-06-23 | 2020-10-23 | 中国科学院软件研究所 | 一种分布式实时规则推理调度方法 |
CN112258208A (zh) * | 2020-07-24 | 2021-01-22 | 北京沃东天骏信息技术有限公司 | 一种对象匹配方法、装置、设备及存储介质 |
CN114090226A (zh) * | 2021-07-13 | 2022-02-25 | 中国科学院软件研究所 | 一种基于负载均衡的流式计算引擎调度方法及系统 |
WO2024103927A1 (zh) * | 2022-11-14 | 2024-05-23 | 京东科技信息技术有限公司 | 混合部署场景下的作业调度方法、装置及电子设备 |
-
2018
- 2018-03-09 CN CN201810192439.7A patent/CN108549939A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175676A (zh) * | 2019-04-28 | 2019-08-27 | 中国科学院软件研究所 | 一种面向内存受限环境的高性能规则匹配方法 |
CN111814981A (zh) * | 2020-06-23 | 2020-10-23 | 中国科学院软件研究所 | 一种分布式实时规则推理调度方法 |
CN112258208A (zh) * | 2020-07-24 | 2021-01-22 | 北京沃东天骏信息技术有限公司 | 一种对象匹配方法、装置、设备及存储介质 |
CN114090226A (zh) * | 2021-07-13 | 2022-02-25 | 中国科学院软件研究所 | 一种基于负载均衡的流式计算引擎调度方法及系统 |
WO2024103927A1 (zh) * | 2022-11-14 | 2024-05-23 | 京东科技信息技术有限公司 | 混合部署场景下的作业调度方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108549939A (zh) | 一种面向海量流式数据的分布式实时规则推理方法和装置 | |
Li et al. | An effective hybrid genetic algorithm and tabu search for flexible job shop scheduling problem | |
Das et al. | Bacterial foraging optimization algorithm: theoretical foundations, analysis, and applications | |
Ranjbar-Sahraei et al. | Evolution of cooperation in arbitrary complex networks | |
Hardiansyah et al. | Solving economic load dispatch problem using particle swarm optimization technique | |
CN108882256A (zh) | 一种无线传感器网络节点覆盖优化方法和装置 | |
Le et al. | ER-DCOPs: A framework for distributed constraint optimization with uncertainty in constraint utilities | |
CN111461284A (zh) | 数据离散化方法、装置、设备及介质 | |
CN111814981B (zh) | 一种分布式实时规则推理调度方法 | |
CN114090226A (zh) | 一种基于负载均衡的流式计算引擎调度方法及系统 | |
Yolcu et al. | An enhanced fuzzy time series forecasting method based on artificial bee colony | |
CN115001978B (zh) | 一种基于强化学习模型的云租户虚拟网络智能映射方法 | |
Xu | A petri net-based hybrid heuristic scheduling algorithm for flexible manufacturing system | |
Iwanaga et al. | Collective behavior in Cascade and Schelling model | |
Reynolds | The control of genetic algorithms using version spaces | |
CN113592257B (zh) | 一种集中作业任务调度方法 | |
Caprihan et al. | Fuzzy systems for control of flexible machines operating under information delays | |
CN107145949A (zh) | 一种多核实时规则推理方法 | |
Zhu et al. | Research on multi-robot scheduling algorithm in intelligent storage system | |
King et al. | The emergence of division of labor in multi-agent systems | |
Prasad et al. | Learning organizational roles for negotiated search in a multiagent system | |
Ostrosi et al. | A fractal-based approach for concurrent engineering | |
Dittrich et al. | Comparison of a spatially-structured cellular evolutionary algorithm to an evolutionary algorithm with panmictic population | |
Sotelo-Figueroa et al. | A comparation between Bee Swarm Optimization and Greedy Algorithm for the Knapsack Problem with bee reallocation | |
CN110415162A (zh) | 大数据中面向异构融合处理器的自适应图划分方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180918 |