粒子群优化算法(PSO)简介以及其C++风格框架

粒子群优化(PSO)算法是一种群智能计算方法,模仿鸟群行为寻找问题的次最优解。算法包括速度和位置更新公式,通过迭代更新粒子的解空间位置。在达到预设条件后,输出全局最优解。PSO适用于解决NP-hard问题,不需要理论最优解。算法流程包括初始化粒子、更新速度和位置、衡量适应度并更新个体和全局最优解。
摘要由CSDN通过智能技术生成

粒子群优化(particle swarm optimization, PSO)算法 是由 Kennedy, J.和 Eberhart, R. (1995) 提出的一种群智能计算方法,与更著名且经典的遗传算法类似,同为进化算法。

一个系统里面有若干个粒子,每个粒子代表一个问题的候选解,而这些粒子在系统的控制下根据一定的方法进行迭代更新(进化),直到最后系统会输出全局最优解。更详细地,在算法的运行过程中,这些维护中的粒子以一定的策略在解空间进行搜索,并且把搜索结果放入目标函数进行衡量,如果结果更优则会被记录下来,以用于进一步的进化。达到一定的条件(确定的迭代次数或一定程度的目标值),算法就会停止,并输出此时获得的最优解。

值得一提的是,PSO 所获得的解并不是理论上的最优解。因为对于诸多所谓的 NP-hard 问题(就是说使用确定性算法时间复杂度会非常高,高到不能接受)情况下,实际并不需要理论最优解,而只需要一个满足一定条件,符合工程需求的次最优解就能解决问题。而 PSO 所获得的正是这样的一个次最优解。

下面具体看看算法。PSO 核心公式有两个:速度更新公式与位置更新公式。


在公式(1)中,Vid( t+1) 表示第 i 个粒子的第 d 维在 (t+1)时刻的速度值,pid 为 第 i 个粒子第 d 维时刻的个体最优, pgd 为当前种群内的全局最优, xid 则为该粒子当前的位置。除此, c1, c2 表示两个参数,被称为个体学习因子与全局(环境)学习因子,r1, r2 为随机数,在0-1之间。

公式(2)更好理解,一个速度 vid 与当前位置 xid 相加,获得新的位置 xid。

PSO是模拟鸟群的算法,有一堆哲学上的说明与数学上的证明,这里都不说。只要记住上面两个公式,慢慢就会全方位理解 PSO 的设计思想。

算法的具体步骤如下

  1. 初始化一群粒子,随机初始位置与速度
  2. for T 个循环
  3.     for 每个粒子
  4.         用(1)更新速度,用(2)更新位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值