我正在为 MATLAB 设计一个粒子群优化模拟器,我对 gBest 本地位置有疑问。
据我了解阅读该算法,gBest 值确定了粒子发现的全局最佳值。然而,我在一个相当可以忍受的实现中看到,开发人员认为 gBest 是粒子在 CURRENT 一代中遇到的最佳值。
我是否误解了 PSO 算法的基础知识?开发人员的实现是错误的,还是只是另一种不同的方法?
在此先感谢维克多。
我正在为 MATLAB 设计一个粒子群优化模拟器,我对 gBest 本地位置有疑问。
据我了解阅读该算法,gBest 值确定了粒子发现的全局最佳值。然而,我在一个相当可以忍受的实现中看到,开发人员认为 gBest 是粒子在 CURRENT 一代中遇到的最佳值。
我是否误解了 PSO 算法的基础知识?开发人员的实现是错误的,还是只是另一种不同的方法?
在此先感谢维克多。
微调 PSO 的方法有很多,但是 PSO 的经典算法使用gBest
的是swarm best known position,因此它不仅仅来自当前迭代。在您的算法中,您必须实现某种内存才能计算速度更新中使用的增量:
请注意,我将其称为pbest
粒子最佳位置和sbest
群体最佳位置(您的 gBest)。c1
是粒子本身和c2
群体中的置信水平。