1.一种面向云计算任务调度的改进粒子群算法,其特征在于,包括以下步骤:步骤S1.粒子编码及适应度函数的选择:将粒子群算法应用于云环境中的任务调度时,由于待分配子任务通常都是离散值,所以需要对粒子进行编码,粒子包含位置和速度两个属性,通过编码将任务调度与粒子位置和速度相结合,云计算中任务是离散值,因此对粒子采用自然数编码,设有n个任务,分配给m台虚拟机,粒子种群规模为NP,每个粒子的位置由向量P表示,则第i个粒子可编码为式(1)所示的n维向量:Pi={pi1,pi2,…,pij,...,pin} (1)
式(1)中1≤pij≤m,每一维分量表示分配给此任务的虚拟机,初始化时,pij的取值范围为0到m+1之间的随机整数,粒子速度则由向量V表示,第i个粒子的速度表示为:vi={vi1,vi2,...,vij,...,vin} (2)
式(2)中,‑m≤vij≤m,vij初始化时为‑m到m之间的随机数;
定义两个n*m的矩阵Time和S,如下所示;
相应任务与对应虚拟机之间的关系通过矩阵S中对应行列的取值表示,Sij表示任务i在虚拟机j上是否执行,若Sij为0,表示任务i不在虚拟机j上执行,反之为1;
其中Timeij表示虚拟机j处理完任务i所用时间,Timeij等于任务i的长度与虚拟机j的执行速度之比,可以得出虚拟机j上的执行时间为:时间FTime的大小,FTime即每个虚拟机完成任务时间中的最大值,如公式(6)所示;
适应度函数就是FTime;
步骤S2.改进动态惯性权值策略:采用混合了随机和非线性递减的惯性权重策略,即在惯性权重非线性递减的过程中穿插随机惯性权重,这一随机性并不是真正的随机取值,而是通过借鉴模拟退火的思想将随机取值结果分为急剧加大或缩小惯性权重两类;
标准粒子群算法由以下两个公式确定;
式(7)中ω是惯性权重,它的取值大小表示粒子在下一次迭代时的速度对粒子当前速度的参考比重;
在算法迭代过程中,每隔5次迭代,获取粒子当前的适应度值 和前一次适应度值设概率值p,p的取值公式如下:式(10)中, 表示粒子i到t次迭代为止的平均适应度值, 表示
粒子i到t次迭代为止的最优解的适应度值,每隔5次迭代时惯性权重的取值公式如下:平时迭代中惯性权重的取值公式如下:
式(11)中random是取值为0到1之间的随机数,式(12)中t为当前迭代次数,Tmax为最大迭代次数,当t=0时,ω取值为ωs,当t=Tmax时,ω取值为ωe,ωs取0.9,ωe取0.4,Tmax取
1000,式(11)和式(12)组成新的动态惯性权值策略,当t取0时,ω取值为ωs,当t取Tmax,ω取值为ωe;
随着迭代的进行,惯性权重从整体上看由0.9非线性减至0.4,期间每隔5 次迭代,若粒子当前的适应度值也就是任务完成的时间比上一次迭代的适应度值大时,加大惯性权重,提高搜索范围,若当前粒子适应度值小于上次迭代时产生的适应度值,则按照一定的概率选择加大或者减小惯性权重;
步骤S3.更新粒子位置和速度:每一次迭代,粒子的速度按照公式(7)和公式(9)~(12)进行更新,由于任务调度是离散问题,采用的是自然数编码,按照公式(8)更新后会变为浮点数,某些维度的分量可能超出规定的取值范围,对浮点数依次取绝对值,向下取整,取余,公式如下:更新后的粒子速度也可能超出范围使得粒子飞出可行范围,因此设定粒子最大飞行速度Vmax,若|vij|>Vmax,vij=Vmax/2,计算新粒子的适应度函数值,产生新的全局最优解和个人最优解;
步骤S4.加入混沌扰动策略:采用Logistic映射产生的混沌序列,其方程为:zk+1=μzk(1‑zk) (14)
当粒子种群迭代一定次数后,全局最优值会出现保持不变的情况,这时候对全局最优值对应的粒子采用混沌序列进行扰动,将全局最优粒子的每一维都映射到(0,1)区间,产生一个新的向量A=(a1,a2,…,an),向量A中每一维分量的取值范围为(0,1),然后利用向量A作为初始值带入式(14)产生新的序列z1,将z1代入适应度函数计算并与全局最优解的适应度值进行对比,若优于当前最优解,则将z1更新为全局最优解。