CN111061563A - 云计算环境下基于多解码遗传算法的工作流调度优化方法 - Google Patents
云计算环境下基于多解码遗传算法的工作流调度优化方法 Download PDFInfo
- Publication number
- CN111061563A CN111061563A CN201911259912.XA CN201911259912A CN111061563A CN 111061563 A CN111061563 A CN 111061563A CN 201911259912 A CN201911259912 A CN 201911259912A CN 111061563 A CN111061563 A CN 111061563A
- Authority
- CN
- China
- Prior art keywords
- task
- individual
- time
- virtual machine
- decoding
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Business, Economics & Management (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Economics (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种云计算环境下基于多解码遗传算法的云工作流调度优化方法,包括以下步骤:获取调度所需信息;计算任务层次值;初始化当代种群;进行进化:采用交叉操作形成新种群并进行变异操作,基于插入模式的串行个体解码、任务最早完成时间的启发式解码和动态关键任务优先调度的启发式解码进行个体解码与更新,采用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+的输入文件,即:file∈ti.OFL∧file∈ti+.IFL;
获取云计算环境下的虚拟机集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:计算任务的层次值;
对于没有父任务的开始任务i,其层次值为:
leveli=1 (1)
其它任务的层次值采用如下递归公式进行计算:
步骤3:初始化当代种群;
采用基于层次和任务最早完成时间的个体随机生成方法生成N个不同的个体,形成初始当代种群;
所述个体采用2I位整数编码,I为任务数量,其方法如下:ch={g1,…,gI,gI+1,…,g2I},基因gi是一个非负整数;其中,{g1,…,gI}是虚拟机分配列表,gi表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机gi,gi∈VMi,例如:g1=2表示1号任务是分配给2号虚拟机的;{gI+1,…,g2I}是任务调度顺序列表,是1,…,I的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gI+i表示第i个被调度的任务的编号,即任务gI+i是第i个被调度的,例如gI+1=3,表示第1个调度的任务是3号任务;
所述基于层次和任务最早完成时间的个体随机生成方法包括如下步骤:
步骤A1:根据任务层次值从小到大随机排列任务,即层次值小的排在大的前面,具有相同层次值的则随机排列,形成个体的任务调度顺序列表{gI+1,…,g2I};
步骤A2:根据任务调度顺序列表{gI+1,…,g2I},进行基于任务最早完成时间的启发式解码获得一个个体{g1,…,g2I}及其适应度值,操作结束;
所述基于任务最早完成时间的启发式解码包括如下步骤:
步骤B1:令所有任务的就绪时间rti=0,i=1,…,I;令变量k=1;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤B2:取出任务i=gI+k;
步骤B3:令任务i的可得虚拟机集AVMi=VMi,计算把任务i分别分配给AVMi中的每个虚拟机后任务i的开始时间和完成时间:
步骤B3.1:从AVMi中取出一个虚拟机,不妨设为vmj;
步骤B3.3:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti,j和υj-eti,j≥rti;
步骤B3.4:计算把任务i分配给vmj处理后的开始时间si,j=max{νj,rti},完成时间fi,j=si,j+eti,j;
步骤B3.5:若AVMi不为空,则转到执行步骤B3.1,否则转到步骤B4;
步骤B4:按虚拟机顺序找出能最早完成任务i的虚拟机,不妨设为vmj,gi=j,即把任务i分配给vmj:
步骤B4.1:令任务i的开始时间si=si,j,完成时间fi=fi,j;
步骤B4.2:更新任务i的子任务的就绪时间rti+=max{rti+,fi},ti+∈SCi;
步骤B4.3:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤B5:令k=k+1,若k≤I,则转到步骤B2,否则转到步骤B6;
步骤B6:输出一个基于任务最早完成时间的启发式解码后的个体并计算其适应度值,操作结束;
其中:
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
个体适应度值越小,个体越优;
步骤4:对当代种群进行N/2次交叉操作形成新种群,然后对新种群中的每个个体进行变异操作;
所述交叉操作包括如下步骤:
步骤C2:从前向后找出chp1与chp2的第1个不同基因的位置n,从后向前找出chp1与chp2的第1个不同基因的位置m;如果n<m,则转到步骤C3,否则令chc1=chp1,chc2=chp2,转到步骤C6;
步骤C3:随机产生一个n到m-1的正整数α,如果α≤I则转到步骤C4,否则转到步骤C5;
步骤C4:chc1的前α个基因来自于chp1,即1≤i≤α;后2I-α个基因来自于chp2,即α<i≤2I;chc2的前α个基因来自于chp2,即1≤i≤α;后2I-α个基因来自于chp1,即α<i≤2I;转到步骤C6;
步骤C5:chc1的前α个基因来自于chp1,即1≤i≤α;后2I-α个基因来自于chp2的任务调度顺序列表中删除基因值为的基因列表,chc2的前α个基因来自于chp2,即1≤i≤α;后2I-α个基因来自于chp1的调度顺序列表中删除基因值为的基因列表;转到步骤C6;
所述变异操作包括如下步骤:
步骤D1:生成一个随机数λ∈[0,1),如果λ<pm,则转到步骤D2,否则转到步骤D5;
步骤D2:随机选择一个基因gi,如果1≤i≤I,则转到步骤D3,否则转到步骤D4;
步骤D3:从可以处理任务i的虚拟机集VMi中重新随机选择一个虚拟机vmj,gi=j,转到步骤D5;
步骤D4:如果任务gi存在父任务,则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务,则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;在[pos1,pos2]之间重新随机选择一个位置插入gi;转到步骤D5;
步骤D5:操作结束;
其中:pm∈[0,1)是变异率;
步骤5:对新种群中的所有个体ch进行基于插入模式的串行个体解码获得个体的适应度值即工作流响应时间rs、进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rse和新个体che、进行基于动态关键任务优先调度的启发式解码获得个体的适应度值即工作流响应时间rsc和新个体chc;比较rs、rse和rsc,如果rse和rsc中有小于rs的,则按顺序从rse和rsc中取出一个最小的,把ch更新为该最小值对应的个体;
所述基于插入模式的串行个体解码方法包括如下步骤:
步骤E1:令所有任务的就绪时间rti=0,i=1,…,I;令变量k=1;令虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤E2:选取编号为i=gI+k的任务;
步骤E3:基于插入模式把任务i分配给虚拟机j=gi:
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤E3.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤E3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤E4:令k=k+1,如果k≤I,则转到步骤E2,否则步骤E5;
步骤E5:获得所有任务的开始时间和结束时间:si,fi,i=1,…,I,计算其适应度值即工作流响应时间,操作结束;
基于动态关键任务优先调度的启发式解码包括如下步骤:
步骤F1:根据{g1,…,gI}计算各任务的排序值ranki,i=1,…,I;
步骤F2:系统状态初始化:令所有任务的就绪时间rti=0,令任务集P(ti)=PRi,i=1,…,I;令变量k=1,令任务集UT=T;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;把UT中的ti移到RT中;
步骤F3:从任务集RT中取出关键任务即优先级最大的任务,不妨设为ti,即任务i;gI+k=i;其中任务i的优先级pri的计算方法如下:pri=rti+ranki;
步骤F4:基于插入模式把任务i分配给虚拟机j=gi:
步骤F4.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤F4.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti;更新任务i的子任务的就绪时间
步骤F4.4:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤F6:输出一个基于动态关键任务优先调度的启发式解码后的个体,计算其适应度值即工作流响应时间,操作结束;
步骤6:对新代种群中的每个个体采用FBI&D和LDI;
所述FBI&D包括如下步骤:
步骤G6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述基于插入模式的串行反向个体解码方法包括如下步骤:
步骤H2:选取编号为i=gI+k的任务;
步骤H3:基于插入模式把任务i分配给虚拟机j=gi:
步骤H4:令k=k+1,如果k≤I,则转到步骤H2,否则步骤H5;
所述LDI包括如下步骤:
步骤I2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤I3,否则转到步骤I4;
步骤I4:令任务集STj′=Tj′,转到步骤I5;
步骤I5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤I6;否则转到步骤I7;
步骤I7:LDI操作结束;
步骤7:从当代种群和新种群中按适应度值从小到大选出N个不同的个体形成下一代种群,并令其为当代种群;
步骤8:判断是否满足进化终止条件,如满足,则转到步骤9,否则,转到步骤4;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
进一步的,所述步骤C1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤C1.1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤C1.6:个体选择操作结束。
进一步的,所述步骤F1中根据{g1,…,gI}计算各任务的排序值ranki的具体步骤如下:
步骤F1.4:如果ST不为空,转到步骤F1.2;否则转到步骤F2。
本发明的有益效果在于:
(1)相对于启发式方法、结合启发式的半智能计算方法及现有的基于分层编码的智能计算方法,本发明设计采用整数编码方法,任何一个调度方案都可以有一个个体与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(2)相对于一般的基于优先级的编码方式,任务调度顺序采用的基于拓扑排序的整数编码方法考虑了任务之间的时序关系,这样解码就比较简单,能有效提高解码的效率,进而提高算法的整体效率。
(3)相对于传统的非插入模式和并行的解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行个体解码方法通常能找到更好的对应调度方案。
(4)相对于普通的单向解码方法,本发明设计采用的向前向后个体解码与改进策略FBI&D和考虑了传输时间的负载均衡策略LDI增强了个体的邻域寻优能力,从而能提高整个算法的寻优能力和搜索效率。
(5)采用多种解码策略,有利于找到更好的调度方案,因此相对于现有的单解码策略具有更高的搜索效率和寻优能力;
(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=15000MI,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=60000MI,t15.IFL={f8-1,f9-1,f10-1,f11-1,f12-1,f13-1},t15.OFL={f15-1};fd1.size=8400MB,fd2.size=8400MB,fd3.size=3600MB,f1- 1.size=7200MB,……,f14-1.size=1800MB,f15-1.size=300MB;
获取云计算环境下的虚拟机集: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:计算任务的层次值;
任务1没有父任务,则level1=1;
同理,可以获得其它任务的层次值:level3=level4=level5=level6=level7=2;level8=level9=level10=level11=level12=level13=level14=3;level15=4。
执行步骤3:初始化当代种群;
取种群规模N=10;
基于层次和任务最早完成时间的个体生成方法生成1个体的具体实施过程如下:
执行步骤A1:随机排列层次值为1的任务,其为1;随机排列层次值为2的任务,其为6,3,4,2,7,5;随机排列层次值为3的任务,其为13,12,8,11,14,9,10;随机排列层次值为4的任务,其为15;将上述排列依次连接,形成个体的任务调度顺序列表{g16,g17,…,g30}={1,6,3,4,2,7,5,13,12,8,11,14,9,10,15};
执行步骤A2:根据任务调度顺序列表{g16,g17,…,g30}={1,6,3,4,2,7,5,13,12,8,11,14,9,10,15},进行基于任务最早完成时间的启发式解码获得一个个体ch1={5,5,5,5,6,5,5,6,4,4,6,3,6,5,6;1,6,3,4,2,7,5,13,12,8,11,14,9,10,15}及其适应度值rs1=1025.00,操作结束;
所述根据任务调度顺序列表{g16,g17,…,g30}={1,6,3,4,2,7,5,13,12,8,11,14,9,10,15},进行基于任务最早完成时间的启发式解码获得一个个体ch1及其适应度值rs1=1025.00的具体实施过程如下:
执行步骤B1:令所有任务的就绪时间rt1=0,rt2=0,…,rt15=0;k=1;令虚拟机可得时间段列表vatl1={[0,M]},vatl2={[0,M]},…,vatl6={[0,M]},其中M为一个接近无穷大的数;
执行步骤B2:取出任务i=g15+1=g16=1;
执行步骤B3:令AVM1=VM1={vm1,vm4,vm5,vm6},计算把任务1分别分配给AVM1中的每个虚拟机后任务1的开始时间和完成时间;即:执行步骤B3.1:从AVM1={vm1,vm4,vm5,vm6}中取出一个虚拟机,其为vm1;执行步骤B3.2:计算把任务1分配给vm1处理后的执行时间:ω1,1=15000/1000=15,τ1,1=8×(8400×2+3600)/200=816,则执行步骤B3.3:在vatl1中从早到晚找出一个空闲时段[0,M],满足M-0≥et1,1=831和M-831≥rt1=0;执行步骤B3.4:计算把任务1分配给vm1处理后的开始时间s1,1=max{ν1,rt1}=max{0,0}=0,完成时间f1,1=s1,1+et1,1=831;执行步骤B3.5:由于AVM1={vm4,vm5,vm6}不为空,则转到步骤B3.1;执行步骤B3.1:从AVM1={vm4,vm5,vm6}中取出vm4;执行步骤B3.2:计算把任务1分配给vm4处理后的执行时间执行步骤B3.3:在vatl4中从早到晚找出一个空闲时段[0,M],满足M-0≥et1,4=551.50和M-551.50≥rt1=0;执行步骤B3.4:计算把任务1分配给vm4处理后的开始时间s1,4=max{ν4,rt1}=max{0,0}=0,完成时间f1,4=s1,4+et1,4=551.50;执行步骤B3.5:由于AVM1={vm5,vm6}不为空,则转到执行步骤B3.1;……;这样不断重复执行步骤B3.1至步骤B3.5,直至得到s1,5=0,s1,6=0,f1,5=413,f1,6=413,转到步骤B4;
执行步骤B4:按虚拟机顺序找出能最早完成任务1的虚拟机,其为vm5,g1=5,即把任务1分配给vm5:即执行步骤B4.1:令任务1的开始时间s1=s1,5=0,完成时间f1=f1,5=413;执行步骤B4.2:更新任务1的子任务的就绪时间rt2=max{rt2,f1}=max{0,413}=413,rt3=413,rt4=413,rt5=413,rt6=413,rt7=413;执行步骤B4.3:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[413,M],则vatl5={[413,M]};
执行步骤B5:k=1+1=2,由于k=2≤I=15,则转到步骤B2;
执行步骤B2:取出任务i=g15+2=g17=6;
执行步骤B3:令AVM6=VM6={vm1,vm3,vm4,vm5},计算把任务6分别分配给AVM6中的每个虚拟机后任务6的开始时间和完成时间;即:执行步骤B3.1:从AVM6={vm1,vm3,vm4,vm5}中取出一个虚拟机,其为vm1;执行步骤B3.2:计算把任务6分配给vm1处理后的执行时间:ω6,1=48000/1000=48,τ6,1=8×5000/200=200,则et6,1=48+576+200=824;执行步骤B3.3:在vatl1中从早到晚找出一个空闲时段[0,M],满足M-0≥et6,1=824和M-824≥rt6=413;执行步骤B3.4:计算把任务6分配给vm1处理后的开始时间s6,1=max{ν1,rt6}=max{0,413}=413,完成时间f6,1=s6,1+et6,1=1237;执行步骤B3.5:由于AVM6={vm3,vm4,vm5}不为空,则转到步骤B3.1;……;这样不断重复执行步骤B3.1至步骤B3.5,直至得到s6,3=413,s6,4=413,s6,5=413,f6,3=954.33,f6,4=954.33,f6,5=529,转到步骤B4;
执行步骤B4:按虚拟机顺序找出能最早完成任务6的虚拟机,其为vm5,g6=5,即把任务6分配给vm5;即执行步骤B4.1:令任务6的开始时间s6=s6,5=413,完成时间f6=f6,5=529;执行步骤B4.2:更新任务6的子任务的就绪时间rt12=max{0,529}=529,rt14=529;执行步骤B4.3:在虚拟机可得时间段列表vatl5中删除[413,M],插入区间长度大于0的[529,M],则vatl5={[529,M]};
执行步骤B5:k=2+1=3,由于k=3≤I=15,则转到步骤B2;
……
这样不断重复执行步骤B2至步骤B5,直至k=16>I=15,转到步骤B6;
执行步骤B6:输出一个基于任务最早完成时间的启发式解码后的个体ch1={5,5,5,5,6,5,5,6,4,4,6,3,6,5,6;1,6,3,4,2,7,5,13,12,8,11,14,9,10,15}并计算其适应度值即工作流响应时间:由于而SFL14={f14-1}、SFL15={f15-1},故操作结束;
同理,基于层次和任务最早完成时间的个体生成方法生成的其它不同个体如下:
ch2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch3={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15};
ch5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch6={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,13,10,8,14,11,12,15};
ch7={5,5,5,5,6,5,5,4,3,4,6,3,6,5,6;1,5,6,2,3,7,4,11,12,8,9,13,10,14,15};
ch8={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,3,4,2,5,6,13,10,8,11,12,14,9,15};
ch9={5,5,5,5,6,5,5,4,3,2,6,5,1,5,6;1,4,2,7,5,3,6,8,13,14,10,11,12,9,15};
ch10={5,5,5,5,6,5,5,4,4,4,6,3,1,5,6;1,2,7,6,5,3,4,12,11,13,14,9,10,8,15};
其适应度值即工作流响应时间分别为:rs2=1049.00,rs3=1017.00,rs4=1115.00,rs5=1071.00,rs6=995.00,rs7=1087.00,rs8=1003.00,rs9=1119.00,rs10=1111.00;
这样生成的初始当代种群为CP={ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10}。
执行步骤4:对当代种群进行N/2次交叉操作形成新种群,然后对新种群中的每个个体进行变异操作;
对当代种群进行N/2=5次交叉操作形成新种群的具体实施过程如下:
进行第1次交叉操作:
执行步骤C1:采用基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2;即执行步骤C1.1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得每个个体的排序值:rk1=3,rk2=5,rk3=2,rk4=7,rk5=9,rk6=1,rk7=10,rk8=8,rk9=6,rk10=4;执行步骤C1.2:取R=1+1/N=1+1/10=1.1,计算个体n被选中的概率:同理A2=0.101,A3=0.135,A4=0.083,A5=0.069,A6=0.148,A7=0.063,A8=0.076,A9=0.092,A10=0.111;执行步骤C1.3:计算累计概率: 执行步骤C1.4:产生一个[0,1)随机数λ1,其为0.184,由于因此选择ch2作为父体1;执行步骤C1.5:产生一个[0,1)随机数λ2,其为0.346,由于并且3≠2,因此选择个体ch3作为父体2,转到步骤C1.6;执行步骤C1.6:个体选择操作结束;则chp1=ch2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15},chp2=ch3={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
执行步骤C2:从前向后找出chp1与chp2的第1个不同基因的位置,其为8,从后向前找出chp1与chp2的第1个不同基因的位置29;由于8<29,故转到步骤C3;
执行步骤C3:随机产生一个8到28的正整数,其为9,由于α=9≤I=15,则转到步骤C4;
执行步骤C4:如表3所示,生成子体
chc1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15}和子体
chc2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};chc1的前9个基因来自于chp1,即1≤i≤9;后21个基因来自于chp2,即9<i≤30;chc2的前9个基因来自于chp2,即1≤i≤9;后21个基因来自于chp1,即
9<i≤30;转到步骤C6;
执行步骤C6:输出子体
chc1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15}和子体
chc2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15},操作结束;
这样获得ch′1=chc1和ch′2=chc2;
表3……
进行第5次交叉操作:
执行步骤C1:采用基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2,其为ch2和ch6,则父体1:
chp1=ch2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15},父体2:
chp2=ch6={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,13,10,8,14,11,12,15};
执行步骤C2:从前向后找出chp1与chp2的第1个不同基因的位置,其为18,从后向前找出chp1与chp2的第1个不同基因的位置29;由于18<29,故转到步骤C3;
执行步骤C3:随机产生一个18到28的正整数,其为23,由于23≥15,则转到步骤C5;
执行步骤C5:如表4所示,生成子体
chc1={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15}和子体
chc2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,12,11,10,14,13,8,15};其中,chc1的前23个基因来自于chp1,即1≤i≤23;后7个基因来自于chp2的任务调度顺序列表
{1,5,7,4,6,2,3,9,13,10,8,14,11,12,15}中删除1、5、4、7、6、3、2、12后的基因列表,chc2的前23个基因来自于chp2,即1≤i≤23;后7个基因来自于chp1的调度顺序列表{1,5,4,7,6,3,2,12,11,9,10,14,13,8,15}中删除1、5、7、4、6、2、3、9后的基因列表;转到步骤C6;
执行步骤C6:输出子体
chc1={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15}和子体
chc2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,12,11,10,14,13,8,15},操作结束;
这样获得ch′9=chc1和ch′10=chc2;
表4
这样,经5次交叉操作生成新种群中如下:
ch′1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch′2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′3={5,5,5,5,6,5,5,4,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch′4={5,5,5,5,6,5,5,6,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15};
ch′5={5,5,5,5,6,5,5,5,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch′6={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch′7={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,4,2,7,5,3,6,8,13,14,10,11,12,9,15};
ch′8={5,5,5,5,6,5,5,4,3,2,6,5,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15};
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,12,11,10,14,13,8,15};
对新种群进行变异操作的具体实施过程如下:
取变异率pm=0.2;
对于ch′1={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15}
执行步骤D1:生成一个[0,1)的随机数λ,其为0.14,λ=0.14<pm=0.2,则转到步骤D2;
执行步骤D2:随机选择一个基因,其为g14,由于1≤i=14≤15,则转到步骤D3;
执行步骤D3:从可以处理任务14的虚拟机集VM14={vm2,vm4,vm5,vm6}中重新随机选择一个虚拟机,其为vm6,g14=6,转到步骤D5;
执行步骤D5:操作结束;
这样,变异后个体变为:
ch′1={5,5,5,5,6,5,5,6,5,4,6,3,6,6,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
……
对于ch9′={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15};
执行步骤D1:生成一个[0,1)的随机数λ=0.64,如果λ=0.64>0.2,则转到步骤D5;
执行步骤D5:操作结束;
对于ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,12,11,10,14,13,8,15};
执行步骤D1:生成一个[0,1)的随机数λ,其为0.08,λ=0.08<0.2,则转到步骤D2;
执行步骤D2:随机选择一个基因,其为g22,由于i=22≥I=15,则转到步骤D4;
执行步骤D4:由于任务g22=3存在父任务,则向前找到第一个父任务g16=1,pos1=16+1=17;由于任务g22=3存在子任务,则向后找到第一个子任务g23=9,pos2=23-1=22,在[17,22]之间重新随机选择一个位置,其为g20,然后把3插入到g20;转到步骤D5;
执行步骤D5:操作结束;
这样,变异后个体变为:
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,3,6,2,9,12,11,10,14,13,8,15};
这样,经变异操作后新种群变为:
ch′1={5,5,5,5,6,5,5,6,5,4,6,3,6,6,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15}
ch′2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′3={5,5,5,5,6,5,5,4,3,4,4,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15};
ch′5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch6′={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15};
ch′7={5,5,5,5,6,5,5,4,5,4,6,3,1,5,6;1,4,2,7,5,3,6,8,13,14,10,11,12,9,15};
ch8′={5,5,5,5,1,5,5,4,3,2,6,5,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15};
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,3,6,2,9,12,11,10,14,13,8,15};
执行步骤5:对新种群中的所有个体ch进行基于插入模式的串行个体解码获得个体的适应度值即工作流响应时间rs、进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rse和新个体che、进行基于动态关键任务优先调度的启发式解码获得个体的适应度值即工作流响应时间rsc和新个体chc;比较rs、rse和rsc,如果rse和rsc中有小于rs的,则按顺序从rse和rsc中取出一个最小的,把ch更新为该最小值对应的个体;
例如对于新种群中的ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15},采用基于插入模式串行个体解码方法进行解码的具体实施过程如下:
执行步骤E1:令所有任务的就绪时间rt1=0,rt2=0,……,rt15=0;k=1;令虚拟机可得时间段列表vatl1={[0,M]},vatl2={[0,M]},……,vatl6={[0,M]},其中M为一个接近无穷大的数;
执行步骤E2:选取编号为i=g16=1的任务;
执行步骤E3:基于插入模式把任务1分配给虚拟机j=g1=5;即:执行步骤E3.1:计算任务i的执行时间执行步骤E3.2:在vatl5中从早到晚找出一个空闲时段[0,M],满足M-0≥et1=413和M-413≥rt1=0;执行步骤E3.3:计算任务1的开始时间s1=max{ν5,rt1}=max{0,0}=0,完成时间f1=s1+et1=413;执行步骤E3.4:更新任务1的子任务的就绪时间rt2=max{rt2,f1}=max{0,413}=413,rt3=413,rt4=413,rt5=413,rt6=413,rt7=413;执行步骤E3.5:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[413,M];
执行步骤E4:k=1+1=2,由于k=2≤I=15,则转到步骤E2;
执行步骤E2:选取编号为i=g17=4的任务;
执行步骤E3:基于插入模式把任务4分配给虚拟机j=g4=5;即:执行步骤E3.1:计算任务i的执行时间执行步骤E3.2:在vatl5中从早到晚找出一个空闲时段[413,M],满足M-413≥et4=116和M-116≥rt4=413;执行步骤E3.3:计算任务4的开始时间s4=max{ν5,rt4}=max{413,413}=413,完成时间f4=s4+et4=529;执行步骤E3.4:更新任务4的子任务的就绪时间rt10=max{rt10,f4}=max{0,529}=529,rt14=529;执行步骤E3.5:在虚拟机可得时间段列表vatl5中删除[413,M],插入区间长度大于0的[529,M];
执行步骤E4:k=2+1=3,由于k=3≤I=15,则转到步骤E2;
……
这样不断重复执行步骤E2至步骤E4,直到k=16>I=15,转到步骤E5;
执行步骤E5:获得所有任务的开始时间和结束时间:s1=0.00,s2=529.00,s3=793.00,s4=413.00,s5=413.00,s6=677.00,s7=591.00,s8=591.00,s9=861.00,s10=529.00,s11=749.00,s12=793.00,s13=677.00,s14=861.00,s15=937.00;f1=413.00,f2=591.00,f3=861.00,f4=529.00,f5=749.00,f6=793.00,f7=677.00,f8=676.00,f9=937.00,f10=673.00,f11=761.00,f12=887.00,f13=803.00,f14=929.00,f15=1109.00;计算适应度值即工作流响应时间:由于而SFL14={f14-1}、SFL15={f15-1},故操作结束;
例如对于ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15},进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rs′4 e=1115和新个体ch′4 e={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15};
例如对于ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15},进行基于动态关键任务优先调度的启发式解码的具体实施过程如下:
执行步骤F1:根据虚拟机分配列表{5,5,5,5,6,5,5,4,3,2,6,4,1,5,6}计算任务的rank;即:执行步骤F1.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};执行步骤F1.2:从ST中随机取出一个任务,其为t15,由于t15没有子任务,则执行步骤F1.3:在S(t8),S(t9),S(t10),S(t11),S(t12),S(t13)中删除t15,则把WT中的t8,t9,t10,t11,t12,t13移到ST中,则ST={t8,t9,t10,t11,t12,t13,t14};执行步骤F1.4:由于ST不为空,转到步骤F1.2;执行步骤F1.2:从ST中随机取出一个任务,其为t10,由于t10有子任务,则执行步骤F1.3:在S(t4)中删除t10,则S(t4)={t14};WT中不存在的任务,则ST={t8,t9,t11,t12,t13,t14};执行步骤F1.4:由于ST不为空,转到步骤F1.2;……,这样不断重复执行步骤F1.2至步骤F1.4,直到ST为空,得到其它任务的rank值:rank1=933.00,rank2=319.00,rank3=316.00,rank4=432.00,rank5=520.00,rank6=382.00,rank7=384.00,rank8=257.00,rank9=248.00,rank11=184.00,rank12=266.00,rank13=298.00,rank14=68.00;
执行步骤F2:系统状态初始化:令所有任务的就绪时间rt1=0,rt2=0,……,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};k=1,UT=T;令虚拟机可得时间段列表vatl1={[0,M]},vatl2={[0,M]},……,vatl6={[0,M]},其中M为一个接近无穷大的数;把UT中的t1移到RT中,则RT={t1};
执行步骤F3:pr1=rt1+rank1=933.00,由于RT中只有t1,其为关键任务,因此取出t1;g15+1=g16=1;
执行步骤F4:基于插入模式把任务1分配给虚拟机j=g1=5:即:执行步骤F4.1:计算任务1的执行时间执行步骤F4.2:在vatl5中从早到晚找出一个空闲时段[0,M],满足M-0≥et1=413和M-413≥rt1=0;执行步骤F4.3:计算任务1的开始时间s1=max{ν5,rt1}=max{0,0}=0,完成时间f1=s1+et1=413;更新任务1的子任务的就绪时间rt2=max{rt2,f1}=413,rt3=413,rt4=413,rt5=413,rt6=413,rt7=413;执行步骤F4.4:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[413,M];
执行步骤F5:在P(t2)、P(t3)、P(t4)、P(t5)、P(t6)、P(t7)中删除t1,则 把UT中的t2、t3、t4、t5、t6、t7移到RT中,则RT={t2,t3,t4,t5,t6,t7};由于RT不为空,则k=1+1=2转到步骤F3;
执行步骤F3:在RT={t2,t3,t4,t5,t6,t7}中,pr2=rt2+rank2=413+319=732,pr3=rt3+rank3=413+316=729,pr4=rt4+rank4=845,pr5=rt5+rank5=933,pr6=rt6+rank6=795,pr7=rt7+rank7=797,由于pr5最大的任务,因此t5为关键任务,取出t5;g15+2=g17=5;
执行步骤F4:基于插入模式把任务5分配给虚拟机j=g5=6:即:执行步骤F4.1:计算任务5的执行时间执行步骤F4.2:在vatl6中从早到晚找出一个空闲时段[0,M],满足M-0≥336和M-336≥rt5=413;执行步骤F4.3:计算任务5的开始时间s5=max{ν6,rt5}=max{0,413}=413,完成时间f5=s5+et5=749;更新任务5的子任务的就绪时间rt11=max{rt11,f5}=max{0,749}=749,rt14=749;执行步骤F4.4:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[0,413]和[749,M];
执行步骤F5:在P(t11)、P(t14)中删除t5,则P(t14)={t2,t3,t4,t6,t7},把UT中的t11移到RT中,则RT={t2,t3,t4,t6,t7,t11};由于RT不为空,则k=2+1=3,转到步骤F3;
……
这样不断重复执行步骤F3至步骤F5,直到RT为空,转到步骤F6;
执行步骤F6:输出一个基于动态关键任务优先调度的启发式解码后的个体ch′4 c={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,5,11,4,10,7,13,6,12,2,8,3,9,15,14},计算其适应度值即工作流响应时间rs′4 c=1115,操作结束;
由于rs′4=rs′4 e=rs′4 c=1115,在rs′4 e,rs′4 c中没有小于rs′4的,因此不更新ch′4,则ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15},适应度值即工作流响应时间rs′4=1115;
例如对于ch′6={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15},进行基于插入模式的串行个体解码获得个体的适应度值即工作流响应时间rs′6=1029.00;
例如对于ch′6={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15},进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rs′6 e=1017和新个体ch′6 e={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15};
例如对于ch′6={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15},进行基于动态关键任务优先调度的启发式解码获得个体的适应度值即工作流响应时间rs′6 c=1029和新个体ch′6 c={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,5,11,6,12,4,10,3,9,7,13,2,8,15,14};
由于rs′6=rs′6 c=1029>rs′6 e=1017,rs′6 e小于rs′6,则从rs′6 e和rs′6 c中按顺序取出最小的,其为rs′6 e,因此把ch′6更新为ch′6 e,则ch′6=ch′6 e={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15},适应度值即工作流响应时间rs′6=rs′6 e=1017;
例如对于ch9′={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15},进行基于插入模式的串行个体解码获得个体的适应度值即工作流响应时间rs′9=1049.00;
例如对于ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15},进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rs′6 e=1033和新个体ch′9 e={5,5,5,5,6,5,5,5,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15};
例如对于ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,9,13,10,8,14,11,15},进行基于动态关键任务优先调度的启发式解码获得个体的适应度值即工作流响应时间rs′9 c=995和新个体ch′9 c={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
由于rs′9=1049>rs′9 e=1033>rs′9 c=995,rs′9 e和rs′9 c均小于rs′9,则从rs′9 e和rs′9 c中按顺序取出最小的,其为rs′9 c,因此把ch′9更新为ch′9 c,则ch′9=ch′9 c={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14},适应度值即工作流响应时间rs′9=rs′9 c=995;
同理,经多解码方法解码与改进后,新种群中的其它个体变为:
ch′1={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,1};
ch′2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,3,9,2,8,15,14};
ch′3={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15};
ch′5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,5,11,7,13,4,10,3,9,6,12,2,8,15,14};
ch′7={5,5,5,5,6,5,5,4,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
ch′8={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
其适应度值即工作流响应时间为:rs′1=1017.00,rs′2=1029.00,rs′3=1071.00,rs′5=1065.00,rs′7=1062.00,rs′8=1049.00,rs′10=995.00;
执行步骤6:对新代种群中的每个个体采用FBI&D和LDI;
首先,对新种群中的每个个体采用FBI&D方法改进;例如对新代种群中的ch′3={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,8,13,14,10,9,11,12,15}采用FBI&D的具体实施过程如下:
执行步骤G2:采用基于插入模式的串行个体解码方法对个体ch′3进行解码,获得所有任务的完成时间:f1=413.00,f2=745.00,f3=683.00,f4=529.00,f5=749.00,f6=861.00,f7=615.00,f8=811.00,f9=759.00,f10=617.00,f11=823.00,f12=949.00,f13=741.00,f14=929.00,f15=1065.00,及其工作流响应时间rs′3=1071.00;由于rs′3=1071小于则转到步骤G3;
执行步骤G5:把反向个体中的任务调度顺序列表根据任务反向完成时间从大到小重新排列,即把个体中的基因设置为倒数第i个完成的任务,i=1,…,15,形成个体ch′3={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,13,10,14,10,9,8,12,11,15},转到步骤G2;
执行步骤G2:采用基于插入模式的串行个体解码方法对个体ch′3进行解码,获得所有任务的完成时间:f1=413.00,f2=745.00,f3=683.00,f4=529.00,f5=749.00,f6=861.00,f7=615.00,f8=811.00,f9=759.00,f10=617.00,f11=823.00,f12=881.00,f13=741.00,f14=949.00,f15=997.00,及其工作流响应时间rs′3=1003.00;由于rs′3等于则转到步骤G6;
执行步骤G6:输出个体
ch′3={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,13,10,9,8,12,11,15,14}及其适应度值即工作流响应时间rs′3=1003.00,操作结束;
执行步骤H1:由于而SFL14={f14-1}、SFL15={f15-1},故令任务的反向就绪时间:k=1;令虚拟机可得时间段列表vatl1={[0,M]},vatl2={[0,M]},……,vatl6={[0,M]},其中M为一个接近无穷大的数;
执行步骤H2:选取编号为i=g15+1=g16的任务15;
执行步骤H3:基于插入模式把任务15分配给虚拟机j=g15=6;即:执行步骤H3.1:计算任务15的执行时间执行步骤H3.2:在vatl6中从早到晚找出一个空闲时段[0,M],满足M-0≥et15=116和执行步骤H3.3:计算任务15的反向开始时间反向完成时间执行步骤H3.4:更新任务15的父任务的反向就绪时间 执行步骤H3.5:在虚拟机可得时间段列表vatl6中删除[0,M],插入区间长度大于0的[0,6]和[122,M];
执行步骤H4:k=1+1=2,由于k=2≤I=15,则转到步骤H2;
执行步骤H2:选取编号为i=g15+2=g17的任务12;
执行步骤H3:基于插入模式把任务12分配给虚拟机j=g12=5;即:执行步骤H3.1:计算任务12的执行时间执行步骤H3.2:在vatl5中从早到晚找出一个空闲时段[0,M],满足M-0≥20和执行步骤H3.3:计算任务12的反向开始时间反向完成时间执行步骤H3.4:更新任务12的父任务的反向就绪时间执行步骤H3.5:在虚拟机可得时间段列表vatl5中删除[0,M],插入区间长度大于0的[0,122]和[142,M];
执行步骤H4:k=2+1=3,由于k=3≤I=15,则转到步骤H2
……
这样不断重复执行步骤H2至步骤H4,直到k=16>I=15,转到步骤H5;
同理,新种群中的其它个体经FBI&D方法改进后变为:
ch′1={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch′2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,3,9,2,8,15,14};
ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15};
ch′5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,4,5,3,6,13,2,10,9,11,8,12,15,14};
ch′6={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15};
ch′7={5,5,5,5,6,5,5,4,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
ch′8={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
其适应度值即工作流响应时间:rs′1=1017.00,rs′2=1029.00,rs′4=1115.00,rs′5=1045.00,rs′6=1017.00,rs′7=1062.00,rs′8=1049.00,rs′9=995.00,rs′10=995.00;
然后,对新种群中的所有个体采用LDI方法改进;
例如对新种群中的ch′4={5,5,5,5,6,5,5,4,3,2,6,4,1,5,6;1,4,2,7,6,3,5,14,9,11,13,8,10,12,15}采用LDI方法改进的具体实施过程如下:
执行步骤I2:找出负载最小的虚拟机3;由于ld3>0,转到步骤I3,;
执行步骤I3:ST3=(∪gi=3(SCi∪PRi)-{ti|gi=3})∩T3={t3,t15}∩{t2,t3,t4,t6,t9,t11,t12}={t3},转到步骤I5;
执行步骤I5:由于ST3不为空,则从ST3中按顺序取出一个其所在虚拟机的负载是最高的任务3,转到步骤I6;
执行步骤I6:令g3=3,形成新的个体
执行步骤I7:LDI操作结束;
同理,新种群中的其它个体经LDI方法改进后变为:
ch′1={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch′2={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,3,9,2,8,15,14};
ch′3={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,13,10,9,8,12,11,15,14};
ch′5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,4,5,3,6,13,2,10,9,11,8,12,15,14};
ch′6={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15};
ch′7={5,5,5,5,6,5,5,4,5,2,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
ch′8={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch′9={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
ch′10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
其适应度值即工作流响应时间:rs′1=1017.00,rs′2=1029.00,rs′3=1003.00,rs′5=1045.00,rs′6=1017.00,rs′7=1052.00,rs′8=1049.00,rs′9=995.00,rs′10=995.00;
执行步骤7:从当代种群和新种群中按适应度值从小到大选出N个不同的个体形成下一代种群,并令其为当代种群;
根据适应度值即工作流响应时间,选择当代种群的ch1、ch2、ch3、ch6、ch8和新种群的ch′2、ch′3、ch′5、ch′6、ch′9形成下一代种群,即GP={ch1,ch2,ch3,ch6,ch8,ch′2,ch′3,ch′5,ch′6,ch′9}。
令CP=GP,则当代种群的所有个体为:
ch1={5,5,5,5,6,5,5,6,4,4,6,3,6,5,6;1,6,3,4,2,7,5,13,12,8,11,14,9,10,15};
ch2={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,4,7,6,3,2,12,11,9,10,14,13,8,15};
ch3={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,11,14,9,15};
ch4={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,4,6,2,3,9,13,10,8,14,11,12,15};
ch5={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,3,4,2,5,6,13,10,8,11,12,14,9,15};
ch6={5,5,5,5,6,5,5,5,3,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,3,9,2,8,15,14};
ch7={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,4,5,7,3,2,6,13,10,9,8,12,11,15,14};
ch8={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,4,5,3,6,13,2,10,9,11,8,12,15,14};
ch9={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,3,6,7,4,2,5,13,8,12,10,14,9,11,15};
ch10={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,11,7,13,6,12,4,10,2,8,3,9,15,14};
其适应度值即工作流响应时间:rs1=1025,rs2=1049.00,rs3=1017.00,rs4=995.00,rs5=1003.00,rs6=1029.00,rs7=1003.00,rs8=1045.00,rs9=1017.00,,rs10=995.00;执行步骤8:判断是否满足进化终止条件,如满足,则转到步骤9,否则,转到步骤4;
终止条件为迭代到指定的代数TG=20代;
由于当前种群迭代进化了两代,没有满足迭代终止条件,因此转到步骤4;
……
这样不断重复执行步骤4至步骤8,直到迭代终止条件满足,当代种群变为:
ch1={5,5,5,5,6,5,5,4,3,4,6,5,6,5,6;1,2,3,4,7,6,5,9,8,11,12,13,10,14,15};
ch2={5,5,5,5,6,5,5,5,3,4,6,3,6,5,6;1,4,5,3,7,6,2,10,8,13,12,14,11,9,15};
ch3={5,5,5,5,6,5,5,6,5,4,6,5,6,5,6;1,2,4,7,6,3,5,9,8,11,12,13,10,14,15};
ch4={5,5,5,5,6,5,5,6,5,4,6,3,1,5,6;1,5,7,6,4,2,3,8,9,13,12,14,11,10,15};
ch5={5,5,5,5,6,5,5,6,1,4,6,5,6,5,6;1,2,3,4,7,6,5,9,8,11,12,13,10,14,15};
ch6={5,5,5,5,6,5,5,6,3,4,6,5,6,5,6;1,2,3,4,7,6,5,9,8,11,12,13,10,14,15};
ch7={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,5,11,6,12,4,10,7,13,2,8,3,9,15,14};
ch8={5,5,5,5,6,5,5,6,3,4,6,3,6,5,6;1,4,5,3,2,6,7,8,14,10,9,11,13,12,15};
ch9={5,5,5,5,6,5,5,5,4,4,6,3,6,5,6;1,5,11,6,12,4,10,3,9,7,13,2,8,15,14};
ch10={5,5,5,5,6,5,5,6,3,4,6,5,1,5,6;1,7,5,3,4,2,6,13,10,9,11,8,12,15,14};
其适应度值即工作流响应时间:rs1=1011.00,rs2=1023.00,rs3=993.00,rs4=995.00,rs5=987.00,rs6=985.00,rs7=983.00,rs8=1025.00,rs9=1005.00,rs10=1003.00;
执行步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
当代种群中的最优个体为ch={5,5,5,5,6,5,5,6,5,4,6,3,6,5,6;1,5,11,6,12,4,10,7,13,2,8,3,9,15,14},其适应度值即工作流响应时间为rs=983.00,对应的调度优化方案如表5所示。
调度顺序 | 任务编号 | 开始时间 | 执行时间 | 结束时间 | 虚拟机编号 |
1 | 1 | 0.00 | 413.00 | 413.00 | 5 |
2 | 5 | 413.00 | 336.00 | 749.00 | 6 |
3 | 11 | 749.00 | 12.00 | 761.00 | 6 |
4 | 6 | 413.00 | 116.00 | 529.00 | 5 |
5 | 12 | 529.00 | 94.00 | 623.00 | 3 |
6 | 4 | 529.00 | 116.00 | 645.00 | 5 |
7 | 10 | 645.00 | 88.00 | 733.00 | 4 |
8 | 7 | 645.00 | 86.00 | 731.00 | 5 |
9 | 13 | 761.00 | 58.00 | 819.00 | 6 |
10 | 2 | 731.00 | 62.00 | 793.00 | 5 |
11 | 8 | 819.00 | 62.00 | 881.00 | 6 |
12 | 3 | 793.00 | 68.00 | 861.00 | 5 |
13 | 9 | 861.00 | 8.00 | 869.00 | 5 |
14 | 15 | 881.00 | 96.00 | 977.00 | 6 |
15 | 14 | 869.00 | 68.00 | 937.00 | 5 |
表5
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。
Claims (3)
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:计算任务的层次值;
对于没有父任务的开始任务i,其层次值为:
leveli=1 (1)
其它任务的层次值采用如下递归公式进行计算:
步骤3:初始化当代种群;
采用基于层次和任务最早完成时间的个体随机生成方法生成N个不同的个体,形成初始当代种群;
所述个体采用2I位整数编码,I为任务数量,其方法如下:ch={g1,…,gI,gI+1,…,g2I},基因gi是一个非负整数;其中,{g1,…,gI}是虚拟机分配列表,gi表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机gi,gi∈VMi;{gI+1,…,g2I}是任务调度顺序列表,是1,…,I的一个排列,且满足任务的时序约束,即任何任务都不能排在其父任务的前面,gI+i表示第i个被调度的任务的编号,即任务gI+i是第i个被调度的;
所述基于层次和任务最早完成时间的个体随机生成方法包括如下步骤:
步骤A1:根据任务层次值从小到大随机排列任务,即层次值小的排在大的前面,具有相同层次值的则随机排列,形成个体的任务调度顺序列表{gI+1,…,g2I};
步骤A2:根据任务调度顺序列表{gI+1,…,g2I},进行基于任务最早完成时间的启发式解码获得一个个体{g1,…,g2I}及其适应度值,操作结束;
所述基于任务最早完成时间的启发式解码包括如下步骤:
步骤B1:令所有任务的就绪时间rti=0,i=1,…,I;令变量k=1;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤B2:取出任务i=gI+k;
步骤B3:令任务i的可得虚拟机集AVMi=VMi,计算把任务i分别分配给AVMi中的每个虚拟机后任务i的开始时间和完成时间:
步骤B3.1:从AVMi中取出一个虚拟机,不妨设为vmj;
步骤B3.3:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti,j和υj-eti,j≥rti;
步骤B3.4:计算把任务i分配给vmj处理后的开始时间si,j=max{νj,rti},完成时间fi,j=si,j+eti,j;
步骤B3.5:若AVMi不为空,则转到执行步骤B3.1,否则转到步骤B4;
步骤B4:按虚拟机顺序找出能最早完成任务i的虚拟机,不妨设为vmj,gi=j,即把任务i分配给vmj:
步骤B4.1:令任务i的开始时间si=si,j,完成时间fi=fi,j;
步骤B4.3:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤B5:令k=k+1,若k≤I,则转到步骤B2,否则转到步骤B6;
步骤B6:输出一个基于任务最早完成时间的启发式解码后的个体并计算其适应度值,操作结束;
其中:
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
个体适应度值越小,个体越优;
步骤4:对当代种群进行N/2次交叉操作形成新种群,然后对新种群中的每个个体进行变异操作;
所述交叉操作包括如下步骤:
步骤C2:从前向后找出chp1与chp2的第1个不同基因的位置n,从后向前找出chp1与chp2的第1个不同基因的位置m;如果n<m,则转到步骤C3,否则令chc1=chp1,chc2=chp2,转到步骤C6;
步骤C3:随机产生一个n到m-1的正整数α,如果α≤I则转到步骤C4,否则转到步骤C5;
步骤C4:chc1的前α个基因来自于chp1,即1≤i≤α;后2I-α个基因来自于chp2,即α<i≤2I;chc2的前α个基因来自于chp2,即1≤i≤α;后2I-α个基因来自于chp1,即α<i≤2I;转到步骤C6;
步骤C5:chc1的前α个基因来自于chp1,即1≤i≤α;后2I-α个基因来自于chp2的任务调度顺序列表中删除基因值为的基因列表,chc2的前α个基因来自于chp2,即1≤i≤α;后2I-α个基因来自于chp1的调度顺序列表中删除基因值为的基因列表;转到步骤C6;
所述变异操作包括如下步骤:
步骤D1:生成一个随机数λ∈[0,1),如果λ<pm,则转到步骤D2,否则转到步骤D5;
步骤D2:随机选择一个基因gi,如果1≤i≤I,则转到步骤D3,否则转到步骤D4;
步骤D3:从可以处理任务i的虚拟机集VMi中重新随机选择一个虚拟机vmj,gi=j,转到步骤D5;
步骤D4:如果任务gi存在父任务,则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务,则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;在[pos1,pos2]之间重新随机选择一个位置插入gi;转到步骤D5;
步骤D5:操作结束;
其中:pm∈[0,1)是变异率;
步骤5:对新种群中的所有个体ch进行基于插入模式的串行个体解码获得个体的适应度值即工作流响应时间rs、进行基于任务最早完成时间的启发式解码获得个体的适应度值即工作流响应时间rse和新个体che、进行基于动态关键任务优先调度的启发式解码获得个体的适应度值即工作流响应时间rsc和新个体chc;比较rs、rse和rsc,如果rse和rsc中有小于rs的,则按顺序从rse和rsc中取出一个最小的,把ch更新为该最小值对应的个体;
所述基于插入模式的串行个体解码方法包括如下步骤:
步骤E1:令所有任务的就绪时间rti=0,i=1,…,I;令变量k=1;令虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤E2:选取编号为i=gI+k的任务;
步骤E3:基于插入模式把任务i分配给虚拟机j=gi:
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤E3.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤E3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤E4:令k=k+1,如果k≤I,则转到步骤E2,否则步骤E5;
步骤E5:获得所有任务的开始时间和结束时间:si,fi,i=1,…,I,计算其适应度值即工作流响应时间,操作结束;
基于动态关键任务优先调度的启发式解码包括如下步骤:
步骤F1:根据{g1,…,gI}计算各任务的排序值ranki,i=1,…,I;
步骤F2:系统状态初始化:令所有任务的就绪时间rti=0,令任务集P(ti)=PRi,i=1,…,I;令变量k=1,令任务集UT=T;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;把UT中的ti移到RT中;
步骤F3:从任务集RT中取出关键任务即优先级最大的任务,不妨设为ti,即任务i;gI+k=i;其中任务i的优先级pri的计算方法如下:pri=rti+ranki;
步骤F4:基于插入模式把任务i分配给虚拟机j=gi:
步骤F4.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤F4.4:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤F6:输出一个基于动态关键任务优先调度的启发式解码后的个体,计算其适应度值即工作流响应时间,操作结束;
步骤6:对新代种群中的每个个体采用FBI&D和LDI;
所述FBI&D包括如下步骤:
步骤G6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述基于插入模式的串行反向个体解码方法包括如下步骤:
步骤H2:选取编号为i=gI+k的任务;
步骤H3:基于插入模式把任务i分配给虚拟机j=gi:
步骤H4:令k=k+1,如果k≤I,则转到步骤H2,否则步骤H5;
所述LDI包括如下步骤:
步骤I2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤I3,否则转到步骤I4;
步骤I4:令任务集STj′=Tj′,转到步骤I5;
步骤I5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤I6;否则转到步骤I7;
步骤I7:LDI操作结束;
步骤7:从当代种群和新种群中按适应度值从小到大选出N个不同的个体形成下一代种群,并令其为当代种群;
步骤8:判断是否满足进化终止条件,如满足,则转到步骤9,否则,转到步骤4;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
2.根据权利要求1所述的一种云计算环境下基于多解码遗传算法的工作流调度优化方法,其特征在于:所述步骤C1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤C1.1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤C1.6:个体选择操作结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259912.XA CN111061563A (zh) | 2019-12-10 | 2019-12-10 | 云计算环境下基于多解码遗传算法的工作流调度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259912.XA CN111061563A (zh) | 2019-12-10 | 2019-12-10 | 云计算环境下基于多解码遗传算法的工作流调度优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111061563A true CN111061563A (zh) | 2020-04-24 |
Family
ID=70300318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911259912.XA Withdrawn CN111061563A (zh) | 2019-12-10 | 2019-12-10 | 云计算环境下基于多解码遗传算法的工作流调度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061563A (zh) |
-
2019
- 2019-12-10 CN CN201911259912.XA patent/CN111061563A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685138B (zh) | 云环境下基于多种群混合智能优化的多工作流调度方法 | |
CN111126800B (zh) | 使用分层自适应智能算法的多模资源受限项目调度方法 | |
CN110008023B (zh) | 基于遗传算法的云计算系统预算约束随机任务调度方法 | |
CN108427602B (zh) | 一种分布式计算任务的协同调度方法及装置 | |
CN109491791B (zh) | 基于申威众核处理器的nsga-ii的主从增强式运行方法及装置 | |
CN110780985A (zh) | 一种有限时间的并行任务调度方法与装置 | |
CN110928648B (zh) | 融合启发式和智能计算的云工作流分段在线调度优化方法 | |
CN111026534B (zh) | 云计算环境下基于多种群遗传算法的工作流执行优化方法 | |
CN111008745A (zh) | 混合启发式与智能算法的多模资源受限项目调度优化方法 | |
CN111090510A (zh) | 混合启发式和遗传算法的两阶段云工作流调度优化方法 | |
CN110991917B (zh) | 采用两阶段遗传算法的多模资源受限项目调度优化方法 | |
CN110928670B (zh) | 云计算环境下基于偏序自适应遗传算法的工作流优化方法 | |
CN112884368A (zh) | 面向高端装备交货时间与延迟最小的多目标调度方法及系统 | |
CN111078361A (zh) | 基于分布式估计算法的云工作流调度优化方法 | |
CN111061563A (zh) | 云计算环境下基于多解码遗传算法的工作流调度优化方法 | |
CN110941487B (zh) | 云计算环境下基于多阶段遗传算法的工作流调度优化方法 | |
CN111047183A (zh) | 基于分层自适应智能计算算法的云工作流调度优化方法 | |
CN114980216B (zh) | 基于移动边缘计算的依赖型任务卸载系统及方法 | |
CN110928669B (zh) | 基于多种群遗传算法的能耗感知云工作流调度优化方法 | |
CN112506644B (zh) | 基于云边端混合计算模式系统的任务调度方法和系统 | |
CN110968428B (zh) | 云工作流虚拟机配置和任务调度协同优化方法 | |
CN110928671B (zh) | 基于层次与负载均衡遗传算法的云工作流调度优化方法 | |
CN115421885A (zh) | 一种分布式多目标云任务的调度方法、装置及云服务系统 | |
CN110990125A (zh) | 使用二维两阶段智能计算算法的云工作流调度优化方法 | |
Li et al. | An improved differential evolution task scheduling algorithm based on cloud computing |
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: 20200424 |
|
WW01 | Invention patent application withdrawn after publication |