改进的动态多种群粒子群优化算法(IDM-PSO)



PSO 算法和其他群体智能算法及其他优化算法相比,具有形式简单、易于使用、收敛速度较快等优点,但在解决一些复杂优化问题时,也会像其它算法一样,存在难以摆脱局部最优、执行效率低、全局搜索能力和局部搜索能力难以平衡等缺陷。
为解决这些问题,研究者引入了群体智能算法的并行策略,常见的即将整个种群分为多个子种群,然后通过设计子种群间的信息交互机制来使多个子种群能在并行化执行的同时使算法的性能不下降甚至得到提升,这种并行化策略又称为多种群策略,设计群体智能算法的多种群策略的关键在于设计良好的子种群间的信息交互机制。
本文中,作者即采用这种并行策略来改进PSO算法,同时在原有PSO基础上,利用莱维飞行、混合粒子、正余弦学习因子等策略提高其全局勘探和局部开发能力,并且不同于固定划分多种群,本文采用一种动态随机重组的方法来提升个体信息交流效率——即改进的动态多种群粒子群优化算法(Improved dynamic multi-swarm particle swarm optimization algorithm,IDM-PSO)
00 文章目录
1 标准粒子群算法
2 改进的动态多种群粒子群优化算法
3 代码目录
4 算法性能
5 源码获取
01 标准粒子群算法
可在作者微信公众号:KAU的云实验台 查找相应内容
02 改进的动态多种群粒子群优化算法
由于粒子群优化算法在求解复杂多峰问题时易陷入局部最优解,因此学者们采用了多种改进方法提高算法全局搜索能力。包括作者前面实现的混合粒子群算法以及改进量子粒子群算法等,除了这些以外,文献[1]指出,多种群 PSO 算法运行效率和精度远远高于单种群 PSO 算法。因此作者将尝试通过多种群的策略改进粒子群算法以提高其全局搜索能力。
2.1 动态多种群划分策略
多种群PSO算法其实也是一种基于特殊邻域拓扑结构的局部PSO算法[2] ,相比于固定划分多种群, 动态随机重组可以避免过于限制粒子的自由,提升个体信息交流效率。文献[3]基于分类的思想以适应度值的均值和标准差为测度,通过评价粒子的位置关系将种群分为多个等级. 但是在迭代后期,优秀种群会吸引更多个体加入,将导致粒子过于聚集,种群间信息交流困难。
所以,本文在此基础上以适应度值,升序的中位值为界划分子种群,每一代都实行动态调整。适应度值较小的为“顶层粒子”,较大的为“底层粒子”;再从两者当中分别抽出同等数量的粒子组成局部PSO模型,并确保3个种群规模均衡,分别为离最优解较近的“优势群”、局部PSO模型的“混合群” 以及“劣势群”。
“优势群”中的粒子适应度值较小,需要继承种群中最优解的位置信息,缩小步长进行更加细密的搜索;而“劣势群”中的粒子则应扩大“步伐”,在向全局极值靠近的同时探索周围新的优解来提升开采能力;作为局部模型的“混合群””既包含较优粒子,也包含较差粒子,将动态调整种群的多样性,既要吸取个体经验,也要共享全局信息[4]。
2.2 各种群更新机制
2.2.1 优势群
粒子群算法在优化后期收敛速度变得缓慢的主要原因是其难以摆脱当前局部极值,导致精度下降。为增强优势群跳出局部最优的能力,引入作者在前面的文章中提到的莱维飞行,莱维飞行以大小步间隔形式进行,此类飞行方式加强了粒子活性及跳跃能力,扩大粒子搜索范围,有利于增强粒子多样性,避免算法陷入局部最优,能够提升算法收敛精度和速度。因此将该方法引入对于优势群的更新中,可弥补算法优势群无更新的不足。

xlg(t)和xg(t)分别为第 t 次迭代时,经莱维飞行更新后的全局最优粒子位置和种群全局最优粒子位置,α为步长控制因子,一般取0.01,用大小步长飞向原本小概率探索区域,使得搜索区域更加均匀。Levy(λ)为随机搜索路径,➕代表点乘。
由于莱维分布十分复杂,无法实现,目前常用 Mantegna 算法模拟其飞行轨迹,其数学表达式如式所示:

其中,参数c与Levy (l ) ~t^-l 中的 l 关系为 l=1+ c,且 0< c£ 2,m 和 u 均服从正态分布,定义如式所示:

其中,方差

由式确定:

式中,G为伽马函数,常数 c一般取1.5
为说明莱维飞行优越性,下图给出了二维空间中粒子飞行轨迹图,记录 1000 代内的粒子位置变化情况。

同时,莱维飞行虽能使粒子摆脱局部最优,但并不能保证更新后的粒子位置优于原位置,所以为避免无意义的位置更新,本文引入贪婪算法的评价策略决定是否更新最优粒子位置,即当更新后的位置优于原位置时,才进行位置更新,否则保留原位置,实现过程如式所示:

其中, xnewg(t)为贪婪算法更新后的粒子位置, f ()代表粒子适应度函数。
2.2.2 劣势群
“劣势群”中具有保留价值的粒子信息较少,其种群远离问题优解,可以通过变异的方式在整个空间搜索最优解,变异可以在整个搜索空间中寻找各种可能的解区域,也可以避免过早收敛和增加子种群的多样性。变异判断如下:

