科技服务关联网络的构建、依赖关系的识别方法及计算机产品

文档序号:26229561发布日期:2021-08-10 16:29阅读:220来源:国知局
科技服务关联网络的构建、依赖关系的识别方法及计算机产品

本发明涉及服务计算技术领域,尤其涉及一种科技服务关联网络的构造方法以及基于科技服务关联网络识别科技服务依赖关系的方法。



背景技术:

随着我国经济的快速发展,科技服务市场需求不断扩大,我国科技服务业呈现出快速发展的趋势。互联网上的科技服务和软件资源变得极大丰富。网上网下和跨领域之间建立了密切业务联系,从而形成了跨网跨域跨世界的大规模网络化复杂服务的生态系统——大服务。大服务环境中的科技服务通过跨网跨域跨世界进行组合,科技服务之间通过建立复杂的依赖及协作关系来处理物理信息空间的大数据和复杂的关联业务。在此背景下,科技服务具有多样化、异构、复杂、海量等特点,服务的系统运行与协同互操作模式等发生了巨大变化。在对科技服务组合进行分布部署执行时,需要考虑两方面因素,一是大服务视角下,科技服务之间可能会传递大量数据,即科技服务之间存在数据依赖,两个科技服务之间的执行距离及网络延迟会影响服务组合的总体执行效率;二是科技服务组合执行时除了存在逻辑上的前后依赖关系,还可能需要频繁交换控制信息,即科技服务之间存在控制依赖,部署在动态、开放环境中分布执行会由于存在设备、网络等不确定性影响服务组合的成功执行。

对上述两个问题进一步剖析,如何识别并发现科技服务之间存在的数据依赖及控制依赖关系是科技服务组合成功执行的前提和基础。在此过程中,需要解决两个问题。一是如何刻画、设计科技服务之间的依赖模型;二是如何通过对已有科技服务关系的挖掘识别并构建服务依赖关系。

目前,对科技服务依赖关系的研究大多集中在两方面,一是基于服务依赖关系实现服务的自动组合或组合服务的演化、优化,二是基于服务依赖关系在组合服务失效替换时保持其事务属性。在实现方法上,大致可以分为三种,一是利用petri网等理论实现服务组合的推理或调优,二是利用机器学习、事件驱动等手段建立服务依赖图,通过服务依赖图支撑服务组合或组合中的服务替换,三是通过服务编排建立相应的服务组合演化模型。

已有研究工作大多基于服务自动组合、演化及失效替换等出发点分析服务依赖,而且大多只关注单一的数据依赖或控制依赖,无法直接应用在复杂多变的大服务环境中。



技术实现要素:

本发明的目的在于克服现有技术只关注单一的数据依赖或控制依赖,无法直接应用在复杂多变的大服务环境的缺陷。

为此,本发明提出了一种科技服务关联网络的构建方法、以及基于该科技服务关联网络识别科技服务依赖关系的方法。本发明通过对已有科技服务组合的处理与解析得到服务之间的控制流和数据流构建科技服务关联网络,并以此为基础利用图遍历算法dfs、社区发现算法louvain配合改进的关联规则挖掘算法hfpgrowth生成数据依赖图和控制依赖图,对科技服务关联网络进行补充优化,从而支撑科技服务组合的分布部署与高效运行,减少服务组合因为服务失效、网络通信等原因导致失败的概率。具体来说:

第一方面,一种科技服务关联网络的构建方法,所述科技服务关联网络由多个节点和各节点的关联关系构成;所述节点由科技服务组成,至少包含唯一标识符id、输入参数集合input、输出参数集合output以及流程中科技服务的属性type,其中属性type包括start、middle、end;所述关联关系包括数据依赖和控制依赖;所述数据依赖记为rdd,表明两个科技服务之间存在业务的数据交互,其中一个科技服务作为数据流前驱,另一个作为数据流后继;所述控制依赖记为rcd,表明两个科技服务的执行存在前后顺序,表现为五种控制结构:sequence结构、or-split结构、or-join结构、and-split结构和and-join结构;

该构建方法包括:

步骤1)获取并解析科技服务组合的数据文件,对解析后的科技服务进行服务信息标注,并提取具有所述关联关系的服务节点对;

