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

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

群智能化算法

  • 根据大自然及物种的自然规律及行为规律衍生而来的算法

    • 遗传算法(GA)
      • 物竞天择,设计染色体编码,根据适应值函数进行染色体选择、交叉和变异操作,优化求解
    • 人工神经网络(ANN)
      • 模仿生物神经元,透过神经元的信息传递、训练学习、联想,优化求解
    • 模拟退火算法(SA)
      • 模仿金属物质退火过程
    • 蚁群优化算法
    • 狼群优化算法
  • 背景:人工生命

    人工是名是来研究具有某些生命基本特征的人工系统,包括两个方面:

    1、研究如何利用计算技术研究生物现象

    2、研究如何利用生物技术研究计算问题


PSO

发展历史

由Kennedy和Eberhart于1995年提出了一种新的全局优化金花算法,也是一种非常有效而被广泛应用的敌人待优化算法,该算法模拟鸟群飞行觅食行为,通过鸟之间的集体协同使群体达到最优。

而PSO基本算法有以下优缺点:

  • 优点:
    • PSO算法没有交叉和编译运算,依靠粒子速度完成搜索,并且在迭代进化中只有最优的粒子把信息传递给其他粒子,搜索速度快。
    • PSO算法具有记忆性,粒子群体的历史最好位置可以记忆并传递给其他粒子
    • 需调整的参数较少,结构简单,易于工程实现
    • 采用实数编码,直接由问题的解决定,问题解的变量数直接作为粒子的维数
  • 缺点:
    • 容易陷入局部最优,导致收敛精度低和不易收敛
    • 不能有效解决离散及组合优化问题
    • 不能有效求解一些非直角坐标系描述问题,如有关能量场或场内粒子运动规律的求解问题(这些求解空间的边界大部分是基于极坐标、球坐标或柱坐标)

Shi Y H.于1998年建立了PSO算法的惯性权重模型,惯性权重的引入,提高了算法的全局搜索能力。

Suganthan P N.提出了带邻域操作的PSO模型,客服了PSO模型在优化搜索后期随迭代次数增加搜索结果无明显改进的缺点。

Parsopoulos K E.提出将拉伸技术用于PSO最小化问题的求解,力图避免PSO算法易陷入局部最小值的问题。

高海兵等人针对PSO一直未能有效解决离散及组合优化问题,提出了一种广义粒子群优化模型(CPSO),该模型的鲁棒性和通用性还有待进一步的证明。

基本PSO

基本思想

粒子群算法的思想源于鸟群捕食行为的研究,模拟鸟群飞行觅食的行为,鸟之间通过集体协作使群体达到最有目的, 是一种基于Swarm Intelligence的优化方法。

场景:一群鸟在随机搜索食物

已 知 = { 在 这 块 区 域 里 只 有 一 块 食 物 所 有 鸟 都 不 知 道 食 物 在 哪 但 它 们 能 感 受 到 当 前 的 位 置 离 食 物 还 有 多 远 已知=\left\{ \begin{aligned} &在这块区域里只有一块食物 \\ &所有鸟都不知道食物在哪 \\ &但它们能感受到当前的位置离食物还有多远 \end{aligned} \right. =

那么:找到食物的最优策略是什么?

方法:搜寻目前离食物最近的鸟的周围区域,根据自己飞行的经验判断食物的缩在

PSO正是从这种模型中得到启发,因此PSO的基础是:信息的社会共享

算法介绍
  • 每个寻优的问题解都被想象成一只鸟,称“粒子”,所有粒子都在一个D维空间内进行搜索
  • 所有粒子都有一个fitness function确定适应值以判断目前的位置好坏
  • 每个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置
  • 每个粒子还有一个速度以决定飞行的距离和方向,这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。

D维空间中,有N个粒子:

​ 粒子i位置:xi=(xi1,xi2,…,xiD),将xi代入适应函数f(xi)求适应值;

​ 粒子速度:v1=(vi1,vi2,…,viD)

​ 粒子 i 个体经历过的最好位置:pbesti=(pi1,pi2,…,piD)

​ 粒子种群所经历过的最好位置:gbest=(g1,g2,…,gD)

通常,在第d(1<= d <= D)维的位置变化范围限定在[XMIN,d,XMAX,d]内,速度变化范围限定在[-Vmax,d,Vmax,d]

即若在迭代过程中若vid、xid超出边界值,则该速度或者位置应该被限制为最大速度或者边界位置。

粒子 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_1r_1(pbest_{id}-x^{k-1}_{id})+c_2r_2(gbest_d-x^{k-1}_{id}) vidk=wvidk1+c1r1(pbestidxidk1)+c2r2(gbestd<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值