CN110990125A - 使用二维两阶段智能计算算法的云工作流调度优化方法 - Google Patents

使用二维两阶段智能计算算法的云工作流调度优化方法 Download PDF

Info

Publication number
CN110990125A
CN110990125A CN201911259908.3A CN201911259908A CN110990125A CN 110990125 A CN110990125 A CN 110990125A CN 201911259908 A CN201911259908 A CN 201911259908A CN 110990125 A CN110990125 A CN 110990125A
Authority
CN
China
Prior art keywords
task
virtual machine
individual
population
randomly
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
CN201911259908.3A
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 Gongshang University
Original Assignee
Zhejiang Gongshang University
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 Gongshang University filed Critical Zhejiang Gongshang University
Priority to CN201911259908.3A priority Critical patent/CN110990125A/zh
Publication of CN110990125A publication Critical patent/CN110990125A/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种使用二维两阶段智能计算算法的云工作流调度优化方法,包括以下步骤:获取调度优化所需信息;计算任务层次值;基于层次初始化当代种群;分两阶段进行智能适应性进化:阶段1在满足层次编码的个体中进行搜索使算法尽快收敛于最优解附近,阶段2则在阶段1的基础上采用基于全域的拓展搜索以找到更好的解;输出调度优化方案;同时在进化中采用了按虚拟机对任务调度顺序进行拓扑排序的二维整数编码方法、基于插入模式的串行解码方法、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 BDA0002311331330000021
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i+的父任务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i+的输入文件,即:
Figure BDA0002311331330000022
获取云计算环境下的虚拟机集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 BDA0002311331330000031
步骤3:初始化当代种群;
采用基于层次的个体随机生成方法生成N个不同的个体形成当代初始种群,其中N为种群规模,且为偶数;
所述个体采用二维整数编码,其方法如下:
Figure BDA0002311331330000032
其中gj,i表示分配给虚拟机j的并在虚拟机j中是第i个被调度的任务的编号,例如g3,2=5表示任务5是分配给虚拟机3的,并在分配给虚拟机3的所有任务中是第2个被调度的;
Figure BDA0002311331330000033
是分配给虚拟机j的任务编号的一个排序,且满足任务时序约束,Ij表示分配给虚拟机j的任务数量;
步骤4:对当代种群中的每个个体,计算所有任务的执行时间
Figure BDA0002311331330000034
采用基于插入模式的串行个体解码方法计算其适应度值;
vmj处理ti的时间ωi,j计算如下:
Figure BDA0002311331330000035
把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间
Figure BDA0002311331330000036
计算如下:
Figure BDA0002311331330000037
其中:
Figure BDA0002311331330000039
是处理
Figure BDA00023113313300000310
的虚拟机;
把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间τi,j计算如下:
Figure BDA0002311331330000038
所述个体的适应度值为工作流执行时间,适应度值越小个体越优;
步骤5:对当代种群进行N/2次二维层次交叉操作,形成新种群;
步骤6:对新种群的每个个体进行二维层次变异操作;
步骤7:对新种群中的每个个体,计算各任务的执行时间
Figure BDA0002311331330000041
采用基于插入模式的串行个体解码方法计算其适应度值;
步骤8:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤9:判断是否满足第一阶段终止条件,如满足,则第一阶段进化结束转到步骤10,否则转到步骤5;
所述第一阶段终止条件为迭代到指定的代数TG1或连续迭代GG1代最优个体没有改进;
步骤10:对当代种群进行N/2次二维拓扑排序交叉操作,形成新种群;
所述二维拓扑排序交叉操作包括如下步骤:
步骤E1:采用锦标赛法从当代种群中选择两个不同的个体作为父体,不妨设父体1为
Figure BDA0002311331330000042
父体2为
Figure BDA0002311331330000043
步骤E2:令任务编号列表
Figure BDA0002311331330000044
Figure BDA0002311331330000045
令任务编号集FT1={}、FT2={};随机生成1个正整数α∈[1,I);
步骤E3:分别随机选择一个不为空且编号为其首元素的任务不存在父任务或其父任务都已在FT1、FT2中的
Figure BDA0002311331330000046
分别从
Figure BDA0002311331330000047
中取出首元素i′,i″;然后分别把i′,i″添加到
Figure BDA0002311331330000048
的尾部;FT1=FT1∪i′,FT2=FT2∪i″;
步骤E4:α=α-1,如果α>0,则转到步骤E3,否则转到步骤E5;
步骤E5:对于每个虚拟机j,在
Figure BDA0002311331330000049
中删除FT1中存在的元素,然后把剩余元素添加到
Figure BDA00023113313300000410
的尾部,形成子体1:
Figure BDA00023113313300000411
步骤E6:对于每个虚拟机j,在
Figure BDA00023113313300000412
中删除FT2中存在的元素,然后把剩余元素添加到
Figure BDA00023113313300000413
的尾部,形成子体2:
Figure BDA00023113313300000414
步骤E7:输出chc1,chc2,操作结束;
采用锦标赛法从当代种群中随机选择1个个体的过程描述如下:首先从当代种群中随机选择两个不同个体,然后比较这两个个体的适应度值,去掉差的个体,保留优的个体;
步骤11:对新种群中的每个个体进行二维拓扑排序变异操作;
所述二维拓扑排序变异操作包括如下步骤:
步骤F1:随机生成一个随机数λ∈(0,1);如果λ≤pm,则转到步骤F2,否则转到步骤F5;
步骤F2:随机选择一个任务编号i,并在个体中删除值为i的基因;
步骤F3:在VMi中重新随机选择一个虚拟机,不妨设为虚拟机j;
步骤F4:在
Figure BDA0002311331330000051
中从前向后寻找任务i的最后一个祖先任务编号和第一个子孙任务编号,如果都找到,那么在最后一个祖先任务编号和第一个子孙任务编号之间随机找一个位置插入i;如果子孙任务编号不存在而祖先任务编号存在,那么在最后一个祖先任务编号之后随机找一个位置插入i;如果子孙任务编号存在而祖先任务编号不存在,那么在第一个子孙任务编号之前随机找一个位置插入i;如果子孙任务编号和祖先任务编号都不存在,那么随机找一个位置插入i;
步骤F5:个体变异操作结束;
其中,pm∈(0,1]是变异率;
所述子孙任务和祖先任务的定义描述如下:如果存在一个任务序列
Figure BDA0002311331330000052
满足
Figure BDA0002311331330000053
Figure BDA0002311331330000054
的父任务,即
Figure BDA0002311331330000055
其中1≤k<n,那么
Figure BDA0002311331330000056
Figure BDA0002311331330000057
的祖先任务,
Figure BDA0002311331330000058
Figure BDA0002311331330000059
的子孙任务;
步骤12:采用FBI&D和LDI方法改进新种群中的所有个体并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤G1:计算所有任务的执行时间
Figure BDA00023113313300000510
步骤G2:令变量k=1,采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间fi,i=1,…,I,及工作流的执行时间ms=max{f1,…,fI};
步骤G3:颠倒任务的父子关系,即把任务i的父任务集PRi变成子任务集SCi,而子任务集SCi变成父任务集PRi;把个体ch中每个虚拟机j对应的基因序列
Figure BDA00023113313300000511
根据任务完成时间fi从大到小重新排列,形成个体
Figure BDA00023113313300000512
步骤G4:k=k+1,对个体
Figure BDA00023113313300000513
采用基于插入模式的串行个体解码方法进行解码获得所有任务的完成时间
Figure BDA00023113313300000514
及工作流的执行时间
Figure BDA00023113313300000515
步骤G5:若
Figure BDA0002311331330000061
那么
Figure BDA0002311331330000062
转到步骤G3,否则转到步骤G6;
步骤G6:如果k为偶数那么输出个体ch,否则输出个体
Figure BDA0002311331330000063
工作流的执行时间为ms,操作结束;
所述LDI方法包括如下步骤:
步骤H1:令分配给虚拟机j的任务集
Figure BDA0002311331330000064
计算各虚拟机负载
Figure BDA0002311331330000065
步骤H2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤H3,否则转到步骤H4;
步骤H3:令任务集
Figure BDA0002311331330000066
转到步骤H5;
步骤H4:令任务集STj′=Tj′,转到步骤H5;
步骤H5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机j″的负载是最高的任务i′,转到步骤H6;否则转到步骤H7;
步骤H6:在
Figure BDA0002311331330000067
中从前向后寻找任务i′的最后一个祖先任务编号和第一个子孙任务编号,如果都找到,那么在最后一个祖先任务编号和第一个子孙任务编号之间随机找一个位置插入i′;如果子孙任务编号不存在而祖先任务编号存在,那么在最后一个祖先任务编号之后随机找一个位置插入i′;如果子孙任务编号存在而祖先任务编号不存在,那么在第一个子孙任务编号之前随机找一个位置插入i′;如果子孙任务编号和祖先任务编号都不存在,那么随机找一个位置插入i′;在
Figure BDA0002311331330000068
中删除i′,形成新个体,采用FBI&D方法对新个体进行解码改进,如果有改进则用此改进的个体替换原个体,转到步骤H7;否则转到步骤H5;
步骤H7:LDI操作结束;
步骤13:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤14:判断是否满足第二阶段终止条件,如满足,则第二阶段进化结束转到步骤15,否则转到步骤10;
所述第二阶段终止条件为迭代到指定的代数TG2或连续迭代GG2代最优个体没有改进;
步骤15:输出当代种群中的最优个体,其对应的调度方案为优化方案。
进一步的,所述步骤3中基于层次的个体随机生成方法的具体步骤如下:
步骤A1:令待处理的任务集UT=T;令变量kj=1,j=1,2,…,J;
步骤A2:从UT中随机取出一个层次值最小的任务,不妨设为ti
步骤A3:从VMi中随机选择一个虚拟机,不妨设为vmj
步骤A4:令
Figure BDA0002311331330000071
步骤A5:如果UT不为空,那么转到步骤A2;否则转到步骤A6;
步骤A6:输出一个个体
Figure BDA0002311331330000072
操作结束。
进一步的,所述步骤4、步骤7、步骤G2、步骤G4中基于插入模式的串行个体解码方法的具体步骤如下:
步骤B1:令所有任务的就绪时间rti=0,i=1,…,I;令虚拟机可得时间段列表vatlj={[0,M]},分配给虚拟机的任务编号列表
Figure BDA0002311331330000073
其中M为一个接近无穷大的数;
步骤B2:按虚拟机编号顺序选择一个不为空的且编号为首元素的任务不存在父任务或其父任务都已被调度的VTIj,从VTIj中取出首元素,不妨设为i;
步骤B3:基于插入模式把任务i分配给虚拟机j;
步骤B3.1:在vatlj中从早到晚找出一个空闲时段[νjj]满足υjj≥eti和υj-eti≥rti
步骤B3.2:计算任务i的开始时间si=max{νj,rti}和完成时间fi=si+eti;计算任务i的子任务的就绪时间
Figure BDA0002311331330000074
步骤B3.3:在vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤B4:如果VTIj不全为空,则转到步骤B2,否则转到步骤B5;
步骤B5:输出工作流执行时间ms=max{f1,…,fI},si、fi,i=1,…,I,操作结束。
进一步的,所述步骤5中二维层次交叉操作的具体步骤如下:
步骤C1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体,不妨设父体1为
Figure BDA0002311331330000075
父体2为
Figure BDA0002311331330000076
令任务编号列表
Figure BDA0002311331330000077
步骤C2:随机选择一个交叉点cs,1≤cs≤max{level1,…,levelI}-1;
步骤C3:交换
Figure BDA0002311331330000081
Figure BDA0002311331330000082
中层次值大于cs的那部分任务编号序列,形成
Figure BDA0002311331330000083
Figure BDA0002311331330000084
Figure BDA0002311331330000085
步骤C4:输出两个个体
Figure BDA0002311331330000086
进一步的,所述步骤6中二维层次变异操作的具体步骤如下:
步骤D1:随机生成1个随机数λ∈[0,1);如果λ≤pm,则转到步骤D2,否则转到步骤D5;
步骤D2:随机选择一个任务编号i,并在个体中删除值为i的基因;
步骤D3:在VMi中随机选择一个虚拟机,不妨设为虚拟机j;
步骤D4:在
Figure BDA0002311331330000087
中从后向前寻找层次值小于任务i的第一个任务编号i′,从前向后寻找层次值大于任务i的第一个任务编号i″;如果i′和i″都存在,那么在i′和i″之间随机找一个位置插入i;如果i′存在而i″不存在,那么在i′之后随机找一个位置插入i;如果i′不存在而i″存在,那么在i″之前随机找一个位置插入i;如果i′和i″都不存在,那么随机找一个位置插入i;
步骤D5:个体变异操作结束;
其中:pm∈[0,1)是变异率。
本发明的有益效果在于:
(1)相对于启发式方法、结合启发式的半智能计算方法及现有的基于分层编码的智能计算方法,本发明设计采用的二维编码方法,任何一个调度方案都可以有一个个体与之对应,因此其搜索空间是完备的,可以实现全域搜索。
(2)相对于一般的基于优先级的编码方式,本发明采用的按虚拟机对任务调度顺序进行拓扑排序的二维整数编码方法,考虑了有资源竞争关系的任务之间的时序关系,这样解码方法就比较简单,能有效提高解码的效率,进而提高了算法的整体效率。
(3)相对于现有的采用虚拟机分配列表和任务调度顺序列表的两段式一维编码方法,本发明采用的按虚拟机对任务调度顺序进行拓扑排序的二维整数编码方法,只对分配给同一个虚拟机内有资源竞争冲突的任务进行了调度顺序的限制,这样相对于采用虚拟机分配列表和任务调度顺序列表的两段式一维编码方法可以有效减少编码空间,例如一个云工作流中有3个可以并行的任务,如果采用虚拟机分配列表和任务调度顺序列表的两段式一维编码方法,就任务调度顺序列表部分这3个任务间的拓扑排序就有6种,但如果这3个任务是分配给3个不同的虚拟机的,那么这6种拓扑排序对应的调度方案就是同一个,而采用本发明的编码方法,则只有一个编码方案,这样采用本发明的二维编码方法相对于两段式一维编码方法可以减少算法的编码空间,提高了算法的搜索效率。
(4)相对于传统的非插入模式和并行的解码方法,本发明设计采用的基于插入模式的尽可能早地安排任务执行的串行个体解码方法通常能找到更好的对应调度方案。
(5)相对于普通的单向解码方法,本发明设计采用的向前向后的个体解码与改进策略FBI&D和考虑了传输时间的负载均衡策略LDI增强了个体的邻域寻优能力,从而能提高整个算法的寻优能力和搜索效率。
(6)相对于传统的随机初始化方法,本发明采用了基于层次的个体随机生成方法,这样可以使算法可以在最优方案附近开始搜索,从而缩短算法的收敛时间。
(7)针对提出的二维整数编码方法,本发明设计了一些新的交叉和变异方法,如果父体是有效合法的,那么用该方法能确保生成的子体也是有效的合法的。
(8)本发明采用两阶段的智能适应性进化策略,第一阶段在满足层次编码的个体中进行搜索可以使算法尽快收敛于最优解附近,而第二阶段则在第一阶段的基础上再采用基于全域的拓展搜索,以便找到更好的个体,因此相对于现有的单阶段搜索算法具有更高的搜索效率和更强的寻优能力。
附图说明
图1是本发明一种使用二维两阶段智能计算算法的云工作流调度优化方法的流程示意图。
图2是本发明实施例中CyberShake工作流任务间的时序关系图。
具体实施方式
下面结合图1、图2及实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
假设一个云计算中心有编号为1至6的6台虚拟机可供使用,虚拟机vm1,vm2,…,vm6的处理能力和带宽如表1所示;一个CyberShake工作流任务间的时序关系如图2所示,由编号为1至15的15个任务组成,任务t1,t2,…,t15的执行长度,处理所需要的输入文件和处理后的输出文件的名称、长度以及可以被处理的虚拟机如表2所示。
Figure BDA0002311331330000091
Figure BDA0002311331330000101
表1
Figure BDA0002311331330000102
表2
针对上述案例,如图1所示,一种使用二维两阶段智能计算算法的云工作流调度优化方法,包括以下实施步骤:
执行步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};
获取任务间的时序关系,即任务i的父任务集PRi和子任务集SCi
Figure BDA0002311331330000103
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 BDA0002311331330000111
PR15={t8,t9,t10,t11,t12,t13},
Figure BDA0002311331330000112
获取任务的相关参数:t1.length=150000MI,t1.IFL={fd1,fd2,fd3},t1.OFL={f1-1,f1-2};t2.length=60000MI,t2.IFL={fd4,f1-1,f1-2},t2.OFL={f2-1};t3.length=60000MI,t3.IFL={fd5,f1-1,f1-2},t3.OFL={f3-1};t4.length=36000MI,t4.IFL={fd6,f1-1,f1-2},t4.OFL={f4-1};……,t15.length=600MI,t15.IFL={f8-1,f9-1,f10-1,f11-1,f12-1,f13-1},t15.OFL={f15-1};fd1.size=120000MB,fd2.size=120000MB,fd3.size=3600MB,f1-1.size=9600MB,……,f14-1.size=180MB,f15-1.size=30MB;
获取云计算环境下的虚拟机集:VM={vm1,vm2,vm3,vm4,vm5,vm6};
获取虚拟机相关参数:vm1.ps=1000MI/s,vm1.bw=200Mbit/s;vm2.ps=1000MI/s,vm2.bw=200Mbit/s;vm3.ps=2000MI/s,vm3.bw=300Mbit/s;vm4.ps=2000MI/s,vm4.bw=300Mbit/s;vm5.ps=3000MI/s,vm5.bw=400Mbit/s;vm6.ps=3000MI/s,vm6.bw=400Mbit/s;
获取任务与虚拟机之间的支持关系:T1={t1,t2,t3,t4,t5,t6,t9,t13,t15},T2={t3,t5,t7,t9,t10,t11,t14},T3={t2,t3,t4,t6,t9,t11,t12},T4={t1,t2,t4,t6,t7,t8,t9,t10,t11,t12,t14},T5={t1,t2,t3,t4,t6,t7,t8,t9,t12,t14},T6={t1,t4,t5,t8,t11,t13,t14,t15};VM1={vm1,vm4,vm5,vm6},VM2={vm1,vm3,vm4,vm5},VM3={vm1,vm2,vm3,vm5},VM4={vm1,vm3,vm4,vm5,vm6},VM5={vm1,vm2,vm6},VM6={vm1,vm3,vm4,vm5},VM7={vm2,vm4,vm5},VM8={vm4,vm5,vm6},VM9={vm1,vm2,vm3,vm4,vm5},VM10={vm2,vm4},VM11={vm2,vm3,vm4,vm6},VM12={vm3,vm4,vm5},VM13={vm1,vm6},VM14={vm2,vm4,vm5,vm6},VM15={vm1,vm6}。
执行步骤2:计算任务的层次值;
任务1没有父任务,则level1=1;
任务2只有一个父任务1,则
Figure BDA0002311331330000121
同理,可以获得其它任务的层次值:level3=level4=level5=level6=level7=2;level8=level9=level10=level11=level12=level13=level14=3;level15=4。
执行步骤3:初始化当代种群;
取种群规模N=10;
基于层次的个体随机生成方法生成一个个体的具体实施过程如下:
执行步骤A1:UT=T={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15};k1=1,k2=1,k3=1,k4=1,k5=1,k6=1;
执行步骤A2:从UT={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t1
执行步骤A3:从VM1={vm1,vm4,vm5,vm6}中随机选择一个虚拟机,其为vm1
执行步骤A4:令g1,k1=g1,1=1,k1=k1+1=1+1=2;
执行步骤A5:由于UT={t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤A2;
执行步骤A2:从UT={t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t2
执行步骤A3:从VM2={vm1,vm3,vm4,vm5}中随机选择一个虚拟机,其为vm4
执行步骤A4:令g4,k4=g4,1=2,k4=k4+1=1+1=2;
执行步骤A5:由于UT={t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤A2;
执行步骤A2:从UT={t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t7
执行步骤A3:从VM7={vm2,vm4,vm5}中随机选择一个虚拟机,其为vm4
执行步骤A4:令
Figure BDA0002311331330000131
执行步骤A5:由于UT={t3,t4,t5,t6,t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤A2;
执行步骤A2:从UT={t3,t4,t5,t6,t8,t9,t10,t11,t12,t13,t14,t15}中随机取出一个层次值最小的任务,其为t5
执行步骤A3:从VM5={vm1,vm2,vm6}中随机选择一个虚拟机,其为vm1
执行步骤A4:令
Figure BDA0002311331330000132
执行步骤A5:由于UT={t3,t4,t6,t8,t9,t10,t11,t12,t13,t14,t15}不为空,转到步骤A2;
……
这样不断重复执行步骤A2至步骤A5,直至
Figure BDA0002311331330000134
转到步骤A6;
执行步骤A6:输出个体ch1={(1,5,4,13,15),(10),(6,12,9),(2,7,14),(3,8),(11)},操作结束;
同理,基于层次的个体随机生成方法生成当代种群中的其它不同个体如下:
ch2={(3,6,4),(10,11),(9,12),(1),(7,2,8),(5,13,14,15)};
ch3={(13),(5,7,10),(9,12),(1,6,11),(2,3,4),(14,8,15)};
ch4={(15),(10,11),(),(1,6,4,2,8,14),(3,7,9,12),(5,13)};
ch5={(1,3,6),(5,11),(12),(7,8,10),(2,9),(4,14,13,15)};
ch6={(4,3,5,6,13),(9),(2,11,12),(7,10),(1,8),(14,15)};
ch7={(6,2),(10),(4,11,9),(1,8),(3,7,14,12),(5,13,15)};
ch8={(4,9,15),(5,7,11,10,14),(),(1,2,6),(3,12),(8,13)};
ch9={(13),(9,14,11),(3,12),(7,4,2,6,10),(1,8),(5,15)};
ch10={(2,13,15),(5,10),(),(1,14,12,11),(7,3,6,4,9),(8)};
这样最终生成的初始当代种群为CP={ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10}。
执行步骤4:对当代种群中的每个个体,计算所有任务的执行时间
Figure BDA0002311331330000133
采用基于插入模式的串行个体解码方法计算其适应度值;
对个体ch1={(1,5,4,13,15),(10),(6,12,9),(2,7,14),(3,8),(11)},计算各任务的执行时间,
Figure BDA0002311331330000141
Figure BDA0002311331330000142
Figure BDA0002311331330000143
同理可以求得其它任务的执行时间et2=854,et3=836,et4=244,et5=108,et6=925.33,et7=884.33,et8=7.8,et9=7.6,et10=14.4,et11=10.8,et12=3,et13=12.6,et14=32.3,et15=12.6;
对ch1={(1,5,4,13,15),(10),(6,12,9),(2,7,14),(3,8),(11)}采用基于插入模式的串行个体解码方法进行解码的具体实施过程如下:
执行步骤B1:令所有任务的就绪时间rti=0,i=1,2,…,15;令虚拟机的可得时间段列表vatlj={[0,M]},j=1,2,3,4,5,6,M为一个接近无穷大的数;令分配给虚拟机的任务编号列表VTI1=(1,5,4,13,15),VTI2=(10),VTI3=(6,12,9),VTI4=(2,7,14),VTI5=(3,8),VTI6=(11);
执行步骤B2:由于VTI1的首元素为1,且任务1没有父任务,因此从VTI1=(1,5,4,13,15)中取出首元素1,VTI1=(5,4,13,15);
执行步骤B3:基于插入模式把任务1分配给虚拟机1;即执行步骤B3.1:在vatl1中从早到晚找出一个空闲时间段[0,M],满足M-0≥et1=9894和M-9894≥rt1=0;执行步骤B3.2:计算任务1分配给虚拟机1处理后的开始时间s1=max{v1,rt1}=max{0,0}=0,完成时间f1=s1+et1=0+9894=9894,更新任务1的子任务的就绪时间rt2=max{rt2,f1}=9894,rt3=9894,rt4=9894,rt5=9894,rt6=9894,rt7=9894;步骤B3.3:在虚拟机可得时间段列表vatl1中删除[0,M],由于[0,0]的区间长度为0,而[9894,M]的区间长度大于0,因此插入[9894,M],则vatl1={[9894,M]};
执行步骤B4:由于VTI1,…,VTI6不全为空,则转到步骤B2;
执行步骤B2:由于VTI1的首元素为5,且任务5的父任务已被调度,因此从VTI1=(5,4,13,15)中取出首元素5,VTI1=(4,13,15);
执行步骤B3:基于插入模式把任务5分配给虚拟机1;即执行步骤B3.1:在vatl1中从早到晚找出一个空闲时间段[9894,M],满足M-9894≥et5=108和M-108≥rt5=9894;执行步骤B3.2:计算任务5分配给虚拟机1处理后的开始时间
s5=max{v1,rt5}=max{9894,9894}=9894,完成时间f5=s5+et5=9894+108=10002,更新任务5的子任务的就绪时间rt11=max{rt11,f5}=max{0,10002}=10002,rt14=10002;步骤B3.3:在虚拟机可得时间段列表vatl1中删除[9894,M],由于[9894,9894]的区间长度为0,而[10002,M]的区间长度大于0,因此插入[10002,M],则vatl1={[10002,M]};
执行步骤B4:由于VTI1,…,VTI6不全为空,则转到步骤B2;
执行步骤B2:由于VTI1的首元素为4,且任务4的父任务都已被调度,因此从VTI1=(4,13,15)中取出首元素4,VTI1=(13,15);
执行步骤B3:基于插入模式把任务4分配给虚拟机1;即执行步骤B3.1:在vatl1中从早到晚找出一个空闲时间段[10002,M],满足M-10002≥et4=244和M-244≥rt4=9894;执行步骤B3.2:计算任务4分配给虚拟机1处理后的开始时间
s4=max{v1,rt4}=max{10002,9894}=10002,完成时间f4=10246,更新任务4的子任务的就绪时间rt10=10246,rt14=max{rt14,f4}=max{10002,10246}=10246;步骤B3.3:在虚拟机可得时间段列表vatl1中删除[10002,M],由于[10002,10002]的区间长度为0,而[10246,M]的区间长度大于0,因此插入[10246,M],则vatl1={[10246,M]};
执行步骤B4:由于VTI1,…,VTI6不全为空,则转到步骤B2;
执行步骤B2:由于此时VTI1的首元素为13,任务13的一个父任务还没有被调度,而VTI2的首元素为10,且任务10的所有父任务都已被调度,因此从VTI2=(10)中取出首元素10,VTI2=();
执行步骤B3:基于插入模式把任务10分配给虚拟机2;即执行步骤B3.1:在vatl2中从早到晚找出一个空闲时间段[0,M],满足M-0≥et10=14.4和M-14.4≥rt10=10246;执行步骤B3.2:计算任务10分配给虚拟机2处理后的开始时间
s10=max{v2,rt10}=max{0,10246}=10246,完成时间f10=10260.4,更新任务10的子任务的就绪时间rt15=max{rt15,f10}=max{0,10260.4}=10260.4;步骤B3.3:在虚拟机可得时间段列表vatl2中删除[0,M],由于[0,10246],[10260.4,M]的区间长度大于0;插入[0,10246]和[10260.4,M],则vatl2={[0,10246],[10260.4,M]};
执行步骤B4:由于VTI1,…,VTI6不全为空,则转到步骤B2;
……
这样不断重复执行步骤B2至步骤B4,直至VTIj全为空,转到步骤B5;
执行步骤B5:输出工作流的执行时间ms1=max{f1,…f15}=11664.63;获得所有任务的开始时间和完成时间:s1=0,s2=9894,s3=9894,s4=10002,s5=9894,s6=9894,s7=10748,s8=10748,s9=10822.33,s10=10246,s11=10002,s12=10819.33,s13=11632.33,s14=11632.33,s15=11644.93;f1=9894,f2=10748,f3=10730,f4=10246,f5=10002,f6=10819.33,f7=11632.33,f8=10755.8,f9=10829.93,f10=10260.4,f11=10012.8,f12=10822.33,f13=11644.93,f14=11664.63,f15=11657.53;操作结束;
同理,可以获得其它个体的工作流执行时间:ms2=9571.00,ms3=8447.00,ms4=7773.20,ms5=10834.53,ms6=8812.40,ms7=8529.60,ms8=8454.00,ms9=7544.53,ms10=9050.10。
执行步骤5:对当代种群进行N/2次二维层次交叉操作,形成新种群;
对当代种群进行二维层次交叉操作的具体实施过程如下:
执行步骤C1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体:即从当代种群中随机选择两个个体,其为ch8和ch10,由于ms8=8454.00<ms10=9050.10,因此选择ch8作为父体1,即
Figure BDA0002311331330000161
再从当代种群中随机选择两个个体,其为ch3和ch8,由于ms3=8447.00<ms8=8454.00,因此选择ch3作为父体2,即
Figure BDA0002311331330000162
Figure BDA0002311331330000163
Figure BDA0002311331330000164
Figure BDA0002311331330000165
执行步骤C2:由于最大层次值为4,故在1、2、3中随机选择一个交叉点,其为cs=2;
执行步骤C3:如表3所示,交换
Figure BDA0002311331330000166
中的层次值大于2的任务编号序列(9,15)和
Figure BDA0002311331330000171
中层次值大于2的任务编号序列(13),形成
Figure BDA0002311331330000172
Figure BDA0002311331330000173
交换
Figure BDA0002311331330000174
中的层次值大于2的任务编号序列(11,10,14)和
Figure BDA0002311331330000175
中层次值大于2的任务编号序列(10),形成
Figure BDA0002311331330000176
Figure BDA0002311331330000177
交换
Figure BDA0002311331330000178
中的层次值大于2的任务编号序列()和
Figure BDA0002311331330000179
中层次值大于2的任务编号序列(9,12),形成
Figure BDA00023113313300001710
Figure BDA00023113313300001711
交换
Figure BDA00023113313300001712
中的层次值大于2的任务编号序列()和
Figure BDA00023113313300001713
中层次值大于2的任务编号序列(11),形成
Figure BDA00023113313300001714
Figure BDA00023113313300001715
交换
Figure BDA00023113313300001716
中的层次值大于2的任务编号序列(12)和
Figure BDA00023113313300001717
中层次值大于2的任务编号序列(),形成
Figure BDA00023113313300001718
Figure BDA00023113313300001719
交换
Figure BDA00023113313300001720
中的层次值大于2的任务编号序列(8,13)和
Figure BDA00023113313300001721
中层次值大于2的任务编号序列(14,8,15),形成
Figure BDA00023113313300001722
Figure BDA00023113313300001723
Figure BDA00023113313300001724
表3
执行步骤C4:输出个体chc1={(4,13),(5,7,10),(9,12),(1,2,6,11),(3),(14,8,15)}和chc2={(9,15),(5,7,11,10,14),(),(1,6),(2,3,4,12),(8,13)};
这样获得ch′1=chc1和ch′2=chc2
同理,经二维层次交叉操作生成新种群中的剩余个体为:
ch′3={(4,3,5,6,13),(9),(2,11,12),(1,7,10),(8),(14,15)};
ch′4={(13),(5,7,10),(9,12),(6,11),(1,2,3,4),(14,8,15)};
ch′5={(13),(10),(3,9,12),(7,4,2,6,11),(1),(5,14,8,15)};
ch′6={(13),(5,7,9,14,11),(12),(1,6,10),(2,3,4,8),(15)};
ch′7={(13),(10),(3,9,12),(7,4,2,6,11),(1),(5,14,8,15)};
ch′8={(13),(5,7,9,14,11),(12),(1,6,10),(2,3,4,8),(15)};
ch′9={(13),(9,14,11),(3,12),(1,7,4,2,6,10),(8),(5,15)};
ch′10={(15),(10,11),(),(6,4,2,8,14),(1,3,7,9,12),(5,13)};
这样生成的新种群为NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10}。
执行步骤6:对新种群中的每个个体进行二维层次变异操作;
对新种群中的每个个体进行二维层次变异操作的具体实施过程如下:
取变异率pm=0.2;
对于ch′1={(4,13),(5,7,10),(9,12),(1,2,6,11),(3),(14,8,15)};
执行步骤D1:随机生成一个[0,1)的随机数λ,其为0.67,由于λ=0.67>pm=0.2,则转到步骤D5;
执行步骤D5:个体变异操作结束;
对于ch′2={(9,15),(5,7,11,10,14),(),(1,6),(2,3,4,12),(8,13)};
执行步骤D1:随机生成一个[0,1)的随机数λ,其为0.10,由于λ=0.10<pm=0.2,则转到步骤D2;
执行步骤D2:随机选择一个任务编号,其为3,从个体ch′2中删除值为3的基因,即删除基因g5,2,则ch′2={(9,15),(5,7,11,10,14),(),(1,6),(2,4,12),(8,13)};
执行步骤D3:从VM3={vm1,vm2,vm3,vm5}中重新随机选择一个虚拟机,其为虚拟机3;
执行步骤D4:由于分配给虚拟机3处理的任务为空,即在虚拟机3中,既不存在层次值小于任务3的任务编号,也不存在层次值大于任务3的任务编号,因此随机选择一个位置插入3,其为g3,1
执行步骤D5:个体变异操作结束;
这样,变异后的个体变为:ch′2={(9,15),(5,7,11,10,14),(3),(1,6),(2,4,12),(8,13)};
同理,经二维层次变异后新种群中的其它个体变为:
ch′3={(4,3,5,6,13),(9),(2,11,12),(1,7,10),(8),(14,15)};
ch′4={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)};
ch′5={(13),(10),(3,9,12),(7,4,2,6,11),(),(1,5,14,8,15)};
ch′6={(13,15),(5,7,9,14,11),(12),(1,6,10),(2,3,4,8),()};
ch′7={(13),(10),(3,9,12),(7,4,2,6,11),(1),(5,14,8,15)};
ch′8={(13),(7,9,14,11),(12),(1,6,10),(2,3,4,8),(5,15)};
ch′9={(13),(9,14,11),(3,4,12),(1,7,2,6,10),(8),(5,15)};
ch′10={(13,15),(10,11),(),(6,4,2,8,14),(1,3,7,9,12),(5)}。
执行步骤7:对新种群中的每个个体,计算各任务的执行时间
Figure BDA0002311331330000191
采用基于插入模式的串行个体解码方法计算其适应度值;
对于ch′1={(4,13),(5,7,10),(9,12),(1,2,6,11),(3),(14,8,15)};其各任务的执行时间为:
Figure BDA0002311331330000192
而ω1,4=150000/2000=75,
Figure BDA0002311331330000193
τ1,4=8×(120000+120000+3600)/300=6496,因此et1=75+0+6496=6571,同理可获得其它个体其各任务的执行时间:et2=86,et3=580,et4=1012,et5=876,et6=157.33,et7=950,et8=7.8,et9=7.6,et10=14.4,et11=11.4,et12=9.4,et13=12.6,et14=46.6,et15=9.8;
采用基于插入模式的串行个体解码方法获得新种群中每个个体的适应度值即工作流执行时间为:ms′1=8453.40,ms′2=8454.00,ms′3=10461.40,ms′4=6802.80,ms′5=7528.33,ms′6=8464.20,ms′7=7528.33,ms′8=8401.60,ms′9=7903.87,ms′10=6879.60。
执行步骤8:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
根据适应度值,选择当代种群的ch3、ch4、ch9和新种群的ch′1、ch′4、ch′5、ch′7、ch′8、ch′9、ch′10形成下一代种群,即GP={ch3,ch4,ch9,ch′1,ch′4,ch′5,ch′7,ch′8,ch′9,ch′10}。
令CP=GP,则当代种群的所有个体为:
ch1={(13),(5,7,10),(9,12),(1,6,11),(2,3,4),(14,8,15)};
ch2={(15),(10,11),(),(1,6,4,2,8,14),(3,7,9,12),(5,13)};
ch3={(13),(9,14,11),(3,12),(7,4,2,6,10),(1,8),(5,15)};
ch4={(4,13),(5,7,10),(9,12),(1,2,6,11),(3),(14,8,15)};
ch5={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)};
ch6={(13),(10),(3,9,12),(7,4,2,6,11),(),(1,5,14,8,15)};
ch7={(13),(10),(3,9,12),(7,4,2,6,11),(1),(5,14,8,15)};
ch8={(13),(7,9,14,11),(12),(1,6,10),(2,3,4,8),(5,15)};
ch9={(13),(9,14,11),(3,4,12),(1,7,2,6,10),(8),(5,15)};
ch10={(13,15),(10,11),(),(6,4,2,8,14),(1,3,7,9,12),(5)};
其适应度值即工作流执行时间分别为:ms1=8447.00,ms2=7773.20,ms3=7544.53,ms4=8453.40,ms5=6802.80,ms6=7528.33,ms7=7528.33,ms8=8401.60,ms9=7903.87,ms10=6879.60。
执行步骤9:判断是否满足第一阶段终止条件,如满足,则第一阶段进化结束转到步骤10,否则转到步骤5;
第一阶段迭代终止条件设为种群进化TG1=15代;
由于当前种群进化了两代,没有满足第一阶段迭代终止条件,因此转到步骤5。
……
这样不断重复执行步骤5至步骤9,迭代15代后,当代种群变为:
ch1={(4,13,15),(5,7,10,11),(),(6,8,14),(1,2,3,9,12),()};
ch2={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)};
ch3={(4,13),(5,7,10,11),(9,12),(6),(1,2,3),(14,8,15)};
ch4={(5,13),(10),(9,12),(6,4,2,11),(1,3,7),(14,8,15)};
ch5={(13,15),(10,11),(),(6,4,2,8,14),(1,3,7,9,12),(5)};
ch6={(13),(10,14),(9,12),(6,4,2,11),(1,3,7),(5,8,15)};
ch7={(13,15),(10,11),(),(6,4,8,14),(1,3,7,2,9,12),(5)};
ch8={(15),(10),(),(6,4,2,11,8,14),(3,7,9,12),(1,5,13)};
ch9={(5,13),(10,11),(9,12),(6,4,2),(1,3,7),(14,8,15)};
ch10={(5,15),(10,11),(),(6,4,2,8,14),(1,3,7,9,12),(13)};
其适应度值即工作流执行时间分别为:ms1=6789.90,ms2=6802.80,ms3=6803.60,ms4=6914.20,ms5=6879.60,ms6=6916.20,ms7=6294.40,ms8=6887.80,ms9=6915.00,ms10=6882.80;
由于种群进化了15代,满足了第一阶段迭代终止条件,则第一阶段进化结束,转到步骤10。
执行步骤10:对当代种群进行N/2次二维拓扑排序交叉操作,形成新种群;
对当代种群进行二维拓扑排序交叉操作的具体实施过程如下:
执行步骤E1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体;其为:chp1=ch2={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)}和chp2=ch7={(13,15),(10,11),(),(6,4,8,14),(1,3,7,2,9,12),(5)};
执行步骤E2:令
Figure BDA0002311331330000211
Figure BDA0002311331330000212
Figure BDA0002311331330000213
Figure BDA0002311331330000214
Figure BDA0002311331330000215
FT1={},FT2={};随机生成1个[1,15)之间的正整数α,其为α=5;
执行步骤E3:由于在
Figure BDA0002311331330000216
中只有
Figure BDA0002311331330000217
满足不为空且编号为其首元素的任务不存在父任务或其父任务编号已在FT1中,在
Figure BDA0002311331330000218
中只有
Figure BDA0002311331330000219
满足不为空的且编号为其首元素的任务不存在父任务或其父任务编号已在FT2中,因此选择
Figure BDA00023113313300002110
分别从
Figure BDA00023113313300002111
中取出首元素1、1,
Figure BDA00023113313300002112
将元素1添加到
Figure BDA00023113313300002113
的尾部,即
Figure BDA00023113313300002114
将元素1添加到
Figure BDA00023113313300002115
的尾部,即
Figure BDA00023113313300002116
FT1=FT1∪{1}={}∪{1}={1},FT2=FT2∪{1}={}∪{1}={1};
执行步骤E4:α=α-1=5-1=4,由于α=4>0,则转到步骤E3;
执行步骤E3:由于在
Figure BDA00023113313300002117
中只有
Figure BDA00023113313300002118
满足不为空且编号为其首元素的任务不存在父任务或其父任务编号已在FT1中,在
Figure BDA0002311331330000221
中只有
Figure BDA0002311331330000222
满足不为空的且编号为其首元素的任务不存在父任务或其父任务编号已在FT2中,分别从中随机选择一个
Figure BDA0002311331330000223
其为
Figure BDA0002311331330000224
分别从
Figure BDA0002311331330000225
取出首元素5、5,
Figure BDA0002311331330000226
将元素5添加到
Figure BDA0002311331330000227
的尾部,即
Figure BDA0002311331330000228
将元素5添加到
Figure BDA0002311331330000229
的尾部,即
Figure BDA00023113313300002210
FT1={1}∪{5}={1,5},FT2={1}∪{5}={1,5};
执行步骤E4:α=α-1=4-1=3,由于α=3>0,则转到步骤E3;
执行步骤E3:由于在
Figure BDA00023113313300002211
中只有
Figure BDA00023113313300002212
满足不为空且编号为其首元素的任务不存在父任务或其父任务编号已在FT1中,在
Figure BDA00023113313300002213
中只有
Figure BDA00023113313300002214
满足不为空的且编号为其首元素的任务不存在父任务或其父任务编号已在FT2中,分别从中随机选择一个
Figure BDA00023113313300002215
其为
Figure BDA00023113313300002216
分别从
Figure BDA00023113313300002217
取出首元素7、3;将元素7添加到
Figure BDA00023113313300002218
的尾部,即
Figure BDA00023113313300002219
将元素3添加到
Figure BDA00023113313300002220
的尾部,即
Figure BDA00023113313300002221
FT1={1,5}∪{7}={1,5,7},FT2={1,5}∪{3}={1,3,5};
执行步骤E4:α=α-1=3-1=2,由于α=2>0,则转到步骤E3;
......
这样不断执行步骤E3和步骤E4,直到α=0,此时:
Figure BDA00023113313300002222
Figure BDA00023113313300002236
Figure BDA00023113313300002223
FT1={1,5,6,7,11},FT2={1,3,5,6,7};则转到步骤E5;
执行步骤E5:对于虚拟机1,由于
Figure BDA00023113313300002224
中不存在属于FT1={1,5,6,7,11}的元素,直接将元素13、15添加到
Figure BDA00023113313300002225
的尾部,则
Figure BDA00023113313300002226
对于虚拟机2,在
Figure BDA00023113313300002227
中删除FT1={1,5,6,7,11}中存在的元素11,将元素10添加到
Figure BDA00023113313300002228
的尾部,则
Figure BDA00023113313300002229
对于虚拟机3,由于
Figure BDA00023113313300002230
不存在任务元素,则
Figure BDA00023113313300002231
不变;对于虚拟机4,在
Figure BDA00023113313300002232
中删除FT1={1,5,6,7,11}中存在的元素6,将元素4、8、14添加到
Figure BDA00023113313300002233
的尾部,则
Figure BDA00023113313300002234
对于虚拟机5,在
Figure BDA00023113313300002235
中删除FT1={1,5,6,7,11}中存在的元素1、7,将元素3、2、9、12添加到
Figure BDA0002311331330000231
的尾部,则
Figure BDA0002311331330000232
对于虚拟机6,在
Figure BDA0002311331330000233
中删除FT1={1,5,6,7,11}中存在的元素5,此时
Figure BDA0002311331330000234
Figure BDA0002311331330000235
不变;最终,形成子体1:chc1={(13,15),(5,7,10),(),(6,11,4,8,14),(1,3,2,9,12),()};
执行步骤E6:对于虚拟机1,在
Figure BDA0002311331330000236
中不存在属于FT2={1,3,5,6,7}的元素,直接将元素4、13添加到
Figure BDA0002311331330000237
的尾部,则
Figure BDA0002311331330000238
对于虚拟机2,由于
Figure BDA0002311331330000239
中删除FT2={1,3,5,6,7}中存在的元素5、7,将元素10添加到
Figure BDA00023113313300002310
的尾部,则
Figure BDA00023113313300002311
对于虚拟机3,在
Figure BDA00023113313300002312
中不存在属于FT2={1,3,5,6,7}的元素,直接将元素9、12添加到
Figure BDA00023113313300002313
的尾部,则
Figure BDA00023113313300002314
对于虚拟机4,在
Figure BDA00023113313300002315
中删除FT2={1,3,5,6,7}中存在的元素6,将元素11添加到
Figure BDA00023113313300002316
的尾部,则
Figure BDA00023113313300002317
对于虚拟机5,在
Figure BDA00023113313300002318
中删除FT2={1,3,5,6,7}中存在的元素1、3,将元素2添加到
Figure BDA00023113313300002319
的尾部,则
Figure BDA00023113313300002320
对于虚拟机6,在
Figure BDA00023113313300002321
中不存在属于FT2={1,3,5,6,7}的元素,直接将元素14、8、15添加到
Figure BDA00023113313300002322
的尾部,则
Figure BDA00023113313300002323
最终,形成子体2:
chc2={(4,13),(10),(9,12),(6,11),(1,3,7,2),(5,14,8,15)};
执行步骤E7:输出chc1={(13,15),(5,7,10),(),(6,11,4,8,14),(1,3,2,9,12),()},chc2={(4,13),(10),(9,12),(6,11),(1,3,7,2),(5,14,8,15)},操作结束;
这样获得ch′1=chc1,ch′2=chc2
同理,经二维拓扑排序交叉操作生成新种群中的剩余个体为:
ch′3={(13),(10,5,7,11),(9,12),(6,4,2),(3),(1,14,8,15)};
ch′4={(4,15),(5,7,10),(),(6,2,11,8,14),(1,3,9,12),(13)};
ch′5={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)};
ch′6={(4,13),(5,7,10,11),(9,12),(6),(1,2,3),(14,8,15)};
ch′7={(4,13),(5,7,10),(9,12),(6,11),(1,2,3),(14,8,15)};
ch′8={(4,13,15),(5,7,10,11),(),(6,8,14),(1,2,3,9,12),()};
ch′9={(4,13,15),(5,10),(),(6,11,2,8,14),(1,3,7,9,12),()};
ch′10={(4,13),(10),(12),(6,11),(1,3,7,9,2),(5,14,8,15)};
这样生成的新种群为NP={ch′1,ch′2,ch′3,ch′4,ch′5,ch′6,ch′7,ch′8,ch′9,ch′10}。
执行步骤11:对新种群中的每个个体进行二维拓扑排序变异操作;
取变异率pm=0.2;
对新种群进行二维拓扑排序变异操作的具体实施过程如下:
对于ch′1={(13,15),(5,7,10),(),(6,11,4,8,14),(1,3,2,9,12),()};
执行步骤F1:随机生成一个[0,1)的随机数λ,其为0.04,由于λ=0.04<pm=0.2,则转到步骤F2;
执行步骤F2:随机选择一个任务编号,其为10,从个体ch′1中删除值为10的基因,即删除基因g2,3,则ch′1={(13,15),(5,7),(),(6,11,4,8,14),(1,3,2,9,12),()};
执行步骤F3:从VM10={vm2,vm4}中重新随机选择一个虚拟机,其为虚拟机4;
执行步骤F4:由于(g4,1,g4,2,g4,3,g4,4,g4,5)=(6,11,4,8,14)中存在任务10的祖先任务编号,而不存在任务10的子孙任务编号,因此在(g4,1,g4,2,g4,3,g4,4,g4,5)=(6,11,4,8,14)中从前向后寻找其最后一个祖先任务编号,其为g4,3=4,在g4,3之后随机找一个位置插入10,其为g4,4
执行步骤F5:个体变异操作结束;
这样,变异后的个体变为:ch′1={(13,15),(5,7),(),(6,11,4,10,8,14),(1,3,2,9,12),()};
同理,对于新种群中的其它个体经二维拓扑排序变异后变为:
ch′2={(13),(10),(9,12,4),(6,11),(1,3,7,2),(5,14,8,15)};
ch′3={(13),(5,7,11),(9,12),(6,4,2,10),(3),(1,14,8,15)};
ch′4={(4,15),(5,7,10),(),(6,2,11,8,14),(1,3,9,12),(13)};
ch′5={(4,13),(5,7,10),(9,12),(6,11,2),(1,3),(14,8,15)};
ch′6={(4,13),(5,7,10,11),(9,12),(6),(1,2,3),(14,8,15)};
ch′7={(4,2,13),(5,7,10),(9,12),(6,11),(1,3),(14,8,15)};
ch′8={(4,13,15),(5,7,10,11),(12),(6,8,14),(1,2,3,9),()};
ch′9={(13,15),(5,10),(4),(6,11,2,8,14),(1,3,7,9,12),()};
ch′10={(4,13),(10),(12),(6,11,14),(1,3,7,9,2),(5,8,15)}。
执行步骤12:采用FBI&D和LDI方法改进新种群中的所有个体并计算其适应度值;
对新种群中的所有个体采用FBI&D方法改进,例如对新种群中的ch′2={(13),(10),(9,12,4),(6,11),(1,3,7,2),(5,14,8,15)}采用FBI&D方法改进的具体实施过程如下:
执行步骤G1:计算所有任务的执行时间:
Figure BDA0002311331330000251
et2=62.00,et3=68.00,et4=668.67,et5=432.00,et6=669.33,et7=86.00,et8=6.20,et9=7.60,et10=14.40,et11=8.20,et12=9.40,et13=12.60,et14=27.40,et15=9.80;
执行步骤G2:k=1,采用基于插入模式的串行个体解码方法对个体ch′2进行解码,获得所有任务的完成时间:f1=4922.00,f2=5138.00,f3=4990.00,f4=6269.40,f5=5354.00,f6=5591.33,f7=5076.00,f8=5360.20,f9=4997.60,f10=6283.80,f11=5599.53,f12=5600.73,f13=5088.60,f14=6296.80,f15=6306.60,及工作流的执行时间ms′2=max{f1,…,f15}=6306.60;
执行步骤G3:颠倒任务的父子关系,即
Figure BDA0002311331330000254
SC15={t8,t9,t10,t11,t12,t13};
Figure BDA0002311331330000255
SC14={t2,t3,t4,t5,t6,t7};PR13={t15},SC13={t7};PR12={t15},SC12={t6};PR11={t15},SC11={t5};PR10={t15},SC10={t4};PR9={t15},SC9={t3};PR8={t15},SC8={t2};PR7={t13,t14},SC7={t1};PR6={t12,t14},SC6={t1};PR5={t11,t14},SC5={t1};PR4={t10,t14},SC4={t1};PR3={t9,t14},SC3={t1};PR2={t8,t14},SC2={t1};PR1={t2,t3,t4,t5,t6,t7},
Figure BDA0002311331330000256
把个体ch′2中每个虚拟机j对应的基因序列gj,1,…,gj,Ij根据任务完成时间从大到小重新排列,j=1,…,6,形成个体
Figure BDA0002311331330000252
执行步骤G4:k=k+1=1+1=2,对个体
Figure BDA0002311331330000253
采用基于插入模式的串行个体解码获得所有任务的完成时间:
Figure BDA0002311331330000261
Figure BDA0002311331330000262
Figure BDA0002311331330000263
及工作流的执行时间
Figure BDA0002311331330000264
执行步骤G5:由于
Figure BDA0002311331330000265
那么
Figure BDA0002311331330000266
i=1,…,15,转到步骤G3;
执行步骤G3:颠倒任务的父子关系,即
Figure BDA00023113313300002617
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 BDA00023113313300002619
PR15={t8,t9,t10,t11,t12,t13},
Figure BDA00023113313300002618
把个体ch′2中每个虚拟机j对应的基因序列
Figure BDA0002311331330000267
根据任务完成时间从大到小重新排列,j=1,…,6,形成个体
Figure BDA0002311331330000268
执行步骤G4:k=2+1=3,对个体
Figure BDA0002311331330000269
采用基于插入模式的串行个体解码获得所有任务的完成时间:
Figure BDA00023113313300002610
Figure BDA00023113313300002611
Figure BDA00023113313300002612
及工作流的执行时间
Figure BDA00023113313300002613
执行步骤G5:由于
Figure BDA00023113313300002614
则转到步骤G6;
执行步骤G6:由于k=3,故输出个体
Figure BDA00023113313300002615
工作流的执行时间为
Figure BDA00023113313300002616
操作结束;
新种群中的其它个体经FBI&D方法改进后变为:
ch′1={(13,15),(5,7),(),(6,11,4,10,8,14),(1,3,2,9,12),()};
ch′3={(13),(5,7,11),(9,12),(6,4,2,10),(3),(1,14,8,15)};
ch′4={(4,15),(5,7,10),(),(6,2,11,8,14),(1,3,9,12),(13)};
ch′5={(4,13),(5,7,10),(9,12),(6,11,2),(1,3),(14,8,15)};
ch′6={(4,13),(5,7,10,11),(9,12),(6),(1,2,3),(14,8,15)};
ch′7={(4,2,13),(5,7,10),(9,12),(6,11),(1,3),(14,8,15)};
ch′8={(4,13,15),(5,7,10,11),(12),(6,8,14),(1,2,3,9),()};
ch′9={(13,15),(5,10),(4),(6,11,2,8,14),(1,3,7,9,12),()};
ch′10={(4,13),(10),(12),(6,11,14),(1,3,7,9,2),(5,8,15)};
其适应度值即工作流执行时间分别为:ms′1=6780.30,ms′3=6919.00,ms′4=6783.50,ms′5=6804.40,ms′6=6803.60,ms′7=6916.60,ms′8=6789.90,ms′9=6438.60,ms′10=5969.50。
对新种群中的所有个体采用LDI方法改进,例如对新种群中的ch′6={(4,13),(5,7,10,11),(9,12),(6),(1,2,3),(14,8,15)}采用LDI方法改进的具体实施过程如下:
执行步骤H1:令VTN1={t4,t13},VTN2={t5,t7,t10,t11},VTN3={t9,t12},VTN4={t6},VTN5={t1,t2,t3},VTN6={t14,t8,t15};计算各虚拟机的负载:
Figure BDA0002311331330000271
ld2=74.4,ld3=4.2,ld4=24,ld5=90,ld6=1.8;
执行步骤H2:找出负载最小的虚拟机,其为vm6,由于ld6=1.8>0,故转到步骤H3;
执行步骤H3:
Figure BDA0002311331330000272
转到步骤H5;
执行步骤H5:由于ST6={t4,t5,t11,t13}不为空,则从ST6中按顺序取出一个其所在虚拟机负载是最高的任务,其为t5,则ST6={t4,t11,t13},转到步骤H6;
执行步骤H6:由于(g6,1,g6,2,g6,3)=(14,8,15)中不存在任务5的祖先任务编号,而存在任务5的子孙任务编号,因此在(g6,1,g6,2,g6,3)=(14,8,15)中从前向后寻找其第一个子孙任务编号,其为g6,1=14,在g6,1之前随机找一个位置插入5,其为g6,1;在(g2,1,g2,2,g2,3,g2,4)=(5,7,10,11)删除5,形成新个体
Figure BDA0002311331330000281
采用FBI&D方法对新个体
Figure BDA0002311331330000282
进行解码改进,新个体变为
Figure BDA0002311331330000283
其工作流执行时间为
Figure BDA0002311331330000284
由于
Figure BDA0002311331330000285
因此用改进的个体替换原个体,即
Figure BDA0002311331330000286
转到步骤H7;
执行步骤H7:LDI操作结束;
新种群中的其它个体经LDI方法改进后变为:
ch′1={(13,15),(5,7),(),(6,11,4,10,8,14),(1,3,2,9,12),()};
ch′2={(13,15),(10),(4,9,12),(6,11),(1,3,7,2),(5,8,14)};
ch′3={(13),(5,7,11),(9,12),(6,4,2,10),(3),(1,14,8,15)};
ch′4={(15),(5,7,10),(4),(6,2,11,8,14),(1,3,9,12),(13)};
ch′5={(4,13),(7,10),(9,12),(6,2,11),(1,3),(5,14,8,15)};
ch′7={(2,13),(5,7,10),(9,12),(6,11),(1,3),(4,14,8,15)};
ch′8={(4,13,15),(7,10,11),(12),(6,8,14),(1,2,3,9),(5)};
ch′9={(13,15),(5,10),(4),(6,11,2,14),(1,3,7,9,12),(8)};
ch′10={(4,13),(10),(12),(6,11,14),(1,3,7,9,2),(5,8,15)};
其适应度值即工作流执行时间分别为:ms′1=6780.30,ms′2=5620.27,ms′3=6919.00,ms′4=6780.30,ms′5=6243.93,ms′7=6798.00,ms′8=5972.70,ms′9=6436.50,ms′10=5969.50。
执行步骤13:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
根据适应度值,选择当代种群的ch1、ch7和新种群的ch′1、ch′2、ch′4、ch′5、ch′6、ch′8、ch′9、ch′10形成下一代种群,即GP={ch1,ch7,ch′1,ch′2,ch′4,ch′5,ch′6,ch′8,ch′9,ch′10}。
令CP=GP,则当代种群的所有个体为:
ch1={(4,13,15),(5,7,10,11),(),(6,8,14),(1,2,3,9,12),()};
ch2={(13,15),(10,11),(),(6,4,8,14),(1,3,7,2,9,12),(5)};
ch3={(13,15),(5,7),(),(6,11,4,10,8,14),(1,3,2,9,12),()};
ch4={(13,15),(10),(4,9,12),(6,11),(1,3,7,2),(5,8,14)};
ch5={(15),(5,7,10),(4),(6,2,11,8,14),(1,3,9,12),(13)};
ch6={(4,13),(7,10),(9,12),(6,2,11),(1,3),(5,14,8,15)};
ch7={(4,13),(7,10,11),(9,12),(6),(1,2,3),(5,14,8,15)};
ch8={(4,13,15),(7,10,11),(12),(6,8,14),(1,2,3,9),(5)};
ch9={(13,15),(5,10),(4),(6,11,2,14),(1,3,7,9,12),(8)};
ch10={(4,13),(10),(12),(6,11,14),(1,3,7,9,2),(5,8,15)};
其适应度值即工作流执行时间分别为:ms1=6789.90,ms2=6294.40,ms3=6780.30,ms4=5620.27,ms5=6780.30,ms6=6243.93,ms7=5980.00,ms8=5972.70,ms9=6436.50,ms10=5969.50。
执行步骤14:判断是否满足第二阶段终止条件,如满足,则第二阶段进化结束转到步骤15,否则转到步骤10;
第二阶段进化终止条件设为种群进化TG2=20代;
由于当前种群在第二阶段只进化了一代,没有满足第二阶段迭代终止条件,因此转到步骤10。
……
这样不断重复执行步骤10至步骤14,迭代20代后,当代种群变为:
ch1={(),(10,11),(),(),(1,4,7,2,3,6,12,9,14),(5,8,13,15)};
ch2={(9),(),(),(10),(1,4,7,2,8,3,6,12,14),(5,11,13,15)};
ch3={(),(10),(),(),(1,4,7,2,3,6,12,9,14),(5,11,8,13,15)};
ch4={(),(),(),(10,11),(1,4,7,2,3,6,12,9,14),(5,8,13,15)};
ch5={(),(11),(),(10),(1,4,7,2,3,6,12,9,14),(5,8,13,15)};
ch6={(),(),(11,9),(10),(1,4,7,2,3,6,12,14),(5,8,13,15)};
ch7={(),(),(9),(10),(1,4,7,2,3,6,12,14),(5,11,8,13,15)};
ch8={(9),(10),(11),(),(1,4,7,2,3,6,12,14),(5,8,13,15)};
ch9={(9),(),(),(10),(1,4,7,2,3,6,12,14),(5,11,8,13,15)};
ch10={(9),(),(11),(10),(1,4,7,2,3,6,12,14),(5,8,13,15)};
其适应度值即工作流执行时间分别为:ms1=5380.20,ms2=5380.00,ms3=5377.80,ms4=5378.60,ms5=5379.40,ms6=5378.20,ms7=5377.00,ms8=5379.80,ms9=5377.40,ms10=5379.00;
由于种群在第二阶段进化了20代,满足了第二阶段迭代终止条件,则第二阶段进化结束,转到步骤15。
执行步骤15:输出当代种群中的最优个体,其对应的调度方案为优化方案;
当代种群中的最优个体为{(),(),(9),(10),(1,4,7,2,3,6,12,14),(5,11,8,13,15)},其工作流执行时间为5377.00,对应的调度优化方案如表4所示。
调度顺序 任务编号 开始时间 执行时间 结束时间 虚拟机编号
1 1 0.00 4922.00 4922.00 5
2 4 4922.00 116.00 5038.00 5
3 10 5038.00 8.80 5046.80 4
4 7 5038.00 86.00 5124.00 5
5 2 5124.00 62.00 5186.00 5
6 3 5186.00 68.00 5254.00 5
7 9 5254.00 7.60 5261.60 3
8 6 5254.00 116.00 5370.00 5
9 12 5370.00 2.00 5372.00 5
10 5 4922.00 432.00 5354.00 6
11 14 5372.00 5.00 5377.00 5
12 11 5354.00 1.20 5355.20 6
13 8 5355.20 6.20 5361.40 6
14 13 5361.40 5.80 5367.20 6
15 15 5372.00 4.60 5376.60 6
表4
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

