通过上面的论述,PSO 算法模型主要包括基本PSO 模型、带惯性权重的PSO 模型及带收缩因子的PSO 模型。这些模型中关键参数包括:种群大小m,加速常数c1 、c2 ,惯性权重
ω ,收缩因子χ 以及粒子最大速度Vmax 。
PSO算法中的参数选择直接关系到优化算法的性能,PSO算法模型提出后,如何确定PSO算法的最优参数设定得到了国内外研究人员的密切关注与研究。然而实际优化问题是复杂多样的,通过简单的相关参数设置就能让PSO算法适用于所有的优化问题是不可能也是不现实的。近些年来,国内外许多专家学者为了提高PSO算法的性能,深入分析了PSO算法中不同控制参数的实际作用,并通过大量实验探究不同的参数控制策略,并为其确定了相应的参考取值[39]。
(1) 惯性权重ω
惯性权重是粒子群算法的一个重要参数,控制其取值的大小可以调节PSO 算法的全局和局部寻优能力。一般认为较大的ω能增强算法的全局搜索能力,而较小的ω 能增强算法的局部搜索能力[40]。目前,采用较多的惯性权重调整策略是Shi 提出的线性递减权值策略(LDW)[41],根据公式(3.4),经典取值ωmax=0.9∼1.4,ωmin=0.4。
(2) 收缩因子
带收缩因子的PSO模型中引入收缩因子χ来保证PSO算法收敛。在使用带收缩因子的PSO模型时,根据公式(3.6),通常取ϕ=4.1,从而使收缩因子χ=0.729。惯性权重ω和收缩因子χ这两个参数从数学上分析是等价的,都是为了有效地控制粒子的飞行速度。
(3) 加速因子
加速因子c1 和c2 的引入是为了使粒子具有向种群中最优个体学习以及自我认知的能力。根据标准粒子群算法的速度更新公式(3.3),分析加速因子c1和c2的取值对粒子速度更新的影响。如果c1 = 0 ,则表示粒子群体缺乏自我认知和自我总结的能力,成为“只有社会”模型。如果c2 = 0 ,则表示粒子群体缺乏向种群中其他优秀个体粒子学习的能力,各个粒子间没有信息的交流,成为“只有认知”模型。如果c1 = c2 = 0 ,粒子群体将会完全缺失“社会经验”和“自身经验”,唯一影响其搜索方向只剩下粒子先前速度,粒子将会保持先前速度一直飞行,
直到飞出目标搜索区域。以上几种情况,粒子种群最终都不能找到高质量的全局最优解。在粒子群算法早期的研究阶段,Shi等认为c1 和c2这两个参数的取值应该相同,并通过实
验研究提出当c1= c2= 2时,粒子群算法有较好的搜索性能。随着粒子群算法研究的深入,学
者Ozcan 和Mohan 提出了不同的建议,他们建议将c1 和c2 这两个参数同时取为1.494。后来,学者Ratnaweera 等[42]在研究人员Venter 研究的基础上提出了认知系数与社会系数随时间动态调整的策略,建议在粒子迭代的过程中认知系数从2.5 线性递减至0.5,而社会系数则从0.5 线性递增至2.5。
(4) 种群规模
粒子种群规模的大小同样也会影响粒子群算法的性能,也是其中的关键参数。粒子数太少,容易使粒子陷入局部最小值,但粒子数到达一定数量后,再增加粒子,算法的性能也不会有太大的改善,而且会增大算法的时间复杂度[43]。粒子种群规模m 的大小的选择没有明确的公式依据,一般采用经验法取20~40 个,粒子数的选择与实际问题有关,对于高维或特定类别的问题,粒子数可以相应的增加,可以取到100~200。
(5) 粒子最大速度
粒子最大速度Vmax 约束着粒子个体在目标搜索空间迭代飞行中的最大速度。通过粒子最大速度Vmax 能够很好防止全局搜索导致的发散现象的产生,有了Vmax 的约束,粒子能够很好控制其搜索的速度和范围。如果Vmax 的值太大,粒子虽然能够很快的分散到整个搜索空间,但是也容易飞过最优解的区域;如果Vmax 的值太小,虽然能够保证粒子不会飞出搜索区域,但是会导致整个粒子群体的搜索速度太慢,极易陷入局部最优解。所以确定一个合适的粒子最大速度Vmax 关系到粒子群算法能否高效的运行。