步骤2)根据标注的服务信息和提取的服务节点对,构建服务节点数据表以及节点关系数据表,按照“节点-关系-节点”的三元组形式初始化服务关联网络;

步骤3)当有新的科技服务加入时,通过在所述五种控制结构下更新节点和关系来维护科技服务关联网络的更新。

进一步地,所述科技服务为软件定义的原子科技服务,记为stas,表示为十元组:

stas=<id,name,desc,input,output,publisher,type,

community,operations,location>

其中,id是stas的唯一标识符;name是stas的名称;desc是stas的语义描述;input是stas的输入参数集合,input(stas)={ip1,ip2,···,ipn},其中ip代表其中的输入参数;output是stas的输出参数集合,output(stas)={op1,op2,···,opn},其中op代表其中的输出参数;publisher是stas的提供商;type是流程中stas的属性,包括start、middle和end;community是stas所属社区;operations是stas的执行操作,location是stas的地理位置信息。

进一步地,所述科技服务组合的数据文件采用bpmn2.0规范进行描述,数学表达式采用类bnf范式表示为:

stsc::=x|stass⊙stasm|stass◇stasm|stass⊕stasm|stass△stasm|stass||cstasm|stass#stasm

其中,x代表原子科技服务,stass⊙stasm,stass◇stasm,stass⊕stasm,stass△stasm,stass||cstasm分别代表sequence、and-join、or-join、and-split、or-split这五种控制结构;stass#stasm代表stass和stasm之间存在数据流。

进一步地,所述科技服务关联网络采用以下有向图模型进行描述以及存储;

sn=<v,e>,

式中:v是有向图的顶点集,v={stas1,stas2,…,stasn},stasi∈stas,1≤i≤n;e是有向图的边集,e=v×v={(stasi,stasj,r)|stasi,stasj∈v,stasi→stasj(stasi和stasj存在某种关联关系),r是关系的类型,1≤i,j≤n};其中,r∈{"rdd","rcd"},当r=“rdd”时,表示两个服务之间具有数据依赖关系,当r=“rcd”时,表示两个服务之间具有控制依赖关系,当r={"rdd","rcd"}时,表示既存在数据依赖关系,也存在控制依赖关系(也就是说,对于所有的科技服务之间存在的关系可以是数据依赖、控制依赖中的任意一个或者两个)。

进一步地,步骤1)中所述科技服务组合的数据文件,是以bpmn格式存储的数据文件。

进一步地,步骤3)中,通过所述五种控制结构维护科技服务关联网络的更新,具体的更新策略如下:

h)当stass=stas1,stasm≠stas2时,加入服务节点stas2以及关系rcd、rdd;

i)当stass=stas2,stasm=stas1时,则说明两个服务节点都存在,但是关系方向有变化,则节点不变,在两个节点之间加入新的关系;

j)当stass≠stas1,stasm=stas2时,加入服务节点stas1以及关系rcd、rdd;

k)当stass≠stas2,stasm=stas1时,加入服务节点stas2以及相应的关系rcd、rdd;

l)当stass=stas2,stasm≠stas1时,加入服务节点stas1以及相应的关系rcd、rdd;

m)当stass≠stas1,stasm≠stas2时,新建立服务节点stas1、stas2以及关系rcd、rdd;

n)当stass=stas1,stasm=stas2时,则认为已经存在,不做变更。

第二方面,基于上述科技服务关联网络识别科技服务依赖关系的方法,

分为数据依赖的识别和控制依赖的识别,分别具体包括:

a、数据依赖

步骤a1:根据科技服务关联网络中记录的节点的属性type以及科技服务之间的数据依赖关系,获取所有科技服务组合中以start为属性的科技服务节点的组合,作为起始节点的集合;

步骤a2:遍历步骤a1确定的集合,依据属性type及数据依赖关系对科技服务关联网络进行深度优先遍历;

步骤a3:计算并抽取遍历结果中起始节点的不相邻服务节点及其关系,判断是否符合阈值规定的范围,以此得到数据依赖图;

步骤a4:将数据依赖图以计算节点和关系重叠的方式合并到原有科技服务关联网络中;

b、控制依赖

步骤b1:获取科技服务关联网络中的科技服务节点,将每一个节点看作一个社区;

