粒子群算法

粒子群算法是通过群体中不同粒子之间的相互合作和相互竞争来实现在寻优空间中的搜索过程以找到所求问题的最优位置。

粒子群算法首先随机初始化一群均匀分布在给定的寻优空间中的粒子(种群规模一般为30),然后所有的粒子根据两个极值来更新自身的速度:
一个是个体极值( p b s e t pbset pbset),另一个是群体极值( g b e s t gbest gbest)。
目前广泛使用的准确粒子群算法的数学描述为:设粒子群中粒子的总数为 p o p s i z e popsize popsize,粒子的维数为 m m m,算法的最大迭代次数为 m a x i t e r maxiter maxiter,第 i i i个粒子在 t t t时刻的飞行速度和在搜索空间中的位置分别为:
v i ( t ) = [ v i 1 ( t ) , v i 2 ( t ) , . . . , v i m ( t ) ] T , x i ( t ) = [ x i 1 ( t ) , x i 2 ( t ) , . . . , x i m ( t ) ] v_i(t)=[v_{i1}(t),v_{i2}(t),...,v_{im}(t)]^T, x_i(t)=[x_{i1}(t),x_{i2}(t),...,x_{im}(t)] vi(t)=[vi1(t),vi2(t),...,vim(t)]T,xi(t)=[xi1(t),xi2(t),...,xim(t)]

粒子在 t t t时刻的个体极值和群体极值分别为:
p b e s t i ( t ) = [ p i 1 ( t ) , p i 2 ( t ) , . . . , p i m ( t ) ] T , g b e s t = [ g 1 , g 2 , . . . , g m ] T pbest_i(t)=[p_{i1}(t),p_{i2}(t),...,p_{im}(t)]^T,gbest=[g_1,g_2,...,g_m]^T pbesti(t)=[pi1(t),pi2(t),...,pim(t)]Tgbest=[g1,g2,...,gm]T

所有的粒子按照如下的更新方式在搜索空间中飞行以找到最优解:
v i + 1 ( t + 1 ) = ω v i ( t ) + c 1 r 1 ( p b e s t i ( t ) − x i ( t ) ) + c 2 r 2 ( g b e s t − x i ( t ) ) v_{i+1}{(t+1)}=\omega v_i(t)+c_1r_1(pbest_i(t)-x_i(t))+c_2r_2(gbest-x_i(t)) vi+1(t+1)=ωvi(t)+c1r1(pbesti(t)xi(t))+c2r2(gbestxi(t))
x i + 1 ( t + 1 ) = x i ( t ) + v i + 1 ( t + 1 ) x_{i+1}{(t+1)}=x_i(t)+v_{i+1}{(t+1)} xi+1(t+1)=xi(t)+vi+1(t+1)

其中, ω \omega ω为惯性权重系数,决定了上次迭代速度保留的多少。可以通过调节它的大小来平衡算法的全局搜索和局部搜索的能力。算法初期,选择较大的惯性权重值可以使算法有很强的全局搜索能力,算法后期可以选择较小值使得粒子逐渐收敛到全局最优。
c 1 , c 2 c_1,c_2 c1,c2为算法的学习因子,它们分别影响着粒子的“自我学习”能力和“社会学习”能力。设置较大的 c 1 c_1 c1,会使得所有粒子过多的在局部范围内徘徊,不利于算法的全局搜索;而设置较大的 c 2 c_2 c2,会使得粒子过早的陷入局部极值,降低解的精度。
r 1 , r 2 r_1,r_2 r1,r2是介于 [ 0 , 1 ] [0,1] [0,1]之间的随机数。

标准粒子群算法的流程如下:
1)设置种群规模、变量范围、惯性权重、学习因子等参数,并随机的初始化一群均匀分布在给定的寻优空间中的粒子(包含速度和位置信息)
2)计算群体中各个粒子的适应度值(即函数值)。设置第 i i i个粒子的适应值为它的当前个体极值 p b e s t i pbest_i pbesti,所有粒子中的最好粒子设置为群体的全体极值 g b e s t gbest gbest
3)根据公式1)和2)更新每个粒子的速度和位置。
4)对所有粒子,将其当前的函数值与它以前找到过的最好位置进行比较,如果当前位置较好,则将个体最优位置设置为这个粒子的位置,然后在对群体的全局极值 g b e s t gbest gbest更新。
5)判断给定的终止1条件是否满足,若满足终止条件,停止搜索,输出需要的结果;否则,返回3)继续搜索。

粒子群算法的缺点:
1)寻找到的最优解可能是局部最优解而不是全局最优解
2)算法搜索初期收敛速度快而搜索后期收敛速度变慢
3)参数选择的随机性。

改进方法:
1)添加压缩因子
2)协同粒子群算法
3)粒子群混合算法
3.1)基于自然选择机制的粒子群算法
3.2)基于模拟退火的粒子群算法

参考文献:
[1]赵乃刚. 粒子群优化算法综述①[J]. 科技创新导报, 2015.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值