首页 > 编程知识 正文

粒子群matlab,粒子群算法是什么

时间:2023-05-05 02:03:53 阅读:61164 作者:2343

全局标准粒子群算法中,每个粒子速度的更新取决于两个因素:1.粒子自身的历史最佳值pi。 2 .粒子集团的全球最佳值pg。 a .粒子自身的历史最佳值pi,如果更改粒子速度更新表达式,使每个粒子的速度更新基于以下两个因素进行更新: b .粒子邻域内粒子的最佳值pnk。 剩下的和全局版的标准粒子群算法一样,该算法将成为局部版的粒子群算法。

一般来说,一个粒子i 附近随着反复次数的增加而逐渐增加,第一次反复开始,其附近为0,随着反复次数附近线性增大,最后的附近扩展到整个粒子群,此时全局实践证明,全局版本的粒子群算法收敛速度快,但容易陷入局部最优。 局部版本的粒子群算法收敛速度慢,但很难陷入局部最优。 目前的粒子群算法大多在收敛速度和摆脱局部最优两方面下了功夫。 其实这两个方面是矛盾的。 让我们看看如何更好地折中了。

根据邻域取值的不同,局部版本的粒子群算法有许多不同的实现方法。

第一种方法是根据粒子的编号取粒子附近的方法,有1、取环法2、随机取环法3、取轮法4、随机取轮法4种。

1环2随机环

3圈形4随机圈形

接下来还有用环形的取法实现的算法,现在就环形的取法做一点说明。 以粒子1为例,邻域为0时,邻域为其自身,邻域为1时,邻域为2,8。 附近为2时,附近为2、3、7、8; ……就这样,直到附近变成4,附近一直扩展到那个集团整体。 据文献(国外文献)报道,采用环形拓扑,PSO效果好。

第二种方法:根据粒子的欧式距离取粒子附近

在第一种方法中,根据粒子的编号求出粒子的附近,但这些粒子在实际位置上可能不相邻。 因此,Suganthan提出了基于空间距离的分割方案,计算迭代中各粒子与群内其他粒子的距离。 将任意两个粒子间的最大距离记录为dm。 按每个粒子||xa-xb||/dm计算比值。 这里||xa-xb||是当前粒子a到b的距离。 选择阈值frac根据反复次数而变化。 如果另一个粒子b满足||xa-xb||/dmfrac,则认为b在当前粒子附近。

该方法经过实验,取得了较好的应用效果,但由于计算所有粒子之间的距离,计算量大,需要较大的存储空间,因此该方法一般不常用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。