粒子群(Particle Swarm Optimization PSO)算法(优化进化课程随笔)

  • 随机全局优化技术
  • 概念简明、实现方便、收敛速度快、设置参数少
  • 高效搜索算法
  • 应用与函数优化、神经网络训练、模糊系统控制等领域

      模拟鸟群捕食的行为过程,鸟群会同步在某个时刻突然大量的聚集,或者突然改变飞行方向,或者突然散开,各自向不同的方向飞去,鸟群中个体之前努力保持最优距离的结果。

核心思想:通过群体中个体之前的相互写作和信息共享来寻找最优解

      在粒子群算法中,每只鸟作为群体(swarm)中的一个个体,被抽象为没有质量和体积的粒子(particle),并延申d维空间,粒子的群体个数为n;
      则第i(i = 1,2,…,n)个粒子在d维空间表示为矢量xi = (xi1, xi2, … xid)。
      飞行速度表示为矢量vi = (vi1, vi2, … vid),决定粒子在搜索空间内固定迭代次数的位移。
      优化问题中的一个可能解是由改算法中每个粒子来诠释的,诠释解的好坏则由适应度函数来衡量,每一个粒子都有一个由目标函数决定的适应值,PSO随机给一群粒子和粒子的速度赋值,xi的好坏由适应度函数值的大小权衡,适应度函数值是根据xi代入一个目标函数进行计算得出的。
      每个粒子知道自己到目前位置发现的最好的位置(个体极值pbest)和现在的位置xi,可以看作粒子自己的飞行经验。每个粒子还知道目前为止整个种群中所有粒子发现的最好位置(gpest)可以看作是同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动

      初始化一群随机粒子(随机解),通过迭代来找到最优解,在每次迭代前通过跟踪两个“极值”来更新自己
更新公式(原始)
在这里插入图片描述
c1、c2:学习因子,通常取2(用于调整粒子的自身信息和全局信息在其运动过程中所起的作用);
r1、r2: 随机数,取值范围(0,1);

由每一个粒子的适应度对粒子的全局极值gbest和个体极值pbest进行更新
在这里插入图片描述
在这里插入图片描述
限制最大速度为vmax
在这里插入图片描述

可以从原始公式看出,粒子i新速度有三个部分共同决定:

  • 粒子i当前位置与其最优位置之间的距离;
  • 粒子i当前位置与群体最优位置之间的距离;
  • 粒子i上一时刻的速度(惯性)

在这里插入图片描述

在这里插入图片描述

算法流程
在这里插入图片描述
为改变算法的收敛性能,在原始公式v的位置引入惯性权重w(去继承原本的速度),其大小决定对粒子当前速度继承的多少,

惯性权重线性递减法
在这里插入图片描述
惯性权重非线性变化法
在这里插入图片描述
在这里插入图片描述
平整度的一个指标。

群体n:

  • 过小,陷入局部最优的可能性很大,
  • 过大,导致计算时间的大幅度增加
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子群优化算法 (particle swarm optimization, PSO) 是一种基于群体智能的优化算法,其算法原理可以概括为以下几个步骤: 1. 初始化一群粒子的位置和速度,并随机分配其初始位置和速度。 2. 计算每个粒子的适应度值,并根据适应度值更新每个粒子的最佳位置和全局最佳位置。 3. 根据每个粒子的最佳位置和全局最佳位置,更新粒子的速度和位置。 4. 判断是否满足停止条件,若满足则输出结果,否则回到第 2 步。 具体来说,PSO 算法的每个粒子都有一个位置向量和一个速度向量。在算法的每一轮迭代中,粒子的速度和位置会根据以下公式进行更新: $v_{i}(t+1)=wv_{i}(t)+c_{1}r_{1}(p_{i}-x_{i}(t))+c_{2}r_{2}(p_{g}-x_{i}(t))$ $x_{i}(t+1)=x_{i}(t)+v_{i}(t+1)$ 其中,$v_{i}(t)$ 表示粒子 $i$ 在时间 $t$ 的速度向量,$x_{i}(t)$ 表示粒子 $i$ 在时间 $t$ 的位置向量,$p_{i}$ 表示粒子 $i$ 的历史最佳位置,$p_{g}$ 表示全局最佳位置,$w$、$c_{1}$ 和 $c_{2}$ 是常数,$r_{1}$ 和 $r_{2}$ 是 $[0,1]$ 之间的随机数。 在算法的每轮迭代中,粒子的速度和位置会不断地更新,直到满足停止条件为止。通常,停止条件可以是达到最大迭代次数、适应度值达到一定阈值等。 PSO 算法通过模拟鸟群、鱼群等群体的行为,将一群粒子看作是搜索空间中的一个个潜在解,通过不断更新粒子的位置和速度,最终找到全局最优解或近似最优解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值