CN111090510A - 混合启发式和遗传算法的两阶段云工作流调度优化方法 - Google Patents
混合启发式和遗传算法的两阶段云工作流调度优化方法 Download PDFInfo
- Publication number
- CN111090510A CN111090510A CN201911261566.9A CN201911261566A CN111090510A CN 111090510 A CN111090510 A CN 111090510A CN 201911261566 A CN201911261566 A CN 201911261566A CN 111090510 A CN111090510 A CN 111090510A
- Authority
- CN
- China
- Prior art keywords
- task
- virtual machine
- list
- individual
- scheduling
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种混合启发式和遗传算法的两阶段云工作流调度优化方法,包括以下步骤:获取调度所需信息;基于负载均衡关键任务优先的方法初始化种群;分两阶段进行进化:阶段1结合关键任务优先调度的启发式方法通过虚拟机分配列表交叉变异操作使算法快速收敛于最优解附近,阶段2通过虚拟机分配列表和任务调度顺序列表的交叉变异操作进行邻域的拓展搜索以找到最优解;输出调度优化方案;在进化中采用了基于拓扑排序的整数编码方法和基于插入模式的串行个体解码方法,使用FBI&D和LDI方法改进种群;相对于方法本发明提高了搜索效率和寻优能力。
Description
技术领域
本发明涉及计算机技术、信息技术和系统工程领域,具体涉及一种云工作流调度优化方法,更具体的说,尤其涉及一种混合启发式和遗传算法的两阶段云工作流调度优化方法。
背景技术
云计算环境下的工作流,简称“云工作流”,是云计算与工作流相关技术的整合,在需要高效计算性能和大规模存储支撑的跨组织业务协作、科学计算等领域具有广泛的应用前景。在云工作流中,任务与任务之间存在着时序约束,执行时通常以虚拟机作为计算资源的最小分配单位负责接收并处理这些任务。云工作流调度是指在满足任务时序和用户需要约束下如何把云工作流中的任务分配到合适的虚拟机上,以及如何安排被分配到虚拟机上的任务的执行顺序,即要解决两个方面的问题:任务分配和任务执行顺序。云工作流调度直接决定了整个云工作流系统的性能,已成为云工作流系统的一个重要研究内容。
当前云工作流调度优化方法可以分为三类:
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的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.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:初始化当代种群;
采用基于负载均衡关键任务优先的个体随机生成方法生成N个不同的个体,形成初始当代种群,其中N是种群规模且为偶数;
所述个体采用2I位整数编码,I为任务数量,其方法如下:ch={g1,…,gI,gI+1,…,g2I},基因gi是一个非负整数;其中,{g1,…,gI}是虚拟机分配列表,gi表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机gi,gi∈VMi,i=1,…,I,例如:g1=2表示1号任务是分配给2号虚拟机的;{gI+1,…,g2I}是任务调度顺序列表,是1,…,I的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gI+i表示第i个被调度的任务的编号,即任务gI+i是第i个被调度的,例如gI+1=3,表示第1个调度的任务是3号任务;
所述基于负载均衡关键任务优先的个体随机生成方法包括如下步骤:
步骤A1:基于负载均衡的方法生成虚拟机分配列表;
步骤A3:计算处理任务时需要从共享数据库获得输入文件的传输时间:
步骤A4:计算处理任务时需要从其它虚拟机获得输入文件的传输时间:
步骤A5:计算任务的排序值rank;
步骤A6:基于关键任务优先调度的方法生成任务调度顺序列表;
步骤A7:输出一个个体{g1,…,gI,gI+1,…,g2I},及其适应度值,操作结束;
所述适应度值为工作流执行时间ms=max{f1,…,fI},个体适应度值越小,则个体越优;步骤3:对当代种群进行N次虚拟机分配列表的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用虚拟机分配列表的单点变异操作;
所述虚拟机分配列表的参数化均匀交叉操作包括如下步骤:
所述虚拟机分配列表的单点变异操作包括如下步骤:
步骤C1:生成一个[0,1)之间的随机数λ,如果λ<pm那么转到步骤C2,否则转到步骤C3;
步骤C2:在个体的虚拟机分配列表{g1,…,gI}中随机选择一个基因gi;从VMi中重新随机选择一个虚拟机,不妨设为vmj,gi=j;
步骤C3:虚拟机分配列表的单点变异操作结束;
其中:pm∈(0,1]是变异率;
步骤4:对新种群的每个个体采用基于关键任务优先调度的方法生成个体的任务调度顺序列表,获得其适应度值;
步骤5:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤6:判断是否满足第一阶段迭代终止条件,如满足,则第一阶段进化结束,转到步骤7,否则转到步骤3;
所述第一阶段终止条件为迭代到指定的代数TG1或连续迭代GG1代最优个体没有改进;
步骤7:对当代种群进行N/2次虚拟机分配列表和任务调度顺序列表交叉操作生成新种群,对新种群中的每个个体进行虚拟机分配列表和任务调度顺序列表变异操作;
所述虚拟机分配列表和任务调度顺序列表交叉操作包括如下步骤:
步骤D4:随机产生一个δ1到δ2-1的正整数α;
步骤D9:随机产生一个δ3到δ4-1的正整数β;
所述虚拟机分配列表和调度顺序列表变异操作包括如下步骤:
步骤E1:生成一个[0,1)之间的随机数λ,如果λ<pm,则转到步骤E2,否则转到步骤E6;
步骤E2:从虚拟机分配列表{g1,…,gI}中随机选择一个基因gi,从VMi中重新随机选择一个虚拟机,不妨设为vmj,gi=j;
步骤E3:从任务调度顺序列表{gI+1,…,g2I}中随机选择一个任务gi;
步骤E4:如果任务gi存在父任务则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;
步骤E5:在[pos1,pos2]之间重新随机选择一个位置插入gi;
步骤E6:虚拟机分配列表和调度顺序列表变异操作结束;
步骤8:对新种群中的每个个体采用FBI&D和LDI方法进行个体改进并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤F2:令计数变量k=1,采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间f1,…,fI及工作流的执行时间ms=max{f1,…,fI};
步骤F3:颠倒任务的父子关系,即交换PRi与SCi中的元素,i=1,…,I;把个体ch中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把个体中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成个体ch;
步骤F4:令k=k+1,对个体ch采用基于插入模式的串行个体解码方法进行解码获得所有任务的完成时间f1,…,fI及工作流的执行时间ms=max{f1,…,fI};
步骤F5:若ms<ms,那么ch=ch,ms=ms,fi=fi,i=1,…,I,转到步骤F3,否则转到步骤F6;
步骤F6:如果k为偶数那么输出个体ch,否则输出个体ch,工作流的执行时间为ms,操作结束;
所述LDI方法包括如下步骤如下:
步骤G2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤G3,否则转到步骤G4;
步骤G4:令任务集STj′=Tj′,转到步骤G5;
步骤G5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤G6;否则转到步骤G7;
步骤G6:令gi′=j′,形成新的个体ch,采用FBI&D方法对ch进行解码与改进,如果有改进则用此改进的个体替换原个体,转到步骤G7;否则转到步骤G5;
步骤G7:LDI操作结束;
步骤9:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤10:判断是否满足第二阶段迭代终止条件,如满足,则转到步骤11,否则转到步骤7;
所述第二阶段终止条件为进入第二阶段后迭代到指定的代数TG2或连续迭代GG2代最优个体没有改进;
步骤11:输出当代种群中的最优个体,其对应的调度方案即为优化方案。
进一步的,所述步骤A1中采用基于负载均衡的方法生成虚拟机分配列表的具体步骤如下:
步骤A1.1:令任务集UT=T,虚拟机j的负载ldj=0,j=1,…,J;
步骤A1.3:如果UT不为空,转到步骤A1.2;否则转到步骤A2。
进一步的,所述步骤A5中计算任务的排序值rank的具体步骤如下:
步骤A5.5:如果ST不为空,转到步骤A5.2;否则转到步骤A6。
进一步的,步骤A6中采用基于关键任务优先调度的方法生成任务调度顺序列表的具体步骤如下:
步骤A6.1:系统状态初始化;
步骤A6.1.1:令虚拟机可得时间段列表vatlj={[0,M]},M为一个接近无穷大的数;令计数变量k=1;
步骤A6.2:从任务集RT中取出关键任务,即任务的就绪时间与rank之和最大的任务,不妨设为ti;gI+k=i;
步骤A6.3:把ti分配给虚拟机gi,不妨设j=gi;
步骤A6.3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤A6.3.3:计算ti的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤A6.3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A6.4:如果RT不为空,则令k=k+1转到步骤A6.2,否则操作结束。
进一步的,所述步骤B1、步骤D1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤H1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤H4:产生一个随机数λ1∈[0,1),如果An-1≤λ1<An,那么选择个体n作为父体1;
步骤H5:产生一个随机数λ2∈[0,1),如果An′-1≤λ2<An′并且n′≠n,那么选择个体n′作为父体2,转到步骤H6,否则转到步骤H5;
步骤H6:个体选择操作结束。
进一步的,所述步骤F2、步骤F4中基于插入模式的串行个体解码方法的具体步骤如下:
步骤I1:令所有任务的就绪时间rti=0,i=1,…,I;令计数变量k=1;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤I2:选取编号为gI+k的任务,不妨设i=gI+k;
步骤I3:基于插入模式把任务i分配给虚拟机gi;
步骤I4:令k=k+1,如果k≤I则转到步骤I2,否则步骤I5;
步骤I5:输出工作流执行时间ms=max{f1,…,fI},si、fi,i=1,…,I,操作结束。
本发明的有益效果在于:
(1)相对于启发式方法、结合启发式的半智能计算方法及现有的基于分层编码的智能计算方法,本发明设计采用整数编码方法,任何一个调度方案都可以有一个个体与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(2)相对于一般的基于优先级的编码方式,任务调度顺序采用的基于拓扑排序的整数编码方法考虑了任务之间的时序关系,这样解码就比较简单,能有效提高解码的效率,进而提高算法的整体效率。
(3)相对于传统的非插入模式和并行的解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行个体解码方法通常能找到更好的对应调度方案。
(4)相对于普通的单向解码方法,本发明设计采用的向前向后个体解码与改进策略FBI&D和考虑了传输时间的负载均衡策略LDI增强了个体的邻域寻优能力,从而能提高整个算法的寻优能力和搜索效率。
(5)采用两阶段的智能适应性进化策略,阶段1采用结合启发式的半智能计算方法可以使算法尽快收敛于最优解附近,而阶段2则在阶段1的基础上采用基于全域的智能计算方法进行邻域的拓展搜索,有利于找到更好的个体,因此相对于现有的单阶段搜索算法具有更高的搜索效率和更强的寻优能力。
(6)采用从当代种群和新种群中选出不同优质个体形成下一代种群的进化策略,可以保证最优个体不被破坏及种群的多样性,可以使算法单调收敛。
(7)相对于传统的交叉算法,本发明在交叉操作中增加了交叉点的有效性判断,提高了交叉的效率。
(8)相对于传统的随机初始化方法,本发明在初始化种群时采用了基于负载均衡关键任务优先的个体随机生成方法,使算法在比较好的个体附近开始搜索,可以提高搜索效率,缩短搜索时间。
附图说明
图1是本发明一种混合启发式和遗传算法的两阶段云工作流调度优化方法的流程示意图。
图2是本发明实施例中CyberShake工作流任务间的时序关系图。
具体实施方式
下面结合图1、图2及实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
假设一个云计算中心有编号为1至6的6台虚拟机vm1,vm2,…,vm6可供使用,其处理能力和带宽如表1所示;一个CyberShake工作流任务间的时序关系如图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的父任务集PRi和子任务集SCi:SC1={t2,t3,t4,t5,t6,t7};PR2={t1},SC2={t8,t14};PR3={t1},SC3={t9,t14};PR4={t1},SC4={t10,t14};PR5={t1},SC5={t11,t14};PR6={t1},SC6={t12,t14};PR7={t1},SC7={t13,t14};PR8={t2},SC8={t15};PR9={t3},SC9={t15};PR10={t4},SC10={t15};PR11={t5},SC11={t15};PR12={t6},SC12={t15};PR13={t7},SC13={t15};PR14={t2,t3,t4,t5,t6,t7},PR15={t8,t9,t10,t11,t12,t13},
获取任务的相关参数:t1.length=150000MI,t1.IFL={fd1,fd2,fd3},t1.OFL={f1-1,f1-2};t2.length=60000MI,t2.IFL={fd4,f1-1,f1-2},t2.OFL={f2-1};t3.length=60000MI,t3.IFL={fd5,f1-1,f1-2},t3.OFL={f3-1};t4.length=36000MI,t4.IFL={fd6,f1-1,f1-2},t4.OFL={f4-1};……,t15.length=600MI,t15.IFL={f8-1,f9-1,f10-1,f11-1,f12-1,f13-1},t15.OFL={f15-1};fd1.size=120000MB,fd2.size=120000MB,fd3.size=3600MB,f1-1.size=9600MB,……,f14-1.size=180MB,f15-1.size=30MB;
获取云计算环境下的虚拟机集: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:初始化当代种群;
取种群规模N=10;
基于负载均衡关键任务优先的个体随机生成方法生成一个个体的具体实施过程如下:
执行步骤A1:基于负载均衡的方法生成虚拟机分配列表;即执行步骤A1.1:UT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15},ld1=0,ld2=0,ld3=0,ld4=0,ld5=0,ld6=0;执行步骤A1.2:从UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个任务,其为t8,在VM8={vm4,vm5,vm6}中,ld4=0、ld5=0、ld6=0,按虚拟机编号顺序找出负载最小的虚拟机,其为vm4;令g8=4,ld4=ld4+t8.length/vm4.ps=0+4200/2000=2.1;执行步骤A1.3:由于UT={t1,t2,t3,t4,t5,t6,t7,t9,t10,t11,t12,t13,t14,t15}不为空,则转到步骤A1.2;执行步骤A1.2:从UT={t1,t2,t3,t4,t5,t6,t7,t9,t10,t11,t12,t13,t14,t15}中随机取出一个任务,其为t14,在VM14={vm2,vm4,vm5,vm6}中,ld2=0、ld4=2.1、ld5=0、ld6=0,按虚拟机编号顺序找出负载最小的虚拟机,其为vm2;令g14=2,ld2=ld2+t14.length/vm2.ps=0+600/1000=0.6;执行步骤A1.3:由于UT={t1,t2,t3,t4,t5,t6,t7,t9,t10,t11,t12,t13,t15}不为空,则转到步骤A1.2;执行步骤A1.2:从UT={t1,t2,t3,t4,t5,t6,t7,t9,t10,t11,t12,t13,t15}中随机取出一个任务,其为t15,在VM15={vm1,vm6}中,ld1=0、ld6=0,按虚拟机编号顺序找出负载最小的虚拟机,其为vm1;令g15=1,ld1=ld1+t15.length/vm1.ps=0+600/1000=0.6;执行步骤A1.3:由于UT={t1,t2,t3,t4,t5,t6,t7,t9,t10,t11,t12,t13}不为空,则转到步骤A1.2;……;这样不断重复执行步骤A1.2至步骤A1.3,直至UT为空集,得到g1=6、g2=3、g3=5、g4=5、g5=2、g6=1、g7=2、g9=4、g10=4、g11=6、g12=4、g13=1;转到步骤A2;
执行步骤A2:计算任务的处理时间:同理,ω2=30,ω3=20,ω4=12,ω5=36,ω6=48,ω7=30,ω8=2.1,ω9=1.2,ω10=2.4,ω11=1.2,ω12=3,ω13=3,ω14=0.6,ω15=0.6;
执行步骤A3:计算处理任务时需要从共享数据库获得输入文件的传输时间:τ1=8×(120000+120000+3600)/400=4872,同理,τ2=56,τ3=48,τ4=104,τ5=72,τ6=200,τ7=152,τ8=0,τ9=0,τ10=0,τ11=0,τ12=0,τ13=0,τ14=0,τ15=0;
执行步骤A5:计算任务的排序值rank;即执行步骤A5.1:令WT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15},S(t1)=SC1={t2,t3,t4,t5,t6,t7},S(t2)={t8,t14},S(t3)={t9,t14},S(t4)={t10,t14},S(t5)={t11,t14},S(t6)={t12,t14},S(t7)={t13,t14},S(t8)={t15},S(t9)={t15},S(t10)={t15},S(t11)={t15},S(t12)={t15},S(t13)={t15},由于故把WT中的t14、t15移到ST中,则ST={t14,t15},WT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13};执行步骤A5.2:从ST中随机取出一个任务,其为t15,则ST={t14},由于t15没有子任务,则执行步骤A5.3:在所有S(t8),S(t9),S(t10),S(t11),S(t12),S(t13)中删除t15,则 执行步骤A5.4:把WT中的t8、t9、t10、t11、t12、t13移到ST中,则ST={t8,t9,t10,t11,t12,t13,t14},WT={t1,t2,t3,t4,t5,t6,t7};执行步骤A5.5:由于ST={t8,t9,t10,t11,t12,t13,t14}不为空,则转到步骤A5.2;执行步骤A5.2:从ST中随机取出一个任务,其为t14,则ST={t8,t9,t10,t11,t12,t13},由于t14没有子任务,则执行步骤A5.3:在所有S(t2),S(t3),S(t4),S(t5),S(t6),S(t7)中删除t14,则S(t2)={t8},S(t3)={t9},S(t4)={t10},S(t5)={t11},S(t6)={t12},S(t7)={t13};执行步骤A5.4:由于WT中不存在的任务,则ST,WT均不变;执行步骤A5.5:由于ST={t8,t9,t10,t11,t12,t13}不为空,则转到步骤A5.2;执行步骤A5.2:从ST中随机取出一个任务,其为t10,则ST={t8,t9,t11,t12,t13},执行步骤A5.3:在S(t4)中删除t10,则执行步骤A5.4:把WT中的t4移到ST中,则ST={t4,t8,t9,t11,t12,t13},WT={t1,t2,t3,t5,t6,t7};执行步骤A5.5:由于ST={t4,t8,t9,t11,t12,t13}不为空,则转到步骤A5.2;……;这样不断重复执行步骤A5.2至步骤A5.5,直至ST为空集,得到rank1=5977,rank2=637,rank3=491,rank4=539,rank5=915,rank6=1055,rank7=989,rank8=21.1,rank9=20.2,rank11=23.4,rank12=25.2,rank13=25.2;转到步骤A6;
执行步骤A6:基于关键任务优先调度的方法生成任务调度顺序列表,其具体实施过程如下:
执行步骤A6.1:系统状态初始化;即执行步骤A6.1.1:令虚拟机的可得时间段列表vatl1=vatl2=…=vatl6={[0,M]},M为一个接近无穷大的数;k=1;执行步骤A6.1.2:令所有任务的就绪时间rt1=rt2=…=rt15=0;P(t2)={t1},P(t3)={t1},P(t4)={t1},P(t5)={t1},P(t6)={t1},P(t7)={t1},P(t8)={t2},P(t9)={t3},P(t10)={t4},P(t11)={t5},P(t12)={t6},P(t13)={t7},P(t14)={t2,t3,t4,t5,t6,t7},P(t15)={t8,t9,t10,t11,t12,t13};UT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};执行步骤A6.1.3:在UT中故把t1移到RT中,则RT={t1},UT={t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};
执行步骤A6.3:把t1分配给虚拟机g1=6;即执行步骤A6.3.1:计算t1的执行时间执行步骤A6.3.2:在vatl6中从早到晚找出一个空闲时间段[0,M],满足M-0≥et1=4922和M-4922≥rt1=0;执行步骤A6.3.3:计算t1的开始时间s1=max{v6,rt1}=max{0,0}=0,完成时间f1=s1+et1=4922;执行步骤A6.3.4:更新t1的子任务的就绪时间rt2=max{rt2,f1}=max{0,4922}=4922,rt3=4922,rt4=4922,rt5=4922,rt6=4922,rt7=4922;执行步骤A6.3.5:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[4922,M],则vatl6={[4922,M]};执行步骤A6.3.6:在所有P(t2),P(t3),P(t4),P(t5),P(t6),P(t7)中删除t1,则 执行步骤A6.3.7:把UT中的t2、t3、t4、t5、t6、t7移到RT中,则RT={t2,t3,t4,t5,t6,t7},UT={t8,t9,t10,t11,t12,t13,t14,t15};
执行步骤A6.4:由于RT={t2,t3,t4,t5,t6,t7}不为空,则k=k+1=1+1=2,转到步骤A6.2;
执行步骤A6.2:在RT={t2,t3,t4,t5,t6,t7}中,rt2+rank2=4922+637=5559,rt3+rank3=5413,rt4+rank4=5461,rt5+rank5=5837,rt6+rank6=5977,rt7+rank7=5911,则t6为关键任务,从RT={t2,t3,t4,t5,t6,t7}中取出t6,则RT={t2,t3,t4,t5,t7};g15+2=g17=6;
执行步骤A6.3:把t6分配给虚拟机g6=1;即执行步骤A6.3.1:计算t6的执行时间et6=48+768+200=1016;执行步骤A6.3.2:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥1016和M-1016≥4922;执行步骤A6.3.3:计算t6的开始时间s6=max{v1,rt6}=max{0,4922}=4922,完成时间f6=4922+1016=5938;执行步骤A6.3.4:更新t6的子任务的就绪时间rt12=max{rt12,f6}=max{0,5938}=5938,rt14=max{0,5938}=5938;执行步骤A6.3.5:在虚拟机可得时间段列表vatl1中删除[0,M],插入区间长度大于0的[0,4922]和[5938,M],则vatl1={[0,4922],[5938,M]};执行步骤A6.3.6:在P(t12)中删除t6,则P(t14)={t2,t3,t4,t5,t7};执行步骤A6.3.7:把UT中的t12移到RT中,则RT={t2,t3,t4,t5,t7,t12},UT={t8,t9,t10,t11,t13,t14,t15};
执行步骤A6.4:由于RT={t2,t3,t4,t5,t7,t12}不为空,则k=k+1=3,转到步骤A6.2;
执行步骤A6.2:在RT={t2,t3,t4,t5,t7,t12}中,rt2+rank2=5559,rt3+rank3=5413,rt4+rank4=5461,rt5+rank5=5837,rt7+rank7=5911,rt12+rank12=5938+25.2=5963.2,则t12为关键任务,从RT中取出t12,则RT={t2,t3,t4,t5,t7};g15+3=g18=12;
执行步骤A6.3:把t12分配给虚拟机g12=4;即执行步骤A6.3.1:计算t12的执行时间et12=3+9.6+0=12.6;执行步骤A6.3.2:在vatl4中从早到晚找出一个空闲时间段[0,M],满足M-0≥12.6和M-12.6≥5938;执行步骤A6.3.3:计算t12的开始时间s12=max{0,5938}=5938,完成时间f12=5950.6;执行步骤A6.3.4:更新t12的子任务的就绪时间rt15=max{0,5950.6}=5950.6;执行步骤A6.3.5:在虚拟机可得时间段列表vatl4中删除[0,M],插入区间长度大于0的[0,5938]和[5950.6,M],则vatl4={[0,5938],[5950.6,M]};执行步骤A6.3.6:在P(t15)中删除t12,则P(t15)={t8,t9,t10,t11,t13};执行步骤A6.3.7:由于UT中不存在的任务,则RT,UT均不变;
执行步骤A6.4:由于RT={t2,t3,t4,t5,t7}不为空,则k=k+1=3+1=4,转到步骤A6.2;
……
这样不断重复执行步骤A6.2至步骤A6.4,直至RT为空集,获得任务调度顺序序列{1,6,12,7,13,5,11,2,8,4,10,3,14,9,15}及所有任务的开始时间:s1=0,s2=4922,s3=5422,s4=4922,s5=5872,s6=4922,s7=4922,s8=5520,s9=5874,s10=5422,s11=6748,s12=5938,s13=5938,s14=6748,s15=6758.8,结束时间:f1=4922,f2=5520,f3=5874,f4=5422,f5=6748,f6=5938,f7=5872,f8=5528.5,f9=5881.6,f10=5430.8,f11=6758.8,f12=5950.6,f13=5950.6,f14=6787,f15=6771.4;其工作流执行时间ms1=max{f1,…,f15}=6787;
执行步骤A7:输出个体ch1={6,3,5,5,2,1,2,4,4,4,6,4,1,2,1;1,6,12,7,13,5,11,2,8,4,10,3,14,9,15}及其适应度值即工作流执行时间ms1=max{f1,…,f15}=6787.00,操作结束;
同理,基于负载均衡关键任务优先的个体随机方法生成其它9个不同的个体如下:
ch2={5,1,3,6,2,4,4,6,5,2,6,3,6,6,1;1,2,8,5,11,6,12,7,13,3,9,4,14,10,15};
ch3={4,5,3,6,1,5,2,6,5,2,3,3,1,5,6;1,7,13,5,11,4,6,10,12,3,9,2,14,8,15};
ch4={4,5,5,3,1,3,2,6,1,2,6,3,6,5,6;1,7,13,5,11,6,4,10,12,3,2,14,8,9,15};
ch5={6,3,2,4,1,1,5,4,5,4,4,5,6,6,1;1,6,12,3,9,5,11,4,10,2,8,7,14,13,15};
ch6={6,4,5,1,2,3,5,4,3,4,6,4,6,4,1;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
ch7={6,5,2,4,1,3,5,4,5,4,3,5,1,2,6;1,3,9,5,11,6,4,12,10,7,2,14,8,13,15};
ch8={1,5,3,5,6,4,2,5,3,4,3,3,6,5,6;1,7,13,6,12,4,10,3,9,2,8,5,14,11,15};
ch9={4,1,3,6,2,5,5,6,2,4,6,5,6,4,6;1,2,8,5,11,4,6,3,7,14,13,10,12,9,15};
ch10={6,4,5,1,2,3,5,4,3,4,3,5,1,2,6;1,4,10,5,11,6,12,2,8,7,3,14,9,13,15};
其适应度值即工作流执行时间分别为:ms2=6265.67,ms3=7810.80,ms4=7941.20,ms5=6860.60,ms6=5984.70,ms7=6351.00,ms8=11636.80,ms9=7842.10,ms10=6100.33;
这样最终生成的初始当代种群为CP={ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10}。执行步骤3:对当代种群进行N次虚拟机分配列表的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用虚拟机分配列表的单点变异操作;
取ξ=0.5;
对当代种群进行虚拟机分配列表的参数化均匀交叉操作的具体实施过程如下:
执行步骤B1:基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2,即:执行步骤H1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn:rk1=5,rk2=3,rk3=7,rk4=9,rk5=6,rk6=1,rk7=4,rk8=10,rk9=8,rk10=2;执行步骤H2:令R=1+1/N=1.1,计算第1个个体ch1被选中的概率同理A2=0.122,A3=0.083,A4=0.069,A5=0.092,A6=0.148,A7=0.111,A8=0.063,A9=0.076,A10=0.135;执行步骤H3:计算累计概率A0=0, A3=0.306,A4=0.375,A5=0.467,A6=0.615,A7=0.726,A8=0.789,A9=0.865,A10=1.000;执行步骤H4:产生一个[0,1)的随机数,其为0.534,由于A5=0.467≤0.534<0.615=A6,因此选择ch6作为父体1,即chp1=ch6={6,4,5,1,2,3,5,4,3,4,6,4,6,4,1;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};执行步骤H5:产生一个[0,1)的随机数,其为0.255,由于A2=0.223≤0.255<0.306=A3,且3≠6,因此选择ch3作为父体2,即chp2=ch3={4,5,3,6,1,5,2,6,5,2,3,3,1,5,6;1,7,13,5,11,4,6,10,12,3,9,2,14,8,15};转到步骤H6;执行步骤H6:个体选择操作结束;
执行步骤B2:由chp1和chp2生成一个子体chc,针对第1个基因:生成一个[0,1)的随机数,其为0.05,由于0.05小于0.5,因此chc的第1个基因来自于chp1,即针对第2个基因:生成一个[0,1)的随机数,其为0.18,由于0.18小于0.5,因此chc的第2个基因来自于chp1,即针对第3个基因:生成一个[0,1)的随机数,其为0.17,由于0.17小于0.5,因此chc的第3个基因来自于chp1,即针对第4个基因:生成一个[0,1)的随机数,其为0.93,由于0.93大于0.5,因此chc的第4个基因来自于chp2,即重复执行以上操作,直至chc的前15个即虚拟机分配列表部分的所有基因位都确定,如表3所示;同时把chc的后15个即任务调度顺序列表部分的基因值置为空,即基因操作结束;
ch<sup>p1</sup> | 6 | 4 | 5 | 1 | 2 | 3 | 5 | 4 | 3 | 4 | 6 | 4 | 6 | 4 | 1 |
ch<sup>p2</sup> | 4 | 5 | 3 | 6 | 1 | 5 | 2 | 6 | 5 | 2 | 3 | 3 | 1 | 5 | 6 |
随机数 | 0.05 | 0.18 | 0.17 | 0.93 | 0.87 | 0.89 | 0.35 | 0.54 | 0.51 | 0.02 | 0.19 | 0.77 | 0.72 | 0.16 | 0.56 |
与ξ的关系 | < | < | < | > | > | > | < | > | > | < | < | > | > | < | > |
ch<sup>c</sup> | 6 | 4 | 5 | 6 | 1 | 5 | 5 | 6 | 5 | 4 | 6 | 3 | 1 | 4 | 6 |
表3
获得新个体ch′1=chc={6,4,5,6,1,5,5,6,5,4,6,3,1,4,6;NULL,…,NULL};
同理,经参数化均匀交叉操作生成的新种群中的其它个体如下:
ch′2={6,5,2,6,2,4,5,4,5,4,3,5,1,2,6;NULL,…,NULL};
ch′3={1,3,2,4,1,1,2,4,3,4,3,3,6,5,6;NULL,…,NULL};
ch′4={6,4,5,1,2,3,5,4,3,4,3,5,1,2,1;NULL,…,NULL};
ch′5={4,5,2,4,1,3,2,4,5,2,3,3,1,2,6;NULL,…,NULL};
ch′6={6,4,2,4,1,3,5,4,3,4,3,5,1,4,6;NULL,…,NULL};
ch′7={5,1,3,4,2,3,4,6,5,2,3,3,6,6,1;NULL,…,NULL};
ch′8={4,5,3,6,1,5,2,4,5,4,6,4,6,4,1;NULL,…,NULL};
ch′9={4,1,3,6,2,4,4,6,2,4,6,3,6,6,6;NULL,…,NULL};
ch′10={6,4,5,1,2,3,5,4,3,4,3,4,1,4,6;NULL,…,NULL};
这样生成的新种群为NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10};
取变异率pm=0.2;
对新种群进行虚拟机分配列表的单点变异操作的具体实施过程如下:
对于ch′1={6,4,5,6,1,5,5,6,5,4,6,3,1,4,6;NULL,…,NULL};
执行步骤C1:生成一个[0,1)之间的随机数λ,其为0.14,由于λ=0.14<pm=0.2,则转到步骤C2;
执行步骤C2:在个体ch′1的虚拟机分配列表中随机选择一个基因,其为g9,从VM9={vm1,vm2,vm3,vm4,vm5}中重新随机选择一个虚拟机,其为vm4,g9=4;
执行步骤C3:虚拟机分配列表的单点变异操作结束;
这样,变异后的个体变为:ch′1={6,4,5,6,1,5,5,6,4,4,6,3,1,4,6;NULL,…,NULL};
对于ch′2={6,5,2,6,2,4,5,4,5,4,3,5,1,2,6;NULL,…,NULL};
执行步骤C1:生成一个[0,1)之间的随机数λ,其为0.62,由于λ=0.62>pm=0.2,则转到步骤C3;
执行步骤C3:虚拟机分配列表的单点变异操作结束;
同理,新种群中的其它个体经虚拟机分配列表的单点变异操作后变为:
ch′3={1,3,2,4,1,1,2,4,3,4,3,3,6,5,6;NULL,…,NULL};
ch′4={6,4,5,6,2,3,5,4,3,4,3,5,1,2,1;NULL,…,NULL};
ch′5={4,5,2,4,1,3,2,4,3,2,3,3,1,2,6;NULL,…,NULL};
ch′6={6,4,2,4,1,3,5,4,3,4,3,5,1,6,6;NULL,…,NULL};
ch′7={5,1,3,4,2,3,4,6,5,2,3,3,6,6,1;NULL,…,NULL};
ch′8={4,5,3,6,1,5,2,4,5,4,6,4,6,4,1;NULL,…,NULL};
ch′9={4,1,3,6,2,4,4,5,2,4,6,3,6,6,6;NULL,…,NULL};
ch′10={6,4,5,1,2,3,5,4,3,4,3,4,1,4,6;NULL,…,NULL}。
执行步骤4:对新种群的每个个体采用基于关键任务优先调度的方法生成个体的任务调度顺序列表,获得其适应度值;
对新种群的每个个体采用基于关键任务优先调度的方法生成个体的任务调度顺序列表后,新种群变为:
ch′1={6,4,5,6,1,5,5,6,4,4,6,3,1,4,6;1,5,11,2,8,6,12,7,13,3,9,4,14,10,15};
ch′2={6,5,2,6,2,4,5,4,5,4,3,5,1,2,6;1,3,9,5,11,6,12,7,13,2,8,4,14,10,15};
ch′3={1,3,2,4,1,1,2,4,3,4,3,3,6,5,6;1,7,4,3,9,13,10,2,8,6,12,5,14,11,15};
ch′4={6,4,5,6,2,3,5,4,3,4,3,5,1,2,1;1,5,11,6,12,2,8,7,3,9,13,4,14,10,15};
ch′5={4,5,2,4,1,3,2,4,3,2,3,3,1,2,6;1,7,13,3,9,5,11,6,12,2,8,4,14,10,15};
ch′6={6,4,2,4,1,3,5,4,3,4,3,5,1,6,6;1,3,9,5,11,6,4,12,10,2,8,7,14,13,15};
ch′7={5,1,3,4,2,3,4,6,5,2,3,3,6,6,1;1,2,8,5,11,6,4,10,12,7,13,3,14,9,15};
ch′8={4,5,3,6,1,5,2,4,5,4,6,4,6,4,1;1,7,13,5,11,4,6,12,10,3,9,2,14,8,15};
ch′9={4,1,3,6,2,4,4,5,2,4,6,3,6,6,6;1,2,8,5,11,4,3,10,9,6,12,7,14,13,15};
ch′10={6,4,5,1,2,3,5,4,3,4,3,4,1,4,6;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
其适应度值即工作流执行时间分别为:ms′1=6387.10,ms′2=6761.00,ms′3=11819.40,ms′4=6100.33,ms′5=8509.80,ms′6=6244.67,ms′7=6460.40,ms′8=7848.80,ms′9=7528.60,ms′10=5984.70。
执行步骤5:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
根据适应度值,选择当代种群的ch2、ch6、ch7、ch10和新种群的ch′1、ch′2、ch′4、ch′6、ch′7、ch′10形成下一代种群,即GP={ch2,ch6,ch7,ch10,ch′1,ch′2,ch′4,ch′6,ch′7,ch′10};
令CP=GP,则当代种群的所有个体为:
ch1={5,1,3,6,2,4,4,6,5,2,6,3,6,6,1;1,2,8,5,11,6,12,7,13,3,9,4,14,10,15};
ch2={6,4,5,1,2,3,5,4,3,4,6,4,6,4,1;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
ch3={6,5,2,4,1,3,5,4,5,4,3,5,1,2,6;1,3,9,5,11,6,4,12,10,7,2,14,8,13,15};
ch4={6,4,5,1,2,3,5,4,3,4,3,5,1,2,6;1,4,10,5,11,6,12,2,8,7,3,14,9,13,15};
ch5={6,4,5,6,1,5,5,6,4,4,6,3,1,4,6;1,5,11,2,8,6,12,7,13,3,9,4,14,10,15};
ch6={6,5,2,6,2,4,5,4,5,4,3,5,1,2,6;1,3,9,5,11,6,12,7,13,2,8,4,14,10,15};
ch7={6,4,5,6,2,3,5,4,3,4,3,5,1,2,1;1,5,11,6,12,2,8,7,3,9,13,4,14,10,15};
ch8={6,4,2,4,1,3,5,4,3,4,3,5,1,6,6;1,3,9,5,11,6,4,12,10,2,8,7,14,13,15};
ch9={5,1,3,4,2,3,4,6,5,2,3,3,6,6,1;1,2,8,5,11,6,4,10,12,7,13,3,14,9,15};
ch10={6,4,5,1,2,3,5,4,3,4,3,4,1,4,6;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
其适应度值即工作流执行时间分别为:ms1=6265.67,ms2=5984.70,ms3=6351.00,ms4=6100.33,ms5=6387.10,ms6=6761.00,ms7=6100.33,ms8=6244.67,ms9=6460.40,ms10=5984.70。
执行步骤6:判断是否满足第一阶段迭代终止条件,如满足,则第一阶段进化结束,转到步骤7,否则转到步骤3;
第一阶段迭代终止条件设为种群进化TG1=15代;
由于当前种群进化迭代了两代,没有满足第一阶段迭代终止条件,因此转到步骤3。
……
这样不断重复执行步骤3至步骤6,迭代15代后,当代种群变为:
ch1={6,4,2,6,1,3,5,5,3,4,6,4,6,4,6;1,3,9,5,11,6,12,2,8,7,13,4,14,10,15};
ch2={6,4,5,6,1,3,2,6,3,4,3,4,6,4,6;1,7,13,5,11,6,12,2,8,3,9,4,14,10,15};
ch3={6,4,5,4,1,3,5,4,3,4,3,5,6,4,6;1,5,11,6,4,12,10,2,8,7,13,3,14,9,15};
ch4={6,5,2,4,1,3,5,4,3,4,3,4,6,4,1;1,3,9,5,11,6,4,12,10,7,13,2,14,8,15};
ch5={6,4,5,1,2,3,5,4,3,4,3,4,1,2,1;1,4,10,5,11,6,12,2,8,7,3,14,9,13,15};
ch6={5,5,5,6,1,3,5,4,4,4,6,5,1,4,6;1,5,11,6,12,4,10,7,3,9,13,2,14,8,15};
ch7={6,4,5,1,2,3,5,4,3,4,3,5,1,2,6;1,4,10,5,11,6,12,2,8,7,3,14,9,13,15};
ch8={5,4,5,6,2,5,4,6,5,4,2,3,6,6,1;1,5,11,7,13,2,8,4,10,6,12,3,14,9,15};
ch9={6,5,2,6,1,3,5,4,3,4,6,3,1,4,6;1,3,9,5,11,6,12,7,13,2,8,4,14,10,15};
ch10={6,4,5,1,2,3,5,4,3,4,6,4,6,4,1;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
其适应度值即工作流执行时间分别为:ms1=5884.70,ms2=5910.70,ms3=6222.27,ms4=5908.20,ms5=5982.60,ms6=5839.90,ms7=6100.33,ms8=6188.33,ms9=5891.60,ms10=5984.70;
由于在第一阶段种群进化了15代,满足了第一阶段迭代终止条件,则第一阶段进化结束,转到步骤7。
执行步骤7:对当代种群进行N/2次虚拟机分配列表和任务调度顺序列表交叉操作生成新种群,对新种群中的每个个体进行虚拟机分配列表和任务调度顺序列表变异操作;
对当代种群进行虚拟机分配列表和任务调度顺序列表交叉操作的具体实施过程如下:
执行步骤D1:基于排序的轮赌法从当代种群中随机选择两个不同的个体作为父体1和父体2,其为:chp1=ch6={5,5,5,6,1,3,5,4,4,4,6,5,1,4,6;1,5,11,6,12,4,10,7,3,9,13,2,14,8,15},chp2=ch3={6,4,5,4,1,3,5,4,3,4,3,5,6,4,6;1,5,11,6,4,12,10,2,8,7,13,3,14,9,15};
执行步骤D2:由于父体1的虚拟机分配列表{5,5,5,6,1,3,5,4,4,4,6,5,1,4,6}与父体2的虚拟机分配列表{6,4,5,4,1,3,5,4,3,4,3,5,6,4,6}不同,故转到步骤D3;
执行步骤D3:从前向后找出父体1的虚拟机分配列表{5,5,5,6,1,3,5,4,4,4,6,5,1,4,6}与父体2的虚拟机分配列表{6,4,5,4,1,3,5,4,3,4,3,5,6,4,6}的第1个不同基因的位置,其为1,从后向前找出父体1的虚拟机分配列表{5,5,5,6,1,3,5,4,4,4,6,5,1,4,6}与父体2的虚拟机分配列表{6,4,5,4,1,3,5,4,3,4,3,5,6,4,6}的第1个不同基因的位置,其为13;由于1≠13,故转到步骤D4;
执行步骤D4:随机产生一个1到12之间的正整数,其为8;
执行步骤D5:如表4所示,子体1的虚拟机分配列表部分的前8个基因来自于父体1的虚拟机分配列表部分的前8个基因,虚拟机分配列表部分的后7个基因来自于父体2的虚拟机列表部分的后7个基因;
执行步骤D6:如表4所示,子体2的虚拟机分配列表部分的前8个基因来自于父体2的虚拟机分配列表部分的前8个基因,虚拟机分配列表部分的后7个基因来自于父体1的虚拟机列表部分的后7个基因;
基因 | g<sub>1</sub> | g<sub>2</sub> | g<sub>3</sub> | g<sub>4</sub> | g<sub>5</sub> | g<sub>6</sub> | g<sub>7</sub> | g<sub>8</sub> | g<sub>9</sub> | g<sub>10</sub> | g<sub>11</sub> | g<sub>12</sub> | g<sub>13</sub> | g<sub>14</sub> | g<sub>15</sub> |
父体1 | 5 | 5 | 5 | 6 | 1 | 3 | 5 | 4 | 4 | 4 | 6 | 5 | 1 | 4 | 6 |
父体2 | 6 | 4 | 5 | 4 | 1 | 3 | 5 | 4 | 3 | 4 | 3 | 5 | 6 | 4 | 6 |
子体1 | 5 | 5 | 5 | 6 | 1 | 3 | 5 | 4 | 3 | 4 | 3 | 5 | 6 | 4 | 6 |
子体2 | 6 | 4 | 5 | 4 | 1 | 3 | 5 | 4 | 4 | 4 | 6 | 5 | 1 | 4 | 6 |
表4
执行步骤D7:由于父体1的调度顺序列表{1,5,11,6,12,4,10,7,3,9,13,2,14,8,15}和父体2的调度顺序列表{1,5,11,6,4,12,10,2,8,7,13,3,14,9,15}不同,故转到步骤D8;
执行步骤D8:从前向后找出父体1的调度顺序列表{1,5,11,6,12,4,10,7,3,9,13,2,14,8,15}和父体2的调度顺序列表{1,5,11,6,4,12,10,2,8,7,13,3,14,9,15}的第1个不同基因的位置,其为5,从后向前找出父体1的调度顺序列表{1,5,11,6,12,4,10,7,3,9,13,2,14,8,15}和父体2的调度顺序列表{1,5,11,6,4,12,10,2,8,7,13,3,14,9,15}的第1个不同基因的位置,其为14;
执行步骤D9:随机产生一个5到13之间的正整数,其为7;
执行步骤D10:如表5所示,子体1的调度顺序列表的前7个基因来自于父体1的调度顺序列表的前7个基因,后8个基因来自于父体2的调度顺序列表{1,5,11,6,4,12,10,2,8,7,13,3,14,9,15}中删除父体1的调度顺序列表的前7个基因1、5、11、6、12、4、10后的基因列表;
执行步骤D11:如表5所示,子体2的调度顺序列表的前7个基因来自于父体2的调度顺序列表的前7个基因,后8个基因来自于父体1的调度顺序列表{1,5,11,6,12,4,10,7,3,9,13,2,14,8,15}中删除父体2的调度顺序列表的前7个基因1、5、11、6、4、12、10后的基因列表;
基因 | g<sub>16</sub> | g<sub>17</sub> | g<sub>18</sub> | g<sub>19</sub> | g<sub>20</sub> | g<sub>21</sub> | g<sub>22</sub> | g<sub>23</sub> | g<sub>24</sub> | g<sub>25</sub> | g<sub>26</sub> | g<sub>27</sub> | g<sub>28</sub> | g<sub>29</sub> | g<sub>30</sub> |
父体1 | 1 | 5 | 11 | 6 | 12 | 4 | 10 | 7 | 3 | 9 | 13 | 2 | 14 | 8 | 15 |
父体2 | 1 | 5 | 11 | 6 | 4 | 12 | 10 | 2 | 8 | 7 | 13 | 3 | 14 | 9 | 15 |
子体1 | 1 | 5 | 11 | 6 | 12 | 4 | 10 | 2 | 8 | 7 | 13 | 3 | 14 | 9 | 15 |
子体2 | 1 | 5 | 11 | 6 | 4 | 12 | 10 | 7 | 3 | 9 | 13 | 2 | 14 | 8 | 15 |
表5
执行步骤D12:输出
chc1={5,5,5,6,1,3,5,4,3,4,3,5,6,4,6;1,5,11,6,12,4,10,2,8,7,13,3,14,9,15},
chc2={6,4,5,4,1,3,5,4,4,4,6,5,1,4,6;1,5,11,6,4,12,10,7,3,9,13,2,14,8,15},操作结束;
这样获得新个体ch′1=chc1,ch′2=chc2;
同理,经交叉操作生成新种群中剩余的个体如下:
ch′3={6,4,5,6,1,3,2,6,3,4,3,4,1,2,1;1,7,13,5,4,10,11,6,12,2,8,3,14,9,15};
ch′4={6,4,5,1,2,3,5,4,3,4,3,4,6,4,6;1,4,10,5,7,13,11,6,12,2,8,3,9,14,15};
ch′5={6,4,5,1,2,3,5,4,5,4,2,3,6,6,1;1,4,10,5,11,6,12,2,8,7,13,3,14,9,15};
ch′6={5,4,5,6,2,5,4,6,3,4,6,4,6,4,1;1,5,11,7,13,2,8,4,10,6,12,3,14,9,15};
ch′7={6,5,2,4,1,3,5,4,3,4,6,4,6,4,1;1,3,9,5,11,6,4,12,10,2,8,7,13,14,15};
ch′8={6,4,5,1,2,3,5,4,3,4,3,4,6,4,1;1,4,10,5,11,6,12,2,3,9,7,13,14,8,15};
ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,13,5,11,6,3,9,12,2,8,4,14,10,15};
ch′10={6,5,2,6,1,3,2,6,3,4,3,4,6,4,6;1,3,9,5,11,6,7,13,12,2,8,4,14,10,15};
这样生成的新种群为NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10};
取变异率pm=0.2;
对新种群进行虚拟机分配列表和调度顺序列表变异操作的具体实施过程如下:
对于ch′1={5,5,5,6,1,3,5,4,3,4,3,5,6,4,6;1,5,11,6,12,4,10,2,8,7,13,3,14,9,15};
执行步骤E1:生成一个[0,1)之间的随机数λ,其为0.91,由于λ=0.91>pm=0.2,则转到步骤E6;
执行步骤E6:虚拟机分配列表和调度顺序列表变异操作结束;
对于ch′2={6,4,5,4,1,3,5,4,4,4,6,5,1,4,6;1,5,11,6,4,12,10,7,3,9,13,2,14,8,15};
执行步骤E1:生成一个[0,1)之间的随机数λ,其为0.12,由于λ=0.12<pm=0.2,则转到步骤E2;
执行步骤E2:从虚拟机分配列表{6,4,5,4,1,3,5,4,4,4,6,5,1,4,6}中随机选择一个基因,其为g13=1,从可处理该任务的虚拟机VM13={vm1,vm6}中重新选择一个虚拟机,其为vm6,即g13=6;
执行步骤E3:从任务调度顺序列表{1,5,11,6,4,12,10,7,3,9,13,2,14,8,15}中随机选择一个任务,其为g25=9;
执行步骤E4:任务g25=9存在父任务,则向前找到其第一个父任务g24=3,pos1=i′+1=24+1=25;任务g25=9存在子任务,则向后找到其第一个子任务g30=15,pos2=i″-1=30-1=29;
执行步骤E5:在[25,29]之间重新随机选择一个位置插入g25=9,其为g26;
执行步骤E6:虚拟机分配列表和调度顺序列表变异操作结束;
这样,经虚拟机分配列表和调度顺序列表变异操作后的个体变为:
ch′2={6,4,5,4,1,3,5,4,4,4,6,5,6,4,6;1,5,11,6,4,12,10,7,3,13,9,2,14,8,15};
同理,新种群中的其它个体经虚拟机分配列表和调度顺序列表变异操作后变为:
ch′3={6,4,5,6,1,3,2,6,3,4,3,4,1,2,1;1,7,13,5,4,10,11,6,12,2,8,3,14,9,15};
ch′4={6,4,5,6,2,3,5,4,3,4,3,4,6,4,6;1,4,10,5,7,13,11,6,12,2,8,3,14,9,15};
ch′5={6,4,5,1,2,3,5,4,5,4,2,5,6,6,1;1,4,10,5,11,6,12,2,8,7,13,3,9,14,15};
ch′6={5,4,5,6,2,5,4,6,3,4,6,4,6,4,1;1,5,11,7,13,2,8,4,10,6,12,3,14,9,15};
ch′7={6,5,2,4,1,3,5,6,3,4,6,4,6,4,1;1,3,9,5,11,6,4,10,2,8,7,13,12,14,15};
ch′8={4,4,5,1,2,3,5,4,3,4,3,4,6,4,1;1,4,10,5,11,6,12,2,3,9,8,7,13,14,15};
ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,13,5,11,6,3,9,12,2,8,4,14,10,15};
ch′10={6,5,2,6,1,3,2,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15}。
执行步骤8:对新种群中的每个个体采用FBI&D和LDI方法进行个体改进并计算其适应度值;
对新种群中的每个个体采用FBI&D方法进行个体改进,例如对新种群中的ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,13,5,11,6,3,9,12,2,8,4,14,10,15}采用FBI&D方法进行个体改进的具体实施过程如下:
执行步骤F1:计算各任务的执行时间:同理,et2=598,et3=452,et4=116,et5=876,et6=669.33,et7=470,et8=2.1,et9=7.6,et10=8.8,et11=10.8,et12=3,et13=12.6,et14=35.5,et15=9;
执行步骤F2:k=1,采用基于插入模式的串行个体解码方法对个体ch′9进行解码,获得所有任务的完成时间:f1=4922.00,f2=5520.00,f3=5844.00,f4=5038.00,f5=6280.60,f6=5591.33,f7=5392.00,f8=5522.10,f9=5851.60,f10=5530.90,f11=6291.40,f12=5594.33,f13=5404.60,f14=6316.10,f15=6300.40,及工作流的执行时间ms′9=max{f1,…,f15}=6316.10;
执行步骤F3:颠倒任务的父子关系,即SC15={t8,t9,t10,t11,t12,t13};SC14={t2,t3,t4,t5,t6,t7};PR13={t15},SC13={t7};PR12={t15},SC12={t6};PR11={t15},SC11={t5};PR10={t15},SC10={t4};PR9={t15},SC9={t3};PR8={t15},SC8={t2};PR7={t13,t14},SC7={t1};PR6={t12,t14},SC6={t1};PR5={t11,t14},SC5={t1};PR4={t10,t14},SC4={t1};PR3={t9,t14},SC3={t1};PR2={t8,t14},SC2={t1};PR1={t2,t3,t4,t5,t6,t7},把个体ch′9中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把个体中的基因g15+i设置为倒数第i个完成的任务,i=1,…,15,形成个体ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;14,15,11,5,9,3,12,6,10,8,2,13,7,4,1};
执行步骤F4:k=k+1=1+1=2,对个体ch′9采用基于插入模式的串行个体解码获得所有任务的完成时间:f1=5879.50,f2=644.40,f3=487.50,f4=160.30,f5=911.50,f6=704.83,f7=957.50,f8=46.40,f9=16.60,f10=44.30,f11=19.80,f12=19.60,f13=21.60,f14=35.50,f15=9.00,及工作流的执行时间ms′9=max{f1,…,f15}=5879.50;
执行步骤F5:由于ms′9=5879.50<ms′9=6316.10,那么ch′9=ch′9,ms′9=ms′9,fi=fi,i=1,…,15,转到步骤F3;
执行步骤F3:颠倒任务的父子关系,即SC1={t2,t3,t4,t5,t6,t7};PR2={t1},SC2={t8,t14};PR3={t1},SC3={t9,t14};PR4={t1},SC4={t10,t14};PR5={t1},SC5={t11,t14};PR6={t1},SC6={t12,t14};PR7={t1},SC7={t13,t14};PR8={t2},SC8={t15};PR9={t3},SC9={t15};PR10={t4},SC10={t15};PR11={t5},SC11={t15};PR12={t6},SC12={t15};PR13={t7},SC13={t15};PR14={t2,t3,t4,t5,t6,t7},PR15={t8,t9,t10,t11,t12,t13},把个体ch′9中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把个体中的基因g15+i设置为倒数第i个完成的任务,i=1,…,15,形成个体ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,5,6,2,3,4,8,10,14,13,11,12,9,15};
执行步骤F4:k=k+1=2+1=3,对个体ch′9采用基于插入模式的串行个体解码获得所有任务的完成时间:f1=4922.00,f2=5520.00,f3=5844.00,f4=5038.00,f5=5798.00,f6=5591.33,f7=5392.00,f8=5522.10,f9=5851.60,f10=5530.90,f11=5808.80,f12=5594.33,f13=5810.60,f14=5879.50,f15=5860.60,及工作流的执行时间ms′9=max{f1,…,f15}=5879.50;
执行步骤F5:由于ms′9=ms′9=5879.50,则转到步骤F6;
执行步骤F6:由于k=3,故输出个体ch′9=ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,5,6,2,3,4,8,10,14,13,11,12,9,15},工作流的执行时间为ms′9=ms′9=5879.50,操作结束;
其中,以上述个体ch′9={6,4,5,6,1,3,5,4,3,4,6,3,1,4,6;1,7,13,5,11,6,3,9,12,2,8,4,14,10,15}k=1时的解码为例,基于插入模式的串行个体解码方法的具体实施过程如下:
执行步骤I1:令所有任务的就绪时间rt1=rt2=…=rt15=0;k=1;令所有虚拟机的可得时间段列表vatl1=…=vatl6={[0,M]},M为一个接近无穷大的数;
执行步骤I2:选取编号为g15+1=g16=1的任务;
执行步骤I3:基于插入模式把任务1分配给虚拟机g1=6;即执行步骤I3.1:在vatl6中从早到晚找出一个空闲时间段[0,M],满足M-0≥et1=4922和M-4922≥rt1=0;执行步骤I3.2:计算t1分配给vm6处理后的开始时间s1=max{v6,rt1}=max{0,0}=0,完成时间f1=s1+et1=0+4922=4922,更新t1子任务的就绪时间:rt2=max{rt2,f1}=max{0,4922}=4922,rt3=4922,rt4=4922,rt5=4922,rt6=4922,rt7=4922;执行步骤I3.3:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[4922,M],则vatl6={[4922,M]};
执行步骤I4:k=k+1=1+1=2,由于k=2≤I=15,则转到步骤I2;
执行步骤I2:选取编号为g15+2=g17=7的任务;
执行步骤I3:基于插入模式把任务7分配给虚拟机g7=5;即执行步骤I3.1:在vatl5中从早到晚找出一个空闲时间段[0,M],满足M-0≥et7=470和M-470≥rt7=4922;执行步骤I3.2:计算t7分配给vm5处理后的开始时间s7=max{v5,rt7}=max{0,4922}=4922,完成时间f7=s7+et7=4922+470=5392,更新t7子任务的就绪时间:rt13=max{rt13,f7}=max{0,5392}=5392,rt14=max{0,5392}=5392;执行步骤I3.3:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[0,4922]和[5392,M],则vatl5={[0,4922],[5392,M]};
执行步骤I4:k=k+1=2+1=3,由于k=3≤I=15,则转到步骤I2;
执行步骤I2:选取编号为g15+3=g18=13的任务;
执行步骤I3:基于插入模式把任务13分配给虚拟机g13=1;即执行步骤I3.1:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥12.6和M-12.6≥5392;执行步骤I3.2:计算t13分配给vm1处理后的开始时间s13=max{0,5392}=5392,完成时间f13=5392+12.6=5404.6,更新t13子任务的就绪时间:rt15=max{rt15,f13}=max{0,5404.6}=5404.6;执行步骤I3.3:在虚拟机可得时间段列表vatl1中删除[0,M],插入区间长度大于0的[0,5392]和[5404.6,M],则vatl1={[0,5392],[5404.6,M]};
执行步骤I4:k=3+1=4,由于k=4≤I=15,则转到步骤I2;
执行步骤I2:选取编号为g15+4=g19=5的任务;
执行步骤I3:基于插入模式把任务5分配给虚拟机g5=1;即执行步骤I3.1:在vatl1中从早到晚找出一个空闲时间段[5404.6,M],满足M-5404.6≥876和M-876≥4922;执行步骤I3.2:计算t5分配给vm1处理后的开始时间s5=max{5404.6,4922}=5404.6,完成时间f5=5404.6+876=6280.6,更新t5子任务的就绪时间:rt11=max{0,6280.6}=6280.6,rt14=max{5392,6280.6}=6280.6;执行步骤I3.3:在虚拟机可得时间段列表vatl1中删除[5404.6,M],插入区间长度大于0的[6280.6,M],则vatl1={[0,5392],[6280.6,M]};
执行步骤I4:k=4+1=5,由于k=5≤I=15,则转到步骤I2;
……
这样不断重复执行步骤I2至步骤I4,直至k=16>I=15,获得所有任务的开始时间和完成时间,转到步骤I5;
执行步骤I5:输出工作流执行时间ms′9=max{f1,…,f15}=6316.10;各任务的开始时间:s1=0.00,s2=4922.00,s3=5392.00,s4=4922.00,s5=5404.60,s6=4922.00,s7=4922.00,s8=5520.00,s9=5844.00,s10=5522.10,s11=6280.60,s12=5591.33,s13=5392.00,s14=6280.60,s15=6291.40;完成时间:f1=4922.00,f2=5520.00,f3=5844.00,f4=5038.00,f5=6280.60,f6=5591.33,f7=5392.00,f8=5522.10,f9=5851.60,f10=5530.90,f11=6291.40,f12=5594.33,f13=5404.60,f14=6316.10,f15=6300.40;操作结束;
同理,新种群中的其它个体经FBI&D方法改进后变为:
ch′1={5,5,5,6,1,3,5,4,3,4,3,5,6,4,6;1,5,11,6,12,4,10,2,8,7,13,3,14,9,15};
ch′2={6,4,5,4,1,3,5,4,4,4,6,5,6,4,6;1,4,3,5,6,10,9,2,7,14,13,11,12,8,15};
ch′3={6,4,5,6,1,3,2,6,3,4,3,4,1,2,1;1,7,5,6,2,3,4,14,9,10,13,11,12,8,15};
ch′4={6,4,5,6,2,3,5,4,3,4,3,4,6,4,6;1,4,10,5,7,13,11,6,12,2,8,3,14,9,15};
ch′5={6,4,5,1,2,3,5,4,5,4,2,5,6,6,1;1,4,7,5,6,2,3,13,14,8,10,12,11,9,15};
ch′6={5,4,5,6,2,5,4,6,3,4,6,4,6,4,1;1,5,11,7,13,2,8,4,10,6,12,3,14,9,15};
ch′7={6,5,2,4,1,3,5,6,3,4,6,4,6,4,1;1,3,9,5,11,6,4,10,2,8,7,13,12,14,15};
ch′8={4,4,5,1,2,3,5,4,3,4,3,4,6,4,1;1,4,10,5,11,6,12,2,3,9,8,7,13,14,15};
ch′10={6,5,2,6,1,3,2,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15};
其适应度值即工作流执行时间分别为:ms′1=5839.90,ms′2=6236.07,ms′3=5920.60,ms′4=6236.33,ms′5=5975.80,ms′6=6195.63,ms′7=5884.70,ms′8=7787.70,ms′10=6844.30;
对新种群中每个个体采用LDI方法进行个体改进,例如对新种群中的ch′10={6,5,2,6,1,3,2,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15}采用LDI方法进行个体改进的具体实施过程如下:
执行步骤G2:找出负载最小的虚拟机,其为vm4,由于ld4=5.7>0,故转到步骤G3;
执行步骤G5:由于ST4={t2,t4,t6,t7}不为空,故从ST4中按顺序取出一个其所在虚拟机的负载是最高的任务,其为t7,转到步骤G6;
执行步骤G6:令g7=4,形成新的个体ch′10={6,5,2,6,1,3,4,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15},采用FBI&D方法对ch′10进行解码与改进,个体变为ch′10={6,5,2,6,1,3,4,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15},工作流执行时间为ms′10=5884.70<ms′10=6844.30,因此ch′10=ch′10,ms′10=ms′10,转到步骤G7;
执行步骤G7:LDI操作结束;
同理,新种群中的其它个体经LDI方法改进后变为:
ch′1={5,5,5,6,2,3,5,4,3,4,3,5,6,4,6;1,5,11,6,12,4,10,2,8,7,13,3,14,9,15};
ch′2={6,4,5,4,1,3,5,4,2,4,6,5,6,4,6;1,4,3,5,6,10,9,2,7,14,13,11,12,8,15};
ch′3={5,4,5,6,1,3,2,6,3,4,3,4,1,2,1;1,7,5,6,2,3,4,14,9,10,13,11,12,8,15};
ch′4={6,4,5,1,2,3,5,4,3,4,3,4,6,4,6;1,4,10,5,7,13,11,6,12,2,8,3,14,9,15};
ch′5={6,4,5,1,2,3,5,4,5,4,2,3,6,6,1;1,4,7,5,6,2,3,13,14,8,10,12,11,9,15};
ch′6={5,4,5,6,2,5,4,6,3,4,6,4,1,4,1;1,5,11,7,13,2,8,4,10,6,12,3,14,9,15};
ch′7={6,5,2,4,1,3,5,6,3,4,6,4,6,4,1;1,3,9,5,11,6,4,10,2,8,7,13,12,14,15};
ch′8={4,4,5,1,2,3,5,4,3,4,3,4,6,4,6;1,4,10,5,11,6,12,2,3,9,8,7,13,14,15};
ch′9={6,4,5,6,1,3,5,4,3,4,2,3,1,4,6;1,7,5,6,2,3,4,8,10,14,13,11,12,9,15};
其适应度值即工作流执行时间分别为:ms′1=5839.90,ms′2=6229.27,ms′3=5920.60,ms′4=5984.70,ms′5=5975.80,ms′6=6195.63,ms′7=5884.70,ms′8=7787.70,ms′9=5879.50。
执行步骤9:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
根据适应度值,选择当代种群的ch1、ch2、ch4、ch6、ch9和新种群的ch′1、ch′3、ch′7、ch′9、ch′10形成下一代种群,即GP={ch1,ch2,ch4,ch6,ch9,ch′1,ch′3,ch′7,ch′9,ch′10};
令CP=GP,则当代种群的所有个体为:
ch1={6,4,2,6,1,3,5,5,3,4,6,4,6,4,6;1,3,9,5,11,6,12,2,8,7,13,4,14,10,15};
ch2={6,4,5,6,1,3,2,6,3,4,3,4,6,4,6;1,7,13,5,11,6,12,2,8,3,9,4,14,10,15};
ch3={6,5,2,4,1,3,5,4,3,4,3,4,6,4,1;1,3,9,5,11,6,4,12,10,7,13,2,14,8,15};
ch4={5,5,5,6,1,3,5,4,4,4,6,5,1,4,6;1,5,11,6,12,4,10,7,3,9,13,2,14,8,15};
ch5={6,5,2,6,1,3,5,4,3,4,6,3,1,4,6;1,3,9,5,11,6,12,7,13,2,8,4,14,10,15};
ch6={5,5,5,6,2,3,5,4,3,4,3,5,6,4,6;1,5,11,6,12,4,10,2,8,7,13,3,14,9,15};
ch7={5,4,5,6,1,3,2,6,3,4,3,4,1,2,1;1,7,5,6,2,3,4,14,9,10,13,11,12,8,15};
ch8={6,5,2,4,1,3,5,6,3,4,6,4,6,4,1;1,3,9,5,11,6,4,10,2,8,7,13,12,14,15};
ch9={6,4,5,6,1,3,5,4,3,4,2,3,1,4,6;1,7,5,6,2,3,4,8,10,14,13,11,12,9,15};
ch10={6,5,2,6,1,3,4,6,3,4,3,4,6,4,1;1,3,9,5,11,6,7,12,2,8,4,14,10,13,15};
其适应度值即工作流执行时间分别为:ms1=5884.70,ms2=5910.70,ms3=5908.20,ms4=5839.90,ms5=5891.60,ms6=5839.90,ms7=5920.60,ms8=5884.70,ms9=5879.50,ms10=5884.70。
执行步骤10:判断是否满足第二阶段迭代终止条件,如满足,则转到步骤11,否则转到步骤7;
第二阶段迭代终止条件设为种群进化TG2=20代;
由于种群在第二阶段进化迭代了一代,没有满足第二阶段迭代终止条件,则转到步骤7。
……
这样不断重复执行步骤7至步骤10,迭代20代后,当代种群变为:
ch1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15};
ch2={5,5,5,5,6,5,5,5,5,4,6,3,6,5,6;1,6,5,4,2,7,13,3,12,8,11,9,14,10,15};
ch3={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15};
ch4={5,5,5,5,6,5,5,6,5,4,6,5,1,5,6;1,6,4,5,2,7,3,12,8,11,13,9,14,10,15};
ch5={5,5,5,5,6,5,5,6,5,2,6,3,6,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15};
ch6={5,5,5,5,6,5,5,5,5,4,6,4,1,5,6;1,6,5,4,2,7,3,12,8,13,11,9,14,10,15};
ch7={5,5,5,5,6,5,5,6,5,2,3,4,1,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15};
ch8={5,5,5,5,6,5,5,5,1,4,6,3,6,5,6;1,3,6,5,4,7,12,2,8,11,13,9,14,10,15};
ch9={5,5,5,5,6,5,5,6,5,2,6,3,1,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15};
ch10={5,5,5,5,6,5,5,5,1,2,6,3,6,5,6;1,3,6,5,4,7,12,2,8,11,13,9,14,10,15};
其适应度值即工作流执行时间分别为:ms1=5375.80,ms2=5378.00,ms3=5377.80,ms4=5379.40,ms5=5376.20,ms6=5380.40,ms7=5380.20,ms8=5378.40,ms9=5378.60,ms10=5379.20;
由于种群进化了20代,满足了第二阶段迭代终止条件,则第二阶段进化结束,转到步骤11。
执行步骤11:输出当代种群中的最优个体,其对应的调度方案即为优化方案;
当代种群中的最优个体为BestChrom=ch1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,6,5,4,2,7,3,12,8,11,13,9,14,10,15},其工作流执行时间为msBestChrom=ms1=5375.80,对应的调度方案如表6所示。
表6
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。
Claims (6)
1.一种混合启发式和遗传算法的两阶段云工作流调度优化方法,其特征在于:包括以下步骤:
步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,…,tI},其中I是任务的数量,ti表示任务i,即编号为i的任务;
获取任务间的时序关系:任务i的父任务集PRi,任务i的子任务集SCi,其中i=1,2…,I;
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.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:初始化当代种群;
采用基于负载均衡关键任务优先的个体随机生成方法生成N个不同的个体,形成初始当代种群,其中N是种群规模且为偶数;
所述个体采用2I位整数编码,I为任务数量,其方法如下:ch={g1,…,gI,gI+1,…,g2I},基因gi是一个非负整数;其中,{g1,…,gI}是虚拟机分配列表,gi表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机gi,gi∈VMi,i=1,…,I;{gI+1,…,g2I}是任务调度顺序列表,是1,…,I的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gI+i表示第i个被调度的任务的编号,即任务gI+i是第i个被调度的;
所述基于负载均衡关键任务优先的个体随机生成方法包括如下步骤:
步骤A1:基于负载均衡的方法生成虚拟机分配列表;
步骤A3:计算处理任务时需要从共享数据库获得输入文件的传输时间:
步骤A4:计算处理任务时需要从其它虚拟机获得输入文件的传输时间:
步骤A5:计算任务的排序值rank;
步骤A6:基于关键任务优先调度的方法生成任务调度顺序列表;
步骤A7:输出一个个体{g1,…,gI,gI+1,…,g2I},及其适应度值,操作结束;
所述适应度值为工作流执行时间ms=max{f1,…,fI},个体适应度值越小,则个体越优;
步骤3:对当代种群进行N次虚拟机分配列表的参数化均匀交叉操作生成新种群,对新种群中的每个个体采用虚拟机分配列表的单点变异操作;
所述虚拟机分配列表的参数化均匀交叉操作包括如下步骤:
所述虚拟机分配列表的单点变异操作包括如下步骤:
步骤C1:生成一个[0,1)之间的随机数λ,如果λ<pm那么转到步骤C2,否则转到步骤C3;
步骤C2:在个体的虚拟机分配列表{g1,…,gI}中随机选择一个基因gi;从VMi中重新随机选择一个虚拟机,不妨设为vmj,gi=j;
步骤C3:虚拟机分配列表的单点变异操作结束;
其中:pm∈(0,1]是变异率;
步骤4:对新种群的每个个体采用基于关键任务优先调度的方法生成个体的任务调度顺序列表,获得其适应度值;
步骤5:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤6:判断是否满足第一阶段迭代终止条件,如满足,则第一阶段进化结束,转到步骤7,否则转到步骤3;
所述第一阶段终止条件为迭代到指定的代数TG1或连续迭代GG1代最优个体没有改进;
步骤7:对当代种群进行N/2次虚拟机分配列表和任务调度顺序列表交叉操作生成新种群,对新种群中的每个个体进行虚拟机分配列表和任务调度顺序列表变异操作;
所述虚拟机分配列表和任务调度顺序列表交叉操作包括如下步骤:
步骤D4:随机产生一个δ1到δ2-1的正整数α;
步骤D9:随机产生一个δ3到δ4-1的正整数β;
所述虚拟机分配列表和调度顺序列表变异操作包括如下步骤:
步骤E1:生成一个[0,1)之间的随机数λ,如果λ<pm,则转到步骤E2,否则转到步骤E6;
步骤E2:从虚拟机分配列表{g1,…,gI}中随机选择一个基因gi,从VMi中重新随机选择一个虚拟机,不妨设为vmj,gi=j;
步骤E3:从任务调度顺序列表{gI+1,…,g2I}中随机选择一个任务gi;
步骤E4:如果任务gi存在父任务则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;
步骤E5:在[pos1,pos2]之间重新随机选择一个位置插入gi;
步骤E6:虚拟机分配列表和调度顺序列表变异操作结束;
步骤8:对新种群中的每个个体采用FBI&D和LDI方法进行个体改进并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤F2:令计数变量k=1,采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间f1,…,fI及工作流的执行时间ms=max{f1,…,fI};
步骤F3:颠倒任务的父子关系,即交换PRi与SCi中的元素,i=1,…,I;把个体ch中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把个体中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成个体
所述LDI方法包括如下步骤如下:
步骤G2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤G3,否则转到步骤G4;
步骤G4:令任务集STj′=Tj′,转到步骤G5;
步骤G5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤G6;否则转到步骤G7;
步骤G7:LDI操作结束;
步骤9:根据适应度值从小到大从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤10:判断是否满足第二阶段迭代终止条件,如满足,则转到步骤11,否则转到步骤7;
所述第二阶段终止条件为进入第二阶段后迭代到指定的代数TG2或连续迭代GG2代最优个体没有改进;
步骤11:输出当代种群中的最优个体,其对应的调度方案即为优化方案。
4.根据权利要求1所述的一种混合启发式和遗传算法的两阶段云工作流调度优化方法,其特征在于:步骤A6中采用基于关键任务优先调度的方法生成任务调度顺序列表的具体步骤如下:
步骤A6.1:系统状态初始化;
步骤A6.1.1:令虚拟机可得时间段列表vatlj={[0,M]},M为一个接近无穷大的数;令计数变量k=1;
步骤A6.2:从任务集RT中取出关键任务,即任务的就绪时间与rank之和最大的任务,不妨设为ti;gI+k=i;
步骤A6.3:把ti分配给虚拟机gi,不妨设j=gi;
步骤A6.3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤A6.3.3:计算ti的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤A6.3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A6.4:如果RT不为空,则令k=k+1转到步骤A6.2,否则操作结束。
5.根据权利要求1所述的一种混合启发式和遗传算法的两阶段云工作流调度优化方法,其特征在于:所述步骤B1、步骤D1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤H1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤H6:个体选择操作结束。
6.根据权利要求1所述的一种混合启发式和遗传算法的两阶段云工作流调度优化方法,其特征在于:所述步骤F2、步骤F4中基于插入模式的串行个体解码方法的具体步骤如下:
步骤I1:令所有任务的就绪时间rti=0,i=1,…,I;令计数变量k=1;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤I2:选取编号为gI+k的任务,不妨设i=gI+k;
步骤I3:基于插入模式把任务i分配给虚拟机gi;
步骤I4:令k=k+1,如果k≤I则转到步骤I2,否则步骤I5;
步骤I5:输出工作流执行时间ms=max{f1,…,fI},si、fi,i=1,…,I,操作结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911261566.9A CN111090510A (zh) | 2019-12-10 | 2019-12-10 | 混合启发式和遗传算法的两阶段云工作流调度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911261566.9A CN111090510A (zh) | 2019-12-10 | 2019-12-10 | 混合启发式和遗传算法的两阶段云工作流调度优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111090510A true CN111090510A (zh) | 2020-05-01 |
Family
ID=70396350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911261566.9A Withdrawn CN111090510A (zh) | 2019-12-10 | 2019-12-10 | 混合启发式和遗传算法的两阶段云工作流调度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090510A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101820A (zh) * | 2020-10-28 | 2020-12-18 | 埃克斯工业(广东)有限公司 | 一种两阶段流水加工调度方法 |
WO2021243589A1 (en) * | 2020-06-03 | 2021-12-09 | Citrix Systems, Inc. | Prioritizing sequential application tasks |
-
2019
- 2019-12-10 CN CN201911261566.9A patent/CN111090510A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021243589A1 (en) * | 2020-06-03 | 2021-12-09 | Citrix Systems, Inc. | Prioritizing sequential application tasks |
US11341443B2 (en) | 2020-06-03 | 2022-05-24 | Citrix Systems, Inc. | Prioritizing sequential application tasks |
CN112101820A (zh) * | 2020-10-28 | 2020-12-18 | 埃克斯工业(广东)有限公司 | 一种两阶段流水加工调度方法 |
CN112101820B (zh) * | 2020-10-28 | 2021-05-04 | 埃克斯工业(广东)有限公司 | 一种两阶段流水加工调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shen et al. | Mathematical modeling and multi-objective evolutionary algorithms applied to dynamic flexible job shop scheduling problems | |
CN111126800B (zh) | 使用分层自适应智能算法的多模资源受限项目调度方法 | |
CN111090510A (zh) | 混合启发式和遗传算法的两阶段云工作流调度优化方法 | |
CN110008023B (zh) | 基于遗传算法的云计算系统预算约束随机任务调度方法 | |
CN110909787A (zh) | 基于聚类的进化算法进行多目标批调度优化的方法和系统 | |
CN110780985A (zh) | 一种有限时间的并行任务调度方法与装置 | |
CN110928648B (zh) | 融合启发式和智能计算的云工作流分段在线调度优化方法 | |
CN111008745A (zh) | 混合启发式与智能算法的多模资源受限项目调度优化方法 | |
CN117075545A (zh) | 一种多目标柔性作业车间调度方法、电子设备、介质 | |
CN111026534B (zh) | 云计算环境下基于多种群遗传算法的工作流执行优化方法 | |
CN110991917B (zh) | 采用两阶段遗传算法的多模资源受限项目调度优化方法 | |
CN112884368B (zh) | 高端装备交货时间与延迟最小的多目标调度方法及系统 | |
CN111078361A (zh) | 基于分布式估计算法的云工作流调度优化方法 | |
CN110928670B (zh) | 云计算环境下基于偏序自适应遗传算法的工作流优化方法 | |
CN110941487B (zh) | 云计算环境下基于多阶段遗传算法的工作流调度优化方法 | |
CN111047183A (zh) | 基于分层自适应智能计算算法的云工作流调度优化方法 | |
CN110928671B (zh) | 基于层次与负载均衡遗传算法的云工作流调度优化方法 | |
CN111078381A (zh) | 基于二维编码遗传算法的云工作流调度优化方法 | |
CN115617510A (zh) | 一种基于信息素遗传蚁群算法的服务器动态均衡方法及系统 | |
CN110968428A (zh) | 云工作流虚拟机配置和任务调度协同优化方法 | |
CN111026506A (zh) | 采用多种群协同进化遗传算法的云工作流调度优化方法 | |
CN111061563A (zh) | 云计算环境下基于多解码遗传算法的工作流调度优化方法 | |
CN111027856B (zh) | 基于二维多种群遗传算法的多模资源受限项目调度方法 | |
CN110990125A (zh) | 使用二维两阶段智能计算算法的云工作流调度优化方法 | |
CN110928669B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200501 |