近年来,随着PSO算法在各领域获得了广泛的应用和重视,一些学者已逐步将研究的目光投向基于PSO算法的小生境技术,但目前和基于GA的小生境算法相比较,研究的文献还不够多,还仅处于一种初始阶段,并且许多思想是从小生境遗传算法中借鉴过来的。本节将介绍几种基于PSO的小生境算法。
1.小生境粒子群优化算法(Niching PSO)
2002年Brits等学者将小生境技术率先引入粒子群优化算法中,提出了小生境粒子群优化算法。试验表明,该算法在求解多峰函数的问题上搜索效果优秀。在Brits等学者提出的Niching PSO中,为保持粒子群的多样性,若某个粒子在运算连续多次迭代中对应的适应值变化量很小,则以此粒子为中心,以此粒子与其最近的粒子之间的距离为半径构造一个圆形小生境。定义小生境的子粒子群的半径为
其中
分别为子粒子群Sj中的最优粒子和任一非最优粒子。算法有两个核心操作:
(1)若粒子xi进入子粒子群Sj范围内,即
,则粒子将被此小生境子粒子群吸收。
(2)若两个子粒子群Sj、Sk范围相交,即
,则两个子粒子群将被合并成一个。
Niching PSO算法的具体步骤描述如下:
Step1 设置参数,初始化主粒子群。
Step2 使用单认知模型的粒子群优化算法对子粒子群进行一次搜索运算,并计算新粒子群的适应值。
Step3 对每个子群,使用一般收敛粒子群优化算法(GCPSO)训练一次子群,更新每个粒子的适应值,更新子群半径。
Step4 根据规则,合并符合要求的子粒子群。
Step5 子群吸收飞进该子群的主群粒子。(https://www.xing528.com)
Step6 根据设定的阈值,判断主群是否发现潜在最优解,如果是,则在其附近建立一个新的子群。
Step7 判断终止条件是否满足,若不满足转Step2,否则结束。
可以看出,该算法较为复杂,并且依然需要指定小生境半径来吸收其他子群或主群中的粒子。
2.物种PSO(Speciation PSO,SPSO)
Li提出了一种基于物种的PSO算法,该算法借鉴了物种遗传算法的思想。该算法的思想很简单:首先设定一个物种的半径(即小生境半径),然后将粒子个体排序,最小个体即为第一个物种的种子,与该种子个体之间的距离(通常使用欧氏距离)小于设定半径的种子个体即属于该种子的种群;余下的第一个粒子即为第二个物种的种子个体,依次进行下去,直到所有的个体都属于某一个物种;然后每个物种即子群按照普通的PSO算法速度、位置更新公式进行计算;计算结束后,按照物种算法继续下一次的物种形成。
该算法简单、有效,但显而易见仍然需要设定小生境半径,这阻碍了小生境算法的实际应用价值。
3.基于聚类的小生境PSO
2005年王俊年等学者在基本Niching PSO算法中引入一种简单的聚类算法,替换了原算法中依赖于圆形拓扑邻域的小生境产生方法,构建出一种基于聚类的小生境微粒群算法(CBNPSO)。小生境微粒群算法在对主微粒群进行寻优的同时对其中的微粒进行聚类,当聚类簇中的个体数目达到规定的子微粒群最小规模时形成一个小生境。用这种算法能够产生大小和形状不同的小生境,克服了Niching PSO算法的不足。
同年,王俊年等学者在微粒群算法中引入“基于密度”的聚类算法,构建出一种改进的小生境微粒群算法。该算法组合了两种方法来实现小生境的思想:第一,采用多种群策略,初始化产生一个没有子微粒群区分的主微粒群后,在对其迭代执行l-best PSO算法的同时,允许其中动态产生不相同的子微粒群;第二,子微粒群的产生采用一种“基于密度”的聚类算法,如果两个个体之间的距离小于一个给定的极值,则将这两个个体联系起来归入一个聚类簇,当聚类簇中的个体数目达到规定的子微粒群最小规模时形成一个小生境。用这种算法能够产生大小和形状不同的小生境,与生物学中地理小生境具有多种形状的事实相符合,也克服了Niching PSO算法只能以某一微粒为中心产生圆形小生境的不足。
2006年王俊年等学者将山峰聚类法和小生境微粒群算法结合,构建一种基于小生境微粒群算法的山峰聚类法。首先在数据空间上构造网格,进而构造出表示数据密度指标的山峰函数,然后将山峰聚类法中通过顺序地削去山峰函数来选择聚类中心这一步用小生境微粒群算法代替,通过执行小生境微粒群算法对山峰函数进行多峰函数寻优,找到山峰函数的每一个峰,即可确定聚类中心的个数和每一个聚类中心位置。仿真试验表明,构建的新算法能够弥补传统聚类算法的一些缺陷。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
