前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】「建议收藏」

一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】「建议收藏」

作者头像
全栈程序员站长
发布2022-11-07 16:33:46
2.1K0
发布2022-11-07 16:33:46
举报

大家好,又见面了,我是你们的朋友全栈君。

Python代码链接放文末。

本文参考了很多张军老师《计算智能》的第六章知识。

本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453

粒子群优化算法

1.1 粒子群优化算法简介

粒子群优化算法(Particle Swarm Optimization,PSO)是进化计算的一个分支,是一种模拟自然界的生物活动的随机搜索算法。

PSO模拟了自然界鸟群捕食和鱼群捕食的过程。通过群体中的协作寻找到问题的全局最优解。它是1995年由美国学者Eberhart和Kennedy提出的,现在已经广泛应用于各种工程领域的优化问题之中。

1.1.1 思想来源

从动物界中的鸟群、兽群和鱼群等的迁移等群体活动而来。在群体活动中,群体中的每一个个体都会受益于所有成员在这个过程中所发现和累积的经验。

1.1.2 基本原理

在这里插入图片描述
在这里插入图片描述

以鸟群觅食为例,与粒子群优化算法作对比,如上。

在粒子群优化算法中,鸟群中的每个小鸟被称为“粒子”,且同小鸟一样,具有速度和位置。

通过随机产生一定数量的粒子(具体定多少数量后面会讲)作为问题搜索空间的有效解,然后进行迭代搜索,通过该问题对应的适应度函数确定粒子的适应值,得到优化结果。

那具体怎么迭代搜索呢?后面实例会具体讲到。

且这里记得有所谓的“粒子本身的历史最优解”和“群体的全局最优解”,这两个用来影响粒子的速度和下一个位置,借此求得最优解。

1.2.1 基本流程

来看一下PSO的算法步骤: (1)初始化所有粒子,即给它们的速度和位置赋值,并将个体的历史最优pBest设为当前位置,群体中的最优个体作为当前的gBest。 (2)在每一代的进化中,计算各个粒子的适应度函数值。 (3)如果当前适应度函数值优于历史最优值,则更新pBest。 (4)如果当前适应度函数值优于全局历史最优值,则更新gBest。 (5)对每个粒子i的第d维的速度和位置分别按照公式6.1和公式6.2进行更新:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)判断是否达到了结束条件(具体怎么定义后面会提),否的话就转到(2)继续执行。

算法流程图和伪代码

在这里插入图片描述
在这里插入图片描述

1.2.2 应用举例

上面看不懂?

没关系,看了这个实例,保证你能理解最简单的PSO是如何实现的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意对于越界的位置,需要进行合法性调整,将超出定义范围的数值改成范围内的边界值。

1.3 粒子群优化算法的改进研究

粒子群优化算法的研究内容和改进方向

在这里插入图片描述
在这里插入图片描述

1.3.1 理论研究改进

年代久远,看看就成了。

在这里插入图片描述
在这里插入图片描述

1.3.2 拓扑结构改进

1.静态拓扑结构‘’

全局版本(Global Version PSO, GPSO)和局部版本(Local Version PSO, LPSO)两个主要范式。

两者主要区别在于社会网络结构的定义不同。

从全局和局部其实也不难看出,粒子在更新速度和位置的时候,前者使用到的是自身的历史最好位置pBest和整个群体中最好的位置gBest,而后者的话,每个粒子所处的“社会”不是整体,而是一个小的邻域。更新速度和位置时用到的除了自身最好的历史位置pBest外,还用到邻域中的最好位置lBest作为更新的向导。

不难发现,后者的多样性更好,在处理复杂的问题的时候,LPSO也会表现出更好的性能。

在这里插入图片描述
在这里插入图片描述

2.动态拓扑结构

由于即使是LPSO也很容易陷入局部最优的问题,而研究动态拓扑结构是希望能够通过在不同的进化阶段使用不同的拓扑结构,动态地改变算法的探索能力和开发能力,在保种群多样性和算法收敛性上取得动态的变化和平衡,以提高算法的整体性能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.其他拓扑结构

在这里插入图片描述
在这里插入图片描述

1.3.3 混合算法改进

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3.4 离散版本改进

PSO是非常适合于连续领域问题优化的算法,且已经在此取得相当成功的应用。

离散版本改进将PSO运用到离散领域(组合优化)之中。

在众多的离散PSO改进版本中,二进制编码PSO和整数编码PSO是常见的两种形式。

在这里插入图片描述
在这里插入图片描述

1.4 相关应用

年代久远,看看就成。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 参数设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码下载链接,有需要的请自行提取,不想hua前的朋友,可评论同我说,我会回复你,但可能会比较慢。祝好!

https://download.csdn.net/download/qq_44186838/62602814 智能优化算法大礼包

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183088.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年10月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档