基于克隆选择算法的云计算资源分配方法与流程

文档序号:16087183发布日期:2018-11-27 22:34阅读:450来源:国知局

本发明涉及云计算领域。更具体地说,本发明涉及一种基于克隆选择算法的云计算资源分配方法。



背景技术:

云计算是一种通过互联网实现随时随地和按需访问的共享资源池的计算模式。云计算资源调度可以定义为在云计算环境下,根据一定的资源使用规则,在不同的用户任务之间进行资源分配的过程。现有技术中,已有学者提出顺序分配策略和贪心策略对资源进行分配,但上述两种方法也有各自的缺点。

顺序分配策略就是按任务的顺序来进行分配的策略,在这个方法中,假设有n个任务,m个虚拟机,那么按照1~n的任务顺序来将其一一分配给虚拟机,虚拟机也是按1~m的顺序来处理这些任务。若n>m,那么会产生所有的虚拟机都已被分配了任务的情况,此时便会重头开始分配,还是1~n的顺序。此方法的缺点也很明显,这种不关注各个虚拟机处理效率区别与每个任务大小程度不同的方法可能会导致效率低的虚拟机处理大型的任务,而效率高的虚拟机却被分配了小的任务,导致时间的浪费与成本的增大。

贪心策略的总体思想就是将最复杂的任务分配给速度最快的虚拟机。不失一般性,假设任务执行的时间主要受任务的指令长度(MI)和虚拟机的执行速度(MIPS)影响,用i表示任务,j表示虚拟机,那么矩阵time[i][j]即为i在j的执行时长,且time[i][j]=MI[i]/MIPS[j],并按照以下顺序进行操作:步骤一:排序:MI降序排列,MIPS升序排列;步骤二:初始化矩阵time[i][j];步骤三:执行贪心策略。具体来讲,将i=0的任务分配给列号最大即为m的虚拟机(m=vmNum-1)。如果此分配是最有的,则完成分配。否则将任务分配给使当前结果为最有的虚拟机。如果有多种分配方法都等得到最优,则将任务分配给运行任务最少的虚拟机,实现一种简单的负载均衡。在贪心策略中,如果当前虚拟机还未分配任务,则比较当前任务分配给该虚拟机是否最优。然而这种贪心策略往往是局部最优,应对需求变化较大的复杂任务经常会陷入局部最优,不能很好的完成资源分配任务。



技术实现要素:

为了克服现有技术的不足,本发明的目的是提供了一种基于克隆选择算法的云计算资源分配方法,该方法利用克隆选择算法的并行性等特点进行优化,在相同任务数量和相同计算资源的情况下,能够在更短的时间内完成所有任务,提高了执行效率。

为了实现本发明的目的和其它优点,本发明提供了一种基于克隆选择算法的云计算资源分配方法,包括以下步骤:

步骤一、随机产生一初始抗体种群A,所述初始抗体种群A中包含M个抗体,每个抗体均对应一种云任务的分配方案;

步骤二、计算每种分配方案中每台虚拟机的执行时长,以及每种分配方案的总时长;

步骤三、依据获取的每种分配方案的总时长对所述初始抗体种群A中的每个抗体进行克隆并变异,形成新抗体,计算每个新抗体对应的分配方案中每台虚拟机的执行时长以及该分配方案的总时长;

步骤四、将所述初始抗体种群A中的抗体和克隆变异产生的新抗体进行合并形成一新抗体种群B,根据获取的分配方案的总时长对所述新抗体种群B中的抗体进行升序排列,保留前M个抗体,作为初始抗体种群A的抗体;

步骤五、重复进行步骤三和步骤四的操作,从保留的前M个抗体中挑选出分配方案总时长最短的抗体,即云任务的最优分配方案。

优选的是,所述的基于克隆选择算法的云计算资源分配方法,所述步骤一具体包括:将随机产生的初始抗体种群中的每个抗体对应的分配方案存入一组二维数组Ass[M][cloudletNum]中,其中,cloudletNum表示待处理的云任务数,二维数组元素的取值范围为[1,vmNum],vmNum表示用来处理云任务的虚拟机数量。