步骤b2:对每个节点,依次尝试把节点分配到其每个邻居所在的社区,计算分配前与分配后的模块度变化,并记录分配后模块度最大的那个点;选择对应模块度最大的点,加入其所在社区;

步骤b3:重复步骤b2,直至每个节点的社区归属不再变化;

步骤b4:对每个符合条件的社区进行缩聚为一个新的节点,此时,边的权重为两个节点内所有原始节点的边权重之和;

步骤b5:迭代以上步骤,直至科技服务关联网络中模块度不再变化。

步骤b6:基于改进的hfpgrowth算法对每个社区中的科技服务组合进行关联规则挖掘,抽取相关的服务节点及其关系得到控制依赖图;

步骤b7:将控制依赖图以计算节点和关系重叠的方式合并到科技服务关联网络中。

进一步地,步骤b6中基于hfpgrowth算法进行频数以及支持度的计算,其中对常规hfpgrowth算法进行了优化,即对于fp树的构造节点提出了一种优化树、表结构的方法,具体为:

保持对事务集合中的科技服务的执行顺序,剔除非频繁单项集后取消其对原始数据的排序操作;

在旧的频繁项头表上增添一个新的hmark属性,该属性用于记录每一个科技服务数据项的头部节点信息,在这种新构建的数据结构基础上如果执行树的插入操作时就会在hmark前插入新节点,并把hmark指向最新插入的节点。

第三方面,一种计算机设备,作为用于识别科技服务依赖关系的服务器,包括处理器和存储器,所述存储器存储有计算机指令,其特殊之处是,所述计算机指令被处理器加载运行时实现上述的识别科技服务依赖关系的方法。

第四方面,一种计算机可读存储介质,存储有计算机指令,其特殊之处是,所述计算机指令被处理器加载运行时实现上述的识别科技服务依赖关系的方法。

与现有技术相比,本发明的优点在于:

本发明利用有向图刻画科技服务关联网络模型,探索了一种通过已有科技服务组合分析科技服务控制流和数据流并构建科技服务关联网络的方法,可以有效地管理海量异构的服务。

本发明利用图遍历算法、社区发现算法及改进的hfpgrowth算法识别并抽取科技服务之间的数据依赖及控制依赖关系生成依赖图补充优化科技服务关联网络,进而能够支撑科技服务组合的分布部署和高效执行。

附图说明

图1示出了根据本发明实施例提出的方法整体流程示意图。

图2示出了根据本发明实施例提出用于定义科技服务关联网络模型中的五种控制结构示意图。

图3示出了本发明实施例的一个应用示例的科技服务关联网络的结果展示。

图4示出了本发明实施例的对科技服务关联网络进行更新的详细示意图。

图5示出了本发明实施例提取的服务stas1和stas2输入输出信息示意图。

图6示出了按照图5中所示的服务stas1和stas2生成的数据依赖。

图7示出了本发明实施例中控制依赖图挖掘的算法过程示意图。

图8示出了本发明实施例改进的算法构建的树的示意图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本发明保护的范围。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本实施例整体上包括三个部分:

定义科技服务关联网络模型;

科技服务关联网络的构建(以及更新);

数据、控制依赖关系的挖掘识别;

科技服务关联网络的构建和数据、控制依赖关系的挖掘识别的流程如图1所示。以下分别详述这三个部分。

一、定义科技服务关联网络模型

科技服务关联网络是一种由节点和关系构成,能够表示服务之间多种关联关系的有向图。其中节点由科技服务组成,关系需要从科技服务组合中获取,利用科技服务关联网络模型能够有效的刻画服务之间错综复杂的关系。相关定义如下:

-1.1服务(atomicservice,记作as):是指服务提供者与消费者之间为共同创造价值而进行的某种交互协作,往往表现为交互界面、功能实体等。它可以由软件实现,也可以由人工或人机实现,可以是不可再分的原子服务,也可以是抽象服务。为了简化操作,本文暂时只考虑软件定义的原子科技服务(scienceandtechnologyatomicservice,记作stas)。可以表示为十元组:

stas=<id,name,desc,input,output,publisher,type,community,operations,location>

