多目标粒子群_粒子群(PSO)算法的理解与应用

最近在学习粒子群算法,看了很多资料都有点摸不清头脑,直到看了一篇博客中超级简洁的粒子群C++实现代码,才明白粒子群算法的原理,真心感谢博主,在此贴出博主的博客地址:

http://blog.sina.com.cn/s/blog_4ed027020100c9lx.html

在前面的文章中,我们提到的梯度下降法、牛顿法、高斯-牛顿法,以及LM算法等都属于最优化算法,这些最优化算法的共同点是优化一组可能的解,使该解尽可能接近真实解。粒子群算法(也称为PSO算法)也属于最优化算法,但该算法与上述提到算法的主要区别在于,该算法同时优化多组可能的解,最后在多组可能的解中选择最接近真实解的一组作为最终解。每一组可能的解就是一个粒子,因此多组可能解组成了粒子群,这就是该算法名称的由来。下面将讲解我对粒子群算法的理解,并将该算法应用于一个简单例子的最优化求解。

1. 粒子群算法的核心思路

粒子群算法被提出的灵感来源于鸟群觅食。如下图,鸟群觅食过程中,每只鸟沿着各个方向飞行去寻找食物,每只鸟儿都能记住到目前为止自己在飞行过程中最接近食物的位置,同时每只鸟儿之间也有信息共享,它们会比较到目前为止各自与食物之间的最近距离,从各自的最近距离中,选择并记忆整体的一个最近距离位置。由于每只鸟儿都是随机往各个方向飞行的,各自的最近距离位置与整体最近距离位置不断被更新,也即它们记忆中的最近位置越来越接近食物,当它们飞行到达的位置足够多之后,它们记忆的整体最近位置也就达到了食物的位置。

2c63089b6915140a183bce4e0493bab6.png

抽象成数学模型,每只鸟儿就是一个粒子,食物的位置也就是问题的最优解,鸟儿与食物的距离也即当前粒子的目标函数值。比如要求z=x*x+y*y的最优解,设置粒子数为6个,如下图所示,相当于各个粒子在曲面上滚动,每个粒子i(0≤i≤5)记住自己滚动过程中(迭代)的最低位置(位置越低z值越小)Zi(0≤i≤5),同时不同粒子之间也有交流,它们会比较Z0~Z5,从中取得一个最小值作为当前的全局最低位置。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值