粒子群算法(1)----粒子群算法简单介绍 (3)

  第一种方法:依照粒子的编号取粒子的邻域,取法有四种:1,环形取法 2,随机环形取法 3,轮形取法 4,随机轮形取法。

   1  环形随机环形

   轮形 4随机轮形

  由于后面有以环形取法实现的算法,对环形取法在这里做一点点说明:以粒子1为例,当邻域是0的时候,邻域是它本身,当邻域是1时,邻域为28;当邻域是2时,邻域是2378......,以此类推,一直到邻域为4,这个时候,邻域扩展到整个样例群体。据文献介绍(国外的文献),採用轮形拓扑结构,PSO的效果非常好

  另外一种方法:依照粒子的欧式距离取粒子的邻域

    在第一种方法中,依照粒子的编号来得到粒子的邻域,可是这些粒子事实上可能在实际位置上并不相邻,于是Suganthan提出基于空间距离的划分方案,在迭代中计算每一个粒子与群中其它粒子的距离。记录不论什么2个粒子间的的最大距离为dm。对每一粒子依照||xa-xb||/dm计算一个比值。当中||xa-xb||是当前粒子ab的距离。而选择阈值frac依据迭代次数而变化。当另一粒子b满足||xa-xb||/dm<frac时,觉得b成为当前粒子的邻域。

   这样的办法经过实验,取得较好的应用效果,可是由于要计算全部粒子之间的距离,计算量大,且须要非常大的存储空间,所以,该方法一般不常常使用。

粒子群算法(4)----粒子群算法分类

 粒子群算法主要分为4个大的分支:

  (1)标准粒子群算法的变形

   在这个分支中,主要是对标准粒子群算法的惯性因子、收敛因子(约束因子)、认知部分的c1社会部分的c2进行变化与调节,希望获得好的效果。

    惯性因子的原始版本号是保持不变的,后来有人提出随着算法迭代的进行,惯性因子须要逐渐减小的思想。算法開始阶段,大的惯性因子能够是算法不easy陷入局部最优,到算法的后期,小的惯性因子能够使收敛速度加快,使收敛更加平稳,不至于出现振荡现象。经过本人測试,动态的减小惯性因子w,的确能够使算法更加稳定,效果比較好。可是递减惯性因子採用什么样的方法呢?人们首先想到的是线型递减,这样的策略的确非常好,可是是不是最优的呢?于是有人对递减的策略作了研究,研究结果指出:线型函数的递减优于凸函数的递减策略,可是凹函数的递减策略又优于线型的递减,经过本人測试,实验结果基本符合这个结论,可是效果不是非常明显。

   对于收敛因子,经过证明如果收敛因子取0.729,能够确保算法的收敛,可是不能保证算法收敛到全局最优,经过本人測试,取收敛因子为0.729效果较好。对于社会与认知的系数c2,c1也有人提出:c1先大后小,而c2先小后大的思想,由于在算法执行初期,每一个鸟要有大的自己的认知部分而又比較小的社会部分,这个与我们自己一群人找东西的情形比較接近,由于在我们找东西的初期,我们基本依靠自己的知识取寻找,而后来,我们积累的经验越来越丰富,于是大家開始逐渐达成共识(社会知识),这样我们就開始依靠社会知识来寻找东西了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyywg.html