一种基于改进NSGA-II的云计算任务调度方法
技术领域
本发明涉及云计算领域,尤其涉及一种基于改进NSGA-II的云计算任务调度方法。
背景技术
互联网发展至今已经进入了大数据时代,Hadoop作为一个开源的云计算框架,在大数据处理上具有很大的优势。MapReduce计算模型采用分布式计算思想,通过NameNode和JobTracker管理集群资源和集群上计算任务分布,实现将一个大的计算任务分解为多个并行的小任务,以提高数据处理效率。而这种云计算模型中的任务调度模块,对整个集群在处理计算任务时的运行时间和运行费用有着关键的影响。
云计算作为一种新型的互联网商业模式,已经对传统的互联网服务产生了深远的影响,其注重计算效率和吞吐率,同时更注重用户的体验。用户作为付费的消费者,他们并不关心自己提交的任务如何被执行,这导致用户提交的任务间的关系相较于传统的任务模型更加复杂。当前的研究大多是基于独立任务模型或者工作流任务模型,而云计算环境中的任务调度模型通常为同时包含独立任务和工作流任务的部分关联任务模型。因此,图1所示的任务模型更符合这种任务调度的特点。
对于云计算环境下的任务调度,目前在业界内也还没有一个统一的标准和规范,各个云计算厂商均依据自己的基础设施架构发展云计算应用,因此云计算环境中的调度和资源管理模式呈现多样化,例如IBM使用Tivoli系列产品来实现云计算的资源监测、分配、作业调度和系统负载均衡控制,Google使用MapReduce接口,把海量的计算自动的并发和分布执行,实现任务调度。在云计算环境下虚拟机任务调度方面,目前的研究大多集中在单目标优化问题的求解上,对于云环境中部分关联任务模型下多目标优化问题的求解的研究比较少。
Deb等人于2002年提出了非支配排序进化算法NSGA-II(Non-dominated SortingGenetic Algorithm-II),它的基本思想是先通过对种群中的染色体进行支配关系的比对,构造出一个多层级的非支配集,然后对处于非支配集各个层级中的染色体再进行拥挤距离排序。这样,个体所处的非支配集层级越高,说明其在支配关系的比对中更占优势,因此其进入下代种群的优先级也越高;而对于处于同一层级的个体而言,其拥挤距离越大,表明与其性状相似的个体越少,说明该个体更具代表性,因此其进入下代种群的优先级也越高。虽然这种基于密度的算法可以被用来求解多目标优化问题,但应用到云计算任务调度方法中时,其求解的收敛速度以及最优解的连续性和分布性上的表现并没有达到很好的效果。
发明内容
本发明要解决的技术问题在于:提供一种基于改进NSGA-II的云计算任务调度方法。首先将云计算任务调度问题表示成一个时间和费用相关的多目标求解问题,然后提出一种改进的NSGA-II算法来求解该问题,根据任务调度的特点,在种群进化的过程中采用相似任务序列交叉算子和位移变异算子,在保证算法能够快速收敛到最优边界的同时有效避免了算法陷入局部最优解,另外引入拥挤距离自适应算子,确保最优边界中的最优解的分布更均匀。
本发明解决其技术问题所采用的技术方案是:
一种基于改进NSGA-II的云计算任务调度方法,包括以下步骤:
步骤1、输入元任务数目,通过DAG(Directed Acyclic Graph,有向无环图)图生成任务调度模型;
步骤2、输入虚拟机数目,随机产生不同规格的虚拟机,生成集群模型;
步骤3、将步骤1中的元任务分配到步骤2中的虚拟机上,并确保得到时间和费用的最优边界,实现云计算任务调度;具体为:
将云计算任务调度问题表示成一个时间和费用相关的多目标求解问题,结合改进的非支配排序进化算法NSGA-II来求解该问题;所述的改进的非支配排序进化算法NSGA-II是根据任务调度的特点,在种群进化的过程中采用相似任务序列交叉算子和位移变异算子生成新种群,同时引入拥挤距离自适应算子,确保最优边界中的最优解的分布更均匀。
进一步的,本发明的一种基于改进NSGA-II的云计算任务调度方法,多目标求解问题的目标函数为:
其中,n为元任务的个数,m虚拟机的台数,ttotal为任务调度需要的总时间,ctotal为任务调度需要的总费用,Ti为第i个任务,Tfirst和Tlast对应第一个和最后一个被调度执行的任务,ts(Ti)为第i个任务被调度执行开始的时刻,te(Ti)为第i个任务被调度执行结束的时刻,ci为第i个任务被调度在某虚拟机上执行所需的单位价格。
进一步的,本发明的一种基于改进NSGA-II的云计算任务调度方法,步骤3中结合非支配排序进化算法NSGA-II来求解多目标问题,具体包括如下分步骤:
步骤3.1、初始化:设置种群规模M、最大进化代数maxGen和当前进化代数gen;
步骤3.2、算法迭代开始,在当代种群P(gen)中选择染色体进行相似任务序列交叉操作和位移变异操作,生成新种群Q(gen);对当代种群中的染色体两两配对进行交叉操作,比对保 留相同序列,然后随机选取交叉点,交叉点后的列进行交叉;在交叉操作结束后进行位移变异操作,随机选取变异点,然后进行首尾相接的位移变异;
步骤3.3、合并当代种群P(gen)和新种群Q(gen)为R(gen),对R(gen)进行快速非支配排序,得到队列Rank;
步骤3.4、使用拥挤距离算法计算Rank中的拥挤距离并进行降序排序,构造非支配解集;
步骤3.5、结合Rank和拥挤距离,选取R(gen)中的前M个个体,记为新的当代种群P(gen);
步骤3.6、设置gen=gen+1,如果gen<maxGen,跳转到步骤3.2;否则跳转到步骤3.7;
步骤3.7、取种群P(gen)中的染色体作为相对最优解形成最优边界。
进一步的,本发明的一种基于改进NSGA-II的云计算任务调度方法,一个虚拟机在同一时刻只能处理一个任务,并且下一个任务必须等到上一个任务完全计算结束后才能开始被处理。
进一步的,本发明的一种基于改进NSGA-II的云计算任务调度方法,步骤3.4所述的拥挤距离算法具体包括以下步骤:
步骤3.4.1、初始化算法,包括设置最大计数值maxCount、最大交叉概率maxPc、最大变异概率maxPm、自适应拥挤距离参数Pdis、计数器count、交叉概率Pc和变异概率Pm;
步骤3.4.2、计算当代种群的Pdis,如果它和先代种群的Pdis不等,则重置count、Pc和Pm,并跳转到3.4.6;否则赋值count=count+1,进入步骤3.4.3;
步骤3.4.3、判断count是否大于maxCount:如果是,跳转到3.4.4;如果否,则跳转到3.4.6;
步骤3.4.4、判断Pc是否等于maxPc:如果是,跳转到3.4.5;如果否,则赋值Pc=Pc+0.01,跳转到3.4.5;
步骤3.4.5、判断Pm是否等于maxPm:如果是,跳转到3.4.6;如果否,则赋值Pm=Pm+0.01,跳转到3.4.6;
步骤3.4.6、结束本次Pdis的计算,跳转到步骤3.5。
本发明采用的云计算任务调度方法与改进前的算法相比,具有以下技术效果:
(1)改进后的算法具有更好的收敛性。在种群规模相同的情况下,找到同层次最优边界时,改进后的算法需要的进化代数明显少于改进前的算法。
(2)改进后的算法具有更好的搜索能力。在种群规模和进化代数相同的情况下,改进后的算法最后得到的最优边界中的非重复最优解的个数明显多于改进前的算法。
(3)改进后的算法得到的最优边界的分布性更优。在相同种群规模和进化代数的前提下,相对于改进前的算法,改进后的算法得到的最优边界中的非重复最优解的分布更均匀。
附图说明
图1为云计算任务调度模型。
图2为本发明的云计算任务调度方法的基本流程图。
图3为采用本发明进化算法的新群体构成示意图。
图4为本发明方法和改进前的算法获得的最优边界中非重复最优解的拥挤距离的均值和标准差均值的对比。
图5为本发明方法和改进前的算法获得的最优边界中非重复最优解个数的对比。
图6为本发明实施中得到的最优边界与传统算法得到的最优边界的对比。
具体实施方式
为了使本领域技术人员更好地理解本申请中的技术问题、技术方案和技术效果,下面结合附图和具体实施方式对本发明一种改进的基于NSGA-II的云计算任务调度方法作进一步详细说明。
为了同时对运行时间和运行费用进行求解,本发明改进了多目标优化算法NSGA-II,并将其应用于云计算任务调度中。
本发明提供一种基于改进NSGA-II的云计算任务调度方法。首先将云计算任务调度问题表示成一个时间和费用相关的多目标求解问题,然后提出一种改进NSGA-II算法来求解该问题,根据任务调度的特点,在种群进化的过程中采用相似任务序列交叉算子和位移变异算子,在保证算法能够快速收敛到最优边界的同时有效避免了算法陷入局部最优解,另外引入拥挤距离自适应算子,确保最优边界中的最优解的分布更均匀。
本发明提出的基于改进NSGA-II的云计算任务调度方法包括下述步骤,基本流程如图2所示:
步骤1:输入任务数目,通过DAG图生成任务调度模型;
本发明方法对Hadoop MapReduce计算模型中Map任务和Reduce任务的工作流程进行抽象,使用DAG图建立云计算任务调度模型,部分元任务之间存在依赖关系,部分元任务独立。MapReduce计算过程中,存在下述情形:部分作业计算需要需要多次Map处理和Reduce处理相互配合;部分计算作业只需要进行Map处理。上述情形与建立的部分关联的任务调度模型契合,能够很好地描述云计算任务之间的复杂关系。
步骤2:输入虚拟机数目,随机产生不同规格的虚拟机,生成集群模型;
本发明方法对云数据中心的集群进行模拟,生成一定数量计算能力不同的虚拟机模型,对应现实集群中的不同计算能力的虚拟机,计算能力越强的虚拟机提供的计算服务单位价格 也越高。
如何将步骤1中所述的元任务分配到步骤2中所述的集群中的虚拟机上并确保得到时间和费用的最优边界,是本发明的重点。假设有n个元任务,m台虚拟机,ttotal为任务调度需要的总时间,ctotal为任务调度需要的总费用,Ti为第i个任务,Tfirst和Tlast对应第一个和最后一个被调度执行的任务,ts(Ti)为第i个任务被调度执行开始的时刻,te(Ti)为第i个任务被调度执行结束的时刻,ci为第i个任务被调度在某虚拟机上执行所需的单位价格,那么本发明关注的多目标问题的目标函数可以描述为:
步骤3:用改进的多目标优化算法求解云计算任务调度问题,包括如下7个子步骤:
步骤3.1:初始化,包括设置种群规模M、最大进化代数maxGen和当前代数gen;
种群的编码方式采用二进制编码,一个染色体对应一个二维数组A,行坐标为虚拟机,列坐标为计算任务,对应如果第i个任务被分配到第j个虚拟机计算执行,则A中的元素aij=1。而一个任务只能被分配到一台虚拟机上,一台虚拟机上却能够被分配多个任务,使得数组每行可以有多个为1的元素,而每列却只能有1个元素为1。随机取M个满足以上特征的染色体组成初代种群并设置当前代数gen为1;
步骤3.2:算法迭代开始,在当代种群P(gen)中选择染色体进行相似任务序列交叉操作和位移变异操作,生成新种群Q(gen);
对当代种群中的染色体两两配对进行交叉操作,比对保留相同序列,然后随机选取交叉点,交叉点后的列进行交叉;在交叉操作结束后进行位移变异操作,随机选取变异点,然后进行首尾相接的位移变异;
步骤3.3:合并P(gen)和Q(gen)为R(gen),对R(gen)进行快速非支配排序;
合并后的种群规模为2M,为了获得M个染色体进入下一代种群,必须对这2M个染色体进行排序选择,如果一个染色体能够支配另一个染色体,则判定该染色体是优于被支配的染色体的。支配关系的判断则是在每个优化目标上进行比对,如果一个染色体在所有的子目标上都优于另一个染色体,则判定该染色体支配另一染色体;如果一个染色体在所有的子目标上都劣于另一个染色体,则判定该染色体被另一染色体支配;其余情况下判定这两个染色体互不支配。
根据支配情况进行Rank排序,从种群中选取不被支配的染色体进入当前Rank,如此迭代直至种群内所有染色的Rank排序都完成;
步骤3.4:使用改进的拥挤距离算法计算Rank中的拥挤距离并进行降序排序;在Rank排序完成后,需要对每个Rank中的染色体进行拥挤距离排序,这是因为在从2M个染色体中选取M个进入下代种群时,需要按照染色体的Rank排序从低到高依次选取,但很有可能出现这样一种情况,即在选取某Rank中的染色体之前,种群的规模小于M,选取了该Rank中的染色体之后,种群的规模又大于M了,为了解决这个问题,需要对每个Rank中的染色体进行拥挤距离排序,拥挤距离越大的说明与其相似的染色体越少,因此其更具有代表意义,对应的排序应该更靠前;
步骤3.5:结合Rank和拥挤距离,选取R(gen)中的前M个个体,记为新的当代种群P(gen);
各个Rank之间按照Rank从小到大的顺序选取染色体进入当代种群,每个Rank内的染色体拥挤距离大的排序靠前,如图3所示按照这种优先顺序依次选取M个染色体进入下一代种群P(gen);
步骤3.6:设置gen=gen+1,如果gen<maxGen,跳转到步骤3.2;否则跳转到步骤3.7;
种群进化次数到达设置的最大次数后,结束整个迭代过程;否则跳转到步骤3.2继续进行种群的进化操作;
步骤3.7:取种群P(gen)中的染色体作为相对最优解形成最优边界。
一个理想的最优边界里的染色体们是彼此互相不支配,分布均匀。如果算法导致种群出现早熟现象,那么最后得到的最优边界是不能理想地表示最优解集的,而反之,如果为了避免早熟而提高交叉变异的概率,那么算法的收敛性会受到影响,导致效率降低。
应用本发明提出的基于改进NSGA-II的算法得到的云计算任务调度的结果,首先对云计算中的任务调度进行抽象,建立云任务调度模型,并针对本发明关注的优化目标即运行时间和费用设计优化目标函数,如式(1)所示;然后对算法进行初始化,设置种群的规模和进化代数等一系列参数;其次根据初始化后的参数对整个种群进行交叉变异操作,并一直迭代到整个算法结束;最后得到一个由最优解组成的最优边界,作为最后的输出。
实施本发明的方法时,以任务数为10,虚拟机数为3,种群数为100为例,采用控制种群数目一定,进化代数递增这种方法,分别运行改进前算法和改进后算法进行仿真实验对比。本发明方法与改进前的算法的性能比较如图4、图5和图6所示。
图4为本发明方法和改进前的算法获得的最优边界中非重复最优解的拥挤距离的均值和标准差均值的对比图。图中的横坐标是进化代数,纵坐标是拥挤距离。从图中可以看出在相同进化代数下,改进后的算法得到的最优解集中的相邻解间的距离均值和距离均方差明显小 于改进前的算法,这说明在云环境中部分关联任务模型下,以任务运行时间和运行费用为多目标优化的问题的求解中,改进后的算法得到的最优解集的分布性要优于改进前的算法。
图5为本发明方法和改进前的算法获得的最优边界中非重复最优解个数的对比图。图中的横坐标是进化代数,纵坐标是算法找到的非重复最优解个数。从图中可以看出,在相同进化代数下,改进后的算法所搜寻到的最优解集中非重复最优解的个数要明显多于改进前的算法,这说明在云环境中部分关联任务模型下,以任务运行时间和运行费用为多目标优化的问题的求解中,改进后的算法在最优解的搜索能力上要明显优于改进前的算法。另外综合图4和图5可以发现,在100代到300代之间,随着进化代数的增加,传统算法和改进后的算法在上述三个性能指标上的表现均越来越好,但是比较300代到500代的数据,可以发现改进前的算法发生了明显的返祖现象,而改进后的算法能收敛在一个比较稳定的区间。
图6为本发明方法和改进前的算法获得的最优边界的对比图。图中横坐标是完成实施本发明方法时所采用示例的云计算任务所需的时间,图中纵坐标是完成实施本发明方法时所采用示例的云计算任务所需的费用,此图是在种群规模为100,进化代数为500的条件下获得。图中可以看出,在相同的种群数目和进化代数的控制下,改进后的算法获得的最优边界明显要优于改进前的算法,在执行云计算任务所需的时间相同的情况下,改进的算法获得的最优边界能确保费用更低;在执行云计算任务所需的费用相同的情况下,改进的算法获得的最优边界能确保时间更短。
本发明改进后的算法根据云计算任务调度的特点,在种群进化的过程中采用相似任务序列交叉算子和位移变异算子,保证算法能够快速收敛到最优边界的同时有效避免了算法陷入局部最优解,另外引入拥挤距离自适应算子,确保最优边界中的最优解的分布更均匀,使所得到的最优边界的性能优于传统算法所得到的最优边界。
显然,本领域技术人员应当理解,对上述本发明所公开的基于改进NSGA-II的云计算任务调度方法,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。