本文介绍的一种使用收缩因子的粒子群优化算法是基于Eberhart R C发表的一篇名为《Comparing inertia weights and constriction factors in particle swarm optimization》论文而写的,在该论文中作者首次提到了该算法,并使用该算法与带有惯性权重的粒子群优化算法进行比较。
在参考文献[1]中Eberhart R C提到了本文所讲的算法,并将使用惯性权重的粒子群优化算法与使用收缩因子的粒子群优化算法进行性能上的比较。通过使用五个基准函数进行比较后得出的结论是,使用收缩因子的粒子群优化算法在性能上要优于使用惯性权重的粒子群优化算法,并且这种方法在基准函数上的性能优于作者已知的任何其他已发表的结果。在之后Kennedy, J. 和 R. Mendes在《Population structure and particle swarm performance》再次提及该算法。
在文献[1]中作者介绍了一种带有收缩因子的粒子群算法,对于算法的来由却没有细致的讲解,只是说在众多的测试当中得到该方法。在文献[2]中提及这是实现了文献[3]中的第一种类型聚拢的粒子群优化算法。对于文献[3],该文分析了粒子在离散时间运动时的轨迹(代数观点),然后发展到连续时间的观点(分析观点)。开发了一个五维描述,它完整地描述了系统。这些分析导致了算法的广义模型,其中包含一组用于控制系统收敛趋势的系数。粒子群优化器的一些结果,实现了从分析中得出的修改,提出了改变原始算法的方法,以消除问题并提高粒子群找到一些经过充分研究的测试函数的最优值的能力。
但是对于本文所讲的粒子群优化算法,或许可以使用一种更为方便理解的方式进行描述。为了便于描述,接下来使用 VPSO 代指使用收缩因子的粒子群优化算法,OPSO 代指使用惯性权重的粒子群优化算法。
首先,该算法对于普通的粒子群优化算法的结构并未有较大的改变,主要变化在于速度的更新,即与在 粒子群优化二 中介绍的带惯性权重
这会带来怎样的效果呢?可以举一个简单的例子!
公式(2)中的速度更新是通过粒子历史最优以及全局历史最优两者的矢量和叠加得到的,而后再加上上一次速度的
在OPSO中
在文献[1]中作者对速度的设置是和位置取值范围相同的,同时对粒子是否越界不进行判断的,但是其实只要对应算法采用的方式一样,那么通过对比便能得出VPSO确实比其他粒子群优化算法要更为优越。
VPSO实现和其他算法一样,除了速度的更新方式不同,具体代码请见code文件夹,可获取相应语言的完整代码。
[1] Eberhart R C . Comparing inertia weights and constriction factors in particle swarm optimization[C]// Proceedings of the 2000 IEEE Congress on Evolutionary Computation, La Jolla, CA. IEEE, 2002. [2] Kennedy, J. and R. Mendes (2002). Population structure and particle swarm performance. Proceedings of the Evolutionary Computation on 2002. CEC '02. Proceedings of the 2002 Congress - Volume 02, IEEE Computer Society: 1671–1676. [3] Clerc M , Kennedy J . The particle swarm - explosion, stability, and convergence in a multidimensional complex space[J]. IEEE Transactions on Evolutionary Computation, 2002, 6(1):58-73.