优选的是,所述的基于克隆选择算法的云计算资源分配方法,所述步骤二具体包括:

将获取的每种分配方案中每台虚拟机的执行时长存入二维数组vmtime[M][vmNum]中,将获取的每种分配方案的总时长存入数组timeSum[M]中。

优选的是,所述的基于克隆选择算法的云计算资源分配方法,所述步骤三具体包括:

对数组timeSum[M]中的M种分配方案的总时长从小到大进行排序,然后对每种分配方案进行克隆,总时长越短的分配方案克隆的数量越多;

对复制好的克隆抗体进行变异,具体方法为:随机交换两个任务所分配的虚拟机,产生新抗体,并将变异后的新抗体对应的分配方案存入mutarr[sum][cloudletNum],其中,sum为克隆产生的新抗体数量;

计算新抗体对应的分配方案中每台虚拟机的执行时长,并存入muvmtime[sum][vmNum]中,以及计算新抗体对应的每种分配方案的总时长,并存入mutimeSum[sum]。

优选的是,所述的基于克隆选择算法的云计算资源分配方法,所述步骤四具体包括:

将所述初始抗体种群中的抗体和新抗体进行合并形成一新抗体种群,将所述新抗体种群中的抗体对应的分配方案存入temp[M+sum][cloudletNum]中,每种分配方案的总时长存入totaltime[M+sum]中;

根据获取的分配方案的总时长totaltime[M+sum]对所述新抗体种群中的抗体进行升序排列,保留前M个抗体,作为初始抗体种群。

优选的是,所述的基于克隆选择算法的云计算资源分配方法,所述步骤五具体包括:

对保留的前M个抗体继续进行克隆并变异,再次形成新抗体,并将保留的前M个抗体和其克隆变异形成的新抗体合并形成新抗体种群B,并从形成的新抗体种群B中挑选出分配方案总时长短的M个抗体,经过Gmax次克隆和变异数后,挑选出分配方案总时长最短的抗体,即云任务的最优分配方案。

本发明至少包括以下有益效果:该方法随机产生一初始抗体种群,由于初始抗体种群中的抗体对应的分配方案并不是最合理和最优的,因此,需对初始抗体种群中的每个抗体进行克隆并变异形成新抗体,克隆变异的时候,分配方案总时长越短的抗体即优质抗体,克隆的数量多些,分配方案总时长长的抗体即非优质抗体,克隆的数量少些,这样能够增加获得优质抗体的几率,而不是盲目的进行克隆复制。然后将初始抗体种群中的抗体和克隆变异产生的新抗体进行合并形成一新抗体种群,根据抗体对应的分配方案的总时长对所述新抗体种群中的抗体进行升序排列,保留前M个抗体,即分配方案总时长相对短的抗体,重新作为初始抗体种群,分配方案总时长越短,说明资源分配越合理,执行效率越高,把分配方案总时长长的抗体即非优质抗体淘汰掉;接下来继续对保留的前M个抗体进行克隆变异,进一步挑选出分配方案总时长短的前M抗体,这时的M个抗体对应的分配方案的总时长肯定比前面得到的M个抗体对应的分配方案的总时长短,如果继续重复上面的操作,得到的抗体对应的分配方案的总时长越来越短,最终挑选出分配方案最短的那个抗体,就是云任务的最优分配方案。因此,在相同任务数量和相同计算资源的情况下,本方法能够在更短的时间内完成所有任务,提高执行效率。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

图1为本发明的实施例中云计算资源分配方法的流程示意图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

图1所示,本发明实施例提供了一种基于克隆选择算法的云计算资源分配方法,包括以下步骤:

步骤一、随机产生一初始抗体种群A,所述初始抗体种群A中包含M个抗体,每个抗体均对应一种云任务的分配方案。

其中,所述步骤一具体包括:将随机产生的初始抗体种群A中的每个抗体对应的分配方案存入一组二维数组Ass[M][cloudletNum]中,其中,cloudletNum表示待处理的云任务数,二维数组元素的取值范围为[1,vmNum],vmNum表示用来处理云任务的虚拟机数量。

