粒子群算法(PSO)总结:算法流程,实例,思路 您所在的位置:网站首页 简述遗传算法实现的流程 粒子群算法(PSO)总结:算法流程,实例,思路

粒子群算法(PSO)总结:算法流程,实例,思路

2024-07-13 23:10| 来源: 网络整理| 查看: 265

本文是偏应用的简要总结。

关于粒子群算法的基础知识和具体代码,网上有很多,不重复写了。本文没有代码,而是展示一个实例中的代码运行产生的中间结果,用于辅助理解算法流程。

本文分为四个部分: 第一部分,算法简要流程 第二部分,简单实例,按照第一部分的流程整理的代码运行时的迭代过程 第三部分,关于算法的全局搜索和局部搜索的理解 第四部分,算法思路整理

1. 简要流程

Step 1. 产生一批初始解(附带初始化粒子速度),作为当前种群(当前解集)Step 2. 计算当前种群(当前解集)里每个解的适应度(目标函数值)Step 3. 更新个体最优解与群体最优解 (开始进入迭代,迭代环节为Step 4 ~ Step 6)Step 4. 种群更新(当前解集的更新):利用速度、位置更新公式Step 5. 计算当前种群(当前解集)里每个解的适应度(目标函数值)Step 6. 更新个体最优解与群体最优解 (当满足迭代终止条件时,跳出迭代环节,执行Step 7)Step 7. 输出搜索到的最优解

2. 流程应用实例——求一元函数最小值

例子:求函数最小值

函数为y = (x-π)^2 + 20cos(x), x∈[-5,5] 

最小值:取x=π时,目标函数最小值为-20

自定义: 种群数量为8,限制最大速度0.5 (算法里的每种操作都可以自由设计,而且设计方式非常多)

代码运行迭代过程:(按第一部分的流程整理标注)

Step 1. 初始化时 种群粒子的速度 v: 0.5761 0.5616 0.9247 0.7607 0.3241 0.3785 0.6056 0.3797 种群粒子(就是解集) x: -4.8553 -0.7866 1.6045 -4.1107 -2.0870 4.4501 0.2913 1.5804Step 2. 计算每个解的目标函数值 y: 66.8003 29.5557 1.6885 41.2747 17.4665 -3.4746 27.2816 2.2452Step 3. 群体最优解更新为 gbest_x: 4.4501 gbest_y: -3.4746 此时最优解:4.4501  对应目标函数值:-3.4746

第一轮迭代:Step 4. 利用速度、位置更新公式 种群粒子的速度更新为 v: 0.5000 0.5000 0.5000 0.5000 0.5000 0.1514 0.5000 0.5000 种群粒子(就是解集)更新为 x: -4.3553 -0.2866 2.1045 -3.6107 -1.5870 4.6015 0.7913 2.0804Step 5. 计算每个解的目标函数值 y: 49.2139 30.9367 -9.0992 27.7538 22.0354 -0.0830 19.5823 -8.6305Step 6. 群体最优解更新为 gbest_x: 2.1045 gbest_y: -9.0992 此时最优解:2.1045  对应目标函数值:-9.0992

第二轮迭代:Step 4. 利用速度、位置更新公式 种群粒子的速度更新为 v: 0.5000 -0.1717 0.2000 0.5000 0.5000 -0.5000 0.5000 0.2027 种群粒子(就是解集)更新为 x: -3.8553 -0.4584 2.3045 -3.1107 -1.0870 4.1015 1.2913 2.2831Step 5. 计算每个解的目标函数值 y: 33.8388 30.8952 -12.6920 19.1006 27.1838 -10.5514 8.9410 -12.3344Step 6. 群体最优解更新为 gbest_x: 2.3045 gbest_y: -12.6920 此时最优解:2.3045  对应目标函数值:-12.6920

第三轮迭代:Step 4. 利用速度、位置更新公式 种群粒子的速度更新为 v: 0.5000 0.5000 0.0800 0.5000 0.5000 -0.5000 0.5000 0.1181 种群粒子(就是解集)更新为 x: -3.3553 0.0416 2.3845 -2.6107 -0.5870 3.6015 1.7913 2.4012Step 5. 计算每个解的目标函数值 y: 22.6653 29.5924 -13.9637 15.8417 30.5545 -17.7108 -2.5511 -14.2162Step 6. 群体最优解更新为 gbest_x: 3.6015 gbest_y: -17.7108 此时最优解:3.6015  对应目标函数值:-17.7108

迭代以此类推

3. 全局搜索 VS 局部搜索 将解集里的每个解与该解个体最优解的差值 视为 局部最优因素 将解集里的每个解与解集群体最优解的差值 视为 全局最优因素 全局搜索:群体算法,全局搜索能力强,解集里的每个解的更新增量受到局部最优因素与全局最优因素的影响,解更新之后有几率变动到解空间的任意地方 局部搜索:融入局部最优因素与全局最优因素的解的更新过程,可以认为是在解的邻域内搜索

个人看法:全局搜索能力和具体参数的设置有关 其他某些启发式方法,在迭代中后期仍然有几率搜索全部解空间,只是几率有大有小而已。(比如遗传算法,即使变异率设置很小,变异后的解仍然可能分布在解空间任意地方) 而对于粒子群算法,如果群体最优解对于解的更新的指引性太强、解的更新过程中的随机性太弱,那么,当解集向群体最优解汇聚的时候,群体最优解所在的一定范围之外的解空间就没有机会探索了。例如示意图中,红色点表示解,浅红色区域表示粒子在迭代过程中能搜索的解空间的范围。

图中,在搜索过程中,粒子几乎完全朝着最优解移动,粒子的搜索范围狭窄,导致搜索过程漏掉一些解空间。

4. 核心思路 兼顾全局最优解和局部最优解,解集里的每个解利用得到的全局最优解、局部最优解、随机因素更新自身为新解



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有