Claims (5)

1.一种使用二维两阶段智能计算算法的云工作流调度优化方法,其特征在于:包括以下步骤:
步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,...,tI},其中I是任务的数量,ti表示任务i,即编号为i的任务;
获取任务间的时序关系:任务i的父任务集PRi,任务i的子任务集SCi,其中i=1,2…,I;
Figure FDA0002311331320000011
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i+的父任务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i+的输入文件,即:
Figure FDA0002311331320000012
获取云计算环境下的虚拟机集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 FDA0002311331320000013
步骤3:初始化当代种群;
采用基于层次的个体随机生成方法生成N个不同的个体形成当代初始种群,其中N为种群规模,且为偶数;
所述个体采用二维整数编码,其方法如下:
Figure FDA0002311331320000021
其中gj,i表示分配给虚拟机j的并在虚拟机j中是第i个被调度的任务的编号;
Figure FDA0002311331320000022
是分配给虚拟机j的任务编号的一个排序,且满足任务时序约束,Ij表示分配给虚拟机j的任务数量;
步骤4:对当代种群中的每个个体,计算所有任务的执行时间
Figure FDA0002311331320000023
采用基于插入模式的串行个体解码方法计算其适应度值;
vmj处理ti的时间ωi,j计算如下:
Figure FDA0002311331320000024
把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间
Figure FDA0002311331320000025
计算如下:
Figure FDA0002311331320000026
其中:
Figure FDA0002311331320000027
是处理
Figure FDA0002311331320000028
的虚拟机;
把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间τi,j计算如下:
Figure FDA0002311331320000029
所述个体的适应度值为工作流执行时间,适应度值越小个体越优;
步骤5:对当代种群进行N/2次二维层次交叉操作,形成新种群;
步骤6:对新种群的每个个体进行二维层次变异操作;
步骤7:对新种群中的每个个体,计算各任务的执行时间
Figure FDA00023113313200000210
采用基于插入模式的串行个体解码方法计算其适应度值;
步骤8:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤9:判断是否满足第一阶段终止条件,如满足,则第一阶段进化结束转到步骤10,否则转到步骤5;
所述第一阶段终止条件为迭代到指定的代数TG1或连续迭代GG1代最优个体没有改进;
步骤10:对当代种群进行N/2次二维拓扑排序交叉操作,形成新种群;
所述二维拓扑排序交叉操作包括如下步骤:
步骤E1:采用锦标赛法从当代种群中选择两个不同的个体作为父体,不妨设父体1为
Figure FDA0002311331320000031
父体2为
Figure FDA0002311331320000032
步骤E2:令任务编号列表
Figure FDA0002311331320000033
Figure FDA0002311331320000034
令任务编号集FT1={}、FT2={};随机生成1个正整数α∈[1,I);
步骤E3:分别随机选择一个不为空且编号为其首元素的任务不存在父任务或其父任务都已在FT1、FT2中的
Figure FDA0002311331320000035
分别从
Figure FDA0002311331320000036
中取出首元素i′,i″;然后分别把i′,i″添加到
Figure FDA0002311331320000037
的尾部;FT1=FT1∪i′,FT2=FT2∪i″;
步骤E4:α=α-1,如果α>0,则转到步骤E3,否则转到步骤E5;
步骤E5:对于每个虚拟机j,在
Figure FDA0002311331320000038
中删除FT1中存在的元素,然后把剩余元素添加到
Figure FDA0002311331320000039
的尾部,形成子体1:
Figure FDA00023113313200000310
步骤E6:对于每个虚拟机j,在
Figure FDA00023113313200000311
中删除FT2中存在的元素,然后把剩余元素添加到
Figure FDA00023113313200000312
的尾部,形成子体2:
Figure FDA00023113313200000313
步骤E7:输出chc1,chc2,操作结束;
采用锦标赛法从当代种群中随机选择1个个体的过程描述如下:首先从当代种群中随机选择两个不同个体,然后比较这两个个体的适应度值,去掉差的个体,保留优的个体;
步骤11:对新种群中的每个个体进行二维拓扑排序变异操作;
所述二维拓扑排序变异操作包括如下步骤:
步骤F1:随机生成一个随机数λ∈(0,1);如果λ≤pm,则转到步骤F2,否则转到步骤F5;
步骤F2:随机选择一个任务编号i,并在个体中删除值为i的基因;
步骤F3:在VMi中重新随机选择一个虚拟机,不妨设为虚拟机j;
步骤F4:在
Figure FDA00023113313200000314
中从前向后寻找任务i的最后一个祖先任务编号和第一个子孙任务编号,如果都找到,那么在最后一个祖先任务编号和第一个子孙任务编号之间随机找一个位置插入i;如果子孙任务编号不存在而祖先任务编号存在,那么在最后一个祖先任务编号之后随机找一个位置插入i;如果子孙任务编号存在而祖先任务编号不存在,那么在第一个子孙任务编号之前随机找一个位置插入i;如果子孙任务编号和祖先任务编号都不存在,那么随机找一个位置插入i;
步骤F5:个体变异操作结束;
其中,pm∈(0,1]是变异率;
所述子孙任务和祖先任务的定义描述如下:如果存在一个任务序列
Figure FDA0002311331320000041
满足
Figure FDA0002311331320000042
Figure FDA0002311331320000043
的父任务,即
Figure FDA0002311331320000044
其中1≤k<n,那么
Figure FDA0002311331320000045
Figure FDA0002311331320000046
的祖先任务,
Figure FDA0002311331320000047
Figure FDA0002311331320000048
的子孙任务;
步骤12:采用FBI&D和LDI方法改进新种群中的所有个体并计算其适应度值;
所述FBI&D方法包括如下步骤:
步骤G1:计算所有任务的执行时间
Figure FDA0002311331320000049
步骤G2:令变量k=1,采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间fi,i=1,…,I,及工作流的执行时间ms=max{f1,…,fI};
步骤G3:颠倒任务的父子关系,即把任务i的父任务集PRi变成子任务集SCi,而子任务集SCi变成父任务集PRi;把个体ch中每个虚拟机j对应的基因序列
Figure FDA00023113313200000410
根据任务完成时间fi从大到小重新排列,形成个体
Figure FDA00023113313200000411
步骤G4:k=k+1,对个体
Figure FDA00023113313200000412
采用基于插入模式的串行个体解码方法进行解码获得所有任务的完成时间
Figure FDA00023113313200000413
及工作流的执行时间
Figure FDA00023113313200000414
步骤G5:若
Figure FDA00023113313200000415
那么
Figure FDA00023113313200000416
转到步骤G3,否则转到步骤G6;
步骤G6:如果k为偶数那么输出个体ch,否则输出个体
Figure FDA00023113313200000417
工作流的执行时间为ms,操作结束;
所述LDI方法包括如下步骤:
步骤H1:令分配给虚拟机j的任务集
Figure FDA00023113313200000418
计算各虚拟机负载
Figure FDA00023113313200000419
步骤H2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤H3,否则转到步骤H4;
步骤H3:令任务集
Figure FDA00023113313200000420
转到步骤H5;
步骤H4:令任务集STj′=Tj′,转到步骤H5;
步骤H5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机j″的负载是最高的任务i′,转到步骤H6;否则转到步骤H7;
步骤H6:在
Figure FDA0002311331320000051
中从前向后寻找任务i′的最后一个祖先任务编号和第一个子孙任务编号,如果都找到,那么在最后一个祖先任务编号和第一个子孙任务编号之间随机找一个位置插入i′;如果子孙任务编号不存在而祖先任务编号存在,那么在最后一个祖先任务编号之后随机找一个位置插入i′;如果子孙任务编号存在而祖先任务编号不存在,那么在第一个子孙任务编号之前随机找一个位置插入i′;如果子孙任务编号和祖先任务编号都不存在,那么随机找一个位置插入i′;在
Figure FDA0002311331320000052
中删除i′,形成新个体,采用FBI&D方法对新个体进行解码改进,如果有改进则用此改进的个体替换原个体,转到步骤H7;否则转到步骤H5;
步骤H7:LDI操作结束;
步骤13:根据适应度值从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群;
步骤14:判断是否满足第二阶段终止条件,如满足,则第二阶段进化结束转到步骤15,否则转到步骤10;
所述第二阶段终止条件为迭代到指定的代数TG2或连续迭代GG2代最优个体没有改进;
步骤15:输出当代种群中的最优个体,其对应的调度方案为优化方案。
2.根据权利要求1所述的一种使用二维两阶段智能计算算法的云工作流调度优化方法,其特征在于:所述步骤3中基于层次的个体随机生成方法的具体步骤如下:
步骤A1:令待处理的任务集UT=T;令变量kj=1,j=1,2,…,J;
步骤A2:从UT中随机取出一个层次值最小的任务,不妨设为ti
步骤A3:从VMi中随机选择一个虚拟机,不妨设为vmj
步骤A4:令
Figure FDA0002311331320000053
步骤A5:如果UT不为空,那么转到步骤A2;否则转到步骤A6;
步骤A6:输出一个个体
Figure FDA0002311331320000054
操作结束。
3.根据权利要求1所述的一种使用二维两阶段智能计算算法的云工作流调度优化方法,其特征在于:所述步骤4、步骤7、步骤G2、步骤G4中基于插入模式的串行个体解码方法的具体步骤如下:
步骤B1:令所有任务的就绪时间rti=0,i=1,…,I;令虚拟机可得时间段列表vatlj={[0,M]},分配给虚拟机的任务编号列表
Figure FDA0002311331320000061
其中M为一个接近无穷大的数;
步骤B2:按虚拟机编号顺序选择一个不为空的且编号为首元素的任务不存在父任务或其父任务都已被调度的VTIj,从VTIj中取出首元素,不妨设为i;
步骤B3:基于插入模式把任务i分配给虚拟机j;
步骤B3.1:在vatlj中从早到晚找出一个空闲时段[νjj]满足υjj≥eti和υj-eti≥rti
步骤B3.2:计算任务i的开始时间si=max{νj,rti}和完成时间fi=si+eti;计算任务i的子任务的就绪时间
Figure FDA0002311331320000062
步骤B3.3:在vatlj中删除[νjj],插入区间长度大于0的[νj,si]和[fij];
步骤B4:如果VTIj不全为空,则转到步骤B2,否则转到步骤B5;
步骤B5:输出工作流执行时间ms=max{f1,…,fI},si、fi,i=1,…,I,操作结束。
4.根据权利要求1所述的一种使用二维两阶段智能计算算法的云工作流调度优化方法,其特征在于:所述步骤5中二维层次交叉操作的具体步骤如下:
步骤C1:采用锦标赛法从当代种群中随机选择两个不同的个体作为父体,不妨设父体1为
Figure FDA0002311331320000063
父体2为
Figure FDA0002311331320000064
令任务编号列表
Figure FDA0002311331320000065
步骤C2:随机选择一个交叉点cs,1≤cs≤max{level1,…,levelI}-1;
步骤C3:交换
Figure FDA0002311331320000066
Figure FDA0002311331320000067
中层次值大于cs的那部分任务编号序列,形成
Figure FDA0002311331320000068
Figure FDA0002311331320000069
Figure FDA00023113313200000610
步骤C4:输出两个个体
Figure FDA00023113313200000611
5.根据权利要求1所述的一种使用二维两阶段智能计算算法的云工作流调度优化方法,其特征在于:所述步骤6中二维层次变异操作的具体步骤如下:
步骤D1:随机生成1个随机数λ∈[0,1);如果λ≤pm,则转到步骤D2,否则转到步骤D5;
步骤D2:随机选择一个任务编号i,并在个体中删除值为i的基因;
步骤D3:在VMi中随机选择一个虚拟机,不妨设为虚拟机j;
步骤D4:在
Figure FDA0002311331320000071
中从后向前寻找层次值小于任务i的第一个任务编号i′,从前向后寻找层次值大于任务i的第一个任务编号i″;如果i′和i″都存在,那么在i′和i″之间随机找一个位置插入i;如果i′存在而i″不存在,那么在i′之后随机找一个位置插入i;如果i′不存在而i″存在,那么在i″之前随机找一个位置插入i;如果i′和i″都不存在,那么随机找一个位置插入i;
步骤D5:个体变异操作结束;
其中:pm∈[0,1)是变异率。
CN201911259908.3A 2019-12-10 2019-12-10 使用二维两阶段智能计算算法的云工作流调度优化方法 Withdrawn CN110990125A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911259908.3A CN110990125A (zh) 2019-12-10 2019-12-10 使用二维两阶段智能计算算法的云工作流调度优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911259908.3A CN110990125A (zh) 2019-12-10 2019-12-10 使用二维两阶段智能计算算法的云工作流调度优化方法

