CN111026506A - 采用多种群协同进化遗传算法的云工作流调度优化方法 - Google Patents
采用多种群协同进化遗传算法的云工作流调度优化方法 Download PDFInfo
- Publication number
- CN111026506A CN111026506A CN201911259899.8A CN201911259899A CN111026506A CN 111026506 A CN111026506 A CN 111026506A CN 201911259899 A CN201911259899 A CN 201911259899A CN 111026506 A CN111026506 A CN 111026506A
- Authority
- CN
- China
- Prior art keywords
- task
- population
- individual
- virtual machine
- time
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Physiology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种采用多种群协同进化遗传算法的云工作流调度优化方法,包括以下步骤:获取调度优化所需信息;计算任务的排序值rank;基于关键任务优先调度和任务最早完成时间及随机生成方法初始化种群;分若干个子种群进行独立进化,并适时进行子种群间的交流;直到满足终止条件,输出调度优化方案。本发明设计采用了基于拓扑排序的整数编码方法、基于插入模式的串行个体解码方法、向前向后解码与负载均衡的改进策略、多种群协调进化机制,能有效避免各子种群进入局部最优和早熟,提高了寻优能力,改进了算法整体效率。
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:计算任务的排序值rank;
ti执行时的平均处理时间计算如下:
ti执行时需要从共享数据库获得输入文件的平均传输时间为:
ti执行时需要从其它虚拟机获得输入文件的平均传输时间为:
对于没有子任务的结束任务i:
对于没有父任务的开始任务i:
最后,计算任务i的排序值ranki:
其中,i=1,2…,I;
步骤3:初始化当代种群;
当代种群中包含S个子种群,每个子种群又包含N个个体,N为偶数且N>S,其初始化过程如下:
对每个当代子种群采用基于关键任务优先调度和任务最早完成时间的个体生成方法生成一个个体,然后采用基于随机的个体生成方法生成剩余的N-1个不同的个体;
所述个体采用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:令所有虚拟机的可得时间段列表vatlj={[0,M]},j=1,2,…,J,M为一个接近无穷大的数;令所有任务的就绪时间rti=0,i=1,2,…,I;令任务集UT=T,令任务集P(ti)=PRi,i=1,2,…,I,令变量k=1;
步骤A3:从RT中的取出一个rank最大的任务,不妨设为ti,gI+k=i;
步骤A4:令ti的可得虚拟机集AVMi=VMi,计算把ti分别分配给AVMi中的每个虚拟机后ti的完成时间:
步骤A4.1:从AVMi中取出一个虚拟机,不妨设为vmj;
步骤A4.3:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti,j和υj-eti,j≥rti;
步骤A4.4:计算ti分配给vmj处理后的开始时间si,j=max{νj,rti},完成时间fi,j=si,j+eti,j;
步骤A4.5:若AVMi不为空,则转到步骤A4.1,否则转到步骤A5;
步骤A5:按虚拟机顺序找出能最早完成ti的虚拟机,不妨设为vmj,gi=j,把ti分配给vmj:
步骤A5.1:令ti的开始时间si=si,j,ti的完成时间fi=fi,j;
步骤A5.3:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A7:输出一个基于关键任务优先调度和任务最早完成时间的个体{g1,…,gI,gI+1,…,g2I},操作结束;
其中:
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
所述基于随机的个体生成方法包括如下步骤:
步骤B3:从RT中随机取出一个任务,不妨设为ti,从VMi中随机选择一个虚拟机,不妨设为vmj,令gi=j,gI+k=i,k=k+1;
步骤B5:输出一个随机生成的个体{g1,…,gI,gI+1,…,g2I},操作结束;
步骤4:采用FBI&D和LDI方法改进初始当代种群中的所有个体并计算其适应度值;
适应度值越小,个体越优;
所述FBI&D包括如下步骤:
步骤C6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述LDI方法包括如下步骤:
步骤D2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤D3,否则转到步骤D4;
步骤D4:令任务集STj′=Tj′,转到步骤D5;
步骤D5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤D6;否则转到步骤D7;
步骤D7:LDI操作结束;
步骤5:判断是否满足终止条件,如满足,则进化结束转到步骤9,否则转到步骤6;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤6:判断是否需要进行子种群间交流;如果需要则转到步骤7,否则直接转到步骤8;
所述是否需要进行子种群间交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤7:进行子种群间的交流;
步骤7.2:对每个CPs,s=1,…,S,从TPS中找出CPs中不存在的精英个体集CTPSs,用CTPSs中的个体替换CPs中适应度值排名倒数的CTPSs个个体,形成新的CPs;
步骤8:每个子种群进行独立进化;
步骤8.1:对每个当代子种群进行N/2次交叉操作形成新子种群;
步骤8.2:对每个新子种群中的所有个体进行变异操作;
步骤8.3:采用FBI&D和LDI方法改进新子种群中的所有个体并计算其适应度值;
步骤8.4:对于每个子种群从当代子种群和新子种群中根据适应度值从小到大选出N个不同的个体作为新的当代子种群,转到步骤5;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
进一步的,步骤C2中基于插入模式的串行个体解码方法具体步骤如下:
步骤E1:令所有任务的就绪时间rti=0,i=1,…,I,令变量k=1,令虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,M为一个接近无穷大的数;
步骤E2:选取编号为gI+k的任务,不妨设i=gI+k;
步骤E3:基于插入模式把任务i分配给虚拟机j=gi;
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj]满足υj-νj≥eti和υj-eti≥rti;
步骤E3.4:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤E4:令k=k+1,如果k≤I则转到步骤E2,否则步骤E5;
步骤E5:获得所有任务的开始时间和完成时间:si、fi,i=1,…,I,计算适应度值即工作流响应时间rs;操作结束。
进一步的,步骤C4中基于插入模式的串行反向个体解码方法具体步骤如下:
步骤F2:选取编号为i=gI+k的任务;
步骤F3:基于插入模式把任务i分配给虚拟机gi,不妨设j=gi;
步骤F4:令k=k+1,如果k≤I,则转到步骤F2,否则步骤F5;
进一步的,步骤8.1中交叉操作的具体步骤如下:
步骤G2:随机产生一个1到2I-1的正整数α,如果1≤α≤I则转到步骤G3,否则转到步骤G4;
步骤G4:生成子体和子体子体chc1的前α个基因来自于父体chp1即后2I-α个基因来自于父体chp2的调度顺序列表中删除基因值为后的基因列表;子体chc2的前α个基因来自于父体chp2即后2I-α个基因来自于父体chp1的调度顺序列表中删除基因值为后的基因列表;转到步骤G5;
所述步骤G1中基于排序的轮赌法从当代子种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤G1.1:对当代子种群中的个体按其适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤G1.6:个体选择操作结束。
进一步的,所述步骤8.2中的变异操作的具体步骤如下:
步骤H1:产生一个随机数λ∈[0,1),如果λ<pm则转到步骤H2;否则转到步骤H6;
步骤H2:随机选择一个基因gi,如果1≤i≤I则转到步骤H3,否则转到步骤H4;
步骤H3:从可以处理ti的虚拟机集VMi中重新随机选择一个虚拟机vmj,gi=j,转到步骤H6;
步骤H4:如果任务gi存在父任务则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;
步骤H5:在[pos1,pos2]之间重新随机选择一个位置插入gi,转到步骤H6;
步骤H6:操作结束;
其中:pm∈(0,1)为变异率。
本发明的有益效果在于:
(1)相对于启发式方法、结合启发式的半智能计算方法及现有的基于分层编码的智能计算方法,本发明设计采用整数编码方法,任何一个调度方案都可以有一个个体与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(2)相对于一般的基于优先级的编码方式,任务调度顺序采用的基于拓扑排序的整数编码方法考虑了任务之间的时序关系,这样解码就比较简单,能有效提高解码的效率,进而提高算法的整体效率。
(3)相对于传统的非插入模式和并行的解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行个体解码方法通常能找到更好的对应调度方案。
(4)相对于普通的单向解码方法,本发明设计采用的向前向后个体解码与改进策略FBI&D和考虑了传输时间的负载均衡策略LDI增强了个体的邻域寻优能力,从而能提高整个算法的寻优能力和搜索效率。
(5)采用由当代子种群和新子种群合并产生当代子种群的策略,可以保证最优个体被遗传到下一代,使算法单调收敛;
(6)相对于传统的随机初始化方法,本发明在初始化种群中播入了一个基于关键任务优先调度和任务最早完成时间的个体,这样可以使算法在一个比较高的起点上开始搜索,从而缩短算法的收敛时间。
(7)相对于传统的单种群进化策略,本发明设计采用的多种群协同进化策略,能有效避免各子种群进入局部最优和早熟,并加速各子种群的收敛,从而能提高整个算法效率。
附图说明
图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的父任务集PRi和子任务集SCi: PR4={t1},PR5={t1,t2},PR6={t1,t3},PR7={t4,t5,t6},PR8={t7},PR9={t1,t8},PR10={t2,t8},PR11={t3,t8},PR12={t9,t10,t11},PR13={t12},PR14={t13},PR15={t14};SC1={t4,t5,t6,t9},SC2={t5,t10},SC3={t6,t11},SC4={t7},SC5={t7},SC6={t7},SC7={t8},SC8={t9,t10,t11},SC9={t12},SC10={t12},SC11={t12},SC12={t13},SC13={t14},SC14={t15},
获取任务的相关参数: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
表4
同理可得其它任务间的文件平均传输时间,结果如表5所示:
表5
表6
最后,计算任务i的排序值ranki:
同理可得rank3,…,rank15,结果如表7所示:
任务 | rank<sub>i</sub><sup>b</sup> | rank<sub>i</sub><sup>t</sup> | rank<sub>i</sub> | 任务 | rank<sub>i</sub><sup>b</sup> | rank<sub>i</sub><sup>t</sup> | rank<sub>i</sub> | 任务 | rank<sub>i</sub><sup>b</sup> | rank<sub>i</sub><sup>t</sup> | rank<sub>i</sub> |
t<sub>1</sub> | 4095.28 | 0.00 | 4095.28 | t<sub>6</sub> | 3815.62 | 231.44 | 4047.06 | t<sub>11</sub> | 3232.23 | 830.66 | 4062.89 |
t<sub>2</sub> | 4114.79 | 0.00 | 4114.79 | t<sub>7</sub> | 3316.20 | 798.59 | 4114.79 | t<sub>12</sub> | 2935.03 | 1179.76 | 4114.79 |
t<sub>3</sub> | 4047.06 | 0.00 | 4047.06 | t<sub>8</sub> | 3288.99 | 825.80 | 4114.79 | t<sub>13</sub> | 2305.72 | 1809.06 | 4114.79 |
t<sub>4</sub> | 3572.20 | 184.41 | 3756.61 | t<sub>9</sub> | 3241.38 | 830.66 | 4072.04 | t<sub>14</sub> | 2289.55 | 1825.24 | 4114.79 |
t<sub>5</sub> | 3910.87 | 203.92 | 4114.79 | t<sub>10</sub> | 3284.12 | 830.66 | 4114.79 | t<sub>15</sub> | 53.30 | 4061.49 | 4114.79 |
表7
执行步骤3:初始化当代种群;
取子种群数量S=3,子种群规模N=6;初始化子种群包括基于关键任务优先调度和任务最早完成时间的个体生成方法生成的1个个体和基于随机的个体生成方法生成的剩余5个不同个体。
基于关键任务优先调度和任务最早完成时间的个体生成方法生成的一个个体的具体实施过程如下:
执行步骤A1:令所有虚拟机的可得时间段列表vatlj={[0,M]},j=1,2,3,4,5,6,M为一个接近无穷大的数;令所有任务的就绪时间rt1=0,rt2=0,…,rt15=0; P(t4)={t1},P(t5)={t1,t2},P(t6)={t1,t3},P(t7)={t4,t5,t6},P(t8)={t7},P(t9)={t1,t8},P(t10)={t2,t8},P(t11)={t3,t8},P(t12)={t9,t10,t11},P(t13)={t12},P(t14)={t13},P(t15)={t14};k=1;UT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};
执行步骤A2:把UT中的任务,即t1、t2、t3移到RT中,则RT={t1,t2,t3},UT={t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};由于RT={t1,t2,t3}不为空,则转到步骤A3;
执行步骤A3:在RT={t1,t2,t3}中,rank1=4095.28,rank2=4114.79,rank3=4047.06,则t2为rank最大的任务,从RT中取出t2,则RT={t1,t3},gI+k=g15+1=g16=2;
执行步骤A4:令AVM2=VM2={vm1,vm3,vm4,vm5},计算把t2分别分配给AVM2中的每个虚拟机后t2的完成时间;即:执行步骤A4.1:从AVM2中取出一个虚拟机,其为vm1;执行步骤A4.2:计算t2分配给vm1处理后的执行时间:ω2,1=138000/1000=138,τ2,1=8×(36+4320)/200=174.24,则执行步骤A4.3:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥et2,1=312.24和M-312.24≥rt2=0;执行步骤A4.4:计算t2分配给vm1处理后的开始时间s2,1=max{v1,rt2}=max{0,0}=0,完成时间f2,1=s2,1+et2,1=0+312.24=312.24;执行步骤A4.5:由于AVM2={vm3,vm4,vm5}不为空,转到步骤A4.1;……;这样不断重复执行步骤A4.1至步骤A4.5,直至AVM2为空,得到s2,3=0,s2,4=0,s2,5=0,f2,3=185.16,f2,4=185.16,f2,5=133.12,转至步骤A5;
执行步骤A5:按虚拟机顺序找出能最早完成t2的虚拟机,其为vm5,g2=5,把t2分配给vm5;即:执行步骤A5.1:令t2的开始时间s2=s2,5=0,完成时间f2=f2,5=133.12;执行步骤A5.2:更新t2的子任务的就绪时间rt5=max{rt5,f2}=max{0,133.12}=133.12,rt10=133.12;执行步骤A5.3:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[133.12,M],即vatl5={[133.12,M]};
执行步骤A6:k=k+1=1+1=2,在P(t5),P(t10)中删除t2,则P(t5)={t1},P(t10)={t8},转到步骤A2;
执行步骤A3:在RT={t1,t3}中,rank1=4095.28,rank3=4047.06,则t1为rank最大的任务,从RT中取出t1,则RT={t3},gI+k=g15+2=g17=1;
执行步骤A4:令AVM1=VM1={vm1,vm4,vm5,vm6},计算把t1分配给AVM1中的每个虚拟机后t1的完成时间;即:执行步骤A4.1:从AVM1中取出一个虚拟机,其为vm1;执行步骤A4.2:计算t1分配给vm1处理后的执行时间:ω1,1=126,τ1,1=174.24,则et1,1=300.24;执行步骤A4.3:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥300.24和M-300.24≥0;执行步骤A4.4:计算t1分配给vm1处理后的开始时间s1,1=max{0,0}=0,完成时间f1,1=300.24;执行步骤A4.5:由于AVM1={vm4,vm5,vm6}不为空,转到步骤A4.1;……;这样不断重复执行步骤A4.1至步骤A4.5,直至AVM1为空,得到s1,4=0,s1,5=133.12,s1,6=0,f1,4=179.16,f1,5=262.24,f1,6=129.12,转至步骤A5;
执行步骤A5:按虚拟机顺序找出能最早完成t1的虚拟机,其为vm6,g1=6,把t1分配给vm6;即:执行步骤A5.1:令t1的开始时间s1=s1,6=0,完成时间f1=f1,6=129.12;执行步骤A5.2:更新t1的子任务的就绪时间rt4=max{rt4,f1}=max{0,129.12}=129.12,rt5=max{rt5,f1}=max{133.12,129.12}=133.12,rt6=129.12,rt9=129.12;执行步骤A5.3:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[129.12,M],即vatl6={[129.12,M]};
执行步骤A3:在RT={t3,t4,t5}中,rank3=4047.06,rank4=3756.61,rank5=4114.79,则t5为rank最大的任务,从RT中取出t5,则RT={t3,t4},gI+k=g15+3=g18=5;
执行步骤A4:令AVM5=VM5={vm1,vm2,vm6},计算把t5分配给AVM5中的每个虚拟机后t5的完成时间;即:执行步骤A4.1:从AVM5中取出vm1;执行步骤A4.2:计算t5分配给vm1处理后的执行时间:ω5,1=108,τ5,1=1.44,则et5,1=752.64;执行步骤A4.3:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥752.64和M-752.64≥0;执行步骤A4.4:计算t5分配给vm1处理后的开始时间s5,1=max{0,133.12}=133.12,完成时间f5,1=885.76;执行步骤A4.5:由于AVM5={vm2,vm6}不为空,转到步骤A4.1;……;这样不断重复执行步骤A4.1至步骤A4.5,直至AVM5为空,得到s5,2=133.12,s5,6=133.12,f5,2=885.76,f5,6=333.04,转至步骤A5;
执行步骤A5:按虚拟机顺序找出能最早完成t5的虚拟机,其为vm6,g5=6,把t5分配给vm6;即执行步骤A5.1:令t5的开始时间s5=s5,6=133.12,完成时间f5=f5,6=333.04;执行步骤A5.2:更新t5的子任务的就绪时间rt7=max{rt7,f5}=max{0,333.04}=333.04;执行步骤A5.3:在虚拟机可得时间段列表vatl6中删除[129.12,M],插入区间长度大于0的[129.12,133.12]和[333.04,M],即vatl6={[129.12,133.12],[333.04,M]};
执行步骤A6:k=k+1=3+1=4,在P(t7)中删除t5,则P(t7)={t4,t6},转到步骤A2;
……
执行步骤A7:输出一个基于关键任务优先调度和任务最早完成时间的个体ch1,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15},操作结束;
基于随机的个体生成方法生成1个个体的具体实施过程如下:
执行步骤B1:P(t4)={t1},P(t5)={t1,t2},P(t6)={t1,t3},P(t7)={t4,t5,t6},P(t8)={t7},P(t9)={t1,t8},P(t10)={t2,t8},P(t11)={t3,t8},P(t12)={t9,t10,t11},P(t13)={t12},P(t14)={t13},P(t15)={t14};UT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};k=1;
执行步骤B2:把UT中的任务,即t1、t2、t3移到RT中,则RT={t1,t2,t3},UT={t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};由于RT={t1,t2,t3}不为空,则转到步骤B3;
执行步骤B3:从RT={t1,t2,t3}中随机取出一个任务,其为t2,则RT={t1,t3};从VM2={vm1,vm3,vm4,vm5}中随机选择一个虚拟机,其为vm3,令g2=3,gI+k=g15+1=g16=2,k=k+1=1+1=2;
执行步骤B4:在P(t5),P(t10)中删除t2,则P(t5)={t1},P(t10)={t8},转到步骤B2;
执行步骤B3:从RT={t1,t3}中随机取出一个任务,其为t1,则RT={t3};从VM1={vm1,vm4,vm5,vm6}中随机选择一个虚拟机,其为vm5,令g1=5,gI+k=g15+2=g17=1,k=k+1=2+1=3;
执行步骤B2:把的任务,即t4、t5移到RT中,则RT={t3,t4,t5},UT={t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};由于RT={t3,t4,t5}不为空,则转到步骤B3;
执行步骤B3:从RT={t3,t4,t5}中随机取出一个任务,其为t3,则RT={t4,t5},从VM3={vm1,vm2,vm3,vm5}中随机选择一个虚拟机,其为vm5,令g3=5,gI+k=g15+3=g18=3,k=k+1=3+1=4;
……
执行步骤5:输出1个随机生成的个体ch1,2={5,3,5,5,6,3,4,6,5,4,4,5,6,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15},操作结束;
基于随机的个体生成方法生成当代子种群1中的其它不同个体如下:
ch1,3={5,1,1,1,1,1,2,4,1,2,6,3,6,5,6;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,2,1,4,6,5,7,8,9,10,11,12,13,14,15};
ch1,5={5,4,1,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,5,6,4,7,8,9,10,11,12,13,14,15};
ch1,6={4,1,3,4,1,5,2,5,1,2,3,5,6,4,6;1,2,4,3,6,5,7,8,10,11,9,12,13,14,15};
这样最终生成的初始当代子种群1为CP1={ch1,1,ch1,2,ch1,3,ch1,4,ch1,5,ch1,6};
同理,生成其它子种群的个体分别如下:
ch2,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={4,5,2,6,6,4,4,5,3,4,6,3,6,2,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,3={4,1,3,6,6,4,2,5,1,4,3,3,1,4,6;3,2,1,6,5,4,7,8,9,11,10,12,13,14,15};
ch2,4={5,5,5,6,6,3,2,5,4,4,2,5,1,4,1;2,1,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch2,5={4,3,3,4,6,4,2,5,2,2,2,3,6,5,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,6={4,5,5,1,1,5,5,4,1,4,6,5,1,4,1;3,1,2,6,5,4,7,8,11,10,9,12,13,14,15};
CP2={ch2,1,ch2,2,ch2,3,ch2,4,ch2,5,ch2,6};
ch3,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={4,5,1,6,2,5,4,6,4,4,4,5,6,5,1;3,2,1,4,5,6,7,8,10,11,9,12,13,14,15};
ch3,3={1,1,2,5,2,5,2,6,4,4,4,3,6,4,1;3,2,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch3,4={4,4,2,3,6,4,2,5,2,4,6,5,6,2,6;1,3,4,2,6,5,7,8,9,11,10,12,13,14,15};
ch3,5={6,3,3,1,2,4,5,4,1,2,2,3,6,2,6;1,3,2,4,5,6,7,8,11,9,10,12,13,14,15};
ch3,6={5,5,5,5,1,3,4,6,5,2,2,3,1,6,6;2,3,1,4,6,5,7,8,10,9,11,12,13,14,15};
CP3={ch3,1,ch3,2,ch3,3,ch3,4,ch3,5,ch3,6};
最终生成的初始当代种群为CP={CP1,CP2,CP3}。
执行步骤4:采用FBI&D和LDI方法改进初始当代种群中的所有个体并计算其适应度值;
对当代种群中的所有个体采用FBI&D方法改进,例如对当代子种群1中的ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,2,1,4,6,5,7,8,9,10,11,12,13,14,15}采用FBI&D方法改进的过程如下:
执行步骤C2:采用基于插入模式的串行个体解码方法对个体ch1,4进行解码,获得所有任务的完成时间:f1=364.32,f2=185.16,f3=182.16,f4=610.24,f5=829.84,f6=1103.76,f7=1118.24,f8=1124.12,f9=1373.96,f10=1571.48,f11=1178.76,f12=2112.44,f13=2121.08,f14=4056.08,f15=4100.28,及其适应度值即工作流响应时间rs1,4=4108.68;由于rs1,4=4108.68小于则转到步骤C3;
执行步骤C5:把反向个体中的任务调度顺序列表根据任务反向完成时间从大到小重新排列,即把中的基因gI+i设置为倒数第i个完成的任务,i=1,…,15,形成个体ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,1,6,2,5,4,7,8,10,9,11,12,13,14,15},转到步骤C2;
执行步骤C2:采用基于插入模式的串行个体解码方法对个体ch1,4进行解码,获得所有任务的完成时间:f1=179.16,f2=364.32,f3=182.16,f4=425.08,f5=829.84,f6=921.60,f7=936.08,f8=941.96,f9=1191.80,f10=1389.32,f11=996.60,f12=1930.28,f13=1938.92,f14=3873.92,f15=3918.12,及其适应度值即工作流响应时间rs1,4=3926.52;由于rs1,4等于则转到步骤C6;
执行步骤C6:输出个体ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,1,6,2,5,4,7,8,10,9,11,12,13,14,15}及其适应度值即工作流响应时间rs1,4=3926.52,操作结束;
其中,以上述个体ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,2,1,4,6,5,7,8,9,10,11,12,13,14,15}解码为例,基于插入模式的串行个体解码方法的具体实施过程如下:
执行步骤E1:令所有任务的就绪时间rt1=0,rt2=0,…,rt15=0;,k=1,令所有虚拟机的可得时间段列表vatl1={[0,M]},vatl2={[0,M]},…,vatl6={[0,M]},M为一个接近无穷大的数;
执行步骤E2:选取编号为g15+1=g16=3的任务;
执行步骤E3:基于插入模式把任务3分配给虚拟机g3=3;即执行步骤E3.1:计算任务3的执行时间执行步骤E3.2:在vatl3中从早到晚找出一个空闲时间段[0,M],满足M-0≥et3=182.16和M-182.16≥rt3=0;执行步骤E3.3:计算任务t3的开始时间和完成时间:s3=max{v3,rt3}=max{0,0}=0,f3=s3+et3=0+182.16=182.16,更新t3的子任务的就绪时间:rt6=max{rt6,f3}=max{0,182.16}=182.16,rt11=182.16;执行步骤E3.4:在虚拟机可得时间段列表vatl3中删除[0,M],插入区间长度大于0的[182.16,M],即vatl3={[182.16,M]};
执行步骤E4:k=k+1=1+1=2,由于k=2≤I=15,则转到步骤E2;
执行步骤E2:选取编号为g15+2=g17=2的任务;
执行步骤E3:基于插入模式把任务2分配给虚拟机g2=4;即执行步骤E3.1:计算任务i的执行时间执行步骤E3.2:在vatl4中从早到晚找出一个空闲时间段[0,M],满足M-0≥185.16和M-185.16≥0;执行步骤E3.3:计算任务t2的开始时间和完成时间s2=max{v4,rt2}=max{0,0}=0,f2=s2+et2=0+185.16=185.16,更新t2的子任务的就绪时间:rt5=max{rt5,f2}=max{0,185.16}=185.16,rt10=185.16;执行步骤E3.4:在虚拟机可得时间段列表vatl4中删除[0,M],插入区间长度大于0的[185.16,M],即vatl4={[185.16,M]};
执行步骤E4:k=k+1=2+1=3,由于k=3≤I=15,则转到步骤E2;
执行步骤E2:选取编号为g15+3=g18=1的任务;
执行步骤E3:基于插入模式把任务1分配给虚拟机g1=4;即执行步骤E3.1:计算任务i的执行时间执行步骤E3.2:在vatl4中从早到晚找出一个空闲时间段[185.16,M],满足M-185.16≥179.16和M-179.16≥0;执行步骤E3.3:计算任务t1的开始时间和完成时间s1=max{185.16,0}=185.16,f1=185.16+179.16=364.32,更新t1的子任务的就绪时间:rt4=max{rt4,f1}=max{0,364.32}=364.32,rt5=max{185.16,364.32}=364.32,rt6=max{182.16,364.32}=364.32,rt9=364.32;执行步骤E3.4:在虚拟机可得时间段列表vatl4中删除[185.16,M],插入区间长度大于0的[364.32,M],即vatl4={[364.32,M]};
执行步骤E4:k=3+1=4,由于k=4≤I=15,则转到步骤E2;
执行步骤E2:选取编号为g15+4=g19=4的任务;
执行步骤E3:基于插入模式把任务4分配给虚拟机g4=5;即执行步骤E3.1:计算任务i的执行时间执行步骤E3.2:在vatl5中从早到晚找出一个空闲时间段[0,M],满足M-0≥245.92和M-245.92≥364.32;执行步骤E3.3:计算任务t4的开始时间和完成时间s4=max{0,364.32}=364.32,f4=364.32+245.92=610.24,更新t4的子任务的就绪时间:rt7=max{0,610.24}=610.24;执行步骤E3.4:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[0,364.32]和[610.24,M],即vatl5={[0,364.32],[610.24,M]};
执行步骤E4:k=4+1=5,由于k=5≤I=15,则转到步骤E2;
……
这样不断重复执行步骤E2至步骤E4,直至k=16>I=15,转到步骤E5;
执行步骤E5:获得所有任务的开始时间和完成时间:s1=185.16,s2=0.00,s3=0.00,s4=364.32,s5=364.32,s6=364.32,s7=1103.76,s8=1118.24,s9=1124.12,s10=1124.12,s11=1124.12,s12=1571.48,s13=2112.44,s14=2121.08,s15=4056.08;f1=364.32,f2=185.16,f3=182.16,f4=610.24,f5=829.84,f6=1103.76,f7=1118.24,f8=1124.12,f9=1373.96,f10=1571.48,f11=1178.76,f12=2112.44,f13=2121.08,f14=4056.08,f15=4100.28;计算适应度值即工作流响应时间:由于而SFL15={f15-1},故操作结束;
执行步骤F1:由于而SFL15={f15-1},故令任务的反向就绪时间:k=1;令虚拟机可得时间段列表:vatl1={[0,M]},vatl2={[0,M]},……,vatl6={[0,M]},其中M为一个接近无穷大的数;
执行步骤F2:选取编号为i=g15+1=g16的任务,其为t15;
执行步骤F3:基于插入模式把任务15分配给虚拟机j=g15=6:即执行步骤F3.1:计算任务15的执行时间执行步骤F3.2:在vatl6中从早到晚找出一个空闲时段[0,M],满足M-0≥et15=44.20和执行步骤F3.3:计算任务15的反向开始时间反向完成时间更新任务15的父任务的就绪时间执行步骤F3.4:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[0,8.40]和[52.60,M];
执行步骤F4:k=1+1=2,由于k=2≤I=15,则转到步骤F2;
执行步骤F2:选取编号为i=g17的任务,其为t14;
执行步骤F3:基于插入模式把任务14分配给虚拟机j=g14=4:即执行步骤F3.1:计算任务14的执行时间执行步骤F3.2:在vatl4中从早到晚找出一个空闲时段[0,M],满足M-0≥1935.00和执行步骤F3.3:计算任务14的开始时间完成时间更新任务14的父任务的就绪时间执行步骤F3.4:在虚拟机可得时间段列表vatl4中删除[0,M],插入区间长度大于0的[0,52.60]和[1987.60,M];
执行步骤F4:k=2+1=3,由于k=3≤I=15,则转到步骤F2;
……
这样不断重复执行步骤F2至步骤F4,直到k=16>I=15,转到步骤F5;
当代子种群1中的其它个体经FBI&D方法改进后变为:
ch1,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={5,3,5,5,6,3,4,6,5,4,4,5,6,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15};
ch1,3={5,1,1,1,1,1,2,4,1,2,6,3,6,5,6;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch1,5={5,4,1,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,5,6,4,7,8,9,10,11,12,13,14,15};
ch1,6={4,1,3,4,1,5,2,5,1,2,3,5,6,4,6;1,2,4,3,6,5,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1174.64,rs1,2=4735.28,rs1,3=4721.76,rs1,5=4599.64,rs1,6=4053.36;
同理,当代子种群2中的所有个体经FBI&D方法改进后变为:
ch2,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={4,5,2,6,6,4,4,5,3,4,6,3,6,2,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,3={4,1,3,6,6,4,2,5,1,4,3,3,1,4,6;3,2,1,6,5,4,7,8,9,11,10,12,13,14,15};
ch2,4={5,5,5,6,6,3,2,5,4,4,2,5,1,4,1;2,1,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch2,5={4,3,3,4,6,4,2,5,2,2,2,3,6,5,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,6={4,5,5,1,1,5,5,4,1,4,6,5,1,4,1;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1174.64,rs2,2=4628.00,rs2,3=5099.12,rs2,4=5182.16,rs2,5=4603.20,rs2,6=5489.28;
当代子种群3中的所有个体经FBI&D方法改进后变为:
ch3,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={4,5,1,6,2,5,4,6,4,4,4,5,6,5,1;3,2,1,4,5,6,7,8,10,11,9,12,13,14,15};
ch3,3={1,1,2,5,2,5,2,6,4,4,4,3,6,4,1;3,2,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch3,4={4,4,2,3,6,4,2,5,2,4,6,5,6,2,6;1,3,4,2,6,5,7,8,9,11,10,12,13,14,15};
ch3,5={6,3,3,1,2,4,5,4,1,2,2,3,6,2,6;2,1,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch3,6={5,5,5,5,1,3,4,6,5,2,2,3,1,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1174.64,rs3,2=3828.44,rs3,3=5437.16,rs3,4=4963.32,rs3,5=5763.56,rs3,6=5670.28;
对当代种群中的所有个体采用LDI方法改进,例如对当代子种群1中的ch1,6={4,1,3,4,1,5,2,5,1,2,3,5,6,4,6;1,2,4,3,6,5,7,8,10,11,9,12,13,14,15}采用LDI方法改进的具体实施过程如下:
执行步骤D2:找出负载最小的虚拟机,其为vm6,由于ld6=8.6>0,故转到步骤D3;
执行步骤D5:由于ST6={t14}不为空,则从ST6中按顺序取出一个其所在虚拟机负载是最高的任务,其为t14,转到步骤D6;
执行步骤D6:g14=6,形成新的个体采用FBI&D方法对进行解码改进,新个体变为其适应度值即工作流响应时间为由于即改进的个体相较于原个体ch1,6有改进,因此用改进的个体替换原个体ch1,6,则 转到步骤D7;
执行步骤D7:LDI操作结束;
当代子种群1中的其它个体经LDI方法改进后变为:
ch1,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={5,3,5,5,6,3,4,6,5,4,4,5,6,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15};
ch1,3={5,1,1,1,1,1,2,4,4,2,6,3,6,5,6;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch1,4={4,4,3,5,6,1,5,4,5,2,3,5,6,6,6;3,1,6,2,5,4,7,8,10,9,11,12,13,14,15};
ch1,5={5,4,2,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,5,6,4,7,8,9,10,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1174.64,rs1,2=4735.28,rs1,3=4625.76,rs1,4=1959.92,rs1,5=4599.64;
同理,当代子种群2中的所有个体经LDI方法改进后变为:
ch2,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={4,5,2,1,6,4,4,5,3,4,6,3,6,2,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,3={4,1,3,6,6,4,2,5,5,4,3,3,1,4,6;3,2,1,6,5,4,7,8,9,11,10,12,13,14,15};
ch2,4={5,5,5,6,6,3,2,5,4,4,2,5,1,4,1;2,1,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch2,5={4,3,3,4,6,4,2,5,1,2,2,3,6,5,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,6={4,5,5,1,2,5,5,4,1,4,6,5,1,4,1;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1174.64,rs2,2=4468.32,rs2,3=4958.40,rs2,4=5182.16,rs2,5=4171.44,rs2,6=5069.04;
当代子种群3中的所有个体经LDI方法改进后变为:
ch3,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={4,5,1,6,2,5,4,6,3,4,4,5,6,5,1;3,2,1,4,5,6,7,8,10,11,9,12,13,14,15};
ch3,3={1,1,2,5,2,5,2,6,4,4,6,3,6,4,1;3,2,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch3,4={4,4,1,3,6,4,2,5,2,4,6,5,6,2,6;1,3,4,2,6,5,7,8,9,11,10,12,13,14,15};
ch3,5={6,3,3,5,2,4,5,4,1,2,2,3,6,2,6;2,1,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch3,6={5,5,5,4,1,3,4,6,5,2,2,3,1,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1174.64,rs3,2=3770.80,rs3,3=5075.32,rs3,4=4963.32,rs3,5=5748.20,rs3,6=5660.04;
执行步骤5:判断是否满足终止条件,如满足,则进化结束转到步骤9,否则转到步骤6;
终止条件设为迭代TG=50代;
在上述过程所生成的种群是初始化后改进的种群,当前只迭代进化了一代,不满足终止条件,因此转到步骤6。
执行步骤6:判断是否需要进行子种群间交流;如果需要则转到步骤7,否则直接转到步骤8;
子种群间需要进行交流的条件设为EFG=10,即每迭代10代进行一次子种群间的交流;当前种群只进化了一代,不满足子种群间交流的条件,因此转到步骤8。
执行步骤8:每个子种群进行独立进化;
执行步骤8.1:对每个当代子种群进行3次交叉操作形成新子种群;
对当代子种群1即CP1进行第1次交叉操作的过程如下:
执行步骤G1:基于排序的轮赌法从当代子种群1中随机选择两个不同的个体作为父体,即:执行步骤G1.1:首先对当代子种群1中的个体适应度值从小到大进行排序,获得每个个体对应的排序值:rk1=1,rk2=6,rk3=5,rk4=2,rk5=4,rk6=3;执行步骤G1.2:令R=1+1/N=1.167,计算第1个个体ch1,1被选中的概率同理A2=0.109,A3=0.128,A4=0.203,A5=0.149,A6=0.174;执行步骤G1.3:计算累计概率 执行步骤G1.4:随机产生一个[0,1)的随机数λ1,其为0.873,由于因此选择ch1,6作为第一个父体;执行步骤G1.5:随机产生一个[0,1)的随机数λ2,其为0.787,由于且6≠5,因此选择ch1,5作为第二个父体,执行步骤G1.6:获得两个不同的个体ch1,6和ch1,5作为父体,个体选择操作结束;则chp1=ch1,6={4,1,3,4,1,5,2,5,1,2,3,5,6,6,6;1,2,4,3,6,5,7,8,10,11,9,12,13,14,15},chp2=ch1,5={5,4,2,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,5,6,4,7,8,9,10,11,12,13,14,15};
执行步骤G2:随机产生一个1到29之间的正整数α=18,由于α=18>15,则转到步骤G4;
执行步骤G4:如表8所示,子体chc1的前18个基因来自于父体chp1,后12个基因来自于父体chp2的调度顺序列表中删除基因值为即1、2、4后的基因列表;子体chc2的前18个基因来自于父体chp2,后12个基因来自于父体chp1的调度顺序列表中删除基因值为即3、2、1后的基因列表;转到步骤G5;
执行步骤G5:输出子体chc1={4,1,3,4,1,5,2,5,1,2,3,5,6,6,6;1,2,4,3,5,6,7,8,9,10,11,12,13,14,15}和子体chc2={5,4,2,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,4,6,5,7,8,10,11,9,12,13,14,15},操作结束;
这样获得新个体ch′1,1=chc1,ch′1,2=chc2;
g<sub>i</sub> | 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>1</sub><sub>0</sub> | g<sub>1</sub><sub>1</sub> | g<sub>1</sub><sub>2</sub> | g<sub>1</sub><sub>3</sub> | g<sub>1</sub><sub>4</sub> | g<sub>1</sub><sub>5</sub> | g<sub>1</sub><sub>6</sub> | g<sub>1</sub><sub>7</sub> | g<sub>1</sub><sub>8</sub> | g<sub>1</sub><sub>9</sub> | g<sub>2</sub><sub>0</sub> | g<sub>2</sub><sub>1</sub> | g<sub>2</sub><sub>2</sub> | g<sub>2</sub><sub>3</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> |
ch<sup>p1</sup> | 4 | 1 | 3 | 4 | 1 | 5 | 2 | 5 | 1 | 2 | 3 | 5 | 6 | 6 | 6 | 1 | 2 | 4 | 3 | 6 | 5 | 7 | 8 | 10 | 11 | 9 | 12 | 13 | 14 | 15 |
ch<sup>p2</sup> | 5 | 4 | 2 | 6 | 6 | 4 | 5 | 6 | 5 | 4 | 6 | 5 | 1 | 4 | 6 | 3 | 2 | 1 | 5 | 6 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
ch<sup>c1</sup> | 4 | 1 | 3 | 4 | 1 | 5 | 2 | 5 | 1 | 2 | 3 | 5 | 6 | 6 | 6 | 1 | 2 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
ch<sup>c2</sup> | 5 | 4 | 2 | 6 | 6 | 4 | 5 | 6 | 5 | 4 | 6 | 5 | 1 | 4 | 6 | 3 | 2 | 1 | 4 | 6 | 5 | 7 | 8 | 10 | 11 | 9 | 12 | 13 | 14 | 15 |
表8
对CP1进行第2次交叉操作的过程如下:
执行步骤G1:基于排序的轮赌法从当代子种群1中随机选择两个不同的个体作为父体,其为:chp1=ch1,2={5,3,5,5,6,3,4,6,5,4,4,5,6,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15};chp2=ch1,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
执行步骤G2:随机产生一个1到29之间的正整数α=2,由于1≤α=2≤15,则转到步骤G3;
执行步骤G3:如表9所示,子体chc1的前2个基因来自于父体chp1,后28个基因来自于父体chp2;子体chc2的前2个基因来自于父体chp2,后28个基因来自于父体chp1;转到步骤G5;
执行步骤G5:输出子体chc1={5,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15}和子体chc2={6,5,5,5,6,3,4,6,5,4,4,5,6,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15},操作结束;
这样获得新个体ch′1,3=chc1,ch′1,4=chc2;
表9
同样地,经交叉操作生成新子种群1中的其它个体如下:
ch′1,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,3,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch′1,6={6,4,3,5,6,1,5,4,5,2,3,5,6,4,6;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
这样生成的新子种群1为NP1={ch′1,1,ch′1,2,ch′1,3,ch′1,4,ch′1,5,ch′1,6};
同理,生成其它新子种群的个体分别如下:
ch′2,1={4,5,5,1,2,5,2,5,4,4,2,5,1,4,1;2,1,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch′2,2={5,5,5,6,6,3,5,4,1,4,6,5,1,4,1;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch′2,3={4,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch′2,4={6,5,3,4,6,4,2,5,1,2,2,3,6,5,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,5={4,1,3,6,6,4,4,5,3,4,6,3,6,2,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,6={4,5,1,6,6,4,2,5,5,4,3,3,1,4,6;3,2,1,6,5,4,7,8,9,11,10,12,13,14,15};
NP2={ch′2,1,ch′2,2,ch′2,3,ch′2,4,ch′2,5,ch′2,6};
ch′3,1={1,1,2,5,2,5,2,6,4,4,6,3,6,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
ch′3,2={5,5,5,4,1,3,4,6,5,2,2,3,1,4,1;3,2,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch′3,3={6,3,3,5,2,4,5,4,1,2,2,3,6,2,6;2,1,3,4,6,5,7,8,9,11,10,12,13,14,15};
ch′3,4={4,4,1,3,6,4,2,5,2,4,6,5,6,2,6;1,2,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch′3,5={1,1,2,5,2,5,2,6,4,4,6,3,6,4,1;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch′3,6={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15};
NP3={ch′3,1,ch′3,2,ch′3,3,ch′3,4,ch′3,5,ch′3,6};
生成的新种群为NP={NP1,NP2,NP3}。
执行步骤8.2:对每个新子种群中的所有个体进行变异操作;
取变异率pm=0.2;
对新子种群1进行变异操作的过程如下:
对于ch′1,1={4,1,3,4,1,5,2,5,1,2,3,5,6,6,6;1,2,4,3,5,6,7,8,9,10,11,12,13,14,15};
执行步骤H1:产生一个[0,1)的随机数λ,其为0.11,由于λ=0.11<pm=0.2,则转到步骤H2;
执行步骤H2:随机选择一个基因,其为g9,即i=9,由于1≤i=9≤15,则转到步骤H3;
执行步骤H3:从可以处理t9的虚拟机集VM9={vm1,vm2,vm3,vm4,vm5}中重新随机选择一个虚拟机,其为vm3,g9=3,转到步骤H6;
执行步骤H6:操作结束;
这样,变异后的个体变为:
ch′1,1={4,1,3,4,1,5,2,5,3,2,3,5,6,6,6;1,2,4,3,5,6,7,8,9,10,11,12,13,14,15};
对于ch′1,2={5,4,2,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,4,6,5,7,8,10,11,9,12,13,14,15};
执行步骤H1:产生一个[0,1)的随机数λ,其为0.17,由于λ=0.17<pm=0.2,则转到步骤H2;
执行步骤H2:随机选择一个基因,其为g20,即i=20,由于i=20>15,则转到步骤H4;
执行步骤H4:任务g20=6存在父任务,则向前找到第一个父任务g18=1,即i′=18,pos1=i′+1=18+1=19;任务g20=6存在子任务,则向后找到第一个子任务g22=7,即i′=22,pos2=i″-1=22-1=21;
执行步骤H5:在[19,21]之间随机选择一个位置插入g20=6,其为g19,转到步骤H6;
执行步骤H6:操作结束;
这样,变异后的个体变为:
ch′1,2={5,4,2,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,6,4,5,7,8,10,11,9,12,13,14,15};
同理,新子种群1中的其它个体经变异操作后变为:
ch′1,3={5,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch′1,4={6,5,5,5,6,3,4,6,5,4,4,5,1,2,1;2,1,3,5,6,4,7,8,9,10,11,12,13,14,15};
ch′1,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,3,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch′1,6={6,4,5,5,6,1,5,4,5,2,3,5,6,4,6;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
经变异操作后新子种群2中的所有个体变为:
ch′2,1={4,5,5,1,2,5,2,5,4,4,2,5,1,4,1;1,2,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch′2,2={5,4,5,6,6,3,5,4,1,4,6,5,1,4,1;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch′2,3={4,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch′2,4={6,5,3,4,6,4,2,5,1,2,2,3,6,5,1;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,5={4,1,3,6,6,4,4,5,3,4,6,3,6,2,6;2,1,3,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,6={4,5,1,6,6,4,2,5,5,4,3,3,1,4,6;2,1,3,6,5,4,7,8,9,11,10,12,13,14,15};
经变异操作后新子种群3中的所有个体变为:
ch′3,1={1,1,2,5,2,5,2,6,4,4,6,3,6,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
ch′3,2={5,5,5,4,1,3,4,6,5,2,2,3,1,4,1;3,2,1,6,5,4,7,8,10,9,11,12,13,14,15};
ch′3,3={6,3,3,5,2,4,5,4,1,2,2,3,6,2,6;2,3,1,4,6,5,7,8,9,11,10,12,13,14,15};
ch′3,4={4,4,1,3,6,4,2,5,2,4,6,5,6,2,6;2,1,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch′3,5={1,1,2,5,2,5,2,6,4,4,6,3,6,4,1;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch′3,6={4,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15}。
执行步骤8.3:采用FBI&D和LDI方法改进每个新子种群中的所有个体并计算其适应度值;
新子种群1中的所有个体经FBI&D和LDI方法改进后变为:
ch′1,1={4,1,3,4,1,5,2,5,3,2,3,5,6,6,6;1,2,4,3,5,6,7,8,9,10,11,12,13,14,15};
ch′1,2={5,4,3,6,6,4,5,6,5,4,6,5,1,4,6;3,2,1,6,4,5,7,8,10,11,9,12,13,14,15};
ch′1,3={5,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch′1,4={6,5,5,5,6,3,4,6,5,4,4,5,1,2,1;3,1,6,2,5,4,7,8,10,11,9,12,13,14,15};
ch′1,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,3,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch′1,6={6,4,5,5,6,1,5,4,5,2,3,3,6,4,6;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs′1,1=1990.76,rs′1,2=4349.60,rs′1,3=1359.80,rs′1,4=4620.80,rs′1,5=1174.64,rs′1,6=3872.84;
新子种群2中的所有个体经FBI&D和LDI方法改进后变为:
ch′2,1={4,5,5,1,2,5,2,5,4,4,3,5,1,4,1;1,2,4,5,3,6,7,8,10,9,11,12,13,14,15};
ch′2,2={5,4,5,6,6,3,5,4,2,4,6,5,1,4,1;1,2,5,4,3,6,7,8,9,10,11,12,13,14,15};
ch′2,3={4,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch′2,4={6,5,3,4,6,4,5,5,1,2,2,3,6,5,1;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,5={4,1,3,6,6,4,5,5,3,4,6,3,6,2,6;2,1,3,6,4,5,7,8,11,9,10,12,13,14,15};
ch′2,6={4,5,1,6,6,4,2,5,5,4,3,3,1,4,6;2,1,3,6,5,4,7,8,9,11,10,12,13,14,15};
其适应度值即工作流响应时间分别为:rs′2,1=4925.68,rs′2,2=4920.72,rs′2,3=1374.00,rs′2,4=4285.32,rs′2,5=4833.60,rs′2,6=4636.92;
新子种群3中的所有个体经FBI&D和LDI方法改进后变为:
ch′3,1={1,1,2,5,2,5,2,6,3,4,6,3,6,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
ch′3,2={5,5,5,4,1,3,4,6,5,2,6,3,1,4,1;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
ch′3,3={6,3,3,5,2,5,5,4,1,2,2,3,6,2,6;2,3,1,4,6,5,7,8,9,11,10,12,13,14,15};
ch′3,4={4,4,1,3,6,4,5,5,2,4,6,5,6,2,6;2,1,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch′3,5={1,1,2,5,2,5,2,6,3,4,6,3,6,4,1;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch′3,6={4,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs′3,1=2507.88,rs′3,2=5225.68,rs′3,3=5742.76,rs′3,4=4945.96,rs′3,5=4508.88,rs′3,6=1313.60。
执行步骤8.4:对于每个子种群从当代子种群和新子种群中根据适应度值从小到大选出6个不同的个体作为新的当代子种群;
根据适应度值选择当代子种群1中的ch1,1、ch1,4、ch1,6和新子种群1中的ch′1,1、ch′1,3、ch′1,5,形成下一代子种群1,即GP1={ch1,1,ch1,4,ch1,6,ch′1,1,ch′1,3,ch′1,5};同理,GP2={ch2,1,ch2,2,ch2,5,ch′2,3,ch′2,4,ch′2,6},GP3={ch3,1,ch3,2,ch′3,1,ch′3,4,ch′3,5,ch′3,6};
令CP1=GP1,则当代子种群1的所有个体变为:
ch1,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={4,4,3,5,6,1,5,4,5,2,3,5,6,6,6;3,1,6,2,5,4,7,8,10,9,11,12,13,14,15};
ch1,3={4,1,3,4,1,5,2,5,1,2,3,5,6,6,6;1,2,4,3,6,5,7,8,10,11,9,12,13,14,15};
ch1,4={4,1,3,4,1,5,2,5,3,2,3,5,6,6,6;1,2,4,3,5,6,7,8,9,10,11,12,13,14,15};
ch1,5={5,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,6={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,3,1,5,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1174.64,rs1,2=1959.92,rs1,3=2086.76,rs1,4=1990.76,rs1,5=1359.80,rs1,6=1174.64;
令CP2=GP2,则当代子种群2的所有个体变为:
ch2,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={4,5,2,1,6,4,4,5,3,4,6,3,6,2,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,3={4,3,3,4,6,4,2,5,1,2,2,3,6,5,6;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,4={4,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,5={6,5,3,4,6,4,5,5,1,2,2,3,6,5,1;3,2,1,6,4,5,7,8,11,9,10,12,13,14,15};
ch2,6={4,5,1,6,6,4,2,5,5,4,3,3,1,4,6;2,1,3,6,5,4,7,8,9,11,10,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1174.64,rs2,2=4468.32,rs2,3=4171.44,rs2,4=1374.00,rs2,5=4285.32,rs2,6=4636.92;
令CP3=GP3,当代子种群3的所有个体为:
ch3,1={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={4,5,1,6,2,5,4,6,3,4,4,5,6,5,1;3,2,1,4,5,6,7,8,10,11,9,12,13,14,15};
ch3,3={1,1,2,5,2,5,2,6,3,4,6,3,6,6,6;2,1,5,3,6,4,7,8,10,11,9,12,13,14,15};
ch3,4={4,4,1,3,6,4,5,5,2,4,6,5,6,2,6;2,1,5,3,6,4,7,8,11,10,9,12,13,14,15};
ch3,5={1,1,2,5,2,5,2,6,3,4,6,3,6,4,1;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch3,6={4,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1174.64,rs3,2=3770.80,rs3,3=2507.88,rs3,4=4945.96,rs3,5=4508.88,rs3,6=1313.60;
转到步骤5。
……
这样不断重复步骤5、6、8,5、6、8,……,5、6、8,迭代10代后,当代种群变为:
当代子种群1中的所有个体为:
ch1,1={6,5,3,5,6,3,5,4,5,4,3,3,6,6,6;2,1,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={6,5,3,5,6,4,4,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,3={4,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,4={6,5,3,5,6,3,5,5,5,4,2,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,5={6,5,3,5,6,3,5,5,5,4,3,3,6,6,6;2,1,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,6={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1202.52,rs1,2=1388.08,rs1,3=1313.60,rs1,4=1411.76,rs1,5=1200.24,rs1,6=1174.64;
当代子种群2中的所有个体为:
ch2,1={6,5,3,1,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={6,5,3,5,6,3,5,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,3={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,4={6,4,3,5,6,3,5,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,5={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,6={6,3,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,4,3,6,5,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1288.04,rs2,2=1202.88,rs2,3=1174.64,rs2,4=1121.04,rs2,5=1092.80,rs2,6=1359.80;
当代子种群3中的所有个体为:
ch3,1={6,4,3,5,6,3,5,4,5,4,3,5,6,6,1;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={6,5,3,5,6,3,4,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,3={6,4,3,5,6,3,5,4,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,4={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,6={6,5,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1200.60,rs3,2=1188.72,rs3,3=1124.60,rs3,4=1116.32,rs3,5=1174.64,rs3,6=1153.28。
执行步骤5:判断是否满足终止条件,如满足,则进化结束转到步骤9,否则转到步骤6;
种群迭代了10代,没有满足终止的条件,因此转到步骤6。
执行步骤6:判断是否需要进行子种群间交流;如果需要则转到步骤7,否则直接转到步骤8;
种群迭代了10代,满足了子种群间交流的条件,转到步骤7。
执行步骤7:进行子种群间的交流;
执行步骤7.1:令精英个体集由于ch1,6是CP1中的最优个体,因此选择ch1,6作为精英个体由于ch2,5是CP2中的最优个体且TPS中尚不存在个体ch2,5,因此选择ch2,5作为精英个体由于ch3,4是CP3中的最优个体且TPS中尚不存在个体ch3,4,因此选择ch3,4作为精英个体这样TPS中的个体分别为:
执行步骤7.2:从TPS中找出CP1中不存在的精英个体集从TPS中找出CP2中不存在的精英个体集从TPS中找出CP3中不存在的精英个体集用CTPS1中的精英个体和来替换子种群1中适应度值排名倒数的2个个体ch1,4和ch1,2;用CTPS2中的精英个体来替换子种群2中适应度值排名倒数的1个个体ch2,6;用CTPS3中的精英个体来替换子种群3中适应度值排名倒数的1个个体ch3,1;
这样经子种群间的交流后,当代子种群1即CP1中的所有个体变为:
ch1,1={6,5,3,5,6,3,5,4,5,4,3,3,6,6,6;2,1,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,3={4,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,4={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,5={6,5,3,5,6,3,5,5,5,4,3,3,6,6,6;2,1,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,6={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1202.52,rs1,2=1116.32,rs1,3=1313.60,rs1,4=1092.80,rs1,5=1200.24,rs1,6=1174.64;
当代子种群2即CP2中的所有个体变为:
ch2,1={6,5,3,1,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={6,5,3,5,6,3,5,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,3={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,4={6,4,3,5,6,3,5,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,5={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,6={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1288.04,rs2,2=1202.88,rs2,3=1174.64,rs2,4=1121.04,rs2,5=1092.80,rs2,6=1116.32;
当代子种群3即CP3中的所有个体变为:
ch3,1={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,2={6,5,3,5,6,3,4,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,3={6,4,3,5,6,3,5,4,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,4={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,6={6,5,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1092.80,rs3,2=1188.72,rs3,3=1124.60,rs3,4=1116.32,rs3,5=1174.64,rs3,6=1153.28。
执行步骤8:每个子种群进行独立进化;
经独立进化后,当代子种群1中的所有个体变为:
ch1,1={6,4,3,5,6,3,5,5,5,4,3,3,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,2={6,5,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,3={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,4={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;1,2,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch1,5={6,5,3,5,6,3,5,5,5,4,3,4,6,6,6;1,2,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,6={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1118.40,rs1,2=1153.28,rs1,3=1116.32,rs1,4=1092.80,rs1,5=1174.64,rs1,6=1092.80;
当代子种群2中的所有个体变为:
ch2,1={6,4,3,5,6,3,5,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,2={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,3={6,4,3,5,6,3,4,5,5,4,3,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,4={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;1,2,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,5={6,5,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch2,6={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1121.04,rs2,2=1092.80,rs2,3=1135.12,rs2,4=1092.80,rs2,5=1153.28,rs2,6=1116.32;
当代子种群3中的所有个体变为:
ch3,1={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15};
ch3,2={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;1,2,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,3={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
ch3,4={6,4,3,5,6,3,5,4,5,4,3,5,6,6,6;2,1,3,6,5,4,7,8,10,9,11,12,13,14,15};
ch3,5={6,4,3,5,6,3,5,5,5,4,3,4,6,6,6;3,2,1,5,6,4,7,8,10,9,11,12,13,14,15};
ch3,6={6,4,3,5,6,3,5,5,5,4,6,5,6,6,6;2,1,5,3,6,4,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1116.32,rs3,2=1092.80,rs3,3=1092.80,rs3,4=1124.60,rs3,5=1092.80,rs3,6=1116.32。
转到步骤5
……
这样不断重复执行步骤5至步骤8,迭代50代后,当代种群变为:
当代子种群1中的所有个体为:
ch1,1={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch1,2={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,6,4,7,8,10,9,11,12,13,14,15};
ch1,3={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,4,6,7,8,10,11,9,12,13,14,15};
ch1,4={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,5,4,3,6,7,8,10,9,11,12,13,14,15};
ch1,5={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,5,6,7,8,10,11,9,12,13,14,15};
ch1,6={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,6,4,7,8,10,11,9,12,13,14,15};
其适应度值即工作流响应时间分别为:rs1,1=1018.08,rs1,2=1018.08,rs1,3=1018.08,rs1,4=1018.08,rs1,5=1018.08,rs1,6=1018.08;
当代子种群2中的所有个体为:
ch2,1={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,4,3,6,5,7,8,10,9,11,12,13,14,15};
ch2,2={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,6,5,7,8,10,9,11,12,13,14,15};
ch2,3={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,4,6,7,8,10,11,9,12,13,14,15};
ch2,4={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,4,3,5,6,7,8,10,9,11,12,13,14,15};
ch2,5={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,5,3,4,6,7,8,10,11,9,12,13,14,15};
ch2,6={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,5,6,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs2,1=1018.08,rs2,2=1018.08,rs2,3=1018.08,rs2,4=1018.08,rs2,5=1018.08,rs2,6=1018.08;
当代子种群3中的所有个体为:
ch3,1={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,4,3,6,5,7,8,10,9,11,12,13,14,15};
ch3,2={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,5,6,7,8,10,9,11,12,13,14,15};
ch3,3={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,6,5,7,8,10,9,11,12,13,14,15};
ch3,4={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,4,5,6,7,8,10,11,9,12,13,14,15};
ch3,5={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,4,6,7,8,10,9,11,12,13,14,15};
ch3,6={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,5,3,4,6,7,8,10,9,11,12,13,14,15};
其适应度值即工作流响应时间分别为:rs3,1=1018.08,rs3,2=1018.08,rs3,3=1018.08,rs3,4=1018.08,rs3,5=1018.08,rs3,6=1018.08。
执行步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案;
当代种群中的最优个体为ch1,1={6,4,3,5,6,3,5,5,5,4,4,4,6,6,6;1,2,3,5,4,6,7,8,10,9,11,12,13,14,15},其对应的工作流响应时间为rs=1018.08,对应的调度方案如表10所示。
调度顺序 | 任务编号 | 开始时间 | 执行时间 | 结束时间 | 虚拟机编号 |
1 | 1 | 0 | 129.12 | 129.12 | 6 |
2 | 2 | 0 | 185.16 | 185.16 | 4 |
3 | 3 | 0 | 182.16 | 182.16 | 3 |
4 | 5 | 185.16 | 254.32 | 439.48 | 6 |
5 | 4 | 129.12 | 193.12 | 322.24 | 5 |
6 | 6 | 182.16 | 269.16 | 451.32 | 3 |
7 | 7 | 451.32 | 11.76 | 463.08 | 5 |
8 | 8 | 463.08 | 2.96 | 466.04 | 5 |
9 | 10 | 466.04 | 60.64 | 526.68 | 4 |
10 | 9 | 466.04 | 196.40 | 662.44 | 5 |
11 | 11 | 526.68 | 259.44 | 786.12 | 4 |
12 | 12 | 786.12 | 201.68 | 987.80 | 4 |
13 | 13 | 987.80 | 9.28 | 997.08 | 6 |
14 | 14 | 997.08 | 10.00 | 1007.08 | 6 |
15 | 15 | 1007.08 | 2.60 | 1009.68 | 6 |
表10
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。
Claims (5)
1.一种采用多种群协同进化遗传算法的云工作流调度优化方法,其特征在于:包括以下步骤:
步骤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:计算任务的rank;
ti执行时的平均处理时间计算如下:
ti执行时需要从共享数据库获得输入文件的平均传输时间为:
ti执行时需要从其它虚拟机获得输入文件的平均传输时间为:
对于没有子任务的结束任务i:
对于没有父任务的开始任务i:
最后,计算任务i的排序值ranki:
其中,i=1,2…,I;
步骤3:初始化当代种群;
当代种群中包含S个子种群,每个子种群又包含N个个体,N为偶数且N>S,其初始化过程如下:
对每个当代子种群采用基于关键任务优先调度和任务最早完成时间的个体生成方法生成一个个体,然后采用基于随机的个体生成方法生成剩余的N-1个不同的个体;
所述个体采用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:令所有虚拟机的可得时间段列表vatlj={[0,M]},j=1,2,…,J,M为一个接近无穷大的数;令所有任务的就绪时间rti=0,i=1,2,…,I;令任务集UT=T,令任务集P(ti)=PRi,i=1,2,…,I,令变量k=1;
步骤A3:从RT中的取出一个rank最大的任务,不妨设为ti,gI+k=i;
步骤A4:令ti的可得虚拟机集AVMi=VMi,计算把ti分别分配给AVMi中的每个虚拟机后ti的完成时间:
步骤A4.1:从AVMi中取出一个虚拟机,不妨设为vmj;
步骤A4.3:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti,j和υj-eti,j≥rti;
步骤A4.4:计算ti分配给vmj处理后的开始时间si,j=max{νj,rti},完成时间fi,j=si,j+eti,j;
步骤A4.5:若AVMi不为空,则转到步骤A4.1,否则转到步骤A5;
步骤A5:按虚拟机顺序找出能最早完成ti的虚拟机,不妨设为vmj,gi=j,把ti分配给vmj:
步骤A5.1:令ti的开始时间si=si,j,ti的完成时间fi=fi,j;
步骤A5.3:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A7:输出一个基于关键任务优先调度和任务最早完成时间的个体{g1,…,gI,gI+1,…,g2I},操作结束;
其中:
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
所述基于随机的个体生成方法包括如下步骤:
步骤B3:从RT中随机取出一个任务,不妨设为ti,从VMi中随机选择一个虚拟机,不妨设为vmj,令gi=j,gI+k=i,k=k+1;
步骤B5:输出一个随机生成的个体{g1,…,gI,gI+1,…,g2I},操作结束;
步骤4:采用FBI&D和LDI方法改进初始当代种群中的所有个体并计算其适应度值;
适应度值越小,个体越优;
所述FBI&D包括如下步骤:
步骤C6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述LDI方法包括如下步骤:
步骤D2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤D3,否则转到步骤D4;
步骤D4:令任务集STj′=Tj′,转到步骤D5;
步骤D5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤D6;否则转到步骤D7;
步骤D7:LDI操作结束;
步骤5:判断是否满足终止条件,如满足,则进化结束转到步骤9,否则转到步骤6;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤6:判断是否需要进行子种群间交流;如果需要则转到步骤7,否则直接转到步骤8;
所述是否需要进行子种群间交流的判断条件为每迭代EFG代或自上次交流后连续迭代EVG代最优个体没有改进;
步骤7:进行子种群间的交流;
步骤7.2:对每个CPs,s=1,…,S,从TPS中找出CPs中不存在的精英个体集CTPSs,用CTPSs中的个体替换CPs中适应度值排名倒数的|CTPSs|个个体,形成新的CPs;
步骤8:每个子种群进行独立进化;
步骤8.1:对每个当代子种群进行N/2次交叉操作形成新子种群;
步骤8.2:对每个新子种群中的所有个体进行变异操作;
步骤8.3:采用FBI&D和LDI方法改进新子种群中的所有个体并计算其适应度值;
步骤8.4:对于每个子种群从当代子种群和新子种群中根据适应度值从小到大选出N个不同的个体作为新的当代子种群,转到步骤5;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
2.根据权利要求1所述的一种采用多种群协同进化遗传算法的云工作流调度优化方法,其特征在于:所述步骤C2中基于插入模式的串行个体解码方法具体步骤如下:
步骤E1:令所有任务的就绪时间rti=0,i=1,…,I,令变量k=1,令虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,M为一个接近无穷大的数;
步骤E2:选取编号为gI+k的任务,不妨设i=gI+k;
步骤E3:基于插入模式把任务i分配给虚拟机j=gi;
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj]满足υj-νj≥eti和υj-eti≥rti;
步骤E3.4:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤E4:令k=k+1,如果k≤I则转到步骤E2,否则步骤E5;
步骤E5:获得所有任务的开始时间和完成时间:si、fi,i=1,…,I,计算适应度值即工作流响应时间rs;操作结束。
3.根据权利要求1所述的一种采用多种群协同进化遗传算法的云工作流调度优化方法,其特征在于:所述步骤C4中基于插入模式的串行反向个体解码方法具体步骤如下:
步骤F2:选取编号为i=gI+k的任务;
步骤F3:基于插入模式把任务i分配给虚拟机gi,不妨设j=gi;
步骤F4:令k=k+1,如果k≤I,则转到步骤F2,否则步骤F5;
4.根据权利要求1所述的一种采用多种群协同进化遗传算法的云工作流调度优化方法,其特征在于:所述步骤8.1中交叉操作的具体步骤如下:
步骤G2:随机产生一个1到2I-1的正整数α,如果1≤α≤I则转到步骤G3,否则转到步骤G4;
步骤G4:生成子体和子体子体chc1的前α个基因来自于父体chp1即后2I-α个基因来自于父体chp2的调度顺序列表中删除基因值为后的基因列表;子体chc2的前α个基因来自于父体chp2即后2I-α个基因来自于父体chp1的调度顺序列表中删除基因值为后的基因列表;转到步骤G5;
所述步骤G1中基于排序的轮赌法从当代子种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤G1.1:对当代子种群中的个体按其适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤G1.6:个体选择操作结束。
5.根据权利要求1所述的一种采用多种群协同进化遗传算法的云工作流调度优化方法,其特征在于:所述步骤8.2中的变异操作的具体步骤如下:
步骤H1:产生一个随机数λ∈[0,1),如果λ<pm则转到步骤H2;否则转到步骤H6;
步骤H2:随机选择一个基因gi,如果1≤i≤I则转到步骤H3,否则转到步骤H4;
步骤H3:从可以处理ti的虚拟机集VMi中重新随机选择一个虚拟机vmj,gi=j,转到步骤H6;
步骤H4:如果任务gi存在父任务则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;
步骤H5:在[pos1,pos2]之间重新随机选择一个位置插入gi,转到步骤H6;
步骤H6:操作结束;
其中:pm∈(0,1)为变异率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259899.8A CN111026506A (zh) | 2019-12-10 | 2019-12-10 | 采用多种群协同进化遗传算法的云工作流调度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259899.8A CN111026506A (zh) | 2019-12-10 | 2019-12-10 | 采用多种群协同进化遗传算法的云工作流调度优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111026506A true CN111026506A (zh) | 2020-04-17 |
Family
ID=70205360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911259899.8A Withdrawn CN111026506A (zh) | 2019-12-10 | 2019-12-10 | 采用多种群协同进化遗传算法的云工作流调度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026506A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116027739A (zh) * | 2022-07-18 | 2023-04-28 | 中国人民解放军海军航空大学 | 机群出入库转运协同调度优化方法、装置和设备 |
-
2019
- 2019-12-10 CN CN201911259899.8A patent/CN111026506A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116027739A (zh) * | 2022-07-18 | 2023-04-28 | 中国人民解放军海军航空大学 | 机群出入库转运协同调度优化方法、装置和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113821318B (zh) | 一种物联网跨域子任务组合协同计算方法及系统 | |
CN112685138B (zh) | 云环境下基于多种群混合智能优化的多工作流调度方法 | |
CN111126800B (zh) | 使用分层自适应智能算法的多模资源受限项目调度方法 | |
CN115421885B (zh) | 一种分布式多目标云任务的调度方法、装置及云服务系统 | |
CN110928648B (zh) | 融合启发式和智能计算的云工作流分段在线调度优化方法 | |
CN111026534B (zh) | 云计算环境下基于多种群遗传算法的工作流执行优化方法 | |
CN111090510A (zh) | 混合启发式和遗传算法的两阶段云工作流调度优化方法 | |
CN110780985A (zh) | 一种有限时间的并行任务调度方法与装置 | |
CN111026506A (zh) | 采用多种群协同进化遗传算法的云工作流调度优化方法 | |
CN111008745A (zh) | 混合启发式与智能算法的多模资源受限项目调度优化方法 | |
CN118312312A (zh) | 基于多目标强化学习的云数据中心负载均衡智能优化方法 | |
CN110968428B (zh) | 云工作流虚拟机配置和任务调度协同优化方法 | |
CN110991917B (zh) | 采用两阶段遗传算法的多模资源受限项目调度优化方法 | |
CN111078361A (zh) | 基于分布式估计算法的云工作流调度优化方法 | |
CN110928670B (zh) | 云计算环境下基于偏序自适应遗传算法的工作流优化方法 | |
CN111047183A (zh) | 基于分层自适应智能计算算法的云工作流调度优化方法 | |
CN110941487B (zh) | 云计算环境下基于多阶段遗传算法的工作流调度优化方法 | |
CN110928671B (zh) | 基于层次与负载均衡遗传算法的云工作流调度优化方法 | |
CN111078381A (zh) | 基于二维编码遗传算法的云工作流调度优化方法 | |
CN110991758A (zh) | 使用二维定长编码智能计算算法的云工作流调度优化方法 | |
CN111061563A (zh) | 云计算环境下基于多解码遗传算法的工作流调度优化方法 | |
CN111026533A (zh) | 云计算环境下基于分布式估计算法的工作流执行优化方法 | |
CN110928669B (zh) | 基于多种群遗传算法的能耗感知云工作流调度优化方法 | |
CN111078360A (zh) | 云计算环境下基于随机键遗传算法的工作流调度优化方法 | |
CN114980216A (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 |
Application publication date: 20200417 |
|
WW01 | Invention patent application withdrawn after publication |