关于粒子群算法的个人理解 粒子群算法(Particle Swarm Optimization,PSO)

理解:假使一群鸟要找吃的,这时一群鸟就是粒子群,一只鸟就是个体。

 

初始化:最开始鸟在一定的范围内(已经知道了这个范围内是有食物的了)各自有自己的速度(所谓速度就是下一次迭代(或者说下一单位时间?与物理上的意义一致)想要在这个维度上走的长度,也就是步长,多个维度的步长就会组成一个运动方向,所以这里的速度不仅有大小,而且有方向,因此是一个矢量)与位置;

 

寻找机制:这时候鸟有个小雷达,可以食物信号的强度,强度越大,实物越近(比如要求解一个函数的最大值,那么信号最大值的位置就是食物所在的位置,然后计算当前位置到最大值的位置的距离,就是与食物的距离了),但是位置这个可说不准,所以用鸟鸣沟通,看看谁雷达信号最大,那么她身边更有可能具有食物。这样鸟群所有人都报了一下自己雷达强度,发现A小鸟身边强大最大,鸟群会议决定向A小鸟那里飞;但是每只鸟都有自己的小心思,虽然自己位置所在的雷达信号不是最大的,但是往自己曾经飞过信号最大的地方去,万一才是食物的所在地呢?但是鸟群会议的指令又不能不听,所以所有的小鸟最后飞的速度都是一个折衷的方案,也就是两个方向都要走,走个速度的合成,但是鸟还有惯性,转向不那么灵便,所以变成了自己原本的速度,往鸟群会议方向的速度,以及自己经验想要飞去的速度的合成。

 

所以有公式:

 

 

这里k表示第k轮,或者第k个单位时间。

Vid表示第i只鸟个体在第d维的速度,ω表示惯性因子;c1为自我学习因子,c2为社会学习因子;r1与r2为两个随机数,区间在(0,1)上,(可以理解成鸟的意志很难捉摸,对于自己的经验与社会经验,有时候很相信,有时候又不是很相信,变成了一个概率事件);Pid表示第i个鸟个体在她自己走过的位置上的信号最强位置在d维度上的位置;Ppd是表示通过鸟会议得到的最佳信号位置在d维上位置;

 

流程图:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值