CN111061563A - 云计算环境下基于多解码遗传算法的工作流调度优化方法 - Google Patents

云计算环境下基于多解码遗传算法的工作流调度优化方法 Download PDF

Info

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
Application number
CN201911259912.XA
Other languages
English (en)
Inventor
张利
纪仁全
李研彪
单晓杭
叶必卿
计时鸣
谢毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201911259912.XA priority Critical patent/CN111061563A/zh
Publication of CN111061563A publication Critical patent/CN111061563A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow 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的父任务集PRi,任务i的子任务集SCi,其中i=1,2…,I;
Figure BDA0002311334310000021
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i+的父任务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i+的输入文件,即:
Figure BDA0002311334310000022
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)
其它任务的层次值采用如下递归公式进行计算:
Figure BDA0002311334310000031
步骤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.2:计算把任务i分配给vmj处理后的执行时间
Figure BDA0002311334310000041
步骤B3.3:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥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中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤B5:令k=k+1,若k≤I,则转到步骤B2,否则转到步骤B6;
步骤B6:输出一个基于任务最早完成时间的启发式解码后的个体并计算其适应度值,操作结束;
其中:
ωi,j:是vmj处理ti的时间,
Figure BDA0002311334310000042
Figure BDA0002311334310000043
是把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间,
Figure BDA0002311334310000044
是处理
Figure BDA0002311334310000045
的虚拟机;
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
Figure BDA0002311334310000046
所述适应度值为工作流响应时间rs,其计算方法如下:
Figure BDA0002311334310000051
其中:rfi是任务i的响应时间,
Figure BDA0002311334310000052
SFLi是任务i输出给共享数据库的输出文件集,即
Figure BDA0002311334310000053
个体适应度值越小,个体越优;
步骤4:对当代种群进行N/2次交叉操作形成新种群,然后对新种群中的每个个体进行变异操作;
所述交叉操作包括如下步骤:
步骤C1:采用基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2,不妨设为:
Figure BDA0002311334310000054
生成的两个子体不妨设为:
Figure BDA0002311334310000055
Figure BDA0002311334310000056
步骤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,即
Figure BDA0002311334310000057
1≤i≤α;后2I-α个基因来自于chp2,即
Figure BDA0002311334310000058
α<i≤2I;chc2的前α个基因来自于chp2,即
Figure BDA0002311334310000059
1≤i≤α;后2I-α个基因来自于chp1,即
Figure BDA00023113343100000510
α<i≤2I;转到步骤C6;
步骤C5:chc1的前α个基因来自于chp1,即
Figure BDA00023113343100000511
1≤i≤α;后2I-α个基因来自于chp2的任务调度顺序列表
Figure BDA00023113343100000512
中删除基因值为
Figure BDA00023113343100000513
的基因列表,chc2的前α个基因来自于chp2,即
Figure BDA00023113343100000514
1≤i≤α;后2I-α个基因来自于chp1的调度顺序列表
Figure BDA00023113343100000515
中删除基因值为
Figure BDA00023113343100000516
的基因列表;转到步骤C6;
步骤C6:输出子体
Figure BDA00023113343100000517
和子体
Figure BDA00023113343100000518
操作结束;
所述变异操作包括如下步骤:
步骤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.1:计算任务i的执行时间
Figure BDA0002311334310000061
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti和υj-eti≥rti
步骤E3.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti
步骤E3.4:更新任务i的子任务的就绪时间
Figure BDA0002311334310000062
步骤E3.5:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤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,令任务集
Figure BDA0002311334310000071
UT=T;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;把UT中
Figure BDA0002311334310000072
的ti移到RT中;
步骤F3:从任务集RT中取出关键任务即优先级最大的任务,不妨设为ti,即任务i;gI+k=i;其中任务i的优先级pri的计算方法如下:pri=rti+ranki
步骤F4:基于插入模式把任务i分配给虚拟机j=gi
步骤F4.1:计算任务i的执行时间
Figure BDA0002311334310000073
步骤F4.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti和υj-eti≥rti
步骤F4.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti;更新任务i的子任务的就绪时间
步骤F4.4:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤F5:在所有
Figure BDA0002311334310000075
中删除ti,把UT中
Figure BDA0002311334310000074
Figure BDA0002311334310000076
移到RT中;如果RT不为空,则令k=k+1转到步骤F3,否则转到步骤F6;
步骤F6:输出一个基于动态关键任务优先调度的启发式解码后的个体,计算其适应度值即工作流响应时间,操作结束;
步骤6:对新代种群中的每个个体采用FBI&D和LDI;
所述FBI&D包括如下步骤:
步骤G1:令反向工作流响应时间
Figure BDA0002311334310000081
其中M为一个接近无穷大的数;
步骤G2:采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间f1,…,fI及其工作流响应时间rs;如果rs小于
Figure BDA0002311334310000082
则转到步骤G3,否则,转到步骤G6;
步骤G3:把个体ch中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把ch中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成反向个体
Figure BDA0002311334310000083
步骤G4:对
Figure BDA0002311334310000084
采用基于插入模式的串行反向个体解码方法进行解码获得所有任务反向完成时间
Figure BDA0002311334310000085
及其反向工作流响应时间
Figure BDA0002311334310000086
Figure BDA0002311334310000087
小于rs,则转到步骤G5,否则,转到步骤G6;
步骤G5:把反向个体
Figure BDA0002311334310000088
中的任务调度顺序列表根据任务反向完成时间
Figure BDA0002311334310000089
从大到小重新排列,即把
Figure BDA00023113343100000810
中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成个体ch,转到步骤G2;
步骤G6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述基于插入模式的串行反向个体解码方法包括如下步骤:
步骤H1:令所有任务的反向就绪时间
Figure BDA00023113343100000811
令变量k=1;令所有虚拟机的可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤H2:选取编号为i=gI+k的任务;
步骤H3:基于插入模式把任务i分配给虚拟机j=gi
步骤H3.1:计算任务i的执行时间
Figure BDA00023113343100000812
步骤H3.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti
Figure BDA00023113343100000813
步骤H3.3:计算任务i的反向开始时间
Figure BDA00023113343100000814
反向完成时间
Figure BDA00023113343100000815
步骤H3.4:更新任务i的父任务的反向就绪时间
Figure BDA00023113343100000816
步骤H3.5:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的
Figure BDA00023113343100000817
Figure BDA00023113343100000818
步骤H4:令k=k+1,如果k≤I,则转到步骤H2,否则步骤H5;
步骤H5:输出反向工作流响应时间
Figure BDA0002311334310000091
及任务的反向开始时间和反向完成时间
Figure BDA0002311334310000092
i=1,…,I,操作结束;
所述LDI包括如下步骤:
步骤I1:计算各虚拟机负载
Figure BDA0002311334310000093
步骤I2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤I3,否则转到步骤I4;
步骤I3:令任务集
Figure BDA0002311334310000094
转到步骤I5;
步骤I4:令任务集STj′=Tj′,转到步骤I5;
步骤I5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤I6;否则转到步骤I7;
步骤I6:令gi′=j′,形成新的个体
Figure BDA0002311334310000095
采用FBI&D方法对
Figure BDA0002311334310000096
进行解码与改进,如果有改进则用此改进的个体替换原个体,转到步骤I7;否则转到步骤I5;
步骤I7:LDI操作结束;
步骤7:从当代种群和新种群中按适应度值从小到大选出N个不同的个体形成下一代种群,并令其为当代种群;
步骤8:判断是否满足进化终止条件,如满足,则转到步骤9,否则,转到步骤4;
所述终止条件为迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
进一步的,所述步骤C1中基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2的具体步骤如下:
步骤C1.1:对当代种群中的个体按优到劣即适应度值从小到大进行排序,获得个体n的排序值rkn,n=1,…,N,其中排第一的其取1,排第二的其取2,以此类推,排最后一名的其取N;
步骤C1.2:计算个体n被选中的概率
Figure BDA0002311334310000097
R>1为区分度系数;
步骤C1.3:计算累计概率:
Figure BDA0002311334310000098
步骤C1.4:产生一个随机数λ1∈[0,1),如果
Figure BDA0002311334310000101
那么选择个体n作为父体1;
步骤C1.5:产生一个随机数λ2∈[0,1),如果
Figure BDA0002311334310000102
并且n′≠n,那么选择个体n′作为父体2,转到步骤C1.6,否则转到步骤C1.5;
步骤C1.6:个体选择操作结束。
进一步的,所述步骤F1中根据{g1,…,gI}计算各任务的排序值ranki的具体步骤如下:
步骤F1.1:令任务集WT=T、
Figure BDA0002311334310000103
令任务集S(ti)=SCi,i=1,…,I;把WT中
Figure BDA0002311334310000104
的ti移到ST中;
步骤F1.2:从ST中随机取出一个任务,不妨设为ti,如果ti没有子任务则
Figure BDA0002311334310000105
否则
Figure BDA0002311334310000106
其中j=gi为分配给任务i的虚拟机编号;
步骤F1.3:在所有
Figure BDA0002311334310000107
中删除ti
Figure BDA0002311334310000108
把WT中
Figure BDA0002311334310000109
Figure BDA00023113343100001010
移到ST中;
步骤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
Figure BDA0002311334310000111
Figure BDA0002311334310000121
表2
针对上述案例,如图1所示,一种云计算环境下基于多解码遗传算法的工作流调度优化方法,包括以下实施步骤:
执行步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};
获取任务间的时序关系,即任务i的父任务集PRi和子任务集SCi
Figure BDA0002311334310000122
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},
Figure BDA0002311334310000123
PR15={t8,t9,t10,t11,t12,t13},
Figure BDA0002311334310000124
获取任务的相关参数: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;
任务2只有一个父任务1,则
Figure BDA0002311334310000131
同理,可以获得其它任务的层次值: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,
Figure BDA0002311334310000141
τ1,1=8×(8400×2+3600)/200=816,则
Figure BDA0002311334310000142
执行步骤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处理后的执行时间
Figure BDA0002311334310000151
执行步骤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,直至
Figure BDA0002311334310000152
得到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,
Figure BDA0002311334310000153
τ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,直至
Figure BDA0002311334310000154
得到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}并计算其适应度值即工作流响应时间:由于
Figure BDA0002311334310000161
而SFL14={f14-1}、SFL15={f15-1},故
Figure BDA0002311334310000162
操作结束;
同理,基于层次和任务最早完成时间的个体生成方法生成的其它不同个体如下:
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被选中的概率:
Figure BDA0002311334310000171
同理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:计算累计概率:
Figure BDA0002311334310000172
Figure BDA0002311334310000173
Figure BDA0002311334310000174
执行步骤C1.4:产生一个[0,1)随机数λ1,其为0.184,由于
Figure BDA0002311334310000175
因此选择ch2作为父体1;执行步骤C1.5:产生一个[0,1)随机数λ2,其为0.346,由于
Figure BDA0002311334310000176
并且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,即
Figure BDA0002311334310000181
1≤i≤9;后21个基因来自于chp2,即
Figure BDA0002311334310000182
9<i≤30;chc2的前9个基因来自于chp2,即
Figure BDA0002311334310000183
1≤i≤9;后21个基因来自于chp1,即
Figure BDA0002311334310000184
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
Figure DA00023113343163246
表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,即
Figure BDA0002311334310000185
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,即
Figure BDA0002311334310000191
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
Figure DA00023113343163361
表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的执行时间
Figure BDA0002311334310000211
执行步骤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的执行时间
Figure BDA0002311334310000221
执行步骤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;计算适应度值即工作流响应时间:由于
Figure BDA0002311334310000222
而SFL14={f14-1}、SFL15={f15-1},故
Figure BDA0002311334310000223
操作结束;
例如对于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},
Figure BDA0002311334310000231
Figure BDA0002311334310000232
把WT中
Figure BDA0002311334310000233
的t14,t15移到ST中,则ST={t14,t15};执行步骤F1.2:从ST中随机取出一个任务,其为t15,由于t15没有子任务,则
Figure BDA00023113343100002310
执行步骤F1.3:在S(t8),S(t9),S(t10),S(t11),S(t12),S(t13)中删除t15,则
Figure BDA0002311334310000234
把WT中
Figure BDA0002311334310000235
的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有子任务,则
Figure BDA0002311334310000236
执行步骤F1.3:在S(t4)中删除t10,则S(t4)={t14};WT中不存在
Figure BDA0002311334310000237
的任务,则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,
Figure BDA0002311334310000238
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,
Figure BDA0002311334310000241
UT=T;令虚拟机可得时间段列表vatl1={[0,M]},vatl2={[0,M]},……,vatl6={[0,M]},其中M为一个接近无穷大的数;把UT中
Figure BDA0002311334310000242
的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的执行时间
Figure BDA0002311334310000243
执行步骤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,则
Figure BDA0002311334310000244
Figure BDA0002311334310000245
把UT中
Figure BDA0002311334310000246
的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的执行时间
Figure BDA0002311334310000247
执行步骤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,则
Figure BDA0002311334310000251
P(t14)={t2,t3,t4,t6,t7},把UT中
Figure BDA0002311334310000252
的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的具体实施过程如下:
执行步骤G1:令反工作流响应时间
Figure BDA0002311334310000271
其中M为一个接近无穷大的数;
执行步骤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小于
Figure BDA0002311334310000272
则转到步骤G3;
执行步骤G3:把个体ch′3中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把个体中的基因gI+i设置为倒数第i个完成的任务,i=1,…,15,形成反向个体
Figure BDA0002311334310000273
执行步骤G4:对
Figure BDA0002311334310000274
采用基于插入模式的串行反向个体解码方法进行解码获得所有任务反向完成时间:
Figure BDA0002311334310000275
Figure BDA0002311334310000276
Figure BDA0002311334310000277
及其反向工作流响应时间
Figure BDA0002311334310000278
由于
Figure BDA0002311334310000279
小于rs′3=1071,则转到步骤G5;
执行步骤G5:把反向个体
Figure BDA00023113343100002710
中的任务调度顺序列表根据任务反向完成时间
Figure BDA00023113343100002711
从大到小重新排列,即把个体中的基因
Figure BDA00023113343100002712
设置为倒数第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等于
Figure BDA00023113343100002713
则转到步骤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,操作结束;
其中对于
Figure BDA0002311334310000281
基于插入模式的串行反向个体解码方法的具体实施过程如下:
执行步骤H1:由于
Figure BDA0002311334310000282
而SFL14={f14-1}、SFL15={f15-1},故令任务的反向就绪时间:
Figure BDA0002311334310000283
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的执行时间
Figure BDA0002311334310000284
执行步骤H3.2:在vatl6中从早到晚找出一个空闲时段[0,M],满足M-0≥et15=116和
Figure BDA0002311334310000285
执行步骤H3.3:计算任务15的反向开始时间
Figure BDA0002311334310000286
反向完成时间
Figure BDA0002311334310000287
执行步骤H3.4:更新任务15的父任务的反向就绪时间
Figure BDA0002311334310000288
Figure BDA0002311334310000289
执行步骤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的执行时间
Figure BDA00023113343100002810
执行步骤H3.2:在vatl5中从早到晚找出一个空闲时段[0,M],满足M-0≥20和
Figure BDA00023113343100002811
执行步骤H3.3:计算任务12的反向开始时间
Figure BDA00023113343100002812
反向完成时间
Figure BDA00023113343100002813
执行步骤H3.4:更新任务12的父任务的反向就绪时间
Figure BDA00023113343100002814
执行步骤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;
执行步骤H5:输出反向工作流响应时间
Figure BDA0002311334310000291
及任务的反向开始时间和反向完成时间:
Figure BDA0002311334310000292
Figure BDA0002311334310000293
Figure BDA0002311334310000294
操作结束;
同理,新种群中的其它个体经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方法改进的具体实施过程如下:
执行步骤I1:计算各虚拟机负载
Figure BDA0002311334310000295
ld2=48,ld3=12,ld4=51,ld5=103,ld6=44;
执行步骤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,形成新的个体
Figure BDA0002311334310000301
采用FBI&D方法对
Figure BDA0002311334310000302
进行解码与改进,新个体为
Figure BDA0002311334310000303
其适应度值即工作流响应时间
Figure BDA0002311334310000304
有改进则用此改进的个体替换原个体,转到步骤I7;
执行步骤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的父任务集PRi,任务i的子任务集SCi,其中i=1,2…,I;
Figure FDA0002311334300000011
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i+的父任务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i+的输入文件,即:
Figure FDA0002311334300000012
获取云计算环境下的虚拟机集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)
其它任务的层次值采用如下递归公式进行计算:
Figure FDA0002311334300000013
步骤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.2:计算把任务i分配给vmj处理后的执行时间
Figure FDA0002311334300000021
步骤B3.3:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥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的子任务的就绪时间
Figure FDA0002311334300000031
步骤B4.3:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤B5:令k=k+1,若k≤I,则转到步骤B2,否则转到步骤B6;
步骤B6:输出一个基于任务最早完成时间的启发式解码后的个体并计算其适应度值,操作结束;
其中:
ωi,j:是vmj处理ti的时间,
Figure FDA0002311334300000032
Figure FDA0002311334300000033
是把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间,
Figure FDA0002311334300000034
Figure FDA0002311334300000035
是处理
Figure FDA0002311334300000036
的虚拟机;
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
Figure FDA0002311334300000037
所述适应度值为工作流响应时间rs,其计算方法如下:
Figure FDA0002311334300000038
其中:
Figure FDA0002311334300000039
SFLi是任务i输出给共享数据库的输出文件集,即
Figure FDA00023113343000000310
个体适应度值越小,个体越优;
步骤4:对当代种群进行N/2次交叉操作形成新种群,然后对新种群中的每个个体进行变异操作;
所述交叉操作包括如下步骤:
步骤C1:采用基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2,不妨设为:
Figure FDA0002311334300000041
生成的两个子体不妨设为:
Figure FDA0002311334300000042
Figure FDA0002311334300000043
步骤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,即
Figure FDA0002311334300000044
1≤i≤α;后2I-α个基因来自于chp2,即
Figure FDA0002311334300000045
α<i≤2I;chc2的前α个基因来自于chp2,即
Figure FDA0002311334300000046
1≤i≤α;后2I-α个基因来自于chp1,即
Figure FDA0002311334300000047
α<i≤2I;转到步骤C6;
步骤C5:chc1的前α个基因来自于chp1,即
Figure FDA0002311334300000048
1≤i≤α;后2I-α个基因来自于chp2的任务调度顺序列表
Figure FDA0002311334300000049
中删除基因值为
Figure FDA00023113343000000410
的基因列表,chc2的前α个基因来自于chp2,即
Figure FDA00023113343000000411
1≤i≤α;后2I-α个基因来自于chp1的调度顺序列表
Figure FDA00023113343000000412
中删除基因值为
Figure FDA00023113343000000413
的基因列表;转到步骤C6;
步骤C6:输出子体
Figure FDA00023113343000000414
和子体
Figure FDA00023113343000000415
操作结束;
所述变异操作包括如下步骤:
步骤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.1:计算任务i的执行时间
Figure FDA0002311334300000051
步骤E3.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti和υj-eti≥rti
步骤E3.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti
步骤E3.4:更新任务i的子任务的就绪时间
Figure FDA0002311334300000052
步骤E3.5:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤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,令任务集
Figure FDA0002311334300000053
UT=T;令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;把UT中
Figure FDA0002311334300000061
的ti移到RT中;
步骤F3:从任务集RT中取出关键任务即优先级最大的任务,不妨设为ti,即任务i;gI+k=i;其中任务i的优先级pri的计算方法如下:pri=rti+ranki
步骤F4:基于插入模式把任务i分配给虚拟机j=gi
步骤F4.1:计算任务i的执行时间
Figure FDA0002311334300000062
步骤F4.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti和υj-eti≥rti
步骤F4.3:计算任务i的开始时间si=max{νj,rti},完成时间fi=si+eti;更新任务i的子任务的就绪时间
Figure FDA0002311334300000063
步骤F4.4:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤F5:在所有
Figure FDA0002311334300000064
中删除ti,把
Figure FDA0002311334300000065
Figure FDA0002311334300000066
移到RT中;如果RT不为空,则令k=k+1转到步骤F3,否则转到步骤F6;
步骤F6:输出一个基于动态关键任务优先调度的启发式解码后的个体,计算其适应度值即工作流响应时间,操作结束;
步骤6:对新代种群中的每个个体采用FBI&D和LDI;
所述FBI&D包括如下步骤:
步骤G1:令反向工作流响应时间
Figure FDA0002311334300000067
其中M为一个接近无穷大的数;
步骤G2:采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间f1,…,fI及其工作流响应时间rs;如果rs小于
Figure FDA0002311334300000068
则转到步骤G3,否则,转到步骤G6;
步骤G3:把个体ch中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把ch中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成反向个体
Figure FDA0002311334300000069
步骤G4:对
Figure FDA00023113343000000610
采用基于插入模式的串行反向个体解码方法进行解码获得所有任务反向完成时间
Figure FDA00023113343000000611
及其反向工作流响应时间
Figure FDA00023113343000000612
Figure FDA00023113343000000613
小于rs,则转到步骤G5,否则,转到步骤G6;
步骤G5:把反向个体
Figure FDA0002311334300000071
中的任务调度顺序列表根据任务反向完成时间
Figure FDA0002311334300000072
从大到小重新排列,即把
Figure FDA0002311334300000073
中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成个体ch,转到步骤G2;
步骤G6:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述基于插入模式的串行反向个体解码方法包括如下步骤:
步骤H1:令所有任务的反向就绪时间
Figure FDA0002311334300000074
令变量k=1;令所有虚拟机的可得时间段列表vatlj={[0,M]},j=1,…,J,其中M为一个接近无穷大的数;
步骤H2:选取编号为i=gI+k的任务;
步骤H3:基于插入模式把任务i分配给虚拟机j=gi
步骤H3.1:计算任务i的执行时间
Figure FDA0002311334300000075
步骤H3.2:在vatlj中从早到晚找出一个空闲时段[νjj],满足υjj≥eti
Figure FDA0002311334300000076
步骤H3.3:计算任务i的反向开始时间
Figure FDA0002311334300000077
反向完成时间
Figure FDA0002311334300000078
步骤H3.4:更新任务i的父任务的反向就绪时间
Figure FDA0002311334300000079
步骤H3.5:在虚拟机可得时间段列表vatlj中删除[νjj],插入区间长度大于0的
Figure FDA00023113343000000710
Figure FDA00023113343000000711
步骤H4:令k=k+1,如果k≤I,则转到步骤H2,否则步骤H5;
步骤H5:输出反向工作流响应时间
Figure FDA00023113343000000712
及任务的反向开始时间和反向完成时间
Figure FDA00023113343000000713
操作结束;
所述LDI包括如下步骤:
步骤I1:计算各虚拟机负载
Figure FDA00023113343000000714
步骤I2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤I3,否则转到步骤I4;
步骤I3:令任务集
Figure FDA00023113343000000715
转到步骤I5;
步骤I4:令任务集STj′=Tj′,转到步骤I5;
步骤I5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤I6;否则转到步骤I7;
步骤I6:令gi′=j′,形成新的个体
Figure FDA0002311334300000081
采用FBI&D方法对
Figure FDA0002311334300000082
进行解码与改进,如果有改进则用此改进的个体替换原个体,转到步骤I7;否则转到步骤I5;
步骤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.2:计算个体n被选中的概率
Figure FDA0002311334300000083
R>1为区分度系数;
步骤C1.3:计算累计概率:
Figure FDA0002311334300000084
步骤C1.4:产生一个随机数λ1∈[0,1),如果
Figure FDA0002311334300000085
那么选择个体n作为父体1;
步骤C1.5:产生一个随机数λ2∈[0,1),如果
Figure FDA0002311334300000086
并且n′≠n,那么选择个体n′作为父体2,转到步骤C1.6,否则转到步骤C1.5;
步骤C1.6:个体选择操作结束。
3.根据权利要求1所述的一种云计算环境下基于多解码遗传算法的工作流调度优化方法,其特征在于:所述步骤F1中根据{g1,…,gI}计算各任务的排序值ranki的具体步骤如下:
步骤F1.1:令任务集WT=T、
Figure FDA0002311334300000087
令任务集S(ti)=SCi,i=1,…,I;把WT中
Figure FDA0002311334300000088
的ti移到ST中;
步骤F1.2:从ST中随机取出一个任务,不妨设为ti,如果ti没有子任务则
Figure FDA0002311334300000091
否则
Figure FDA0002311334300000092
其中j=gi为分配给任务i的虚拟机编号;
步骤F1.3:在所有
Figure FDA0002311334300000093
中删除ti
Figure FDA0002311334300000094
把WT中
Figure FDA0002311334300000095
Figure FDA0002311334300000096
移到ST中;
步骤F1.4:如果ST不为空,转到步骤F1.2;否则转到步骤F2。
CN201911259912.XA 2019-12-10 2019-12-10 云计算环境下基于多解码遗传算法的工作流调度优化方法 Withdrawn CN111061563A (zh)

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)

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