PSO简介

粒子群优化算法(Particle Swarm Optimization,PSO)

PSO算法对每个粒子的要求

  • 所有粒子都在一个D维空间中进行搜索
  • 所有粒子都由一个适应函数确定适应值以判断目前位置的好坏
  • 每个粒子都有记忆功能,可以记住寻找到的最佳位置
  • 每个粒子有一个速度和飞行方向

粒子群优化算法求最优解:(D维空间中,有N个粒子)

  • 粒子i的位置: X i = ( x i 1 , x i 2 , . . . x i D ) X_i=(x_{i1},x_{i2},...x_{iD}) Xi=(xi1,xi2,...xiD),将 X i X_i Xi带入适应函数 f ( x i ) f(x_i) f(xi)求适应值
  • 粒子i的速度: V i = ( v i 1 , v i 2 , . . . v i D ) V_i=(v_{i1},v_{i2},...v_{iD}) Vi=(vi1,vi2,...viD)
  • 粒子i自身经历最好的位置: p b a s t i = ( p i 1 , p i 2 , . . . p i D ) pbast_i=(p_{i1},p_{i2},...p_{iD}) pbasti=(pi1,pi2,...piD)
  • 粒子种群经历过最好的位置: g b a s t = ( g 1 , g 2 , . . . g D ) gbast=(g_{1},g_{2},...g_{D}) gbast=(g1,g2,...gD)
  • 在d ( 1 ≤ d ≤ D ) (1{\leq}d{\leq}D) (1dD)维的位置变化范围限定在 [ X m i n , d , X m a x , d ] [X_{min,d},X_{max,d}] [Xmin,d,Xmax,d]内。(保证所有粒子在有限可控范围内进行迭代)
  • 速度变化范围限定在 [ − V m a x , d , V m a x , d ] [-V_{max,d},V_{max,d}] [Vmax,d,Vmax,d]内。(保证粒子速度变化可控)

粒子群算法迭代过程

粒子i的第d维速度跟新公式:
V i d k = W V i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) V^{k}_{id}=WV^{k-1}_{id}+c_{1}r_{1}(pbest_{id}-x^{k-1}_{id})+c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) Vidk=WVidk1+c1r1(pbestidxidk1)+c2r2(gbestdxidk1)

W V i d k − 1 WV^{k-1}_{id} WVidk1:粒子先前的速度矢量

c 1 r 1 ( p b e s t i d − x i d k − 1 ) c_1r_1(pbest_{id}-x^{k-1}_{id}) c1r1(pbestidxidk1):本粒子找到的最优解,自我认知部分

c 2 r 2 ( g b e s t d − x i d k − 1 ) c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) c2r2(gbestdxidk1):群体找到的最优解,社会经验部分

粒子i的第d维位置更新公式:

x i d k = x i d k − 1 + v i d k − 1 x^{k}_{id}=x^{k-1}_{id}+v^{k-1}_{id} xidk=xidk1+vidk1

x i d k − 1 x^{k-1}_{id} xidk1:之前迭代中的位置信息

v i d k − 1 v^{k-1}_{id} vidk1:当前的速度矢量

  • v i d k v^k_{id} vidk:第k次迭代粒子i飞行速度矢量的第d维分量
  • x i d k x^k_{id} xidk:第k次迭代粒子i位置矢量的第d维分量
  • c 1 , c 2 c_1,c_2 c1,c2:加速度常数,调节学习最大步长
  • r 1 , r 2 r_1,r_2 r1,r2:两个随机函数,取值范围[0,1],以增加搜索随机性
  • w:惯性权重,非负数,调节对解空间的搜索范围。(w值越大,全局搜索能力越强,局部搜索能力越弱)

粒子群优化算法流程图

在这里插入图片描述

惯性权重,线性递减权值

主要解决问题:前期粒子群比较分散时,提高全局搜索能力;后期粒子群比较集中时,提高局部收敛精度。至此w不宜为固定常数。
W = W m a x − ( W m a x − W m i n ) × r u n r u n m a x W=W_{max}-(W_{max}-W_{min}){\times}{\frac{run}{run_{max}}} W=Wmax(WmaxWmin)×runmaxrun

  • W m a x W_{max} Wmax:最大惯性权重
  • W m a n W_{man} Wman:最小惯性权重
  • r u n run run:当前迭代次数
  • r u n m a x run_{max} runmax:本次算法迭代总次数

其中较大的w有较好的全局搜索能力,较小的W有较强的局部收敛能力。次公式完成的任务就是:随着迭代次数的增加,惯性权重W不断减小,从而使得PSO算法在前期具有较强的搜索能力,在后期具有较强的收敛能力。

粒子群算法构成要素

群体大小m

  • 当m很小:陷入局部最优解的可能性很大

  • 当m很大:虽然PSO效果好,但是效率会变慢,比较冗余

权重因子

惯性因子:W

  • 当W=1时,为基本粒子群算法
  • 当W=0时,将失去对粒子本身的速度记忆(会造成粒子随机性过重,使得寻优更加困难)

学习因子: c 1 , c 2 c_1,c_2 c1,c2

  • c 1 r 1 ( p b e s t i d − x i d k − 1 ) c_1r_1(pbest_{id}-x^{k-1}_{id}) c1r1(pbestidxidk1):当 c 1 c_1 c1=0,无私型粒子群算法(会迅速丧失群体多样性,容易陷入局部最优)
  • c 2 r 2 ( g b e s t d − x i d k − 1 ) c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) c2r2(gbestdxidk1):当 c 2 c_2 c2=0,自我认知型粒子群算法(完全没有信息社会共享,导致算法收敛速度过低)

邻域拓扑结构

  • 全局粒子群算法,将种群所有粒子都设为邻域
    • 收敛速度快
    • 容易陷入局部最优
  • 局部粒子群算法,只将部分粒子设为邻域,邻域随迭代次数线性变大,最后邻域扩展到整个粒子群
    • 收敛速度慢
    • 但是不容易陷入局部最优
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PSO混合(PSO hybrid)是指将粒子群优化(Particle Swarm Optimization, PSO)算法与其他优化算法相结合的一种方法。通过将不同的优化算法进行融合,可以充分利用各种优化算法的优点,从而提高搜索效率和求解精度。 PSO混合算法的基本思想是将PSO算法与其他优化算法相互结合,形成一种新的算法框架。具体的混合方式可以有多种,常见的包括PSO与遗传算法(Genetic Algorithm, GA)、模拟退火算法(Simulated Annealing, SA)等的结合。 PSO混合算法的优点主要有以下几个方面: 首先,通过混合不同的优化算法,可以克服单一算法的局限性。不同算法各有其适用的问题类型和搜索特点,通过混合算法,可以结合它们的优势,使得算法的整体性能更好。 其次,混合算法可以加快收敛速度。有时候,单一的优化算法可能会出现早熟收敛或者漏掉全局最优解的问题,而混合算法可以通过引入其他算法的搜索策略来提高搜索的全局性和多样性,从而更快地找到最优解。 最后,混合算法具有更高的鲁棒性。当面对复杂的问题时,混合算法可以通过不同算法的组合来应对,更加容易适应各种问题的特点和变化。 总之,PSO混合算法是一种将PSO与其他优化算法相结合的方法,通过充分利用不同算法的优点,可以提高搜索效率和求解精度,使得算法具有更好的鲁棒性和适应性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值