需要说明的是,二维数组Ass[M][cloudletNum]中的第i行j列的元素表示,在第i个抗体对应的分配方案的解当中,将j个任务分配给某个虚拟机,虚拟机的序号就是这个数足元素的取值,因此,取值范围为1~vmNum。

步骤二、计算每种分配方案中每台虚拟机的执行时长,以及每种分配方案的总时长。

其中,所述步骤二具体包括:

将获取的每种分配方案中每台虚拟机的执行时长存入二维数组vmtime[M][vmNum]中,将获取的每种分配方案的总时长存入数组timeSum[M]中。

步骤三、依据获取的每种分配方案的总时长对所述初始抗体种群A中的每个抗体进行克隆并变异,形成新抗体,计算每个新抗体对应的分配方案中每台虚拟机的执行时长以及该分配方案的总时长。

其中,所述步骤三具体包括:

对数组timeSum[M]中的M种分配方案的总时长从小到大进行排序,然后对每种分配方案进行克隆,总时长越短的分配方案克隆的数量越多;

对复制好的克隆抗体进行变异,具体方法为:随机交换两个任务所分配的虚拟机,产生新抗体,并将变异后的新抗体对应的分配方案存入mutarr[sum][cloudletNum],其中,sum为克隆产生的新抗体数量;

计算新抗体对应的分配方案中每台虚拟机的执行时长,并存入muvmtime[sum][vmNum]中,以及计算新抗体对应的每种分配方案的总时长,并存入mutimeSum[sum]。

需要说明的是,克隆抗体的数量和两个因素有关,一是克隆复制系数,可以预先进行设定,二是被克隆抗体本身的好坏,以分配方案总时长为依据,时间越短,说明任务执行的越快,这就是优质抗体,优质抗体被克隆的数量尽量多一些。

步骤四、将所述初始抗体种群A中的抗体和克隆变异产生的新抗体进行合并形成一新抗体种群B,根据获取的分配方案的总时长对所述新抗体种群B中的抗体进行升序排列,保留前M个抗体,作为初始抗体种群A的抗体。

其中,所述步骤四具体包括:

将所述初始抗体种群A中的抗体和新抗体进行合并形成一新抗体种群B,将所述新抗体种群中的抗体对应的分配方案存入temp[M+sum][cloudletNum]中,每种分配方案的总时长存入totaltime[M+sum]中;

根据获取的分配方案的总时长totaltime[M+sum]对所述新抗体种群B中的抗体进行升序排列,保留前M个抗体,作为初始抗体种群。

步骤五、重复进行步骤三和步骤四的操作,从保留的前M个抗体中挑选出分配方案总时长最短的抗体,即云任务的最优分配方案。

其中,所述步骤五具体包括:

对保留的前M个抗体继续进行克隆并变异,再次形成新抗体,并将保留的前M个抗体和其克隆变异形成的新抗体合并形成新抗体种群B,并从形成的新抗体种群B中挑选出分配方案总时长短的M个抗体,经过Gmax次克隆和变异数后,挑选出分配方案总时长最短的抗体,即云任务的最优分配方案。

克隆复制的次数Gmax可以预先进行设定,从一定程度上来说,Gmax越大,应该得到的分配方案会最优。但是,这个Gmax要根据实际情况进行设定。

下面表一给出采用本方法与现有技术采用的顺序分配策略和贪心策略对资源进行分配的结果对比。

表1测试不同算法的时间对比(单位:s)

从上表中可以明显地看出,采用本方法使得执行完所有任务的时长变短,能够使云计算资源分配得更合理,能够将各个不同的任务合理地分配到不同的虚拟机上。

综上所述,本发明实施例针对云计算资源分配问题进行了优化,利用克隆选择算法的并行性等特点提升了优化的效果,使得相同任务数量和相同计算资源的情况下,能够在更短的时间内完成所有任务,提高了任务执行效率。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1