带有正负反馈性质的粒子群优化算法
2015-12-20黎红玲刘好斌
黎红玲,罗 林,刘好斌
(内江师范学院数学与信息科学学院,四川内江 641112)
粒子群优化(PSO)是由Kennedy和Eberhart于1995年提出的一种进化计算技术,其基本思想源于对鸟群捕食行为的模拟[1]。PSO算法具有简单易懂、容易实现、收敛速度快等特点,但在搜索后期收敛速度变慢,局部收敛能力减弱,容易陷入局部最优。
为提高粒子群优化算法的求解质量,许多学者针对算法本身的进行了改进:如带粒子释放和速度限制的改进算法[2],文献[3]引入速度因子和位置因子参数,增强粒子活性和粒子的多样性,取得了良好的实验效果。Shi等人[4]首次将惯性权重引入 PSO算法中后,许多人对惯性权重进行了改进,例如利用个体寻优来定义惯性权重[5],使惯性权重线性微分或非线性微分递减[6],用典型线性递减策略和动态变化策略相结合的方法来确定惯性权重[7]等,或者利用惯性权重函数对学习因子进行改进[8],对参数进行全局性调整[9]。如混合蛙跳算法来简化粒子群优化算法[10],各种改进都在不同程度了促进了粒子群优化算法的研究与发展。
本文针对粒子群优化算法的早熟现象及后期局部搜索能力弱的缺点,利用正负反馈的原理来调整算法的惯性权重,增加粒子的多样性以及增强算法的局部寻优能力;同时利用随机数来动态调整位置更新公式,类似蛙跳算法中对青蛙步长的调整[10]。文章结合这两种改进得出新的粒子群算法。
1 标准PSO算法
粒子群优化算法是一种模拟鸟群飞行的人工智能算法,采用“群体”和“进化”的概念,将群体中的成员描述为“微粒”,所有粒子通过一个适应函数来确定其在空间中的适应度。进化初期,每个粒子的位置和速度都被随机初始化,粒子在飞行过程中相互合作,根据自身和同伴的运动状态及时调整速度和位置。在PSO算法中每个粒子都是解空间的一个解,每个粒子均知道自身位置和其他粒子的信息,通过自身的最优位置,再结合群体最优位置区调节自身的位置和速度,从而找到最优值。
假设在一个D维的目标搜索空间中,有m个粒子组成,其中第个粒子表示为一个D维的向量xi=(xi1,xi2,…,xiD),i=1,2,3,…m,即第 i个粒子在 D 维的搜索空间中的位置是xi,第i个粒子的速度vi=(vi1,vi2,…,viD)。记第i个粒子搜索到最好的位置pi=(pi1,pi2,…,piD),整个群体搜索到最好的位置 pg=(pg1,pg2,…,pgD)。
在PSO算法中,粒子的速度-位置方程描述为:
其中,w为惯性权重,是[0.4,0.9]之间的随机数,c1和c2是学习因子;r1,r2为介于[0,1]之间的随机数,vid∈[-vmax,vmax]。w是对自身运动状态的信任,c1是“认知部分”权重,是对粒子自身的思考。c2是“社会认知”权重,是粒子间的信息共享,来源于群体中各个优秀粒子的经验。
2 一种新的粒子群优化算法
2.1 惯性权重的调整
文献[11]从收敛性能上分析提出一种惯性权重正弦调整的粒子群算法,即w满足
其中,k为当前迭代次数;max为最大迭代次数。由w值呈正弦变化可知,整个算法过程中,粒子先在其自身附近作局部寻优,接着进行全局寻优,最后让最优粒子进行局部搜索。本文针对此改进引入了正负反馈机制来调整惯性权重:结合算法的迭代次数,达到权重的实时变化,并通过惯性权重的动态调整达到对粒子群的正负反馈。在式(3)中,若w为正值,体现系统对前期结果的认可,进行一次正反馈;若w为负值,相当于对前一次迭代的结果进行一次反思,接受解在一定程度上的退化,体现系统对前期结果的负反馈。另外,在迭代过程中,让惯性权重在一定范围内变化,不仅增加了粒子的多样性,也有利于算法跳出局部最优值。实验表明,利用正负反馈的原理动态调整惯性权重,增强了算法发现最优解的能力。将权重公式调整如下
其中,k为当前迭代次数;h为[0,1]之间的反馈参数;wmax和wmin分别为惯性权重的最大值、最小值。
2.2 位置更新公式的改进
参数调整的目的在于提高算法搜索能力,式(1)和式(2)值的大小反映了粒子最新位置会受到前一速度和位置作用的影响,若此值较大,粒子飞行速度大,搜索范围广,搜索比较粗糙;如果此值比较小,粒子飞行速度慢,搜索范围小,搜索比较细致。而位置更新过程会导致粒子快速的陷入局部最优,为增强粒子的多样性,增加搜索能力,本文利用随机数来调整位置更新公式。
位置更新公式的改进目的在于提高粒子群优化算法的搜索能力,即提高粒子群算法的精度和收敛速度。在文献[12]中,对位置更新公式作以下调整
文献[12]利用随机数来调整位置更新公式,即
其中,β为(0,1)之间的随机数。对位置更新公式添加权重,提高了粒子群优化算法的精度。
3 仿真实验
3.1 测试函数
对于上述策略,通过4个典型测试函数进行测试。
f1:Rosenbrock函数,单峰,最优值为0。
f2:Griewank函数,多峰,最优值为0。
f3:Sphere函数,单峰,最优值为0。
f4:Rastrigin函数,多峰,最优值为0。
3.2 惯性权重中的反馈参数的测试
利用f3:Sphere函数,在标准粒子群算法的基础上,对式(3)中的h进行实验。对不同的h取值,算法分别运行各10次后取平均值及10次的标准差,根据文献[8 ~9,13]均取 wmax和 wmin为 0.9 和 0.4,实验结果如表1所示,可以看出,当反馈参数取0.8时,反馈效果较好。
表1 反馈参数对算法性能的影响分析
3.3 更新公式的测试
利用f3:Sphere函数,在标准粒子群算法的基础上,对位置更新式(4)和式(5),采用标准的PSO进行测试,分别运行算法各10次后取平均值以及10次的标准差,结果如表2所示,可看出,采用式(5)效果最好。
表2 更新公式对算法的影响分析
根据上述测试结果,改进算法采用式(3)进行惯性权重的更新公式,在公式中反馈参数取0.8。对位置更新公式采用式(5)进行。
3.4 改进算法的测试
根据以上测试结果,取反馈参数h为0.8,更新公式为式(5),β取之间的随机数。由文献[8~9,13],wmin,wmax分别取0.4和0.9,学习因子均取2,迭代次数为100次,维数为10,结果如表3所示。
表3 标准PSO与改进算法测试结果比较表
上述4个测试函数中,改进算法的最优值比标准PSO算法更理想,说明改进了算法的有效性。另外,从解的稳定性角度出发,由平均值和标准差的结果可以得到,改进算法的整体效果明显优于标准算法。特别针对典型的多峰Griewank函数和Rastrigin函数,改进算法能找到最优值,避免了陷入局部最优。
综上所述,改进后的粒子群算法能有效地抑制早熟收敛问题,且改进算法在收敛速度和收敛精度上都有明显提高,尤其对多峰函数更为明显。
4 结束语
本文对惯性权重进行分析,利用正负反馈的原理,对惯性权重进行了动态调整;通过增加随机性改进更新公式的改进,实验也验证了惯性权重的反馈因子和更新公式的有效性。大量的仿真实验结果表明,改进后的粒子群算法的求解质量比改进前的粒子群算法的求解质量更高,特别在多峰函数中表现明显。
[1]Kennedy J,Eberhart R.Particle swarm optimization[C].Perth Australia USA:Proceedings of the IEEE International Conference on Netural Network,IEEE Press,1995.
[2]吴正可,杨青真,施永强,等.带粒子释放和速度限制的粒子群算法[J].计算机应用研究,2013,30(3):682 -683.
[3]纪雪玲,李明,李玮.一种克服局部最优的收缩因子PSO算法[J].计算机工程,2011,10(20):213 -215.
[4]Shi Y,Eberhart R C.A modified particle swarm optimizer[C].Piscataway:IEEE World Congress on Computational Intelligence:The 1998 IEEEInternational Conference on Evolutionary Conference on Evolutionary Computation Proceedings,IEEE,1998:69 -73.
[5]董平平,高东慧,田雨波,等.一种改进的自适应惯性权重粒子群优化算法[J].计算机仿真,2012,29(12):283 -286.
[6]胡建秀,曾建潮.微粒群算法中惯性权重的调整策略[J].计算机工程,2007,3(11):193 -195.
[7]郜振华,梅莉,祝远鉴.复合策略惯性权重的粒子群优化算法[J].计算机应用,2012,32(8):2216 -2218.
[8]赵远东,方正华.带有权重函数学习因子的粒子群算法[J].计算机应用,2013,33(8):2265 -2268.
[9]杜荣华.一种促进PSO全局收敛的参数调整策略[J].系统工程与电子技术,2009,31(6):1454 -1457.
[10]黄太安,生佳根,徐红洋,等.一种改进的简化粒子群算法[J].计算机仿真,2013,30(2):327 -330.
[11]姜长元,赵曙光,沈士根,等.惯性权重正弦调整的粒子群算法[J].计算机工程与应用,2012,48(8):40 -42.
[12]马莉.Matlab数学实验与建模[M].北京:清华大学出版社,2010.
[13]邵洪涛,秦亮曦.带变异算子的非线性惯性权重PSO算法[J].计算机技术与发展,2012,22(8):30 -38.