1.一种基于改进MMAS的负载均衡调度方法,其特征在于,所述方法包括以下步骤:
步骤1,参数及环境初始化,设置时间t=0,迭代次数Nc=0,最大迭代次数初始化云平台虚拟机的信息素浓度,根据公式(1)、(2),其中L(t)表示第t次迭代最优路径长度,ρ为信息素挥发系数,将各条路径上的信息素控制在[τmin,τmax]之内,对于超出这个范围的值,大于τmax的就取τmax,若小于τmin则取τmin,这样的好处就是可以有效地避免某条路径上的信息素量远大于其他路径而造成的所有蚂蚁都集中到同一条路径上,从而使算法不再扩散、陷入局部最优;
将所有路径的信息素的值限制在最大值τmax和最小值τmin之间,高于或低于这一区域都会被自动调整为τmax或τmin,并初始化各蚁群的位置;
步骤2,如果满足调度的条件所有蚂蚁根据公式(5)和(6)随机选择任务,每只蚂蚁根据要求选择虚拟机,过程如下:
2.1设任务i的运行需要满足3个资源需求q,定义一个负载均衡因子LBij来衡量i任务分配到虚拟机j上后该虚拟机的负载情况,假定任务i分配到虚拟机j上,根据下式计算虚拟机j的负载均衡因子:当q=1表示CPU资源;当q=2表示内存资源;当q=3表示带宽资源,表示任务i分配到虚拟机j后,表示CPU资源在该虚拟机的3种资源中所占的权重;表示内存资源在该虚拟机的3种资源中所占的权重;表示带宽资源在该虚拟机的3种资源中所占的权重;表示任务i分配到虚拟机j上后虚拟机j上可用的q资源的利用率根据当前的负载情况记录在allowedk中,随着下一蚂蚁的转移,根据概率大小,进行下一虚拟机的选择,较小负载的虚拟机选择的概率就较大;
2.2虚拟机的工作负载的详细状态由一个计算资源利用向量来表示,利用CPU利用率、内存利用率和带宽利用率这3个向量来表示资源的利用向量,其中为状态向量,云计算任调度问题描述为将n个任务随机分配到m个虚拟机上,在其分配任务的过程中考虑虚拟机的负载均衡因素,根据公式(5),如果负载均衡值小于给定的值的话,进行下一步;
2.3初始时刻,各个虚拟机上的信息素量相等,设τij(0)=τmax,所以,蚂蚁k选择虚拟机j去完成任务i的概率为:allowedk表示蚂蚁还未选择的虚拟机的集合;τij是虚拟机j在t时刻信息素浓度值,LBij表示VM的负载均衡因子,用于维持虚拟机的负载均衡,虚拟机的负载均衡因子越小,则选择该虚拟机执行下一个任务的概率就越高,综合能力比较强,期望值也就高,α,β这两个系数表示的是控制信息素和虚拟机的负载程度以及虚拟机的效率值所占的权重指数;
步骤3,蚂蚁依据式(6)的状态转移概率,节点上的每只蚂蚁根据转移概率选择下一个虚拟机,判断虚拟机的负载状态,当满足调度要求且目标结点不过载,则执行任务或者迁移下一虚拟机,根据蚁群中蚂蚁找到的结点的负载更新信息素,当一只蚂蚁完成了他的任务分配后,依据公式(4)进行信息素的更新策略,并计算完成时间,过程如下:
3.1通过上式计算可得负载均衡因子LBij和资源的利用率可以定义当前VMj节点的负载状态LoadStatuej,分别是:超载状态OverLoaded、满载状态FullLoaded、正常负载状态NormalLoaded),其定义如下:如果,或表示任务i请求q资源的数量大于或等于虚拟机j上可用q资源的数量,因此虚拟机j上可用的资源不能满足任务i的资源请求,如果强制将任务i分配到虚拟机j上,虚拟机就会处于超载或满载状态,从而导致该虚拟机负载不均衡或虚拟机的利用率降低,因此,该任务不会分配到该虚拟机上,会转移到下一个可以接收该任务的虚拟机上,反之,如果表示该虚拟机处于可负载状态,且资源利用率不高,可以给该虚拟机分配任务;
3.2当满足正常负载状态,得出更新后的信息素浓度,
其中,表示更新后的信息素浓度,表示更新前的信息素浓度,ω为引入的奖惩系数,Lcur为当前路径的总长度,Llast为上一次的路径的总长度;
当出现最优路径时,对当前信息素浓度增加作为奖励,当出现相对较差路径时,则对当前信息素浓度减去作为惩罚,当出现最差路径时,则对当前信息素浓度减去作为严惩,增加双向收敛策略的目的是增加较优路径上的信息素浓度、减小较差路径上的信息素,使较多的蚂蚁更快集中到较好路径的搜索上以加快全局最优解搜索速度,并且扩大了解的范围;
应用在虚拟机调度中则可以抽象参数如下表示,赏罚系数定义如下:
tasklengthi表示当前任务i和已分配到j虚拟机上的所有任务的长度之和,单位为Million Instructions即每秒处理百万条的指令数,totaltasklengthj表示所有任务i和已分配到j虚拟机上的所有任务的长度之和,根据此时的ω可以计算出新的信息素浓度;
3.3设τij(t)是虚拟机VMj在t时刻的信息素浓度,信息素浓度的更新公式如下所示:
τij(t+1)=(1‑ω*ρ)*τij(t)+Δτij(t,t+1) (9)其中ρ∈(0 ,1)是信息素的衰减系数,如果ρ值越大就表明路径的信息素浓度受以前的影响程度就越小,Δτij(t,t+1)表示在本次循环中在VMj上的信息素增量;当一只蚂蚁完成了它的遍历,然后找出在当前时刻任务的最短完成时间,那么给这次遍历一个增强,对它所爬行过的虚拟机节点进行全局信息素更新,这时,其值更新如下:Δτij(t,t+1)=D/Tij (10)Tij表示任务i在最优分配中在VMj上处理花费的时间,D是一个常数;
步骤4,当蚂蚁移动到新的任务后,更新其经过路径的信息素,并修改禁忌表,在蚂蚁的每次搜索过程中,都会对信息素按(4)公式进行更新,当所有的蚂蚁完成一次迭代之后,即所有蚂蚁都完成了路径搜索时,跳转到步骤2,然后对路径上的虚拟机进行全局信息素更新;
步骤5,计算每只蚂蚁的任务完成时间,并保留当前时刻的最小的任务完工时间;判断是否满足迭代结束条件,如果满足,结束迭代过程并输出最优任务分配方案,否则,转到步骤2,直到满足迭代条件为止。