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

一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】「建议收藏」粒子群优化算法1.1粒子群优化算法简介粒子群优化算法(ParticleSwarmOptimization,PSO)是进化计算的一个分支,是一种模拟自然界的生物活动的随机搜索算法。PSO模拟了自然界鸟群捕食和鱼群捕食的过程。通过群体中的协作寻找到问题的全局最优解。它是1995年由美国学者Eberhart和Kennedy提出的,现在已经广泛应用于各种工程领域的优化问题之中。1.1.1思想来源从动物界中的鸟群、兽群和鱼群等的迁移等群体活动而来。在群体活动中,群体中的每一个个体都会受益于所有成员在

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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.net/183088.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • when和while的区别和用法_when后面加do还是doing

    when和while的区别和用法_when后面加do还是doingwhen和while的区别主要有:指代不同、从句动词不同、时间状态不同、用法不同等。1、指代不同:when是atorduringthetimethat既指时间点,也可指一段时间,while是duringthetimethat只指一段时间。2、从句动词不同:when引导的时间状语从句中的动词可以是终止性动词,也可以是延续性动词,而while从句中的动词必须是延续性动词。3、时间状态不同:when说明从句的动作和主句的动作可以是同时,也可以是先后发生,while则强调主句的动作在从句

    2025年8月25日
    4
  • 做3D游戏建模师有年龄限制吗?

    做3D游戏建模师有年龄限制吗?3D游戏建模师是一门非常火热的行业,现在很多游戏厂商都在高薪招聘3D游戏建模师。因此很多人在想要学习次世代建模技术的同时,又担心企做这个会不会有年龄的限制。其实大可不必担心,因为只要本身具有学习能力,愿意接受新知识,愿意与时俱进的提高自己,那么年龄就不是你的问题。其实年龄大的人从事3D游戏建模行业也是有一定优势的,他们生活阅历丰富,对于如何把握人物建模和场景建模方面的细节会有自己独到的理解。同时又具备一定缺陷,在学习方面会有一定的障碍,因为不管是记忆力还是对新知识的接受能力都会有所下降,所以一定要选择一

    2022年6月3日
    48
  • 完全背包问题_cf超级背包减伤和ac叠加吗

    完全背包问题_cf超级背包减伤和ac叠加吗有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N

    2022年8月8日
    4
  • python pycharm教程_Pycharm简单使用教程(入门小结)

    python pycharm教程_Pycharm简单使用教程(入门小结)1、下载pycharmpycharm是一种PythonIDE,能够帮助我们在编写代码时提高效率。网上提供的有专业版和教育版之分。专业版是收费的,功能更全面点。教育版或社区版是阉割版本,但它是免费的。2、pycharm的安装比较简单,官网下载备注:刚下载好的pycharm无法运行程序“Cannotstartprocess,theworkingdirectory…”,两种解决方法1.选择…

    2022年8月29日
    3
  • 结构性设计模式-适配器模式+桥接模式

    结构性设计模式-适配器模式+桥接模式

    2021年7月13日
    92
  • 5种单例模式的Java实现[通俗易懂]

    5种单例模式的Java实现[通俗易懂]参考链接:http://www.mianshigee.com/topic/1022grf/1、懒汉式单例、线程不安全publicclassSingleton{privatestaticSingletonuniqueInstance;//构造方法privateSingleton(){};//实例方法publicstaticSingletongetInstance(){if(uniqueInstance=.

    2022年7月8日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号