[发明专利]基于分层自适应智能计算算法的云工作流调度优化方法在审
| 申请号: | 201911259920.4 | 申请日: | 2019-12-10 |
| 公开(公告)号: | CN111047183A | 公开(公告)日: | 2020-04-21 |
| 发明(设计)人: | 谢毅;汪炜军 | 申请(专利权)人: | 浙江工商大学 |
| 主分类号: | G06Q10/06 | 分类号: | G06Q10/06 |
| 代理公司: | 杭州浙科专利事务所(普通合伙) 33213 | 代理人: | 吴秉中 |
| 地址: | 310012 浙*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 分层 自适应 智能 计算 算法 工作流 调度 优化 方法 | ||
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:计算任务的排序值rank;
先计算ti执行时的平均处理时间需要从共享数据库获得输入文件的平均传输时间需要从其它虚拟机获得输入文件的平均传输时间
ti执行时的平均处理时间计算如下:
ti执行时需要从共享数据库获得输入文件的平均传输时间为:
ti执行时需要从其它虚拟机获得输入文件的平均传输时间为:
其中为和ti间的文件平均传输时间,其计算如下:
然后,计算任务i的自下而上排序值其计算过程如下:
对于没有子任务的结束任务i:
其它任务的自下而上排序值采用如下递归公式进行计算:
接着,计算任务i的自上而下排序值其计算过程如下:
对于没有父任务的开始任务i:
其它任务的自上而下排序值采用如下递归公式进行计算:
最后,计算任务i的排序值ranki:
在所有ranki中值最大的对应的任务称为关键任务,即关键活动;
步骤3:计算任务的层次值;
对于没有父任务的开始任务i,其层次值为:
leveli=1 (10)
其它任务的层次值采用如下递归公式进行计算:
步骤4:初始化当代种群和精英个体;
采用基于层次和关键活动优先的个体随机生成方法生成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:生成任务调度顺序列表;
步骤A1.1:对每个层次,把rank最大的任务放在各自所在层次的最前面,如果一层中有多个最大值,那么具有最大值的任务之间的顺序随机排列,该层内剩余的任务随机排列;
步骤A1.2:根据任务层次值从小到大把步骤A1.1中形成的每层的任务排列连接起来,形成个体的任务调度顺序列表部分的基因{gI+1,…,g2I};
步骤A2:生成虚拟机分配列表:
步骤A2.1:令循环控制变量k=1,令虚拟机可得时间段列表vatlj={[0,M]},M为一个接近无穷大的数;令所有任务的就绪时间rti=0;
步骤A2.2:令任务编号i=gI+k,从VMi中随机选择一个虚拟机,不妨设为vmj,把ti分配给vmj,gi=j;
步骤A2.3:计算ti的执行时间
步骤A2.4:在vatlj中从早到晚找出一个空闲时段[νj,υj],满足υj-νj≥eti和υj-eti≥rti;
步骤A2.5:计算ti的开始时间si=max{νj,rti},完成时间fi=si+eti;
步骤A2.6:更新ti的子任务的就绪时间
步骤A2.7:在虚拟机可得时间段列表vatlj中删除[νj,υj],插入区间长度大于0的[νj,si]和[fi,υj];
步骤A2.8:令k=k+1,如果k≤I,转到步骤A2.2,否则转到步骤A3;
步骤A3:获得一个个体{g1,…,gI,gI+1,…,g2I}并计算其适应度值,操作结束;
其中:
ωi,j:是vmj处理ti的时间,
是把ti分配给vmj处理时需要从其它的虚拟机获得输入文件的文件传输时间,是处理的虚拟机;
τi,j:是把ti分配给vmj处理时需要从共享数据库获得输入文件的文件传输时间,
所述适应度值为工作流响应时间rs,其计算方法如下:
其中:rfi是任务i的响应时间,SFLi是任务i输出给共享数据库的输出文件集,即
适应度值越小,个体越优;
步骤5:判断是否满足迭代终止条件,如满足,则进化结束转到步骤9,否则转到步骤6;
所述终止条件为迭代到指定的代数TG或连续迭代GG代精英个体没有改进;
步骤6:进行自适应交叉变异操作;
步骤6.1:令下一代种群为空;
步骤6.2:基于排序的轮赌法从当代种群中随机选择两个不同个体作为父体1和父体2;
步骤6.3:根据交叉方法的适应度值采用基于值的轮赌法随机选择一种交叉方法对父体1和父体2进行交叉操作,生成两个子体;采用基于插入模式的串行个体解码方法对子体进行解码,根据公式(12)更新交叉方法的适应度值;
步骤6.4:对子体1根据变异方法的适应度值采用基于值的轮赌法随机选择一种变异方法进行变异操作;采用基于插入模式的串行个体解码方法对变异后的子体进行解码,并根据公式(13)更新变异方法的适应度值;对子体2根据变异方法的适应度值采用基于值的轮赌法随机选择一种变异方法进行变异操作;采用基于插入模式的串行个体解码方法对变异后的子体进行解码,并根据公式(13)更新变异方法的适应度值;
步骤6.5:把两个子体加入到下一代种群中;如果下一代种群的数量小于N个,转到步骤6.2,否则令下一代种群为当前种群,转到步骤7;
所述交叉方法包括:层次交叉,任务交换,单点交叉;
交叉方法1:层次交叉,包括如下步骤:
步骤B1:找出在两个父体中都满足层次编码的层次集SL;
步骤B2:如果SL不为空,则从中随机取出一个层次,不妨设为l,转到步骤B3;否则转到步骤B4;
步骤B3:交换父体1和父体2中层次l内的任务调度顺序与虚拟机分配;
步骤B4:层次交叉操作结束;
所述满足层次编码的层次是指该层内的所有任务在调度顺序列表中是连续排列的;
交叉方法2:任务交换,包括如下步骤:
步骤C1:找出在两个父体中都满足层次编码且层中任务数量大于1的层次集SL;
步骤C2:如果SL不为空,则从中取出一个层次,不妨设为l,转到步骤C3;否则,转到步骤C6;
步骤C3:在层l中随机选择一个任务,不妨设为任务i;
步骤C4:在父体1中找出任务i在层l中的调度位置P1,在父体2中找出任务i在层l中的调度位置P2;如果P1不等于P2,则转到步骤C5,否则转到步骤C2;
步骤C5:在父体1中交换P1和P2位置上的任务,在父体2中交换P1和P2位置上的任务,转到步骤C2;
步骤C6:任务交换操作结束;
交叉方法3:单点交叉,包括如下步骤:
步骤D1:随机产生一个1到2I-1的正整数α,如果1≤α≤I则转到步骤D2,否则转到步骤D3;
步骤D2:生成子体和子体子体chc1的前α个基因来自于父体即后2I-α个基因来自于父体即子体chc2的前α个基因来自于父体即后2I-α个基因来自于父体即转到步骤D4;
步骤D3:生成子体和子体子体chc1的前α个基因来自于父体即后2I-α个基因来自于父体chp2的调度顺序列表中删除基因值等于后的基因列表;子体chc2的前α个基因来自于父体即后2I-α个基因来自于父体chp1的调度顺序列表中删除基因值等于后的基因列表;转到步骤D4;
步骤D4:输出子体和子体操作结束;
所述变异方法包括:虚拟机列表变异,基于拓扑排序的调度顺序列表变异,基于层次的调度顺序列表变异;
变异方法1:虚拟机列表变异,包括如下步骤:
步骤E1:从{g1,…,gI}中随机选择一个基因,不妨设为gi;
步骤E2:从VMi中重新随机选择一个,不妨设为vmj,令gi=j,操作结束;
变异方法2:基于拓扑排序的调度顺序列表变异,包括如下步骤:
步骤F1:从任务调度顺序列表{gI+1,…,g2I}中随机选择一个任务,不妨设为gi;
步骤F2:如果任务gi存在父任务则向前找到第一个父任务gi′,令位置值pos1=i′+1,否则令pos1=I+1;如果任务gi存在子任务则向后找到第一个子任务gi″,令位置值pos2=i″-1,否则令pos2=2I;
步骤F3:在[pos1,pos2]之间重新随机选择一个位置插入gi,操作结束;
变异方法3:基于层次的调度顺序列表变异,包括如下步骤:
步骤G1:找出在个体中满足层次编码且层中任务数量大于1的层次集SL;
步骤G2:如果SL不为空,则从中随机选择一个层次,不妨设为l,转到步骤G3;否则,转到步骤G4;
步骤G3:从l中随机选择两个任务,在调度顺序列表中交换这两个任务;
步骤G4:基于层次的调度顺序列表变异操作结束;
所述交叉方法和变异方法的适应度值及其更新方法描述如下:
每种交叉方法i设置一个适应度值cfi∈(0,1);每种变异方法i设置一个适应度值mfi∈(0,1),每次进行交叉或变异操作时采用基于适应度值的轮赌法随机选择一种进行遗传操作,每次遗传操作后其适应度值采用以下方法更新:
mfi=(1-θ2)mfi′+θ2×nbm (13)
其中:
cfi′,cfi分别表示交叉方法i使用前和使用后的适应度值;
mfi′,mfi分别表示变异方法i使用前和使用后的适应度值;
nbc:表示交叉后个体优劣变化程度,
rs1,rs2分别是父体1和父体2的工作流响应时间,不妨设rs1≤rs2,rs′1,rs′2分别是经过交叉后子体的工作流响应时间,不妨设rs′1≤rs′2;
nbm:本次变异后变好的个体数量,取0或1;
θ1,θ2∈(0,1):更新速率;
步骤7:采用FBID和LDI方法改进当代种群中的所有个体并计算其适应度值;
所述FBID方法描述如下:
步骤H1:把个体ch中的任务调度顺序列表根据任务完成时间fi从大到小重新排列,即把ch中的基因gI+i设置为倒数第i个完成的任务,i=1,…,I,形成反向个体
步骤H2:对采用基于插入模式的串行反向个体解码方法进行解码获得所有任务的反向完成时间及其反向工作流响应时间若小于rs,则转到步骤H3,否则,转到步骤H5;
步骤H3:把反向个体中的任务调度顺序列表根据任务反向完成时间从大到小重新排列,即把中的基因设置为倒数第i个完成的任务,i=1,…,I,形成个体ch;
步骤H4:采用基于插入模式的串行个体解码方法对个体ch进行解码,获得所有任务的完成时间f1,…,fI及其工作流响应时间rs;如果rs小于则转到步骤H1,否则,转到步骤H5;
步骤H5:输出个体ch及其适应度值即工作流响应时间rs,操作结束;
所述LDI方法描述如下:
步骤I1:计算各虚拟机负载
步骤I2:找出负载最小的虚拟机j′;如果ldj′0,转到步骤I3,否则转到步骤I4;
步骤I3:转到步骤I5;
步骤I4:STj′=Tj′,转到步骤I5;
步骤I5:如果STj′不为空,则从STj′中按顺序取出一个其所在虚拟机的负载是最高的任务i′,转到步骤I6;否则转到步骤I7;
步骤I6:令gi′=j′,形成新的个体采用FBID方法对进行解码与改进,如果相对于原个体有改进,则用此改进的个体替换原个体,转到步骤I7;否则转到步骤I5;
步骤I7:LDI操作结束;
步骤8:精英替换与保存,转到步骤5;
所述精英替换与保存方法描述如下:如果当前种群中的最优个体即适应度值最小的个体优于精英个体,那么用最优个体替换精英个体,如果精英个体优于当前种群中的最优个体,那么用精英个体替换当前种群中最差个体即适应度值最大的个体;
步骤9:输出精英的个体,其对应的调度方案即为优化方案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工商大学,未经浙江工商大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911259920.4/1.html,转载请声明来源钻瓜专利网。
- 同类专利
- 专利分类
G06Q 专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的处理系统或方法
G06Q10-00 行政;管理
G06Q10-02 .预定,例如用于门票、服务或事件的
G06Q10-04 .预测或优化,例如线性规划、“旅行商问题”或“下料问题”
G06Q10-06 .资源、工作流、人员或项目管理,例如组织、规划、调度或分配时间、人员或机器资源;企业规划;组织模型
G06Q10-08 .物流,例如仓储、装货、配送或运输;存货或库存管理,例如订货、采购或平衡订单
G06Q10-10 .办公自动化,例如电子邮件或群件的计算机辅助管理





