我正在为MATLAB设计一个粒子群优化模拟器,我对gBest本地位置有疑问。
据我所知阅读算法,gBest值可识别粒子发现的全局最佳值。 但是,我在一个非常可靠的实现中看到,开发人员认为gBest是CURRENT生成中粒子遇到的最佳值。
我误解了PSO算法的基础知识吗? 开发人员的实施是否错误,或者只是另一种不同的方法?
在此先感谢,Víctor。
I am designing a Particle Swarm Optimization simulator for MATLAB and I have a doubt about the gBest local position.
As I understood reading about the algorithm, gBest value identify the global best value that has EVER discovered by the particles. However, I saw in a pretty bearable implementation that the developer considered gBest as the best value encountered by the particles in the CURRENT generation.
Have I misunderstood the PSO algorithm basics? Was the developer wrong in his implementation or, however, was it just another different approach?
Thanks in advance, Víctor.
最满意答案
微调PSO的方法有很多,但PSO的经典算法使用gBest作为群体最佳已知位置 ,因此它不仅仅来自当前迭代。 在算法中,您必须实现某种类型的内存,以便计算速度更新中使用的增量:
请注意,我将pbest称为粒子最佳已知位置, sbest群体最佳已知位置(您的gBest)置于最佳位置。 c1和c2是粒子本身和群中的置信水平。
There are many ways to fine tune the PSO , but the classical algorithm of the PSO uses gBest as the swarm best known position, therefore it is not from current iteration only. In your algorithm you have to implement a memory of some sort in order to calculate the delta used in the velocity update:
Note that I called pbest as the particle best known position and sbest the swarm best known position (your gBest). c1 and c2 are the confidence levels in the particle itself and in the swarm.
更多推荐
发布评论