其中,id是stas的唯一标识符;name是stas的名称;desc是stas的语义描述;input是stas的输入参数集合,input(stas)={ip1,ip2,···,ipn},其中ip代表其中的输入参数;output是stas的输出参数集合,output(stas)={op1,op2,···,opn},其中op代表其中的输出参数;publisher是stas的提供商;type是流程中stas的类型标识,有start、middle、end等;community是stas所属社区;operations是stas的执行操作,location是stas的地理位置信息,使用经纬度进行表示。

-1.2科技服务关联网络(scienceandtechnologyservicenetwork,记作stsn,后续简称服务关联网络):是记录服务之间关联关系的网络。它可表示为一个有向图。

sn=<v,e>,

式中:v是有向图的顶点集,v={stas1,stas2,…,stasn},stasi∈stas,1≤i≤n;e是有向图的边集,e=v×v={(stasi,stasj,r)|stasi,stasj∈v,stasi→stasj(stasi和stasj存在某种关联关系),r是关系的类型,1≤i,j≤n}。其中,r∈{"rdd","rcd"},当r=“rdd”时,表示两个服务之间具有数据依赖关系,当r=“rcd”时,表示两个服务之间具有控制依赖关系。

-1.3科技服务组合(scienceandtechnologyservicecomposition,记作stsc,后续简称服务组合):将多个科技服务组合在一起完成复杂的业务需求,采用bpmn2.0规范进行描述。数学表达式采用类bnf范式表示为:

stsc::=x|stass⊙stasm|stass◇stasm|stass⊕stasm|stass△stasm|stass||cstasm|stass#stasm

其中x代表原子科技服务。stass⊙stasm,stass◇stasm,stass⊕stasm,stass△stasm,stass||cstasm分别代表图2所示sequence、and-join、or-join、and-split、or-split五种控制结构。这五种变化组合可以构成绝大部分的复杂的控制结构,stass#stasm代表stass和stasm之间存在数据流。

-1.4数据依赖(datadependence,记作rdd):在科技服务组合执行的过程中,如果两个stas之间存在业务的数据交互,即存在科技服务stass,stasm,使得output(stass)∩input(stasm)≠φ&&q(output(stass),input(stasm))>y,则称stass,stasm之间存在数据依赖关系记作rdd(stass,stasm)。stass称作stasm的数据流前驱,stasm称作stass的数据流后继。其中y是阈值,q(c1,c2)表示两个集合的交集阈值函数,参数c代表集合。

-1.5控制依赖(controldependence,记作rcd):在科技服务组合执行的过程中,服务之间的执行是有前后顺序的,这是科技服务业务逻辑之间的依赖,称之为控制依赖。五种结构下的控制依赖描述如下:

1)sequence结构下,有stass⊙stasm,表示服务stass执行后才能够执行stasm。此时stass是stasm的控制前驱,stasm是stass的控制后继,则stass和stasm之间存在控制依赖,记作rcd(stass,stasm);

2)or-split结构下,有stass◇stasi,表示在服务stass执行后选择执行stas1,stas2,…,stasn中的其中一个服务。在此情况下,任意stasi要么不执行,要么一定在stass后执行,所以则stass和stasi之间存在控制依赖,记作rcd(stass,stasi);

3)or-join结构下,有stasi⊕stasm,表示在服务stas1,stas2,…,stasn中至少一个执行完毕后才能够执行服务stasm。在此情况下,stasi和stasm之间存在控制依赖,记作rcd(stass,stasi);

4)and-split和and-join结构与前面类似,不再赘述。

二、科技服务关联网络构建及更新

构建网络的初始数据就是一系列科技服务组合的集合,包含的科技服务数量不等,数据经过清洗和预处理后,通过遍历并解析计算已有服务组合得到包含的科技服务及其存在的数据流、控制流和位置关联三种关系,转化成有向图模型进行描述与存储,得到科技服务关联网络,当有新的服务组合加入时,需要识别并判断服务节点、关系在已有科技服务关联网络中是否存在并根据不同的策略更新合并。这里以数据依赖和控制依赖两种关系为例,具体步骤如下。

步骤1:获取服务组合的数据文件,对其解析后服务组合下的科技服务进行详细的服务信息标注,同时提取具有关联关系(rdd、rcd)的服务节点对;

