【算法】粒子群(PSO)算法

本文深入探讨了群体智能算法,包括Boid模型和粒子群算法。介绍了群体行为的建模原则,如冲突避免、速度匹配和群体中心。粒子群算法通过速度和位置更新公式实现优化,适用于解决复杂问题。文章还讨论了粒子群算法的约束优化策略和程序设计流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Boid(bird-bid)模型

自然界中的一些生物行为特征呈现群体特征,可以用简单的几条规格将这种群体行为(swarm behavior)在计算机中建模。
Reynolds 使用了一下3个规则作为简单的行为准则:

  • 冲突避免(collision avoidance):群体在一定空间中移动,个体有自己的移动意志,但不能影响其他个体移动,避免碰撞和争执。
  • 速度匹配(velocity matching):个体必须配合中心移动速度,不管在方向、距离与速率上都必须互相配合。
  • 群体中心(flocking centering):个体将会向群体中心移动,配合群体向目标前进。
2 粒子群算法

在群鸟觅食模型中,每个个体都可以被看做一个粒子,则鸟群可以被看成一个粒子群。假设在一个 DDD 维的目标搜索空间中,有 mmm 个粒子组成一个群体,其中第 iii 个粒子(i=1,2,3,...,mi = 1, 2, 3, ..., mi=1,2,3,...,m)位置表示为 Xi=(xi1,xi2,xi3,...,xiD)X_i = (x_i^1, x_i^2, x_i^3, ..., x_i^D)Xi=(xi1,xi2,xi3,...,xiD)。换言之,每个例子的位置就是一个潜在解,将 XiX_iXi 代入目标函数就可以计算出其适应值,根据适应值的大小衡量其优劣。粒子个体经历过的最好位置记为 PiP_iPi,整个群体经历过的最好位置记为 PgP_gPg 。粒子 iii 的速度记为 ViV_iVi
粒子群算法采用下列公式对粒子所在的位置不断更新(单位时间1):
vid=ωvid+c1r1(pid−xid)+c2r2(pgd−xid)xid=xid+αvid v_i^d = \omega v_i^d + c_1r_1(p_i^d - x_i^d) + c_2r_2(p_g^d - x_i^d)\\ x_i^d = x_i^d + \alpha v_i^d vid=ωvid+c1r1(pidxid)+c2r2(pgdxid)xid=xid+αvid
其中,i=1,2,3,...,mi = 1, 2, 3, ..., mi=1,2,3,...,md=1,2,3,...,Dd = 1, 2, 3, ..., Dd=1,2,3,...,Dω\omegaω是非负数,称为惯性因子;加速常数 c1c_1c1c2c_2c2 是非负常数; r1r_1r1r2r_2r2 是 [0, 1] 范围内变换的随机数;α\alphaα 称为约束因子,目的是控制速度的权重。
此外,vidϵ[−vmaxd,vmaxd]v_i^d \epsilon[-v_{max}^d, v_max^d]vidϵ[vmaxd,vmaxd],即粒子 iii 的速度 ViV_iVi 被一个最大速度 Vmax=(vmax1,vmax2,vmax3,...,vmaxd)V_{max} = (v_{max}^1, v_{max}^2, v_{max}^3, ..., v_{max}^d)Vmax=(vmax1,vmax2,vmax3,...,vmaxd) 限制。vmaxv_{max}vmax 为常数,可以根据不同的优化问题而设定。
迭代终止条件根据具体问题设定,一般达到预定最大迭代次数或粒子群目前为止搜索到的最优位置满足目标函数的最小容差。

3 粒子群算法的约束优化

粒子群算法的约束优化问题,关键在于如何处理好约束,即解的可行性,避免出现不能收敛或结果是空集的状况。基于粒子群算法的约束优化工作主要分为两类:

  • 罚函数法(将约束优化问题转换为无约束优化问题)。
  • 将粒子群的搜索范围都限制在条件约束簇内,即在可行解范围内寻优。
4 粒子群算法程序设计流程
开始
初始化各参数
计算各粒子适应值
找出个体和群体的最优值
更新各个粒子的速度和位置
终止条件?
结束
5 参数选取

粒子数 mmm、惯性因子 ω\omegaω、最大飞翔速度 vmaxv_{max}vmax、加速度常数 c1c_1c1c2c_2c2

粒子数 mmm

一般取值为20 ~ 40。对于多数问题,30个粒子就够用了,不过对于特殊的难题需要100 ~ 200个粒子。粒子数量越多,搜索范围越大,越容易找到全局最优解,算法运行的时间也越长。

惯性因子 ω\omegaω

如果 ω\omegaω 是变量,通常在迭代开始时将 ω\omegaω 设置得较大,然后在迭代过程之中逐渐减小。这样可使粒子群在开始优化时搜索较大的解空间,得到合适的种子,然后在后期逐渐收缩到较好的区域进行更精细的收缩,以加快收敛速度和目标精度。 ω\omegaω 也可以取 [0, 1] 区间的随机数。如果 ω\omegaω 是定值,建议取 0.6 ~ 0.75 之间的合理值。

加速度常数 c1c_1c1c2c_2c2

对于简单的常规问题,一般情况下取 c1=c2=2.0c_1 = c_2 = 2.0c1=c2=2.0

最大飞翔速度 vmaxv_{max}vmax

参数 vmaxv_maxvmax 有利于防止搜索范围毫无意义地发散,防止粒子群由于飞翔速度过大而直接俯冲掠过最优目标值。为了跳出局部最优,需要较大的寻优步长,而在接近最优值时,采用更小的步长会更好。如果 vmaxv_{max}vmax 的选择是固定不变的,通常 vmaxv_{max}vmax 设定为每维变化范围的 10% ~ 20% 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值