基于层次学习的粒子群算法(LLSO)

近期阅读了关于大尺度优化问题论文:《A Level-Based Learning Swarm Optimizer for Large-Scale Optimization》,是对PSO做出的改进,算法容易实现,这里做出简单总结。

一、改进策略

(一)动态层数选择
基于层次学习的粒子群算法(LLSO)_第1张图片
将种群按适应度值进行排序,排序后将粒子分层,层数的大小从层数池中选择。层数池为集合S:
在这里插入图片描述
粒子的总数np,所分的层数为nl(nl∈S),每层的粒子数为ls,ls=np/nl,余数=(np%nl),放入底层。
(1)动态层数选择
为了提高粒子的收敛速度,使用轮盘赌的方法在集合S中动态选择层数。定义集合:
在这里插入图片描述
各元素初始化为1,其中存放的是对集合S中存放的层数的相对性能改进。
在这里插入图片描述
F是上一代全局最佳适应度值,F弯是当代全局最佳适应度值。
定义集合
在这里插入图片描述
存放的是集合S中各层数被选择的概率。使用轮盘赌的方法,通过生成[0,1]的随机数,落在特定的概率区间,就选择一个特定的层数。
基于层次学习的粒子群算法(LLSO)_第2张图片
每更新一代将重新排序,再次随机选择层数,最大评估粒子数MAX_fes作为结束条件。
(二)分层学习
层数选好之后,粒子从底层开始不断向上更新,第一层不更新直接进入下一代。
基于层次学习的粒子群算法(LLSO)_第3张图片
基于层次学习的粒子群算法(LLSO)_第4张图片
公式中v(d,(i,j))代表当前在i层的第j个粒子在维度d的速度,参数ф=0.4,是(i-1)层中的随机两层,且规定rl1

二、实验结果

本实验使用测试函数
z = x^2 + y^2 - 10cos(2pix) - 10cos(2piy) + 20;
三维图像如下:
基于层次学习的粒子群算法(LLSO)_第5张图片
实验参数:
ф = 0.4;
MAX_fes=10^5; %最大评估粒子
np =300; %种群规模
s=6; %层数池中的元素个数
S=[4,6,8,10,20,50];%层数池
基于层次学习的粒子群算法(LLSO)_第6张图片
这是粒子在三维图上的分布在z轴仰视图,粒子逐渐密集与一个区域。

这是粒子在二维平面的运动变化收敛图,可以明显的看出粒子的收敛速度非常快。
基于层次学习的粒子群算法(LLSO)_第7张图片
这是记录器记录的粒子的适应度的变化,最优解的寻找速度也是比较快的。

三、总结

将粒子按适应度值进行动态分层,优秀粒子保留被学习,让差的粒子进行探索,不仅保持了多样性,还加速了粒子的收敛,实现了大规模优化。但是该算法还是存在一定的缺陷,改进接近全局最优将是下一步的工作。

你可能感兴趣的:(智能算法,LLSO)