粒子群学习记录(二)

首先,我是参考的这个专栏的https://blog.csdn.net/niuyongjie/article/details/1569671的博文,感觉理解起来还行,但是由于我个人的原因,时间的关系暂时先做如下总结,往后有机会再拾起的研究的话再更新更正。如果有什么理解不对的或者需要补充的,欢迎各位指正,谢谢。

之前已经把粒子群的基本思想已经理清了,剩下的还有优化和实现。

全局最优和局部最优的选择

之前说的速度位置跟新函数中,需要对比一项有和其他粒子的比较,以查看当前的自身的状态在群体中水平,所以对比有局部和全局之后,当然最后的比较肯定是全局的对比,因为刚开始都是随机散落,全局对比没有多大的参考意义,往后大家的目的相近,可以参考的意义大大提升,所以才有了局部的说法。

局部,那么必然会存在怎么划分区域,谁和谁是在一个区域内的,怎么才算是一个区域内的。这里有两种划分,一个是基于序号,博文上的图很好理解,大家可以去看看,这里我就不多说了。还有一种是基于粒子的欧式距离,事先定义一个阈值,每次迭代的时候计算出每个粒子的欧式距离(两个粒子间的距离/任何两个粒子间的最大距离)在这个阈值之内,就认为他们是邻域的。博文上说实验出来的结果还不错,但是计算量有点大。

博文上还介绍粒子群的算法分类,这里就不说明了,因为我也没看明白,大家去参考博文吧(逃-_-

//还有几种适应度函数的评价,我也没看懂,而且那是07年的博文了,可能还会出现新的适应度函数。

更新:好吧,我理解错了,其实适应度函数就是需要求解的函数。

好了剩下的都是一些实现了,这位博主大人还提供了matlab工具箱,大家可以去下载学习呃。

//忘记了还有收敛和局部最优的问题了,先保留

更新:

博文中有说,经过实践证明:全局版本的粒子群算法收敛速度快,但是容易陷入局部最优。局部版本的粒子群算法收敛速度慢,但是很难陷入局部最优。也即可能得到的是极值点而不是最值点。现在的粒子群算法大都在收敛速度与摆脱局部最优这两个方面下功夫。其实这两个方面是矛盾的。看如何更好的折中了。

猜你喜欢

转载自blog.csdn.net/qq_38960899/article/details/79928762