1. 粒子群算法思想起源

粒子群优化算法 ( P a r t i c l e S w a r m o p t i m i z a t i o n , P S O ) (Particle Swarm optimization,PSO) (ParticleSwarmoptimization,PSO)又称为粒子群算法。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。

1987年,生物学家Craig Reynolds提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都遵循:

  • 避免与邻域个体相冲撞;
  • 匹配邻域个体的速度;
  • 飞向鸟群中心,且整个群体飞向目标。
  • 仿真中仅利用上面三条简单的规则,就可以非常接近地模拟出鸟群飞行的现象。

1990年,生物学家Frank Heppner也提出了鸟类模型,它的不同之处在于:

  • 鸟类被吸引飞到栖息地。
  • 在仿真中,一开始每一只鸟都没有特定的飞行目标,只是使用简单的规则确定自己的飞行方向和飞行速度,
  • 当有一只鸟飞到栖息地时,它周围的鸟也会跟着飞向栖息地,最终整个鸟群都会落在栖息地。

1995 年,美国社会心理学家 James Kennedy 和电气工程师Russell Eberhart 共 同 提 出 了 粒 子 群 算 法 ( Particle Swarm Optimization,PSO),该算法的提出是受对鸟类群体行为进行建模与仿真的研究结果的启发。

  • 他们的模型和仿真算法主要对Frank Heppner的模型进行了修正,以使粒子飞向解空间并在最优解处降落。
  • 粒子群算法一经提出,由于其算法简单,容易实现,立刻引起了进化计算领域学者们的广泛关注

2. 算法原理

2.1 算法策略

粒子群优化算法源自对鸟群捕食行为的研究:

  • 一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远
  • 那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域
  • 粒子群算法利用这种模型得到启示并应用于解决优化问题。
2.2 算法建模
  • 粒子群算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。
    • 每个粒子有了初始位置与初始速度,然后通过迭代寻优。
  • 在每一次迭代中,每个粒子通过跟踪 两个“极值” 来更新自己在解空间中的空间位置与飞行速度:
    • 一个极值: 就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫作个体极值
    • 另一个极值: 是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值

2.3 建模

假设在一个 D D D维的目标搜索空间中,有 N N N 个粒子组成一个群落,其中 i i i 个粒子表示为一个 D D D 维的向量

在这里插入图片描述
i i i 个粒子的 “飞行”速度 也是一个 D D D 维的向量,记为

在这里插入图片描述
i i i 个粒子迄今为止搜索到的最优位置称为个体极值,记为

在这里插入图片描述

整个粒子群迄今为止搜索到的最优位置为全局极值,记为
在这里插入图片描述

在找到这两个最优值时,粒子根据如下的式 ( 6.5 ) (6.5) 6.5和式 ( 6.6 ) (6.6) 6.6来更新自己的速度和位置:

在这里插入图片描述

  • 其中: c 1 c_1 c1 c 2 c_2 c2 为学习因子,也称加速常数; r 1 r_1 r1 r 2 r_2 r2 [ 0 , 1 ] [0,1] [01]范围内的均匀随机数, i = 1 , 2 , … , D i =1,2,…,D i=1,2,,D
  • v i j v_{ij} vij 是粒子的速度 , v i j ∈ [ − v m a x , v m a x ] v_{ij} ∈[-v_{max}, v_{max}] vij[vmaxvmax], max 是常数,由用户设定来限制粒子的速度。

式(6.5)右边由三部分组成:

  • 第一部分为“惯性”或“动量”部分,反映了粒子的运动“习惯”,代表粒子有维持自己先前速度的趋势;
  • 第二部分为“认知”部分,反映了粒子对自身历史经验的记忆或回忆,代表粒子有向自身历史最佳位置逼近的趋势;
  • 第三部分为“社会”部分,反映了粒子间协同合作与知识共享的群体历史经验,代表粒子有向群体或邻域历史最佳位置逼近的趋势。

3.标准粒子群算法流程

引入研究粒子群算法经常用到标的准两粒个子群概算念法:

  • 一是“探索”,指粒子在一定程度上离开原先的搜索轨迹,向新的方向进行搜索,体现了一种向未知区域开拓的能力,类似于全局搜索;
  • 二是“开发”,指粒子在一定程度上继续在原先的搜索轨迹上进行更细一步的搜索,主要指对探索过程中所搜索到的区域进行更进一步的搜索。
  • 探索能力是一个算法的全局搜索能力。开发是利用一个好的解,继续原来的寻优轨迹去搜索更好的解,它是算法的局部搜索能力。
3.1 标准粒子群算法

如何确定局部搜索能力和全局搜索能力的比例,对一个问题的求解过程很重要。1998年,Shi Yuhui等人提出了带有惯性权重的改进粒子群算法,由于该算法能够保证较好的收敛效果,所以被默认为标准粒子群算法

在这里插入图片描述
可以看出,式 ( 6.7 ) (6.7) 6.7中惯性权重 w w w 表示在多大程度上保留原来的速度:

  • w w w较大,则全局收敛能力较强,局部收敛能力较弱;
  • w w w较小,则局部收敛能力较强,全局收敛能力较弱。

实验结果表明:

  • 在0.8~1.2之间时,粒子群算法有更快的收敛速度;
  • 而当 1.2时,算法容易陷入局部极值。
3.1.1 动态惯性权重值

另外,在搜索过程中可以对 w w w 进行动态调整:

  • 在算法开始时,可给 w w w 赋予较大正值,随着搜索的进行 ,可以线性地使 w w w 逐渐减小。
  • 这样可以保证算法开始时,各粒子能以较大的速度步长在全局范围内探测较好的区域;
  • 而在搜索后期,较小的 w w w 值则保证粒子能够在极值点周围做精细的搜索,
  • 从而使算法有较大的概率向全局最优解位置收敛。

w w w 进行调整,可以权衡全局搜索和局部搜索能力。目前,采用较多的动态惯性权重值是Shi提出的线性递减权值策略,其表达式如下:

在这里插入图片描述
式中:

  • T m a x T_{max} Tmax表示最大进化代数;
  • w m i n w_{min} wmin表示最小惯性权重;
  • w m a x w_{max} wmax 表示最大惯性权重;
  • t t t 表示当前迭代次数。
  • 在大多数的应用中, w m a x = 0.9 , w m a x = 0.4 w_{max}=0.9, w_{max}=0.4 wmax=0.9wmax=0.4
3.2 算法流程

在这里插入图片描述

在这里插入图片描述

4. 粒子群算法特点

实践证明,它适合在动态、多目标优化环境中寻优,与传统优化算法相比,具有较快的计算速度和更好的全局搜索能力。

  • 由于参数少而容易实现,对非线性、多峰问题均具有较强的全局搜索能力
  • 粒子群算法特有的记忆使其可以动态地跟踪当前搜索情况并调整其搜索策略。
  • 另外,粒子群算法对种群的大小不敏感,即使种群数目下降时,性能下降也不是很大。
  • 该算法能以较大概率收敛于全局最优解。

参考

《智能优化算法及其Mtalab实例 第二版》

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