智能算法-粒子群算法(3)

语言: CN / TW / HK

theme: healer-readable

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

1. 粒子群算法

本节主要介绍粒子群算法的关键参数选取,简单回顾一下粒子群算法思路:一群分散的鸟儿在随机地飞行觅食,它们不知道食物所在的具体位置,在觅食过程中,每只小鸟都会记录自己飞行位置。突然,其中某一只小鸟A发现好多玉米,于是就喊:“快来,我这里有好多食物!”,然而,其他小鸟都只发现了零零星星的几个玉米粒。于是,每个小鸟在飞行的时候就有了一个指导的方向(往小鸟A的位置飞),但是,每个小鸟都有不忍心放弃当前努力搜寻过的位置(小鸟们心想:我这里刚才也找到点玉米粒,再继续找找说不定比你还要多)。因此,它们最终决定结合自身的经验整个群体的经验,调整自己的飞行速度和所在位置,不断地寻找更加接近食物的位置,最终使得群体聚集到食物位置。

粒子群算基本介绍及实例详解请参考智能算法-粒子群算法 - 掘金 (juejin.cn)

粒子群算法改进策略请参考智能算法-粒子群算法(2) - 掘金 (juejin.cn)

2. 关键参数选取

2.1 种群规模

种群规模N是指有多少个粒子,即粒子的数量。通常根据问题的复杂度来尝试选取,总结如下: - 影响算法的搜索能力和计算量 - 一般取 $20-40$ - 对于较难问题,可以取到100或200

2.2 粒子长度和范围

  • 粒子长度$D$相当于每个解的长度,一般根据具体问题来具体定义。
  • 粒子范围$R$由优化问题本身决定,将粒子规定在某一范围内,每一维可以设定不同的范围

2.3 粒子最大速度

粒子的最大速度$Vmax$,也就是限定每个粒子一次迭代最大移动的距离。其选取思想概括如下: - 决定粒子每一次的最大移动距离,制约着算法的探索和开发能力 - 一般取相应搜索空间的$10%-20%$

2.4 惯性权重

惯性权重控制着前一速度对当前速度的影响,用于平衡算法的探索和开发能力,该参数选取思路如下: - 一般设置从0.9线性递减到0.4 - 算法开始阶段,大的惯性因子可以使算法不容易陷入局部最优 - 算法的后期,小的惯性因子可以使收敛速度加快,使收敛更加平稳,不至于出现振荡现象

2.5 压缩因子

压缩因子$χ$限制粒子的飞行速度,保证算法有效收敛,其选取思路如下:

通常取值0.729,同时设c1和c2为2.05,可以保证收敛,但不能收敛到全局最优

2.6 加速系数$C1$和$C2$

加速系数代表了粒子向自身极值pbest和全局极值gbest推进的加速权值,通常情况下的选取经验概括如下: - 通常都等于2.0 - $c1$先大后小,而$c2$先小后大

2.7 算法终止条件

算法终止决定算法运行的结束,由具体的应用和问题本身确定,最简单的可以由达到规定的迭代次数作为终止条件,迭代次数一般设置500、1000、5000,需要根据具体问题规模去做不同尝试。