1.一种基于层次与负载均衡遗传算法的云工作流调度优化方法,其特征在于:包括以下步骤:步骤1:形式化调度问题,获取调度优化所需的信息;
获取任务集T={t1,t2,…,tI},其中I是任务的数量,ti表示任务i,即编号为i的任务;
获取任务间的时序关系:任务i的父任务集PRi,任务i的子任务集SCi,其中i=1,2…,I;
获取任务相关参数:任务i的长度ti.length,即任务i被虚拟机处理时需要耗费的指令数量,处理任务i时需要的输入文件列表ti.IFL,任务i被处理后产生的输出文件列表ti.OFL,及文件列表中文件file的大小file.size,其中i=1,2…,I;任务i是任务i+的父任+务的充要条件为:存在一个文件file,file是任务i的输出文件同时又是任务i的输入文件,即:获取云计算环境下的虚拟机集VM={vm1,vm2,…,vmJ},其中J是虚拟机的数量,vmj表示虚拟机j,即编号为j的虚拟机;
获取虚拟机相关参数:虚拟机j的计算能力vmj.ps,虚拟机j的带宽vmj.bw,其中j=1,
2…,J;
获取任务与虚拟机之间的支持关系:虚拟机j可以处理的任务集Tj,其中j=1,2…,J;可以处理任务i的虚拟机集VMi,其中i=1,2…,I;
步骤2:计算任务的层次值;
对于没有父任务的开始任务i,其层次值为:leveli=1 (1)其它任务的层次值采用如下递归公式进行计算:步骤3:初始化当代种群;
采用基于层次的个体随机生成方法生成N个不同的个体,形成当代初始种群,其中N为种群规模;
所述个体采用I位实数编码,其方法如下:ch={g1,g2,…,gI},其中I是任务的数量,基因gi是一个正实数,整数部分 表示给任务i分配的虚拟机编号,即把任务i分配给虚拟机小数部分 表示任务i在调度时的优先级,数值越小优先级越高;
所述基于层次的个体随机生成方法包括如下步骤:步骤A1:令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,2,…,J,M为一个接近无穷大的数;令所有任务的就绪时间rti=0,i=1,2,…,I;令任务集UT=T;令计数变量k=1,随机生成I个[0,1)之间的随机数,不妨设这些随机数从小到大为:α1,α2,…,αI;
步骤A2:从UT中随机取出一个层次值最小的任务,不妨设为ti;
步骤A3:从VMi中随机选择一个虚拟机,不妨设为vmj,gi=j+αk,基于插入模式把ti分配给vmj,即:步骤A3.1:计算ti的执行时间
步骤A3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti,j≥rti;
步骤A3.3:计算ti的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤A3.4:更新ti的子任务的就绪时间步骤A3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A4:若UT不为空,则k=k+1,转到步骤A2,否则转到步骤A5;
步骤A5:获得一个个体ch={g1,…,gI},计算其适应度值,操作结束;
其中:
ωi,j:是vmj处理ti的时间,
是把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间,是处理 的虚拟机;
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,步骤4:判断是否满足终止条件,如满足,则转到步骤9,否则转到步骤5;
所述终止条件迭代到指定的代数TG或连续迭代GG代最优个体没有改进;
步骤5:在当代种群上进行N次交叉操作,形成新种群;
所述交叉操作包括如下步骤:
步骤B1:从精英种群中随机选择一个个体作为父体1,在全体当代种群中随机选择一个个体作为父体2;
步骤B2:对父体1和父体2进行基于偏好的参数化均匀交叉操作形成一个新个体,新个体中的每一个基因以δ的概率来自于父体1,以1-δ的概率来自于父体2;
步骤B3:输出新个体,操作结束;
其中,精英种群为当代种群中从优到劣排名前|N×pe|的个体组成,pe∈(0,1)是精英率;δ为偏好率,0.5<δ<1;
步骤6:对新种群中的每个个体进行变异操作;
所述变异操作包括如下步骤:
步骤C1:随机生成一个小数λ∈[0,1);
步骤C2:如果λ
步骤C4:操作结束;
其中,pm∈(0,1)是变异率;
步骤7:采用基于插入模式的串行个体解码方法计算新种群中所有个体的适应度值,并用基于层次解码的个体改进方法和基于负载均衡的个体改进方法对种群中的个体进行改进;
所述基于插入模式的串行个体解码方法包括如下步骤:步骤D1:初始化系统状态:
步骤D1.1:令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,M为一个接近无穷大的数;
步骤D1.2:令所有任务的就绪时间rti=0,令任务集P(ti)=PRi,i=1,…,I;令任务集UT=T;
步骤D1.3:把UT中 的ti移到RT中;
步骤D2:从RT中取出一个优先级最高即 最小的任务,不妨设为ti;
步骤D3:把ti分配给 不妨设
步骤D3.1:计算ti的执行时间
步骤D3.2:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤D3.3:计算ti的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤D3.4:更新ti的子任务的就绪时间步骤D3.5:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤D3.6:在所有 中删除ti;
步骤D3.7:把UT中 的ti移到RT中;
步骤D4:如果RT不为空则转到步骤D2,否则转到步骤D5;
步骤D5:获得所有任务的完成时间fi,i=1,…,I;计算其适应度值,操作结束;
所述基于层次解码的个体改进方法包括如下步骤:步骤E1:令所有虚拟机可得时间段列表vatlj={[0,M]},j=1,…,J,M为一个接近无穷大的数;令所有任务的就绪时间rti=0,i=1,…,I;令任务集UT=T;令计数变量k=1,随机生成I个[0,1)之间的随机数,不妨设这些随机数从小到大为:α1,α2,…,αI;
步骤E2:从UT中随机取出一个层次值与优先级之和最小的任务,不妨设为ti;
步骤E3:基于插入模式把ti分配给 不妨设步骤E3.1:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;;
步骤E3.2:计算ti的开始时间 和ti的结束时间步骤E3.3:更新ti的子任务的就绪时间步骤E3.4:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的和步骤E4:令 若UT不为空,则k=k+1,转到步骤E2,否则转到步骤E5;
步骤E5:计算 的适应度值,如果 优于ch={g1,…,gI},那么改进个体ch={g1,…,gI}为 操作结束;
步骤8:根据适应度从优到劣从当代种群和新种群中选出N个不同的个体形成新的当代种群,转到步骤4;
步骤9:输出当代种群中的最优个体,其对应的调度方案为优化方案。
2.根据权利要求1所述的一种基于层次与负载均衡遗传算法的云工作流调度优化方法,其特征在于:步骤7中所述基于负载均衡的个体改进方法的具体步骤如下:步骤F1:计算各虚拟机负载
步骤F2:找出负载最小的虚拟机j′;如果ldj′>0,转到步骤F3,否则转到步骤F4;
步骤F3:令任务集 转到步骤F5;
步骤F4:令任务集STj′=Tj′,转到步骤F5;
步骤F5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤F6;否则转到步骤F7;
步骤F6:令 形成新个体,用基于插入模式的串行个体解码方法和基于层次解码的个体改进方法对新个体进行解码与改进,如果新个体相对于原个体有改进,则用新个体替换原个体,转到步骤F7;否则转到步骤F5;
步骤F7:操作结束。
3.根据权利要求1所述的一种基于层次与负载均衡遗传算法的云工作流调度优化方法,其特征在于:所述适应度值为工作流响应时间rs,其计算方法如下:其中:rfi是任务i的响应时间, SFLi是任务i输出给共享数据库的输出文件集,即
适应度值越小,个体越优。