步骤2:构建服务节点数据表以及节点关系数据表,根据“节点-关系-节点”的三元组形式初始化科技服务关联网络,如图3所示;

步骤3:当有新的科技服务加入时,首先判断服务节点及关系在已有科技服务关联网络中是否存在;同时考虑sequence、and-join、or-join、and-split、or-split五种结构下节点和关系的更新替换。

优选地,所述科技服务的详细信息包括input、output以及type等属性;

优选地,步骤2包括:对于所有的科技服务之间存在的关系可以是数据依赖、控制依赖中的任意一个或者两个。

优选地,步骤3包括:对于五种结构下的rdd、rcd下的关系更新策略具体如图4所示(为了方便展示,图中as代表stas):

·当stass=stas1,stasm≠stas2时,加入服务节点stas2以及关系rcd、rdd;

·当stass=stas2,stasm=stas1时,则说明两个服务节点都存在,但是关系方向有变化,则节点不变,在两个节点之间加入新的关系;

·当stass≠stas1,stasm=stas2时,加入服务节点stas1以及关系rcd、rdd;

·当stass≠stas2,stasm=stas1时,加入服务节点stas2以及相应的关系rcd、rdd;

·当stass=stas2,stasm≠stas1时,加入服务节点stas1以及相应的关系rcd、rdd;

·当stass≠stas1,stasm≠stas2时,新建立服务节点stas1、stas2以及关系rcd、rdd;

·当stass=stas1,stasm=stas2时,则认为已经存在,不做变更。

三、数据、控制依赖关系挖掘

上述已构建的科技服务关联网络的关系中全部都是根据初始的科技服务组合数据进行构建的,也就是关系都是在相邻节点之间直接建立的,但是缺少了间接性关系。所以本实施例提出了一种基于科技服务关联网络进行科技服务数据依赖和控制依赖关系识别的方法。该方法包括:

1)数据依赖

步骤1:利用关联网络中记录的服务节点的type类型属性(start、middle、end)以及科技服务之间的数据依赖关系,找到所有的start标志的服务组合起始节点的集合;

步骤2:遍历上述集合,依据类型属性及数据依赖关系对科技服务关联网络进行深度优先遍历

步骤3:计算并抽取上述遍历结果中起始节点的不相邻服务节点及其关系,判断是否符合阈值规定的范围,以此得到数据依赖图;

步骤4:将数据依赖图以计算节点和关系重叠的方式合并到原有科技服务关联网络中。

2)控制依赖

步骤1:获取科技服务关联网络中的科技服务节点,将每一个节点看作一个社区,下边对louvain算法进行介绍;

louvain算法基于模块度进行社区发现,该算法在效率和效果上表现都比较好,通过争取最大化整个科技服务关联网络的模块度来发现更加深层次的网络结构,公式如下:

其中

其中m为图中边的总数量,ki表示所有指向节点i的连边权重之和,kj同理。aij表示节点i,j之间的连边权重。δ(u,v)判断节点u和v是否在同一社区。

步骤2:对每个节点,依次尝试把节点分配到其每个邻居所在的社区,计算分配前与分配后的模块度变化,并记录分配后模块度最大的那个点。选择对应模块度最大的点,加入其所在社区;

步骤3:重复步骤b2,直至每个节点的社区归属不再变化;

步骤4:对每个符合条件的社区进行缩聚为一个新的节点,此时,边的权重为两个节点内所有原始节点的边权重之和;

步骤5:迭代上述步骤,直至科技服务关联网络中模块度不再变化。

步骤6:基于改进的hfpgrowth算法对每个社区中的科技服务组合进行关联规则挖掘,抽取相关的服务节点及其关系得到控制依赖图;

步骤7:将控制依赖图以计算节点和关系重叠的方式合并到科技服务关联网络中。

