核心思想

粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出

是根据鸟类的捕食行为简化出的一种模型

假设一只鸟在捕食时,会和种群中其他的鸟类共享信息,并且根据自己寻找到的最优位置以及群体中给出的最优位置来改变自己的速度(包括大小与方向),从而从无序寻找到最终变成有序飞行。

其速度的改变遵循三条原则

  • 飞离离自己最近的目标,避免相撞
  • 整个群体飞向目标,并且飞向鸟群中心
  • 匹配邻域个体的速度

直观感受

神经网络中粒子群优化算法 pytorch 粒子群优化算法pso_机器学习

具体实现

  1. 在全局随机分布几个粒子
  2. 每个粒子有初始位置和初始速度
  3. 根据自己的位置,计算每个粒子当前的适应值
  4. 如果当前适应值超过了粒子的局部最优值对应的适应值,就用当前位置代替个体局部最优值
  5. 如果当前适应值超过了全局最优值对应的适应值,就用当前粒子的位置代替全局最优值
  6. 根据粒子的局部最优值和全局最优值来调整各个粒子的速度(包括大小和方向)
  7. 如果迭代次数达到预期或者全局最优值满足了预期的阈值,那么就结束迭代,否则从第3点开始重新迭代

数学公式

第 i 个粒子的第 k 次速度更新公式为:

神经网络中粒子群优化算法 pytorch 粒子群优化算法pso_迭代_02

  • 这只鸟第 k + 1 步的速度=上一步自身的速度惯性+自我认知部分+社会认知部分
  • pbestik 表示第 i 个粒子k-1次迭代后的局部最优值
  • gbestk表示k-1次迭代后的全局最优值
  • ω 表示速度的惯性系数 ,惯性系数越大,寻找全局最优值的能力越强,惯性系数越小,寻找局部最优值的能力越强
    ω通常是实时变化的,常用线性递减权值策略:
  • 神经网络中粒子群优化算法 pytorch 粒子群优化算法pso_概率论_03


  • 神经网络中粒子群优化算法 pytorch 粒子群优化算法pso_机器学习_04

  • c1表示个体学习因子,c2表示社会学习因子

流程图

神经网络中粒子群优化算法 pytorch 粒子群优化算法pso_机器学习_05