粒子群优化算法(Particle Swarm Optimization, PSO)

特点

粒子群算法具有收敛速度快参数少算法简单易实现的优点(对高维度优化问题,比遗传算法更快收敛于最优解),但是也存在容易陷入局部最优解的问题,因此依赖于良好的初始化。

基本思想

每个粒子都尽自己所能找到自己认为最优的解,即局部最优解,并进行标记其位置,同时每个粒子共享自己局部最优解的值和位置。然后再下一轮寻找过程中,每个粒子都会根据自己记忆中最优解和整个粒子群最优解调整接下来的搜索方向。这样经过一段时间的搜索粒子群就可以找到全局最优解(示意图如图1所示)。

图1 粒子群算法示意图

算法

图2 粒子群算法流程图

注:初始化种群既包含可变部分,也包含不可变部分,这一点和遗传算法的初始化种群相似(如图3所示)。

图3 初始化种群示意图

PSO伪代码


1、选择初始化权重,粒子数量,最大迭代次数

2、初始化种群

3、    创建种子向量作为粒子

4、    随机化产生剩余的粒子

5、    随机化长生初始化速度

6、while (迭代次数 < 最大迭代次数 && 改善值 > 最小改善值)do

7、     计算每个粒子的适应度

8、     更新全局最好适应度和每个粒子的最好适应度

9、     for 每个粒子 do

10、       计算位置与粒子最佳适应度的距离

11、        计算位置与全局最佳适应度的距离

12、        更新粒子速度

13、        更新粒子位置

14、输出全局最佳适应位置


速度更新公式

实际上就是粒子下一步迭代移动的距离和方向,即动量。

公式1 粒子群速度更新公式

惯性部分:由惯性权重\omega和粒子自身速度v_{id}^{k}构成,表示粒子对先前自身运动状态的信任。

认知部分:表示粒子本身的思考,即粒子自己经验的部分,可理解为粒子当前位置x_{id}^{k}与自身历史最优位置p_{id,pbest}^{k}之间的距离和方向。

社会部分:表示粒子之间的信息共享与合作,即来源于群体中其他优秀粒子的经验,可理解为粒子当前位置x_{id}^{k}与群体历史最优位置p_{d,gbest}^{k}之间的距离和方向。

其中c_{1}标识个体学习因子,c_{2}表示群体学习因子;r_{1}r_{2}是位于 [0, 1] 内的随机数,增加搜索的随机性。

粒子下一步迭代的移动方向 = 惯性方向 + 个体最优方向 + 群体最优方向(如图4所示)

图4 例子速度更新方向示意图

位置更新公式

位置更新公式 = 上一步的位置 + 下一步的速度:

参考:

粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎 (zhihu.com)

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值