
本发明涉及动态演化领域,特别是涉及一种基于改进遗传算法的云服务系统动态演化方法。
背景技术:
随着软件技术的不断发展,云计算逐渐成为主流的应用环境。云计算环境下,服务已成为核心概念,呈现出一切皆服务的趋势。云服务系统将成为软件的主流应用形式。然而,云计算环境的动态性、开放性和复杂性,以及用户需求的频繁变化,要求云服务系统应不断动态演化。没有一个云服务系统可以一直都能满足用户要求,不停运行下去。为了适应开放的云计算环境,云服务系统的各个云服务需要进行相应的演化。由于具有持续可用性的特点,云服务系统动态演化已成为的当前的研究热点。
云环境的复杂性决定了云服务群体数量较大,在进行云服务系统动态演化时,传统优化方法是从单个初始值迭代求最优解,容易误入局部最优解,无法快速高效地完成全局择优演化。
技术实现要素:
本发明的目的是提供一种基于改进遗传算法的云服务系统动态演化方法,所述动态演化方法能够快速高效地完成云服务系统的全局择优演化。
为实现上述目的,本发明提供了如下方案:
一种基于改进遗传算法的云服务系统动态演化方法,所述动态演化方法包括:
对云服务系统中的云服务进行动态演化编码,定义组成所述云服务系统的云服务为:
Si={ni,pi,fi,fdi,fei,Ii,Idi,odi,idi,noi,Ci,Ni(0,1)},
其中,i表示云服务序号,Si表示第i个云服务,ni、pi、fi、fdi、fei、Ii、Idi、odi、idi、noi、Ci和Ni(0,1)为第i个云服务的编码分量,ni表示第i个云服务对应的名称,pi表示第i个云服务的参数,所述参数为所述第i个云服务的内部元素,pi=(ei1,ei2,...,eiM),其中M为第i个云服务的内部元素的个数,eik为在第i个云服务内,第k个内部元素所依赖的除第k个内部元素之外的内部元素的个数,fi表示第i个云服务的功能数,fdi表示第i个云服务的有缺陷的功能数,fei表示第i个云服务的依赖环境的功能数,Ii表示第i个云服务的接口数;Idi表示第i个云服务的有缺陷的接口数,odi表示第i个云服务的出耦合度,idi表示第i个云服务的入耦合度,noi表示第i个云服务的失效次数,Ci表示第i个云服务所属的类,Ni(0,1)表示第i个云服务对应的随机数,所述随机数的取值区间为(0,1);
对所述云服务系统进行初始化,随机生成所述云服务系统中第i类云服务的初始云服务种群;
构建适应度函数,计算所述第i类初始云服务种群中各个体的适应度值;
对所述第i类初始云服务种群进行初次筛选确定候选云服务;
比较所述第i类所有候选云服务的适应度值与第一设定阈值的大小,从中选择出大于或等于第一设定阈值的适应度值对应的第i类候选云服务作为目标云服务,如果第i类云服务的目标云服务超过一个,则采用概率选择方法选择一个作为最终的第i类目标云服务;如果第i类云服务的所有候选云服务的适应度值均小于第一设定阈值,则对所有候选云服务进行交叉操作和变异操作以更新第i类候选云服务;
根据全部各类云服务的最终目标云服务生成目标云服务系统。
可选的,所述随机生成所述云服务系统中第i类初始云服务种群,具体包括:
采用公式cijk=|(cijkmax-cijkmin)×Nij(0,1)+cijkmin|计算各所述第i类云服务种群中第j个个体的每个分量的初始值,其中,||为取整函数,cijk表示第i类云服务种群中第j个个体的第k个分量初始值,cijkmax表示第i类云服务种群中第j个个体的第k个分量在取值范围内的最大值,cijkmin表示第i类云服务种群中第j个个体的第k个分量在取值范围内的最小值;所述随机生成的第i类初始云服务种群的大小可根据需要给定。
可选的,所述构建适应度函数,具体包括:构建适应度函数fij(Q)=w1i*f1ij(FC)+w2i*f2ij(FD)+w3i*f3ij(IC)+w4i*f4ij(CP)+w5i*f5ij(CH)+w6i*f6ij(EC)计算第i类云服务种群中第j个个体的适应度,其中,wri表示第i类云服务的各质量指标的权值,r=1,…,6,f1ij(FC)为第i类云服务种群中第j个个体的功能正确性函数,f2ij(FD)为第i类云服务种群中第j个个体的功能独立性函数,f3ij(IC)为第i类云服务种群中第j个个体的接口正确性函数,f4ij(CP)为第i类云服务种群中第j个个体的耦合性函数,f5ij(CH)为第i类云服务种群中第j个个体的内聚性函数,f6ij(EC)为第i类云服务种群中第j个个体的演化兼容性函数。
可选的,所述第i类云服务种群中第j个个体的功能正确性函数f1ij(FC)为:
f1ij(FC)=1-fdij/fij,
其中,fdij为在第i类云服务种群中第j个个体的功能中,检测出有缺陷的功能数,fij为第i类云服务种群中第j个个体的功能总数;
所述第i类云服务种群中第j个个体的功能独立性函数f2ij(FD)为:
f2ij(FD)=1-feij/fij,
其中,feij为第i类云服务种群中第j个个体中检测出依赖环境的功能数;
所述第i类云服务种群中第j个个体的接口正确性函数f3ij(IC)为:
f3ij(IC)=1-Idij/Iij,
其中,Idij为在第i类云服务种群中第j个个体的接口中,检测出有缺陷的接口数,Iij为第i类云服务种群中第j个个体的接口总数;
所述第i类云服务种群中第j个个体的耦合性函数f4ij(CP)为:
f4ij(CP)=odij/(odij+idij),
其中,odij为第i类云服务种群中第j个个体的出耦合度,idij为第i类云服务种群中第j个个体的入耦合度;
所述第i类云服务种群中第j个个体的内聚性函数f5ij(CH)为:
其中,M为第i类云服务种群中第j个个体内部元素的个数,eijk为第i类云服务种群中第j个个体的第k个元素所依赖的其他元素个数;
所述第i类云服务种群中第j个个体的演化兼容性函数f6ij(EC)为:
f6ij(EC)=1/(noij+1),
其中,noij为第i类云服务种群中第j个个体的新版本替换旧版本时,发生失效的次数。
可选的,所述对各所述第i类云服务的初始云服务种群进行初次筛选确定候选云服务包括:
比较各所述第i类云服务初始种群中各云服务个体对应的适应度值与第二设定阈值的大小,从中选择出大于第二设定阈值的适应度值对应的所述初始云服务个体作为第i类候选云服务;如果没有大于第二设定阈值的适应度值对应的所述第i类初始云服务个体,则对第i类云服务重新进行初始化,生成第i类云服务的初始云服务种群;
可选的,所述变异操作包括:首先通过一个随机数产生变异的次数,然后每次通过变异算子进行随机变异,所述变异算子包括增加功能到所述云服务,从所述云服务中去除功能,从所述云服务中修复功能,修改所述云服务中依赖环境的功能数,引进接口到所述云服务,从所述云服务中去除接口,从所述云服务中修复接口,修改所述云服务的出耦合度,修改所述云服务的入耦合度,修改所述云服务的参数,修改所述云服务的失效次数。
可选的,所述交叉操作包括:首先通过一个随机数产生交叉的次数,然后每次随机选择所述云服务的一个所述编码分量为交叉点,交换所述云服务的编码分量。
可选的,所述概率选择方法包括:每类云服务的各个目标云服务个体被选择的概率和其适应度值成比例,设第i类云服务的目标云服务个体的个数为k,其中目标云服务个体Sij的适应度值为fij,则目标云服务个体Sij被选择作为最终目标云服务的概率为:
其中,f表示适应度值,j表示序号,fij表示第i类云服务的第j个目标云服务个体的适应度值。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明将遗传算法中的选择操作、交叉操作和变异操作引入云服务系统动态演化方法中,由于交叉操作和变异操作的迁移规则是随机的,保证了所述动态演化方法能够在全局范围内择优。同时,与一般的随机搜索方法所进行的无向搜索不同,通过两次选择操作可以从大量种群个体中进行快速优化选择,使云服务一代又一代地优化演化,并快速逼进最优云服务,从而保证云服务系统动态演化时,能够快速高效地完成对大量云服务个体的全局择优。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例云服务系统的动态演化方法的流程图;
图2为本发明实施例交叉操作前的云服务编码图;
图3为本发明实施例交叉操作后的云服务编码图;
图4为本发明实施例旅行路线制定云服务系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于改进遗传算法的云服务系统的动态演化方法,以快速高效地完成云服务系统的全局择优演化。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例云服务系统的动态演化方法的流程图,如图1所示,云服务系统的动态演化方法步骤如下:
步骤100:确定云服务系统中云服务的种类数n;
步骤101:对n类云服务进行编码,定义组成所述云服务系统的云服务为:
Si={ni,pi,fi,fdi,fei,Ii,Idi,odi,idi,noi,Ci,Ni(0,1)},
其中,i表示云服务序号,Si表示第i个云服务,ni、pi、fi、fdi、fei、Ii、Idi、odi、idi、noi、Ci和Ni(0,1)为第i个云服务的编码分量,ni表示第i个云服务对应的名称,pi表示第i个云服务的参数,所述参数为所述第i个云服务的内部元素,pi=(ei1,ei2,...,eiM),其中M为第i个云服务的内部元素的个数,eik为在第i个云服务内,第k个内部元素所依赖的除第k个内部元素之外的内部元素的个数,fi表示第i个云服务的功能数,fdi表示第i个云服务的有缺陷的功能数,fei表示第i个云服务的依赖环境的功能数,Ii表示第i个云服务的接口数;Idi表示第i个云服务的有缺陷的接口数,odi表示第i个云服务的出耦合度,idi表示第i个云服务的入耦合度,noi表示第i个云服务的失效次数,Ci表示第i个云服务所属的类,Ni(0,1)表示第i个云服务对应的随机数,所述随机数的取值区间为(0,1)。
表1云服务系统的编码
步骤102:对所述云服务系统进行初始化,随机生成所述云服务系统中第i类云服务的初始云服务种群,i=1,…,n,所述云服务种群包含多个该类云服务个体;
步骤103:构建适应度函数,计算第i类云服务种群中各个体云服务的适应度值,i=1,…,n;
比较各所述第i类云服务初始种群中各云服务个体对应的适应度值与第二设定阈值的大小,从中选择出大于第二设定阈值的适应度值对应的所述初始云服务个体作为第i类候选云服务;如果没有大于第二设定阈值的适应度值对应的所述第i类初始云服务个体,则对第i类云服务重新进行初始化,生成第i类云服务的初始云服务种群,具体为步骤104到步骤108.
步骤104:判断第i类云服务种群中各云服务个体对应的适应度值是否大于第二设定阈值;
步骤105:如果第i类云服务种群中的云服务个体对应的适应度值小于或等于第二设定阈值,则放弃该云服务个体;
步骤106:如果第i类云服务种群的云服务个体对应的适应度值大于第二预设值,则保留该云服务个体;
步骤107:如果第i类云服务种群中没有剩余云服务个体,则重新初始化生成第i类云服务种群,所述剩余云服务个体为保留下来的云服务个体;
步骤108:如果第i类云服务种群中有剩余云服务个体,则将所述剩余云服务个体作为候选云服务,所述剩余云服务个体为保留下来的云服务个体;
步骤109:判断第i类云服务种群中各候选云服务的适应度值是否大于等于第一设定阈值;
步骤110:如果第i类云服务种群中所有候选云服务的适应度值均小于第一设定阈值,则对所有候选云服务做交叉操作和变异操作,以更新第i类候选云服务;
步骤111:如果第i类云服务种群中存在候选云服务的适应度值大于等于第一设定阈值,则将该候选云服务作为目标云服务,选出第i类云服务种群中所有候选云服务中的目标云服务;
步骤112:判断第i类云服务种群中的目标云服务是否唯一;
步骤113:如果第i类云服务种群中的目标云服务不唯一,则采用概率选择方法选择一个作为最终的第i类目标云服务;
步骤114:根据全部各类云服务的最终目标云服务生成目标云服务系统。
其中,步骤102中,对所述云服务系统进行初始化,随机生成各所述云服务系统中第i类云服务的初始云服务种群,具体包括:
采用公式cijk=|(cijkmax-cijkmin)×Nij(0,1)+cijkmin|计算各所述第i类云服务种群中第j个个体的每个分量的初始值,其中,||为取整函数,cijk表示第i类云服务种群中第j个个体的第k个分量初始值,cijkmax表示第i类云服务种群中第j个个体的第k个分量在取值范围内的最大值,cijkmin表示第i类云服务种群中第j个个体的第k个分量在取值范围内的最小值;所述随机生成的第i类初始云服务种群的大小可根据需要给定。
步骤103构建适应度函数,具体包括:
构建适应度函数fij(Q)=w1i*f1ij(FC)+w2i*f2ij(FD)+w3i*f3ij(IC)+w4i*f4ij(CP)+w5i*f5ij(CH)+w6i*f6ij(EC)计算第i类云服务种群中第j个个体的适应度,其中,wri表示第i类云服务的各质量指标的权值,r=1,…,6,f1ij(FC)为第i类云服务种群中第j个个体的功能正确性函数,f2ij(FD)为第i类云服务种群中第j个个体的功能独立性函数,f3ij(IC)为第i类云服务种群中第j个个体的接口正确性函数,f4ij(CP)为第i类云服务种群中第j个个体的耦合性函数,f5ij(CH)为第i类云服务种群中第j个个体的内聚性函数,f6ij(EC)为第i类云服务种群中第j个个体的演化兼容性函数。
所述第i类云服务种群中第j个个体的功能正确性函数f1ij(FC)为:
f1ij(FC)=1-fdij/fij,
其中,fdij为在第i类云服务种群中第j个个体的功能中,检测出有缺陷的功能数,fij为第i类云服务种群中第j个个体的功能总数;
所述第i类云服务种群中第j个个体的功能独立性函数f2ij(FD)为:
f2ij(FD)=1-feij/fij,
其中,feij为第i类云服务种群中第j个个体中检测出依赖环境的功能数;
所述第i类云服务种群中第j个个体的接口正确性函数f3ij(IC)为:
f3ij(IC)=1-Idij/Iij,
其中,Idij为在第i类云服务种群中第j个个体的接口中,检测出有缺陷的接口数,Iij为第i类云服务种群中第j个个体的接口总数;
所述第i类云服务种群中第j个个体的耦合性函数f4ij(CP)为:
f4ij(CP)=odij/(odij+idij),
其中,odij为第i类云服务种群中第j个个体的出耦合度,idij为第i类云服务种群中第j个个体的入耦合度;
所述第i类云服务种群中第j个个体的内聚性函数f5ij(CH)为:
其中,M为第i类云服务种群中第j个个体内部元素的个数,eijk为第i类云服务种群中第j个个体的第k个元素所依赖的其他元素个数;
所述第i类云服务种群中第j个个体的演化兼容性函数f6ij(EC)为:
f6ij(EC)=1/(noij+1),
其中,noij为第i类云服务种群中第j个个体的新版本替换旧版本时,发生失效的次数。
步骤110中的所述变异操作包括:首先通过一个随机数产生变异的次数,然后每次通过变异算子进行随机变异,所述变异算子包括增加功能到所述云服务,从所述云服务中去除功能,从所述云服务中修复功能,修改所述云服务中依赖环境的功能数,引进接口到所述云服务,从所述云服务中去除接口,从所述云服务中修复接口,修改所述云服务的出耦合度,修改所述云服务的入耦合度,修改所述云服务的参数,修改所述云服务的失效次数。
步骤110中的所述交叉操作包括:首先通过一个随机数产生交叉的次数,然后每次随机选择所述云服务的一个所述编码分量为交叉点,交换所述云服务的编码分量。
具体地,通过步骤108、111和113对各云服务个体进行两次选择操作。
选择操作的目的是为了对大量云服务个体进行快速择优筛选。通过步骤108进行第一次选择操作,从每类云服务种群的大量个体进行初次筛选,选出适应度值大于第二设定阈值的云服务个体作为该类云服务的候选云服务;通过步骤111和113进行第二次选择操作,首先从每类候选云服务中选出适应度值大于或等于第一设定阈值的云服务个体作为该类云服务的目标云服务,如果目标云服务不唯一,则在该类云服务的所有目标云服务中通过概率选择方法选出唯一的云服务作为该类云服务的最终目标云服务,如果该类云服务的所有候选云服务的适应度值均小于第一设定阈值,则对所有候选云服务进行变异操作和交叉操作以进行下一代遗传。所述每类云服务的最终目标云服务作为最优云服务组成最优云服务系统,即目标云服务系统。在所述概率选择方法中,每类云服务的各个目标云服务个体被选择的概率和其适应度值成比例,设第i类云服务的目标云服务个体的个数为k,其中目标云服务个体Sij的适应度值为fij,则目标云服务个体Sij被选择作为最终目标云服务的概率为:
其中,f表示适应度值,j表示序号,fij表示第i类云服务的第j个目标云服务个体的适应度值。
具体地,步骤110中的变异算子是指对云服务系统中的一个现有云服务进行某些改变操作,从而形成一个新的云服务,以达到增加或改变特性的目的。本实施例定义的变异算子如下:
增加一个功能Fk到云服务Si;
从云服务Si中去除功能Fi;
修复云服务Si中有缺陷的功能Fj;
引进一个接口Ik到云服务Si;
从云服务Si中去除接口Ii;
修复云服务Si中有缺陷的接口Ij;
修改云服务Si的出耦合度;
修改云服务Si的入耦合度;
修改云服务Si的参数;
修改云服务Si的失效次数。
步骤110的交叉操作是通过交换云服务中的某些元素来实现的,交叉操作的目的是为了结合两个云服务中的最优特性。例如,假设交叉操作前云服务个体G1和G2的编码如图2所示,若分别选择云服务的有缺陷的功能数以及有缺陷的接口数为交叉点,则两次交叉操作后得到的云服务个体分别为G1′和G2′,经过两次交叉操作后云服务个体G1′和G2′的编码如图3所示。
云服务系统演化的遗传操作包括选择操作、变异操作和交叉操作。本实施例设定的云服务演化终止条件为:当各类云服务种群均选出唯一一个适应度值大于或等于第一阈值的最终云服务个体(即最优云服务个体)时,遗传算法终止。
作为本发明的具体实施例,图4为本发明实施例旅行路线制定云服务系统结构图,如图4所示,一个旅行路线制定云服务系统包括五类云服务,分别是旅行规划服务S1,预定飞机火车票服务S2,预定餐饮服务S3,预定酒店服务S4和旅游服务S5。
下面进行旅行路线制定云服务系统的动态演化,具体步骤如下:
1)对旅行路线制定云服务系统的云服务进行编码,如表2所示为旅行路线制定云服务系统的云服务编码。
表2旅行路线制定云服务系统的编码
2)对所述云服务系统进行初始化,随机生成所述云服务系统中各类云服务的初始种群。
假设每类云服务初始化种群的大小均为10,它们的个体云服务随机生成后的具体参数数据如下表3所示:
表3初始各类云服务种群的质量指标
3)构建适度函数,利用适度函数分别计算五类云服务种群中各云服务个体的适度值;适度函数为fij(Q)=w1i*f1ij(FC)+w2i*f2ij(FD)+w3i*f3ij(IC)+w4i*f4ij(CP)+w5i*f5ij(CH)+w6i*f6ij(EC)。
下面以旅行规划服务为例进行说明:
以旅行规划服务中的一个个体S11为例,计算个体S11的6个质量指标的取值:
f111(FC)=1-fd11/f11=1-2/5=0.6,
f211(FD)=1-fe11/f11=1-1/5=0.8,
f311(IC)=1-Id11/I11=1-1/5=0.8,
f411(CP)=od11/(od11+id11)=2/(2+1)=2/3,
f611(EC)=1/(no11+1)=1/(2+1)=1/3,
根据适度值计算公式计算个体的适度值:f11(Q)=0.2*0.6+0.15*0.8+0.2*0.8+0.15*2/3+0.15*0.5+0.15*1/3=0.625,采用同样的计算方法分别计算出旅游规划服务中其他9个个体的适度值。
4)判断旅行规划服务种群中10个云服务个体的适度值是否大于第二设定阈值,如果小于或等于第二设定阈值,则放弃该云服务个体;如果大于第二设定阈值,则判断该云服务种群中是否有剩余云服务个体,如果没有剩余云服务个体,则重新初始化生成该类云服务种群;如果有剩余云服务个体,则将剩余云服务个体作为候选云服务。
5)判断旅行规划服务中的各候选云服务的适应度值是否大于等于第一设定阈值,如果旅行规划服务种群中所有候选云服务的适应度值均小于第一设定阈值,则对所有候选云服务做交叉操作和变异操作,以更新旅行规划服务的候选云服务;如果旅行规划服务种群中存在适应度值大于等于第一设定阈值的候选云服务,则将此候选云服务作为目标云服务,选出旅行规划服务种群中所有候选云服务中的目标云服务。
6)判断旅行规划服务种群中的目标云服务是否唯一,如果旅行规划服务种群中的目标云服务不唯一,则采用概率选择方法选择一个作为最终的该类的目标云服务。
通过以上步骤得到了云服务中旅行规划服务的目标云服务。与上述步骤相同,可以得到其它四类云服务的目标云服务,根据五类云服务的最终目标云服务生成目标云服务系统。
本发明通过的基于改进遗传算法的云服务系统动态演化方法将遗传算法中的选择操作、交叉操作和变异操作引入云服务系统动态演化方法中,由于交叉操作和变异操作的迁移规则是随机的,保证了所述动态演化方法能够在全局范围内择优。同时,与一般的随机搜索方法所进行的无向搜索不同,通过两次选择操作可以从大量种群个体中进行快速优化选择,使云服务一代又一代地优化演化,并快速逼进最优云服务,从而保证云服务系统动态演化时,能够快速高效地完成对大量云服务个体的全局择优。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。