优选地,在步骤6中,传统hfpgrowth算法中一个具备完整频繁项信息的fp树的构建过程是通过利用fp-tree构造算法完成的,其中频繁项头表中拥有itemname(项名称),count(到达节点子路径数),nextlink(指针,指向fp树中同名的第一个节点)。在此过程中,首先构造fp树是无序的,导致后序遍历出大量无序结果,这在科技服务关联网络中是不允许的,因为服务之间存在依赖关系,即有业务逻辑顺序。其次,在构造fp树的过程中,如果新增节点在树中要新启一个分支,即没有同父节点,此时需要在项头表中找到与该节点同itemname的节点,遍历其列表,直至最后一个同名节点的域,向最后追加此节点。这样每当数据量比较大的时候,每次都要遍历到最后再追加,执行效率会受影响。

针对传统hfpgrowth算法的上述问题,本实施例在fp树的构造节点提出了一种优化树、表结构的方法,具体如下:

首先要绝对保持对事务集合中的科技服务的执行顺序,剔除非频繁单项集后取消其对原始数据的排序操作。

需要在旧的频繁项头表上增添一个新的hmark属性,此属性的作用是用于记录每一个科技服务数据项的头部节点信息,在这种新构建的数据结构基础上如果执行树的插入操作时就会在hmark前插入新节点,并把hmark指向最新插入的节点。这样可以避免遍历操作,减少fp树的构建时间。

优化后的项头表数据结构如表1所示:

表1.项头表数据结构

以下再通过一个具体的应用示例来说明本方法的有效性。

例如:高速公路上检测到有事故发生,一方面是要进行事故信息的采集,包括事故发生时间地点、当前路段的流量和车速信息等,根据这些数据对事故级别进行判定,一方面根据判定的结果触发一系列的车辆调动等处置方案,对于这些服务组合进行分析,发现部分科技服务之间需要传输大量数据,比如事故判定的前提是需要路段流量计算、气象监测、路段摄像头等服务操作提供的大量实时数据才能进行事故计算操作,如果将这些相互具有强依赖性的科技服务随机部署在不同的节点或者网络环境上,大量数据传输时网络距离或网络开销会直接影响组合服务的执行效率,同时频繁的信息交互会由于动态、开放环境下设备、网络等不确定性影响执行效果,在本实施例的基于关联网络的服务依赖关系识别系统中,可以通过科技服务的各项属性建立科技服务关联网络,然后通过对服务以及网络进行分析识别得出具有依赖关系的服务,从而提高整体组合服务的执行效率;

1.获取已有的组合服务数据集,建立科技服务关联网络;

1)数据源

首先通过读取txt或者csv格式存储的服务组合的数据,示例如下:

检测事故科技科技服务->事故信息收集科技科技服务->事故计算科技服务->事故判定科技服务->数据可视化科技服务

路段摄像科技服务/收费站流量科技服务/气象检测科技服务/路段流量监控科技服务->事故信息收集科技服务

事故处理科技服务->应急车辆调动科技服务->救护车/警车调度科技服务->查找并通知科技服务

事故处理科技服务->车辆管控科技服务->计算路段流量科技服务->车辆导流科技服务

车辆管控科技服务->确定收费站车流科技服务->收费站管控科技服务

事故判定科技服务->事故处理科技服务

上述服务拥有如下属性:

stas=<id,name,desc,input,output,publisher,type,community,operations,location>

其中input和output是科技服务的输入以及输出,基于服务组合对每个服务的type属性进行标注,规定服务组合的起始服务、中间的过程服务、结束服务的type属性分别为start、middle、end;

2)提取数据流和控制流

提取每个前后组合服务的input以及output属性,例如上述示例中的a-b路段的事故信息收集服务(stass)->事故计算服务(stasm),stass的output属性如下:

当stasm进行事故计算的时候需要的输入条件中包含"a-b路段车流量"和"a-b区域天气检测"两个条件,二者有重复的部分,重复阈值大于指定的值,所以二者存在数据依赖关系rdd,当stass和stasm在业务上存在前驱后继的关系的时候,我们认为二者存在适当的控制依赖关系rcd;

3)构建以及更新科技服务关联网络

1)将所有的科技服务的信息存储到node_csv中;

2)将所有的科技服务之间的关系存储到relations_csv中;

3)使用neo4j中的loadcsv命令将node_csv和relations_csv全部导入到neo4j中初始化科技服务关联网络,如图3所示;

4)更新策略:

以上述ass和asm为例,如果此时有新的服务组合(as1,as2)加入进来,经过前述的更新策略结果如图4所示:

2.基于科技服务关联网络进行数据依赖图以及控制依赖图的挖掘;

(1)数据依赖图的获取

1)首先获取所有服务组合中以start为标志的科技服务节点的组合,为了方便后续图的遍历使用。

2)选定startnode,接着进行图的深度优先遍历,获取所有以startnode开始的服务组合流程子图。

3)递归遍历与startnode不相邻的节点,并计算其与starnode是否存在数据依赖关系,如果发现有符合要求的节点,将其添加到return的结果中;

4)从实际的场景中确定阈值y(as1输出、as2的输入、二者重合的部分综合判定);

5)从return的结果图中提取服务的前驱后继的节点的输入输出,配合阈值y确定强弱依赖,这里我们以服务as1和as2为例进行说明,如图5所示。生成的数据依赖如图6所示。

6)以计算节点和关系重叠的方式将新的关系合并到科技服务关联网络中。

(2)控制依赖图的获取

考虑到在实际环境中,科技服务关联网络会出现分布不均匀的情况,表现为有向图上的节点入度或出度从1到n分布,有些节点只存在单路径。这些数据在关联分析时对结果影响很小但是对分析效率影响很大,因此提出一种社区发现与关联规则挖掘组合方法,首先使用社区发现算法(louvain)将科技服务关联网络划分成多个社区,每个社区内形成一个服务网络,去掉处于独立状态的服务组合,形成有向连通图。然后在传统fpgrowth算法基础上进行改进,提出hfpgrowth算法对筛选后的服务社区进行关联规则分析,将分析结果构建控制依赖图。具体的步骤如下:

a.社区划分

1)从1-15的科技服务id形成科技服务关联网络,将网络中的每个节点看为一个社区,如图7所示。

2)将节点1号分别放入2、4、0、7四个新的社区中,通过模块度计算公式计算模块度变化,同时记录分配后模块度最大的点,更换不同节点继续进行。

3)重复过程2,直至每个节点社区归属不再发生变化,这里形成了四个社区,分别是{1,2,0,4,5}、{8,15,14,12,10,9}、{3,7,6}、{11,13}。

4)压缩上述四个社区,将其压缩为一个新的节点,计算边的权重,分别为14、4、16、2。

5)继续迭代步骤,直至模块度不变化。

b.hfpgrowth算法挖掘

假设现在拥有如下的10个事务(sd)和5个项,其中a-e分别带别前述中的收费站科技服务(收费站流量监控、摄像头服务、事故计算等),为了简化,使用字母a-e表示,如表2所示;

表2.关联项数据集

1)根据上述的数据集计算频数以及支持度frepmap;

2)构建空的树tree,树的节点的属性treenode拥有私有的计数器以及前驱后继等属性;

3)构建项头表head,使用map<string,treenode>进行存储;

4)利用循环for(iteminsd)向树中插入节点,这里每次插入的时候都要进行树的遍历判断,判断新插入的节点是否已经在树中存在,比如上述的事务表中,当tid为2进行插入{b,c,d}的时候,发现已经有了第一次插入的b重复了,所以此时计数器+1;否则执行步骤5。

5)创建新的树节点,使其计数器重置为1,并加入到树中,同时通过head.add方法更新新的hmark节点,即在与同名的频繁项头表,插入到hmark前,并设置此节点为新的hmark;

6)对上述步骤进行递归操作,直至事务为空即可,构建的树如图8所示;

7)使用fptree.getassociaterule()方法进行关联规则的挖掘,同时构建控制依赖图;

8)按照计算节点和关系重叠的方式合并到科技服务关联网络中。

综上,对于科技服务关联网络的构建,本实施例获取样本文件的服务数据集进行标注,同时提取具有关联关系的节点对以构建科技服务关联网络,然后通过五种控制结构维护关联网络的更新。对于基于该科技服务关联网络的科技服务依赖关系识别,本实施例通过dfs遍历科技服务关联网络获取数据依赖图,通过louvain对网络进行了社区划分,剔除掉了边缘单节点的情况,然后在原始的fpgrowth算法进行了改造,在项头表的位置添加了新的hmark,减少了fp树的构造时间;本实施例可以提高服务组合整体运行的效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1