Publications (1)

Publication Number Publication Date
CN110990125A true CN110990125A (zh) 2020-04-10

Family

ID=70091929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911259908.3A Withdrawn CN110990125A (zh) 2019-12-10 2019-12-10 使用二维两阶段智能计算算法的云工作流调度优化方法

Country Status (1)

Country Link
CN (1) CN110990125A (zh)

Similar Documents

Publication Publication Date Title
CN110389819B (zh) 一种计算密集型批处理任务的调度方法和系统
CN113821318B (zh) 一种物联网跨域子任务组合协同计算方法及系统
CN112685138B (zh) 云环境下基于多种群混合智能优化的多工作流调度方法
CN111126800B (zh) 使用分层自适应智能算法的多模资源受限项目调度方法
CN109491791B (zh) 基于申威众核处理器的nsga-ii的主从增强式运行方法及装置
CN110780985A (zh) 一种有限时间的并行任务调度方法与装置
CN108170861B (zh) 一种基于动态规划的分布式数据库系统协同优化方法
CN110928648B (zh) 融合启发式和智能计算的云工作流分段在线调度优化方法
CN111090510A (zh) 混合启发式和遗传算法的两阶段云工作流调度优化方法
CN111026534B (zh) 云计算环境下基于多种群遗传算法的工作流执行优化方法
CN111008745A (zh) 混合启发式与智能算法的多模资源受限项目调度优化方法
CN110991917B (zh) 采用两阶段遗传算法的多模资源受限项目调度优化方法
CN110968428B (zh) 云工作流虚拟机配置和任务调度协同优化方法
CN111078361A (zh) 基于分布式估计算法的云工作流调度优化方法
CN112884368A (zh) 面向高端装备交货时间与延迟最小的多目标调度方法及系统
CN110990125A (zh) 使用二维两阶段智能计算算法的云工作流调度优化方法
CN110928670B (zh) 云计算环境下基于偏序自适应遗传算法的工作流优化方法
CN111026506A (zh) 采用多种群协同进化遗传算法的云工作流调度优化方法
CN110941487B (zh) 云计算环境下基于多阶段遗传算法的工作流调度优化方法
CN111047183A (zh) 基于分层自适应智能计算算法的云工作流调度优化方法
CN110928669B (zh) 基于多种群遗传算法的能耗感知云工作流调度优化方法
CN111078381A (zh) 基于二维编码遗传算法的云工作流调度优化方法
CN111061563A (zh) 云计算环境下基于多解码遗传算法的工作流调度优化方法
CN113407336B (zh) 基于禁忌搜索优化算法的全比较数据分发方法
CN111026533A (zh) 云计算环境下基于分布式估计算法的工作流执行优化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200410