本发明涉及一种云任务调度方法,具体为一种基于改进社会学习算法的云任务调度方法,属于云计算技术领域。
背景技术:
云计算是集成了网格计算、并行计算和p2p等多种技术发展起来的一种商业服务模式和计算模型,其采用虚拟化技术,将大量计算资源、存储资源与软件资源链接在一起,形成大规模的共享虚拟资源池,为用户和应用系统提供“召之即来,挥之即去”、似乎“能力无限”的云服务。云计算服务通过互联网进行传输,在云计算模式下,如何高效合理地进行云资源的优化调度,是满足用户需求的关键。因此,云任务的优化调度是云计算领域中亟需解决的关键问题之一。
云任务调度是云计算领域的核心问题,也是一个典型的np-hard问题,针对这一问题已取得了一定的研究成果。已有解决方法还存在有一定的局限性,比如:在不同的云计算环境下算法性能差异大,求解算法易陷入局部最优、求解效率较低等问题,这些都影响了云计算的应用推广。
技术实现要素:
针对现有技术存在的以上不足,本发明提出了一种基于社会学习算法的云任务调度方法。该方法包括以下步骤:
步骤1:输入改进社会学习方法的各项参数;
步骤2:随机生成连续的初始群体;
步骤3:将连续型的个体转变为离散型个体,并计算个体的适应度值;
步骤4:在微空间内,依次执行选择操作、交叉操作和变异操作;在完成交叉操作和变异操作之后重复步骤3,计算个体新的适应度值;并执行贪婪操作,保留适应度值较优的个体。
步骤5:在学习空间内,每个个体执行观察学习操作,之后重复步骤3,执行贪婪操作,保留适应度值较优的个体;
步骤6:在学习空间内,每个个体执行模仿学习操作,之后重复步骤3,执行贪婪操作,保留适应度值较优的个体;
步骤7:在信仰空间,进行知识更新操作和影响操作;
步骤8:判断是否满足方法终止条件,若否,则回转执行所述的步骤3;若是,则迭代停止,输出最终优化结果。
更具体地,上述步骤2中,随机生成连续初始群体根据poppk=popmin+(popmax-popmin)*rand确定,其中poppk表示种群中第p个个体的第k维变量,且p=1,2,…,popsize,k=1,2,…,n,popsize代表种群个体数量,n表示任务数量,rand为0~1之间的随机数,popmax=5,popmin=0.5.
更具体地,上述步骤3中,连续型个体popi根据spv方法将基因按数值由小到大排序,将其排序之前对应的基因序号依次赋值给个体i得到πi,将πi的每一维变量通过公式rij=πijmodm+1进行转换得到rij,,其中rij与πij均表示第i个个体的第j维变量,rij则代表任务分配的变量,m表示虚拟机的数量;求解该任务调度序列ri的适应度值f(x)=ω1*time+ω2*ec+ω3*c,其中time是任务完成时间,ec是执行成本,c为能耗,ω1、ω2、ω3分别表示这三个因素的权重值,且ω1+ω2+ω3=1,ω1≥0,ω2≥0,ω3≥0。
更具体地,上述步骤4中,微空间中,交叉操作和变异操作之后根据spv操作计算个体适应度值,并将新个体与旧个体进行比较,执行贪婪操作。
更具体地,在上述步骤5中,设popr=(popr1,…,poprk',…,poprd)为群体中的任一个体,
更具体地,在上述步骤6中,模仿学习操作采用
更具体地,在上述步骤7中,在信仰空间中,知识更新操作时,将每次从学习空间抽取到的优秀个体替换掉信仰空间内较差的个体;影响操作时,使用信仰空间内的知识替换掉微空间内适应度值较差的个体。
本发明通过改进社会学习算法,结合由任务执行时间、执行成本、能耗组成的目标函数,设计了能够提高收敛速度以及云任务调度服务质量的观察学习与模仿学习操作。本发明首先建立云任务调度问题的数学模型,将云任务调度转换为一般的数学问题进行求解,再通过三层协同进化的演化空间,获得最优调度方案,避免了单纯地根据迭代次数的线性函数进行取值。社会学习算法能够有效减少任务完成时间,具有更好的寻优性能,在寻找最优解和避免陷入局部最优等方面更加适合求解优化问题。
具体实施方式
一种基于社会学习算法的云资源优化调度方法。该方法包括以下步骤:
步骤1:输入改进社会学习方法的各项参数;
步骤2:随机生成连续的初始群体;
步骤3:将连续型的个体转变为离散型个体,并计算个体的适应度值;
步骤4:在微空间内,依次执行选择操作、交叉操作和变异操作;在完成交叉操作和变异操作之后重复步骤3,计算个体新的适应度值;并执行贪婪操作,保留适应度值较优的个体。
步骤5:在学习空间内,每个个体执行观察学习操作,之后重复步骤3,执行贪婪操作,保留适应度值较优的个体;
步骤6:在学习空间内,每个个体执行模仿学习操作,之后重复步骤3,执行贪婪操作,保留适应度值较优的个体;
步骤7:在信仰空间,进行知识更新操作和影响操作;
步骤8:判断是否满足方法终止条件,若否,则回转执行所述的步骤3;若是,则迭代停止,输出最终优化结果。
更具体地,上述步骤2中,随机生成连续初始群体根据poppk=popmin+(popmax-popmin)*rand确定,其中poppk表示种群中第p个个体的第k维变量,且p=1,2,…,popsize,k=1,2,…,n,popsize代表种群个体数量,n表示任务数量,rand为0~1之间的随机数,popmax=5,popmin=0.5.
更具体地,上述步骤3中,连续型个体popi根据spv方法将基因按数值由小到大排序,将其排序之前对应的基因序号依次赋值给个体i得到πi,将πi的每一维变量通过公式rij=πijmodm+1进行转换得到rij,,其中rij与πij均表示第i个个体的第j维变量,rij则代表任务分配的变量,m表示虚拟机的数量;求解该任务调度序列ri的适应度值f(x)=ω1*time+ω2*ec+ω3*c,其中time是任务完成时间,ec是执行成本,c为能耗,ω1、ω2、ω3分别表示这三个因素的权重值,且ω1+ω2+ω3=1,ω1≥0,ω2≥0,ω3≥0。
更具体地,上述步骤4中,微空间中,交叉操作和变异操作之后根据spv操作计算个体适应度值,并将新个体与旧个体进行比较,执行贪婪操作。
更具体地,在上述步骤5中,设popr=(popr1,…,poprk',…,poprd)为群体中的任一个体,
更具体地,在上述步骤6中,模仿学习操作采用
为了验证本发明方法的有效性,采用云计算仿真平台cloudsim进行仿真实验,实验环境是pc机,具体配置如下,os:windows7;cpu:inter4,3.20ghz;memory:4g。该实验通过扩展cloudsim平台中的datacenterbroker类,将本发明方法与已有的pso方法和ga方法进行对比分析,其中测试分析的性能指标为函数适应度值(fitness)、执行时间(taskcompletiontime)、执行费用(cost)和虚拟机能耗(energyconsumption)。具体实验过程如下:
在相同实验条件下,实验参数统一设置为:种群规模p=10,任务长度sl,虚拟机的执行能力vc,能耗矩阵e,以及成本矩阵rc统一由matlab随机生成。其中sl的随机范围为[10000mi,50000mi],vc的取值范围为[200,1000],e的取值范围为[1,10],rc的取值范围为[1,5]。三种算法的目标函数中的权重分别为ω1=0.5,ω2=0.2,ω3=0.3;slo算法与遗传算法的交叉率pc=0.6,变异率pm=0.08;粒子群算法中的c1=c2=2。
为了消除随机因素对实验结果的干扰,每组实验独立运行10次,取平均值,进行实验结果比较。
实验1:任务规模较小时算法性能比较
将云任务数量和虚拟机数量分别设置为20和5,统计三种方法在固定迭代次数后当前最优调度序列的执行时间,执行成本,能耗以及适应度值。
对比可知,本发明提出的方法不但优化了任务的执行时间,而且优化了任务的执行成本,具有较快的收敛速度,且在迭代结束时获得的调度方案适应度评价结果最优。
实验2:任务规模较大时算法性能比较
设置云任务数量和虚拟机数量分别设置为150和20,实验2采用与实验1相同的目标函数,分别对三种算法寻找到的最优调度序列的任务执行时间,执行成本,能耗和函数适应度值作对比。
对比结果可知,在较大任务规模情况下,本发明提出的方法能够搜索到具有较短执行时间和较优执行成本的云任务调度方案,且具有较优的均衡执行成本与执行时间的性能,而其他两种方法没有这种优势。寻优性能较好,所搜索到的最优云任务调度方案优于其他两种算法所搜索到的结果。本发明所设计的算法在求解云任务优化调度问题时具有良好的搜索能力与收敛速度,在获得更优的云任务调度方案的同时,很好地均衡了任务执行时间与执行成本。