其中,r和N(0,1)是[0,1]之间的随机数,x为原始参数值, GV(x)为变异后的值。当第一个式子成立时,可执行式第二个式子对粒子进行高斯变异操作。多次迭代后判断式成立的几率逐渐减小,粒子发生变异的几率也逐渐降低。变异操作可在初始阶段使粒子以较大概率发生变异,扩大粒子在解空间中的搜寻范围,保证了粒子群的多样性。
除此之外,引入混合粒子的概念变更传统速度更新的公式,混合粒子记为pmix(k),pmix(k)的维度值由各粒子历史最优值随机混合而成,如图所示。图中P1~PN为 N 个粒子的当前最优位置,pmix为由P1~PN各维度随机选择混合而成的粒子。

由此得到的劣势群位置和速度更新方式为:

式中:c3为混合学习因子,r3为(0,1)间随机数。由式可知,混合粒子由当前各粒子的历史最优混合而成,既继承了各粒子的优良维度,同时具有随机性,兼顾了粒子多样性和优异性。混合粒子作为一个牵引因素引导粒子的速度更新,可以有效解决陷入局部最优的问题,同时其自身优异性也使粒子朝着较优方向进化。通过这样两个策略,多方向的随机扰动在一定程度上增强了搜索过程中的多样性. 这样的寻优方式非常适合“劣势群”中的粒子在解空间中进行波动性搜索,加深局部学习。
2.2.3 混合群
混合群介于两者之间,由于个体间的差异在算法前期较大,侧重于其认知部分,可以实现多方交流,而在后期,加强全局极值的引领力,能够促使粒子向最优解的周围聚集. 因此,学习因子引入余弦、正弦函数, 使自身学子因子单调递减,种群学习因子单调递增。综上,混合群的速度更新公式为:

2.2.4 非线性惯性权重
由于惯性权重因子影响PSO算法性能,其值较大时有利于全局范围的搜索,较小的权重值有利于加快算法的收敛速度,对于局部的细致开发益处较大,因此可设置其在搜索初期权重因子较大,有助于提升全局搜索能力;在搜索后期,权重因子较小,有助于增强局部的开发能力,通过这种非线性惯性权重来平衡整个种群的局部和全局的勘探能力。


2.3 流程
算法流程如下:

03 代码目录

对于每个测试函数,依次执行dms_pso.m和PSO.m,再执行result.m即可
部分主程序如下:

04 算法性能
4.1 测试函数
为了能够验证改进的动态多种群粒子群优化算法的优越性,本文选用4个CEC的标准测试函数Sphere、Griewank、Schwefel、Rosenbrock对算法的寻优精度、跳出局部能力、全局寻优能力进行检验。4个函数的表达式如下:
4.1.1 Sphere函数

Sphere 函数的自变量𝑥𝑖的取值的范围:-100<𝑥𝑖<100;该函数存在唯一的一个全局的最小值,且当𝑥=(0,0,…,0)时,函数取得全局最小值 f1(x) = 0。选择该函数是对算法寻优的精度进行测试。

4.1.2 Rosenbrock函数

Griewank 函数的自变量𝑥𝑖的取值的范围:-600<𝑥𝑖<600;该函数在整个的数 据分布含有大量局部极值,但是存在全局最小值 f2(x) = 0,是一种比较复杂的多模的复杂性问题,因此选择该函数目的是对算法是否跳出局部,能够继续搜索的 能力进行测试。

4.1.3 Schwefel函数

Schwefel函数的自变量𝑥𝑖的取值的范围:-500<𝑥𝑖<500;在xi=420有极小值,函数是一个典型的欺骗问题;有1个全局极小值点;距离另一个局部最优点很远;因此如果陷入局部最优就很难跳出,测试的是函数的全局搜索能力和跳出局部最优的能力,对算法的要求较高,简单的算法不太可能求解最优解.

4.1.4 Rosenbrock函数

Rosenbrock 函数的自变量𝑥𝑖的取值的范围:-30<𝑥𝑖<30;该函数是一单峰函数, 存在全局极小值,位于一个类似开口向上的抛物线的最低点处,虽然能够比较容易找到,但是很难收敛到最低处,因此可以测试全局寻优的能力。

4.2 测试结果
Sphere

Griewank

Schwefel

Rosenbrock

从测试结果可以看出,经改进后的PSO算法其全局寻优能力和跳出局部最优的能力都得到了较大的提升,这种提升在Schwefel函数中尤为显著。
05 源码获取
https://mbd.pub/o/bread/mbd-ZJyTk5ly
另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),若有定制需求,可私信作者。
参考文献
[1]AO S Z,LIANG J J,SUGANTHAN P N.Dynamic multis-warm particle swarm optimizer with local search for l-arge scale global optimization [C]//Hong Kong:Proc of IEEE SwarmIntelligence Symposium,2008:3845-3852
[2]Gao Y L, Yan P. Unified optimization based on multi-swarm PSO algorithm and cuckoo search algorithm[J]. Control and Decision, 2016, 31(4): 601-608
[3]Tong Q J, Li M, Zhao Q. An improved particle swarm optimization algorithm based on classification[J]. Modern Electronics Technique, 2019, 42(19): 11-14.
[4]唐可心,梁晓磊,周文峰等.具有重组学习和混合变异的动态多种群粒子群优化算法[J].控制与决策,2021,36(12):2871-2880.DOI:10.13195/j.kzyjc.2020.0898.
[5]侯维春,袁志鹏.混合动力汽车参数的动态重组多子群粒子群优化[J/OL].机械设计与制造:1-8[2023-07-26].DOI:10.19356/j.cnki.1001-3997.20230529.002.
[6]杨洋,栗风永.基于高斯变异粒子群优化的短期负荷预测[J].计算机仿真,2023,40(01):125-130.