融合启发式和智能计算的云工作流分段在线调度优化方法
技术领域
本发明涉及计算机技术、信息技术和系统工程领域,具体涉及一种云工作流调度优化方法,更具体的说,尤其涉及一种融合启发式和智能计算的云工作流分段在线调度优化方法。
背景技术
云计算环境下的工作流,简称“云工作流”,是云计算与工作流相关技术的整合,在需要高效计算性能和大规模存储支撑的跨组织业务协作、科学计算等领域具有广泛的应用前景。在云工作流中,任务与任务之间存在着时序约束,执行时通常以虚拟机作为计算资源的最小分配单位负责接收并处理这些任务。云工作流调度是指在满足任务时序和用户需要约束下如何把云工作流中的任务分配到合适的虚拟机上,以及如何安排被分配到虚拟机上的任务的执行顺序,即要解决两个方面的问题:任务分配和任务执行顺序。云工作流调度直接决定了整个云工作流系统的性能,已成为云工作流系统的一个重要研究内容。
当前云工作流调度优化方法可以分为三类:
1)启发式方法,是指工作流任务分配和执行顺序都用启发式方法生成,如:Heterogeneous Earliest Finish Time即HEFT、Critical Path On a Processors即CPOP、Levelized Min Time即LMT、Dynamic Level Scheduling即DLS、Dynamic Critical Path即DCP、Longest Dynamic Critical Path即LDCP等方法;
2)智能计算方法,是指工作流任务分配和执行顺序都通过智能计算方法来搜索生成;如:遗传算法GA、粒子群优化算法PSO、模拟退火算法SA等方法;
3)结合启发式的半智能计算方法,是指工作流任务分配通过智能计算方法来搜索生成而任务执行顺序则根据智能计算方法搜索生成的任务分配方案采用基于优先级的启发式方法生成,或工作流任务执行顺序通过智能计算方法来搜索生成而任务分配则根据智能计算方法搜索生成的任务执行顺序通过基于任务最早完成时间的启发式方法来生成。
然而,现有的这些云工作流调度优化方法有着如下缺点:
1)启发式方法能在较短的时间获得一个调度优化方案,适用于在线实时调度,但其质量通常不是很高而且依赖于工作流的类型;
2)智能计算方法的算法效率依赖于编码与解码、进化迭代策略的设计及控制参数的选择等,其中,结合启发式的半智能计算方法搜索的解空间即调度方案是不完整的,因此其理论上存在搜索不到最优调度方案的可能性,同时在算法中需要不断调用启发式方法,其时间效率也不是很高;智能计算方法其理论上可以实现全域搜索,但采用全域搜索会导致搜索效率降低;总体来说智能计算方法的求解质量要优于启发式方法,但其求解时间要高于启发式方法,并不适用于在线实时调度优化;
因此,亟需设计一种更高效方法来解决云工作流在线实时调度优化问题。
发明内容
为了克服启发式方法解的质量通常不是很高而且依赖于工作流的类型,而智能计算方法时间效率不高并不适用于在线实时调度优化,本发明提供了一种既能适用于在线实时调度又能发现高质量解的云工作流调度优化方法。
本发明解决其技术问题所采用的技术方案如下:一种融合启发式和智能计算的云工作流分段在线调度优化方法,包括以下步骤:
步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,...,tI},其中I是任务的数量,ti表示任务i,即编号为i的任务;
获取任务间的时序关系:任务i的父任务集PR
i,任务i的子任务集SC
i,其中i=1,2…,I;
获取任务相关参数:任务i的长度t
i.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表t
i.IFL,任务i被处理后产生的输出文件列表t
i.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i
+的父任务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i
+的输入文件,即:
获取云计算环境下的虚拟机集VM={vm1,vm2,…,vmJ},其中J是虚拟机的数量,vmj表示虚拟机j,即编号为j的虚拟机;
获取虚拟机相关参数:虚拟机j的计算能力vmj.ps,虚拟机j的带宽vmj.bw,其中j=1,2…,J;
获取任务与虚拟机之间的支持关系:虚拟机j可以处理的任务集Tj,其中j=1,2…,J;可以处理任务i的虚拟机集VMi,其中i=1,2…,I;
步骤2:计算任务的排序值rank;
先计算t
i执行时的平均处理时间
需要从共享数据库获得输入文件的平均传输时间
需要从其它虚拟机获得输入文件的平均传输时间
ti执行时的平均处理时间计算如下:
ti执行时需要从共享数据库获得输入文件的平均传输时间为:
ti执行时需要从其它虚拟机获得输入文件的平均传输时间为:
然后自下而上计算任务的排序值rank,其计算过程如下:
对于没有子任务的结束任务i:
其它任务的排序值rank采用如下递归公式进行计算:
步骤3:计算任务的层次值;
对于没有父任务的开始任务i,其层次值为:
leveli=1 (7)
其它任务的层次值采用如下递归公式进行计算:
步骤4:基于动态关键任务优先调度的启发式方法生成第一阶段的任务调度方案;
所述基于动态关键任务优先调度的启发式方法生成第一阶段的任务调度方案包括如下步骤:
步骤A1:系统状态初始化:令虚拟机可得时间段列表vatl′
j={[0,M]},j=1,2,…,J,其中M为一个接近无穷大的数;令任务的就绪时间rt′
i=0、任务集P(t
i)=PR
i,i=1,…,I;令变量k=1;令任务集
UT=T;把UT中
的t
i移到RT中;
步骤A2:从RT中取出优先级
最大的t
i;如果t
i的就绪时间rt
i′小于ξ,那么转到步骤A3,否则转到步骤A7;
步骤A3:令ti的可得虚拟机集AVMi=VMi,计算把ti分别分配给AVMi中的每个虚拟机后ti的完成时间:
步骤A3.1:从AVMi中取出一个虚拟机,不妨设为vmj;
步骤A3.2:计算t
i分配给vm
j处理后的执行时间
步骤A3.3:在vatl′j中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti,j和υj-eti,j≥rt′i;
步骤A3.4:计算ti分配给vmj处理后的开始时间si,j=max{νj,rt′i},完成时间fi,j=si,j+eti,j;
步骤A3.5:若AVMi不为空,则转到步骤A3.1,否则转到步骤A4;
步骤A4:若对于任意vmj∈VMi,si,j≥ξ,那么转到步骤A7;否则在满足si,j<ξ的虚拟机中按顺序找出能最早完成ti的虚拟机,不妨设为vmj,转到步骤A5;
步骤A5:把ti分配给vmj:
步骤A5.1:令ST=ST∪ti,g′I+k=i,g′i=j,k=k+1;ti的开始时间si=si,j,ti的完成时间fi=fi,j;
步骤A5.2:在虚拟机可得时间段列表vatl′j中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A6:在所有
中删除t
i;把UT中
的
移到RT中;
步骤A7:如果RT不为空,则转到步骤A2,否则转到步骤A8;
步骤A8:完成第一阶段的调度,获得已调度的任务集ST,已调度任务的虚拟机分配g′i、完成时间fi,ti∈ST,已调度任务的调度顺序g′I+k,1≤k≤|ST|,及完成第一阶段任务调度后虚拟机的可得时间段列表vatl′j和所有任务的就绪时间rt′i;
其中:
是当t
i的父任务的虚拟机分配已确定的情况下t
i执行时需要从虚拟机获得输入文件的平均传输时间,
ξ:是第一阶段与第二阶段的临界点,即遗传算法获得一个优化调度方案所需的时间;
是把t
i分配给vm
j处理时需要从其它的虚拟机获得输入文件的文件传输时间,
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
步骤5:基于遗传算法获得第二阶段任务的调度方案;
步骤5.1:采用基于层次的个体随机生成方法生成N个不同的个体形成当代种群;
所述个体采用2I位整数编码,I为任务数量,其方法如下:ch={g
1,…,g
I,g
I+1,…,g
2I},基因g
i是一个非负整数,其中,{g
1,…,g
I}是虚拟机分配列表,g
i表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机g
i,g
i∈VM
i,i=1,…,I,例如:g
1=2表示1号任务是分配给2号虚拟机的;{g
I+1,…,g
2I}是任务调度顺序列表,是1,…,I的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,g
I+i表示第i个被调度的任务的编号,即任务g
I+i是第i个被调度的,例如g
I+1=3,表示第1个调度的任务是3号任务;由于t
i∈ST在第一阶段已调度,因此对于任何一个个体始终有:
g
i=g′
i;
g
I+k=g′
I+k;
所述采用基于层次的个体随机生成方法包括如下步骤:
步骤B1:令任务集UT=T-ST;令所有任务的就绪时间rt″i=rt′i,i=1,…,I;初始化虚拟机的可得时间段列表vatl″j=vatl′j,j=1,2,…,J;令基因gi=g′i,ti∈ST;令基因gI+k=g′I+k,1≤k≤|ST|;令变量δ=|ST|+1;
步骤B2:从UT中随机取出一个层次值最小的任务,不妨设为ti;
步骤B3:从VMi中随机选择一个虚拟机,不妨设为vmj,把ti分配给vmj:
步骤B3.1:令gI+δ=i,gi=j,δ=δ+1;
步骤B3.2:计算t
i分配给vm
j处理后的执行时间
步骤B3.3:在vatl″j中从早到晚找出一个可得时间段[νj,υj],满足υj-νj≥eti和υj-eti≥rt″i;
步骤B3.4:计算ti分配给vmj处理后的开始时间si=max{νj,rt″i},完成时间fi=si+eti;
步骤B3.5:在虚拟机可得时间段列表vatl″j中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤B4:如果UT不为空,则转到步骤B2,否则转到步骤B5;
步骤B5:输出一个个体ch={g1,…,gI,gI+1,…,g2I},计算其适应度值,操作结束;
步骤5.2:对当代种群进行N次基于偏好的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用单点变异操作;
所述基于偏好的参数化均匀交叉操作包括如下步骤:
步骤C1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体,不妨设为ch
p1、ch
p2,且ch
p1优于ch
p2;令变量δ=1、子体
步骤C2:如果δ≤I+|ST|,则转到步骤C3;如果I+|ST|<δ≤2I,则转到步骤C4;如果δ>2I则转到步骤C5;
步骤C3:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首元素放到chc的尾部,并从chp2中删除首元素,否则从chp2中取出首元素放到chc的尾部,并从chp1中删除首元素;δ=δ+1,转到步骤C2;
步骤C4:生成一个随机数λ∈[0,1),如果λ<pb,那么从chp1中取出首元素放到chc的尾部,并从chp2中删除该元素,否则从chp2中取出首元素放到chc的尾部,并从chp1中删除该元素;δ=δ+1,转到步骤C2;
其中,pb∈(0.5,1)为偏好概率;
所述单点变异操作包括如下步骤:
步骤D1:产生一个随机数λ1∈[0,1),如果λ1<pm,则转步骤D2,否则转步骤D5;
步骤D2:产生一个随机数λ
2∈[0,1),如果λ
2<0.5,则从i≤I且
中随机选择一个基因g
i转到步骤D3,否则从i>I+|ST|中随机选择一个基因g
i转到步骤D4;
步骤D3:从可以处理任务i的VMi中重新随机选择一个虚拟机vmj,gi=j,转到步骤D5;
步骤D4:如果在T-ST中存在任务gi的父任务,那么从gi开始向前找到任务gi的第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+|ST|+1;如果在T-ST中存在任务gi的子任务,从gi开始向后找到任务gi的第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I,在[pos1,pos2]之间重新随机选择一个位置插入gi;
步骤D5:变异操作结束;
其中:pm∈[0,1)是变异率;
步骤5.3:对新种群中的每个个体采用基于插入模式的串行个体解码和LDI方法改进;
所述基于插入模式的串行个体解码包括如下步骤:
步骤E1:令所有任务的就绪时间rt″i=rt′i,i=1,…,I;初始化虚拟机的可得时间段列表vatl″j=vatl′j,j=1,2,…,J;令变量k=|ST|+1;
步骤E2:选取编号为gI+k的任务,不妨设i=gI+k;
步骤E3:基于插入模式把任务i分配给虚拟机gi:
步骤E3.4:在虚拟机可得时间段列表vatl″
j中删除
插入区间长度大于0的
和
步骤E4:令k=k+1,如果k≤I则转到步骤E2,否则步骤E5;
步骤E5:获得所有任务的开始时间和完成时间:si、fi,i=1,…,I,计算适应度值;操作结束;
所述LDI方法包括如下步骤:
步骤F2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤F3,否则转到步骤F4;
步骤F4:令任务集DTj′=Tj′-ST,转到步骤F5;
步骤F5:如果DTj′不为空,则从DTj′中按顺序取出一个其所在虚拟机j″的负载是最高的任务i′,转到步骤F6;否则转到步骤F7;
步骤F6:令g
i′=j′,形成新的个体
采用基于插入模式的串行个体解码方法对
进行解码,如果有改进则用此改进的个体替换原个体,转到步骤F7;否则转到步骤F5;
步骤F7:LDI操作结束;
步骤5.4:从当代种群和新种群中从优到劣选出N个不同的个体形成下一代种群;
步骤5.5:令下一代种群为当代种群;判断是否满足进化终止条件,如满足,则转到步骤6,否则,转到步骤5.2;
所述终止条件为运行到第一阶段与第二阶段的临界点ξ;
步骤6:输出当代种群中的最优个体,其对应的调度方案即为优化方案。
进一步的,所述适应度值为工作流响应时间rs,其计算方法如下:
其中:rf
i是任务i的响应时间,
SFL
i是任务i输出给共享数据库的输出文件集,即
适应度值越小,个体越优。
进一步的,所述步骤C1中采用锦标赛法从当代种群中随机选择一个个体的具体步骤如下:首先从当代种群中随机选择2个不同的个体,然后根据适应度值比较这两个个体的优劣,返回优的个体。
本发明的有益效果在于:
(1)本发明采用融合启发式和智能计算的分段调度优化方法,求解时间即响应时间等于启发式方法的求解时间,而解的质量则近似于用智能计算方法求解的质量,因此本发明提出的技术方案在能适应实时在线调度的情况下,有效提高了解的质量。
(2)在生成第一阶段的任务调度方案的过程中,相对传统的启发式调度方法,本发明设计采用的任务优先级会随着调度的进行而不断调整,能更好地反映当前未调度任务的紧急程度,因此通常其找到更好的调度方案。
(3)在用遗传算法获得第二阶段的调度方案中,相对于结合启发式的半智能计算方法及基于分层编码的智能计算方法,本发明设计采用的一维编码方法,任何一个调度方案都可以有一个个体与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(4)在用遗传算法获得第二阶段的调度方案中,相对于基于非插入模式和并行的解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行解码方法通常能找到更好的调度方案。
(5)在用遗传算法获得第二阶段的调度方案中,相对于一般的基于优先级的编码方式,本发明设计采用的基于拓扑排序的任务调度顺序编码方法,考虑了任务之间的时序关系,这样解码方法就比较简单,能有效提高解码的效率,进而提高了算法的整体效率。
(6)在用遗传算法获得第二阶段的调度方案中,本发明设计采用了考虑传输时间的负载均衡策略LDI,增强了个体的邻域寻优能力,从而能提高整个算法的寻优能力和搜索效率。
(7)在用遗传算法获得第二阶段的调度方案中,相对于传统的随机初始化方法,本发明基于层次的随机个体生成方法,这样可以使算法可以在最优方案附近开始搜索,从而缩短算法的收敛时间。
(8)在用遗传算法获得第二阶段的调度方案中,针对提出的一维整数编码方法,本发明设计了一种新的简单而有效的交叉和变异方法,如果父体是有效合法的,那么用该方法能确保生成的子体也是有效的合法的。
附图说明
图1是本发明一种融合启发式和智能计算的云工作流分段在线调度优化方法的流程示意图。
图2是本发明实施例中Montage工作流任务间的时序关系图。
具体实施方式
下面结合图1、图2及实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
假设一个云计算中心有编号为1至6的6台虚拟机可供使用,虚拟机vm1,vm2,…,vm6的处理能力和带宽如表1所示;一个Montage工作流任务间的时序关系如图2所示,由编号为1至15的15个任务组成,任务t1,t2,…,t15的执行长度,处理所需要的输入文件和处理后的输出文件的名称、长度以及可以被处理的虚拟机如表2所示。
虚拟机 |
处理能力(MI/s) |
带宽(Mbit/s) |
虚拟机 |
处理能力(MI/s) |
带宽(Mbit/s) |
vm<sub>1</sub> |
1000 |
200 |
vm<sub>4</sub> |
2000 |
300 |
vm<sub>2</sub> |
1000 |
200 |
vm<sub>5</sub> |
3000 |
400 |
vm<sub>3</sub> |
2000 |
300 |
vm<sub>6</sub> |
3000 |
400 |
表1
表2
针对上述案例,如图1所示,一种融合启发式和智能计算的云工作流分段在线调度优化方法,包括以下实施步骤:
执行步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};
获取任务间的时序关系,即任务i的父任务集PR
i和子任务集SC
i:
PR
4={t
1},PR
5={t
1,t
2},PR
6={t
1,t
3},PR
7={t
4,t
5,t
6},PR
8={t
7},PR
9={t
1,t
8},PR
10={t
2,t
8},PR
11={t
3,t
8},PR
12={t
9,t
10,t
11},PR
13={t
12},PR
14={t
13},PR
15={t
14};SC
1={t
4,t
5,t
6,t
9},SC
2={t
5,t
10},SC
3={t
6,t
11},SC
4={t
7},SC
5={t
7},SC
6={t
7},SC
7={t
8},SC
8={t
9,t
10,t
11},SC
9={t
12},SC
10={t
12},SC
11={t
12},SC
12={t
13},SC
13={t
14},SC
14={t
15},
获取任务的相关参数:t1.length=126000MI,t1.IFL={fd1,fd2},t1.OFL={f1-1,f1-2};t2.length=138000MI,t2.IFL={fd1,fd3},t2.OFL={f2-1,f2-2};t3.length=132000MI,t3.IFL={fd1,fd4},t3.OFL={f3-1,f3-2};t4.length=102000MI,t4.IFL={fd1,f1-1,f1-2},t4.OFL={f4-1,f4-2};……;t15.length=7800MI,t15.IFL={f14-1},t15.OFL={f15-1};fd1.size=36MB,fd2.size=4320MB,f1-1.size=3960MB,f1-2.size=3960MB,……,f14-1.size=1560MB,f15-1.size=420MB;
获取云计算环境下的虚拟机集:VM={vm1,vm2,vm3,vm4,vm5,vm6};
获取虚拟机相关参数:vm1.ps=1000MI/s,vm1.bw=200Mbit/s;vm2.ps=1000MI/s,vm2.bw=200Mbit/s;vm3.ps=2000MI/s,vm3.bw=300Mbit/s;vm4.ps=2000MI/s,vm4.bw=300Mbit/s;vm5.ps=3000MI/s,vm5.bw=400Mbit/s;vm6.ps=3000MI/s,vm6.bw=400Mbit/s;
获取任务与虚拟机之间的支持关系:T1={t1,t2,t3,t4,t5,t6,t9,t13,t15},T2={t3,t5,t7,t9,t10,t11,t14},T3={t2,t3,t4,t6,t9,t11,t12},T4={t1,t2,t4,t6,t7,t8,t9,t10,t11,t12,t14},T5={t1,t2,t3,t4,t6,t7,t8,t9,t12,t14},T6={t1,t4,t5,t8,t11,t13,t14,t15};VM1={vm1,vm4,vm5,vm6},VM2={vm1,vm3,vm4,vm5},VM3={vm1,vm2,vm3,vm5},VM4={vm1,vm3,vm4,vm5,vm6},VM5={vm1,vm2,vm6},VM6={vm1,vm3,vm4,vm5},VM7={vm2,vm4,vm5},VM8={vm4,vm5,vm6},VM9={vm1,vm2,vm3,vm4,vm5},VM10={vm2,vm4},VM11={vm2,vm3,vm4,vm6},VM12={vm3,vm4,vm5},VM13={vm1,vm6},VM14={vm2,vm4,vm5,vm6},VM15={vm1,vm6}。
执行步骤2:计算任务的排序值rank;
表3
计算t
i执行时需要从共享数据库获得输入文件的平均传输时间
表4
同理可得其它任务间的文件平均传输时间,结果如表5所示:
表5
计算t
i执行时需要从其它虚拟机获得输入文件的平均传输时间
表6
然后自下而上计算任务的排序值rank,其计算过程如下:
对于没有子任务的结束任务i:
其它任务的rank采用如下递归公式进行计算:
同理,可得rank12,……,rank1,结果如表7所示:
rank<sub>1</sub> |
rank<sub>2</sub> |
rank<sub>3</sub> |
rank<sub>4</sub> |
rank<sub>5</sub> |
rank<sub>6</sub> |
rank<sub>7</sub> |
rank<sub>8</sub> |
4095.28 |
4114.79 |
4047.06 |
3371.56 |
3401.40 |
3383.72 |
3290.80 |
3287.52 |
rank<sub>9</sub> |
rank<sub>10</sub> |
rank<sub>11</sub> |
rank<sub>12</sub> |
rank<sub>13</sub> |
rank<sub>14</sub> |
rank<sub>15</sub> |
|
3011.03 |
3025.03 |
2998.03 |
2314.36 |
2302.63 |
69.55 |
5.20 |
|
表7
执行步骤3:计算任务的层次值;
任务1、任务2和任务3均没有父任务,则level1=level2=level3=1;
任务4只有一个父任务1,则
同理,可以获得其它任务的层次值:level
5=level
6=2;level
7=3;level
8=4;level
9=level
10=level
11=5;level
12=6;level
13=7;level
14=8;level
15=9。
执行步骤4:基于动态关键任务优先调度的启发式方法生成第一阶段的任务调度方案;
取阈值ξ=150;
执行步骤A1:系统状态初始化:令虚拟机可得时间段列表:vatl′
1={[0,M]},vatl′
2={[0,M]},…,vatl′
6={[0,M]},其中M为一个接近无穷大的数;令所有任务的就绪时间rt′
1=0,rt′
2=0,…,rt′
15=0,
P(t
4)={t
1},P(t
5)={t
1,t
2},P(t
6)={t
1,t
3},P(t
7)={t
4,t
5,t
6},P(t
8)={t
7},P(t
9)={t
1,t
8},P(t
10)={t
2,t
8},P(t
11)={t
3,t
8},P(t
12)={t
9,t
10,t
11},P(t
13)={t
12},P(t
14)={t
13},P(t
15)={t
14};k=1;
UT=T={t
1,t
2,t
3,t
4,t
5,t
6,t
7,t
8,t
9,t
10,t
11,t
12,t
13,t
14,t
15};把UT中
的t
1,t
2,t
3移到RT中,则RT={t
1,t
2,t
3},UT={t
4,t
5,t
6,t
7,t
8,t
9,t
10,t
11,t
12,t
13,t
14,t
15};
执行步骤A2:在任务集RT={t
1,t
2,t
3}中,
pr
2=4114.79,pr
3=4047.06,由于pr
2最大,因此取出t
2,则RT={t
1,t
3};由于t
2的就绪时间rt′
2=0<ξ=150,则转到步骤A3;
执行步骤A3:令AVM
2=VM
2={vm
1,vm
3,vm
4,vm
5},计算把t
2分别分配给AVM
2中的每个虚拟机后t
2的完成时间;即:执行步骤A3.1:从AVM
2中取出一个虚拟机,其为vm
1,则AVM
2={vm
3,vm
4,vm
5};执行步骤A3.2:计算t
2分配给vm
1处理后的执行时间
执行步骤A3.3:在vatl′
1中从早到晚找出一个空闲时段[0,M],满足M-0≥312.24和M-312.24≥0;执行步骤A3.4:计算t
2分配给vm
1处理后的开始时间s
2,1=max{ν
1,rt′
2}=max{0,0}=0,完成时间f
2,1=s
2,1+et
2,1=312.24;执行步骤A3.5:由于AVM
2={vm
3,vm
4,vm
5}不为空,则转到步骤A3.1;……,这样重复执行步骤A3.1至步骤A3.5,直到AVM
2为空,得到s
2,3=0,s
2,4=0,s
2,5=0,f
2,3=185.16,f
2,4=185.16,f
2,5=133.12,则转到步骤A4;
执行步骤A4:由于s2,1<ξ=150,s2,3<ξ=150,s2,4<ξ=150,s2,5<ξ=150,因此在vm1,vm3,vm4,vm5中按顺序找出能最早完成t2的虚拟机,其为vm5,转到步骤A5;
执行步骤A5:把t2分配给vm5;即:执行步骤A5.1:令ST=ST∪t2={t2},g′I+k=g′16=2,g′2=5,k=1+1=2;t2的开始时间s2=s2,5=0,t2的完成时间f2=f2,5=133.12;执行步骤A5.2:在虚拟机可得时间段列表vatl′5中删除[0,M],由于[0,0]的区间长度为0,而[133.12,M]的区间长度大于0,因此插入[133.12,M],则vatl′5={[133.12,M]};执行步骤A5.3:更新t2的子任务的就绪时间:rt′5=max{rt′5,f2}=max{0,133.12}=133.12,rt′10=max{rt′10,f2}=max{0,133.12}=133.12;
执行步骤A6:在P(t
5)、P(t
10)中删除t
2,则P(t
5)={t
1}、P(t
10)={t
8};由于UT中没有
的任务,则RT,UT均不变;
执行步骤A7:由于RT={t1,t3}不为空,则转到步骤A2;
执行步骤A2:在任务集RT={t1,t3}中,pr1=4095.28,pr3=4047.06,由于pr1最大,因此取出t1,则RT={t3};由于t1的就绪时间rt′1=0<ξ=150,则转到步骤A3;
执行步骤A3:令AVM
1=VM
1={vm
1,vm
4,vm
5,vm
6},计算把t
1分别分配给AVM
1中的每个虚拟机后t
1的完成时间;即:执行步骤A3.1:从AVM
1中取出一个虚拟机,其为vm
1;执行步骤A3.2:计算t
1分配给vm
1处理后的执行时间
执行步骤A3.3:在vatl
1′中从早到晚找出一个空闲时段[0,M],满足M-0≥300.24和M-300.24≥0;执行步骤A3.4:计算t
1分配给vm
1处理后的开始时间s
1,1=max{ν
1,rt
1′}=max{0,0}=0,完成时间f
1,1=s
1,1+et
1,1=0+300.24=300.24;执行步骤A3.5:由于AVM
1={vm
4,vm
5,vm
6}不为空则转到步骤A3.1;……,这样重复执行步骤A3.1至A3.5,直到AVM
1为空,得到s
1,4=0,s
1,5=133.12,s
1,6=0,f
1,4=179.16,f
1,5=262.24,f
1,6=129.12,则转到步骤A4;
执行步骤A4:由于s1,1<ξ=150,s1,4<ξ=150,s1,5<ξ=150,s1,6<ξ=150,因此在vm1,vm4,vm5,vm6中按顺序找出能最早完成t1的虚拟机,其为vm6,转到步骤A5;
执行步骤A5:把t1分配给vm6;即:执行步骤A5.1:令ST=ST∪t1={t1,t2},g′I+k=g′17=1,g′1=6,k=2+1=3;t1的开始时间s1=s1,6=0,t1的完成时间f1=f1,6=129.12;执行步骤A5.2:在虚拟机可得时间段列表vatl′6中删除[0,M],插入区间长度大于0的[129.12,M],则vatl′6={[129.12,M]};执行步骤A5.3:更新t1的子任务的就绪时间:rt′4=max{rt′4,f1}=max{0,129.12}=129.12,rt′5=max{rt′5,f1}=max{133.12,129.12}=133.12,rt′6=max{rt′6,f1}=max{0,129.12}=129.12,rt′9=max{rt′9,f1}=max{0,129.12}=129.12;
执行步骤A6:在P(t
4)、P(t
5)、P(t
6)、P(t
9)中删除t
1,则
P(t
6)={t
3}、P(t
9)={t
8},把UT中
的t
4、t
5移到RT中,则UT={t
6,t
7,t
8,t
9,t
10,t
11,t
12,t
13,t
14,t
15},RT={t
3,t
4,t
5};
执行步骤A7:由于RT={t3,t4,t5}不为空,则转到步骤A2;
执行步骤A2:在任务集RT={t
3,t
4,t
5}中,pr
3=4047.06,
由于pr
3最大,因此取出t
3,则RT={t
4,t
5};由于t
3的就绪时间rt′
3=0<ξ=150,则转到步骤A3;
执行步骤A3:令AVM
3=VM
3={vm
1,vm
2,vm
3,vm
5},计算把t
3分别分配给AVM
3中的每个虚拟机后t
3的完成时间;即:执行步骤A3.1:从AVM
3中取出一个虚拟机,其为vm
1;执行步骤A3.2:计算t
3分配给vm
1处理后的执行时间
执行步骤A3.3:在vatl′
1中从早到晚找出一个空闲时段[0,M],满足M-0≥306.24和M-306.24≥0;执行步骤A3.4:计算t
3分配给vm
1处理后的开始时间s
3,1=max{ν
1,rt′
3}=max{0,0}=0,完成时间f
3,1=s
3,1+et
3,1=0+306.24=306.24;执行步骤A3.5:由于AVM
3={vm
2,vm
3,vm
5}不为空,则转到步骤A3.1;……,这样重复执行步骤A3.1至A3.5,直到AVM
1为空,得到s
3,2=0,s
3,3=0,s
3,5=133.12,f
3,2=306.24,f
3,3=182.16,f
3,5=264.24,则转到步骤A4;
执行步骤A4:由于s3,1<ξ=150,s3,2<ξ=150,s3,3<ξ=150,s3,5<ξ=150,因此在vm1,vm2,vm3,vm5中按顺序找出能最早完成t3的虚拟机,其为vm3,转到步骤A5;
执行步骤A5:把t3分配给vm3;即:执行步骤A5.1:令ST=ST∪t3={t1,t2,t3},g′I+k=g′18=3,g′3=3,k=3+1=4;t3的开始时间s3=s3,3=0,t3的完成时间f3=f3,3=182.16;执行步骤A5.2:在虚拟机可得时间段列表vatl′3中删除[0,M],插入区间长度大于0的[182.16,M],则vatl′3={[182.16,M]};执行步骤A5.3:更新t3的子任务的就绪时间:rt′6=max{rt′6,f3}=max{129.12,182.16}=182.16,rt′11=max{rt′11,f3}=max{0,182.16}=182.16;
执行步骤A6:在P(t
6)、P(t
11)中删除t
3,则
P(t
11)=={t
8};把UT中
的t
6移到RT中,则UT={t
7,t
8,t
9,t
10,t
11,t
12,t
13,t
14,t
15},RT={t
4,t
5,t
6};
执行步骤A7:由于RT={t4,t5,t6}不为空,则转到步骤A2;
……
这样重复执行步骤A2至A7,直到RT为空,转到步骤A8;
执行步骤A8:完成第一阶段的调度,获得已调度的任务集ST={t1,t2.t3,t4,t5},已调度任务的虚拟机分配:g′1=6、g′2=5、g′3=3、g′4=5、g′5=6,完成时间:f1=129.12、f2=133.12,f3=182.16、f4=326.24、f5=333.04,已调度任务的调度顺序:g′16=2、g′17=1、g′18=3,g′19=5、g′20=4,及完成第一阶段任务调度后虚拟机的可得时间段列表:vatl′1={[0,M]},vatl′2={[0,M]},vatl′3={[182.16,M]},vatl′4={[0,M]},vatl′5={[326.24,M]},vatl′6={[129.12,133.12],[333.04,M]}和各任务的就绪时间:rt′1=0,rt′2=0,rt′3=0,rt′4=129.12,rt′5=133.12,rt′6=182.16,rt′7=333.04,rt′8=0,rt′9=129.12,rt′10=133.12,rt′11=182.16,rt′12=0,rt′13=0,rt′14=0,rt′15=0;
执行步骤5:基于遗传算法获得第二阶段任务的调度方案;
执行步骤5.1:采用基于层次的个体随机生成方法生成N个不同的个体形成当代种群;
取种群规模N=10;
基于层次的个体随机生成方法生成一个个体的具体实施过程如下:
执行步骤B1:UT=T-ST={t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};令所有任务的就绪时间:rt″1=0,rt″2=0,rt″3=0,rt″4=129.12,rt″5=133.12,rt″6=182.16,rt″7=333.04,rt″8=0,rt″9=129.12,rt″10=133.12,rt″11=182.16,rt″12=0,rt″13=0,rt″14=0,rt″15=0;初始化虚拟机的可得时间段列表:vatl″1=vatl′1={[0,M]},vatl″2=vatl′2={[0,M]},vatl″3=vatl′3={[182.16,M]},vatl″4=vatl′4={[0,M]},vatl″5=vatl′5={[326.24,M]},vatl″6=vatl′6={[129.12,133.12],[333.04,M]},g1=g′1=6,g2=g′2=5,g3=g′3=3,g4=g′4=5,g5=g′5=6,g16=g′16=2,g17=g′17=1,g18=g′18=3,g19=g′19=5,g20=g′20=4;δ=|ST|+1=6;
执行步骤B2:从任务集UT={t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t6;
执行步骤B3:从VM
6={vm
1,vm
3,vm
4,vm
5}中随机选择一个虚拟机,其为vm
1,把t
6分配给vm
1;即:执行步骤B3.1:令g
I+6=g
21=6,g
6=1,δ=δ+1=6+1=7;执行步骤B3.2:计算t
6分配给vm
1处理后的执行时间
执行步骤B3.3:在vatl″
1中从早到晚找出一个空闲时段[0,M],满足M-0≥et
6=739.44和M-739.44≥rt″
6=182.16;执行步骤B3.4:计算t
6分配给vm
1处理后的开始时间s
6=max{ν
1,rt″
6}=max{0,182.16}=182.16,完成时间f
6=s
6+et
6=921.60;执行步骤B3.5:在虚拟机可得时间段列表vatl″
1中删除[0,M],插入区间长度不为0的[0,182.16]和[921.60,M],则vatl″
1={[0,182.16],[921.60,M]};执行步骤B3.6:更新t
6的子任务的就绪时间rt″
7=max{rt″
7,f
6}=max{333.04,921.60}=921.60;
执行步骤B4:由于任务集UT={t7,t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤B2;
执行步骤B2:从任务集UT={t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t7;
执行步骤B3:从VM
7={vm
2,vm
4,vm
5}中随机选择一个虚拟机,其为vm
4,把t
7分配给vm
4;即:执行步骤B3.1:令g
I+7=g
22=7,g
7=4,δ=δ+1=7+1=8;执行步骤B3.2:计算t
7分配给vm
4处理后的执行时间
执行步骤B3.3:在vatl″
4中从早到晚找出一个空闲时段[0,M],满足M-0≥26.96和M-26.96≥921.60;执行步骤B3.4:计算t
7分配给vm
4处理后的开始时间s
7=max{ν
4,rt″
7}=max{0,921.60}=921.60,完成时间f
7=s
7+et
7=921.60+26.96=948.56;执行步骤B3.5:在虚拟机可得时间段列表vatl″
4中删除[0,M],插入区间长度不为0的[0,921.60]和[948.56,M],则vatl″
4={[0,921.60],[948.56,M]};执行步骤B3.6:更新t
7的子任务的就绪时间rt″
8=max{rt″
8,f
7}=max{0,948.56}=948.56;
执行步骤B4:由于任务集UT={t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤B2;
……
这样不断重复执行步骤B2至步骤B4,直至UT为空集,转到步骤B5;
执行步骤B5:输出一个个体ch
1={6,5,3,5,6,1,4,5,4,2,2,3,1,5,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15},计算适应度值即工作流的响应时间rs
1,由于
而SFL
15={f
15-1},故
操作结束;
同理,基于层次的个体随机生成方法生成种群中的剩余个体如下:
ch2={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch3={6,5,3,5,6,3,5,4,1,2,4,3,1,5,6;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
ch4={6,5,3,5,6,3,4,4,4,4,4,4,6,2,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch5={6,5,3,5,6,4,5,5,1,2,4,3,1,4,1;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch6={6,5,3,5,6,3,4,4,3,2,6,4,6,2,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch7={6,5,3,5,6,3,5,4,4,2,6,5,1,2,1;2,1,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch8={6,5,3,5,6,4,5,5,2,4,4,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch9={6,5,3,5,6,3,2,5,1,2,6,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch10={6,5,3,5,6,5,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2=2030.52,rs3=4703.88,rs4=4286.80,rs5=4955.56,rs6=4669.56,rs7=4619.96,rs8=1955.12,rs9=1826.00,rs10=2584.20;
这样最终生成的初始当代种群为CP={ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10}。
执行步骤5.2:对当代种群进行N次基于偏好的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用单点变异操作;
对当代种群进行基于偏好的参数化均匀交叉操作的具体实施过程如下:
取偏好概率pb=0.7;
执行步骤C1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体;即:从当代种群中随机选择两个不同个体,其为ch
9和ch
8,由于rs
9=1826.00<rs
8=1955.12,因此选择ch
9作为其中的一个父体;再从当代种群中随机选择两个不同个体,其为ch
1和ch
10,由于rs
1=5607.40>rs
10=2584.20,因此选择ch
10作为其中的另一个父体;又由于ch
9的适应度值小于ch
10的适应度值,故ch
p1=ch
9={6,5,3,5,6,3,2,5,1,2,6,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15},ch
p2=ch
10={6,5,3,5,6,5,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};令δ=1,
执行步骤C2:由于δ=1≤I+|ST|=20,则转到步骤C3;
执行步骤C3:生成一个随机数λ∈[0,1),其为0.20,由于λ=0.2<pb=0.7,那么从chp1中取出首元素放到chc的尾部,则chc={6},chp1={5,3,5,6,3,2,5,1,2,6,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15},并从chp2中删除首元素,则chp2={5,3,5,6,5,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};δ=1+1=2,转到步骤C2;
执行步骤C2:由于δ=2≤I+|ST|=20,则转到步骤C3;
执行步骤C3:生成一个随机数λ∈[0,1),其为0.93,由于λ=0.93>pb=0.7,那么从chp2中取出首元素放到chc的尾部,则chc={6,5},chp2={3,5,6,5,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15},并从chp1中删除首元素,则chp1={3,5,6,3,2,5,1,2,6,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};δ=2+1=2,转到步骤C2;
……
这样不断重复执行步骤C2和步骤C3,直至δ=21>I+|ST|=20,此时chc={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4},chp1={6,7,8,9,10,11,12,13,14,15},chp2={6,7,8,10,11,9,12,13,14,15},转到步骤C2;
执行步骤C2:由于I+|ST|=20<δ=21≤2I=30,则转到步骤C4;
执行步骤C4:生成一个随机数λ∈[0,1),其为0.92,由于λ=0.92>pb=0.7,那么从chp2中取出首元素放到chc的尾部,则chc={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6},chp2={7,8,10,11,9,12,13,14,15},并从chp1中删除该元素,则chp1={7,8,9,10,11,12,13,14,15};δ=21+1=22,转到步骤C2;
执行步骤C2:由于I+|ST|=20<δ=22≤2I=30,则转到步骤C4;
执行步骤C4:生成一个随机数λ∈[0,1),其为0.62,由于λ=0.62<pb=0.7,那么从chp1中取出首元素放到chc的尾部,则chc={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7},chp1={8,9,10,11,12,13,14,15},并从chp2中删除该元素,则chp2={8,10,11,9,12,13,14,15};δ=22+1=23,转到步骤C2;
……
这样不断重复执行步骤C2和步骤C4,直至δ=31>2I=30,此时chc={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15},转到步骤C2;
执行步骤C2:由于δ=31>2I=30,则转到步骤C5;
执行步骤C5:输出子体ch′1=chc={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15},操作结束;
同理,经基于偏好的参数均匀交叉操作生成新种群中剩余的9个个体如下:
ch′2={6,5,3,5,6,4,4,5,4,4,4,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′3={6,5,3,5,6,4,5,5,2,4,6,5,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′4={6,5,3,5,6,3,2,5,1,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′5={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′6={6,5,3,5,6,3,5,4,4,2,6,5,1,2,1;2,1,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch′7={6,5,3,5,6,3,2,5,1,2,6,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch′8={6,5,3,5,6,3,5,5,4,4,6,3,6,2,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch′10={6,5,3,5,6,3,2,4,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
对新种群进行单点变异操作的具体实施过程如下:
取变异率pm=0.2;
对于ch′1={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
执行步骤D1:产生一个随机数λ1∈[0,1),其为0.68,λ1=0.68>pm=0.2,则转步骤D5;
执行步骤D5:变异操作结束;
对于ch′2={6,5,3,5,6,4,4,5,4,4,4,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
执行步骤D1:产生一个随机数λ1∈[0,1),其为0.15,λ1=0.15<pm=0.2,则转步骤D2;
执行步骤D2:产生一个随机数λ
2∈[0,1),其为0.27,λ
2=0.27<0.5,则从i≤I=15且
中随机选择一个基因,其为g
11,转到步骤D3;
执行步骤D3:从可以处理任务11的虚拟机集VM11={vm2,vm3,vm4,vm6}中重新随机选择一个虚拟机,其为vm2,则g11=2,转到步骤D5;
执行步骤D5:变异操作结束;
ch′2变为{6,5,3,5,6,4,4,5,4,4,2,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
……
对于ch′9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
执行步骤D1:产生一个随机数λ1∈[0,1),其为0.12,λ1=0.12<pm=0.2,则转步骤D2;
执行步骤D2:产生一个随机数λ2∈[0,1),其为0.74,λ2=0.74>0.5,则从i>I+|ST|=20中随机选择一个基因gi,其为g25=11,转到步骤D4;
执行步骤D4:在T-ST={t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中存在任务11的父任务,那么从g25开始向前找到任务11的第一个父任务g23=8,pos1=i′+1=23+1=24;在T-ST中存在任务g25的子任务,从g25开始向后找到任务11的第一个子任务g27=12,pos2=i″-1=27-1=26,在[24,26]之间重新随机选择一个位置插入任务11,则g26=11;
执行步骤D5:变异操作结束;
ch′9变为ch′9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
……
这样新种群中的个体经变异后变为:
ch′1={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′2={6,5,3,5,6,4,4,5,4,4,2,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′3={6,5,3,5,6,4,5,5,2,4,6,5,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′4={6,5,3,5,6,3,2,5,1,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′5={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′6={6,5,3,5,6,3,5,4,4,2,6,5,1,2,1;2,1,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch′7={6,5,3,5,6,3,2,5,1,2,6,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch′8={6,5,3,5,6,3,5,5,4,4,6,3,6,2,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′10={6,5,3,5,6,3,2,4,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
执行步骤5.3:对新种群中的每个个体采用基于插入模式的串行个体解码和LDI方法改进;
对新种群中的所有个体采用基于插入模式的串行个体解码,例如对新种群中的ch′1={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15}为例进行基于插入模式的串行个体解码的过程如下:
执行步骤E1:令所有任务的就绪时间:rt″1=0,rt″2=0,rt″3=0,rt″4=129.12,rt″5=133.12,rt″6=182.16,rt″7=333.04,rt″8=0,rt″9=129.12,rt″10=133.12,rt″11=182.16,rt″12=0,rt″13=0,rt″14=0,rt″15=0;初始化所有虚拟机的可得时间段列表:vatl″1=vatl′1={[0,M]},vatl″2=vatl′2={[0,M]},vatl″3=vatl′3={[182.16,M]},vatl″4=vatl′4={[0,M]},vatl″5=vatl′5={[326.24,M]},vatl″6=vatl′6={[129.12,133.12],[333.04,M]};k=|ST|+1=6,
执行步骤E2:选取编号为gI+k=g21的任务,其为g21=6;
执行步骤E3:基于插入模式把任务6分配给虚拟机g
6=3;即:执行步骤E3.1:计算任务6的执行时间
执行步骤E3.2:在vatl″
3中从早到晚找出一个空闲时段[182.16,M],满足M-182.16≥et
6=269.16和M-269.16≥rt″
6=182.16;执行步骤E3.3:计算t
6分配给vm
3处理后的开始时间s
6=max{ν
3,rt″
6}=max{182.16,182.16}=182.16,完成时间f
6=s
6+et
6=182.16+269.16=451.32,更新t
6子任务的就绪时间rt″
7=max{rt″
7,f
6}=max{333.04,451.32}=451.32;执行步骤E3.4:在虚拟机可得时间段列表vatl″
3={[182.16,M]}中删除[182.16,M],插入区间长度大于0的[451.32,M],则vatl″
3={[451.32,M]};
执行步骤E4:k=6+1=7,由于k=7≤I=15,则转到步骤E2;
执行步骤E2:选取编号为gI+k=g22的任务,其为g22=7;
执行步骤E3:基于插入模式把任务7分配给虚拟机g
7=2;即:执行步骤E3.1:计算任务7的执行时间
执行步骤E3.2:在vatl″
2中从早到晚找出一个空闲时段[0,M]满足M-0≥36.96和M-36.96≥451.32;执行步骤E3.3:计算t
7分配给vm
2处理后的开始时间s
7=max{ν
2,rt″
7}=max{0,451.32}=451.32,完成时间f
7=s
7+et
7=451.32+36.96=488.28,更新t
7子任务的就绪时间rt″
8=max{rt″
8,f
7}=max{0,488.28}=488.28;执行步骤E3.4:在虚拟机可得时间段列表vatl″
2中删除[0,M],插入区间长度大于0的[0,451.32]和[488.28,M],则vatl″
2={[0,451.32],[488.28,M]};
执行步骤E4:k=7+1=8,由于k=8≤I=15,则转到步骤E2;
……
这样不断重复执行步骤E2至步骤E4,直至k=16>I=15,获得所有任务的开始时间和完成时间,则转到步骤E5;
执行步骤E5:获得所有任务的开始时间和完成时间:s
1=0,s
2=0,s
3=0,s
4=133.12,s
5=133.12,s
6=182.16,s
7=451.32,s
8=488.28,s
9=493.64,s
10=925.40,s
11=493.64,s
12=1372.76,s
13=2201.72,s
14=2210.36,s
15=2220.36;f
1=129.12,f
2=133.12,f
3=182.16,f
4=326.24,f
5=333.04,f
6=451.32,f
7=488.28,f
8=493.64,f
9=925.40,f
10=1372.76,f
11=753.08,f
12=2201.72,f
13=2210.36,f
14=2220.36,f
15=2290.56,计算适应度值即工作流响应时间rs
1′:由于
而SFL
15={f
15-1},故
操作结束;
同理,新种群中的其它个体经基于插入模式的串行个体解码后可获得其工作流响应时间为:rs′2=1976.36,rs′3=1799.60,rs′4=1875.60,rs′5=2030.52,rs′6=4619.96,rs′7=1750.00,rs′8=4643.48,rs′9=1853.92,rs′10=2029.92;
对种群中的所有个体采用LDI方法改进,例如对新种群中的ch′4={6,5,3,5,6,3,2,5,1,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15}采用LDI方法进行改进的具体实施过程如下:
执行步骤F1:计算各虚拟机负载:
同理,ld
2=122.40,ld
3=123.00,ld
4=54,ld
5=87.6,ld
6=94.00;
执行步骤F2:找出负载最小的虚拟机,其为vm4,由于ld4>0,故转到步骤F3;
执行步骤F5:由于DT4={t8,t12}不为空,则从DT4中按顺序取出一个其所在虚拟机负载是最高的任务,其为t8,则DT4={t12},转到步骤F6;
执行步骤F6:令g
8=4,形成新的个体
采用基于插入模式的串行个体解码方法对
进行解码,工作流响应时间
即改进的个体
相对于原个体ch′
4没有改进,放弃改进的个体
转到步骤F5;
执行步骤F5:由于DT4={t12}不为空,则从DT4中按顺序取出一个其所在虚拟机负载是最高的任务,其为t12,转到步骤F6;
执行步骤F6:令g
12=4,形成新的个体
采用基于插入模式的串行个体解码方法对
进行解码,工作流响应时间
即改进的个体
相对于原个体ch′
4有改进,因此用改进的个体
替换原个体ch′
4,则
转到步骤F7;
执行步骤F7:LDI操作结束;
同理,种群中的其它个体经LDI方法改进后变为:
ch′1={6,5,3,5,6,3,2,5,2,2,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′2={6,5,3,5,6,4,4,5,1,4,2,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′3={6,5,3,5,6,4,5,5,1,4,6,5,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′5={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′6={6,5,3,5,6,3,5,4,4,2,6,5,1,2,1;2,1,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch′7={6,5,3,5,6,3,4,5,1,2,6,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch′8={6,5,3,5,6,3,5,5,4,4,6,3,6,2,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch′9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch′10={6,5,3,5,6,3,2,4,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间:rs′1=2307.36,rs′2=1957.04,rs′3=1799.60,rs′5=2030.52,rs′6=4619.96,rs′7=1736.48,rs′8=4643.48,rs′9=1853.92,rs′10=2029.92;
这样最终生成的新种群为NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10}。
执行步骤5.4:从当代种群和新种群中从优到劣选出N个不同的个体形成下一代种群;
根据适应度值,选择当代种群的ch2、ch8、ch9和新种群的ch′2、ch′3、ch′4、ch′5、ch′7、ch′9、ch′10形成下一代种群,即GP={ch2,ch8,ch9,ch′2,ch′3,ch′4,ch′5,ch′7,ch′9,ch′10};
执行步骤5.5:令下一代种群为当代种群;判断是否满足进化终止条件,如满足,则转到步骤6,否则,转到步骤5.2;
令CP=GP,则当代种群的所有个体为:
ch1={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch2={6,5,3,5,6,4,5,5,2,4,4,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch3={6,5,3,5,6,3,2,5,1,2,6,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch4={6,5,3,5,6,4,4,5,1,4,2,5,6,6,6;2,1,3,5,4,6,7,8,11,9,10,12,13,14,15};
ch5={6,5,3,5,6,4,5,5,1,4,6,5,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch6={6,5,3,5,6,3,2,5,1,2,4,4,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch7={6,5,3,5,6,3,2,5,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch8={6,5,3,5,6,3,4,5,1,2,6,5,6,6,6;2,1,3,5,4,6,7,8,9,11,10,12,13,14,15};
ch9={6,5,3,5,6,3,2,5,1,4,4,5,6,6,1;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch10={6,5,3,5,6,3,2,4,4,4,4,3,6,6,1;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1=2030.52,rs2=1955.12,rs3=1826.00,rs4=1957.04,rs5=1799.60,rs6=1680.96,rs7=2030.52,rs8=1736.48,rs9=1853.92,rs10=2029.92;
所述终止条件为运行到第一阶段与第二阶段的临界点ξ,即程序运行时间为ξ=150,没有满足进化终止条件,转到步骤5.2;
……
这样不断重复执行步骤5.2至步骤5.5,直到程序运行时间为150,当代种群变为:
ch1={6,5,3,5,6,3,5,4,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch2={6,5,3,5,6,3,5,5,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
ch3={6,5,3,5,6,3,2,5,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch4={6,5,3,5,6,3,5,5,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch5={6,5,3,5,6,3,4,4,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch6={6,5,3,5,6,3,4,5,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch7={6,5,3,5,6,3,2,4,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch8={6,5,3,5,6,3,5,6,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,9,10,11,12,13,14,15};
ch9={6,5,3,5,6,3,5,6,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
ch10={6,5,3,5,6,3,4,4,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1=1056.40,rs2=1053.48,rs3=1081.08,rs4=1053.48,rs5=1067.28,rs6=1067.56,rs7=1082.40,rs8=1054.68,rs9=1054.68,rs10=1067.28;
执行步骤6:输出当代种群中的最优个体,其对应的调度方案即为优化方案;
当代种群中的最优个体为ch2={6,5,3,5,6,3,5,5,3,4,3,3,6,6,6;2,1,3,5,4,6,7,8,10,11,9,12,13,14,15},其适应度值即工作流响应时间rs=1053.48,其调度方案如表8所示。
表8
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。