基于衰减因子和动态学习的改进樽海鞘群算法
文章目录
- 一、理论基础
- 1、樽海鞘群算法
- 2、基于衰减因子和动态学习的改进樽海鞘群算法
- (1)添加衰减因子
- (2)引入动态学习
- (3)RDSSA的实现流程
- 二、测试实验分析
- 三、参考文献
一、理论基础
1、樽海鞘群算法
请参考这里。
2、基于衰减因子和动态学习的改进樽海鞘群算法
通过研究SSA的原理发现,由于位置更新搜索范围无约束,且精英个体的影响权重小,导致SSA在迭代后期不能进行很精确的搜索,跟随者不能很好的协助个体位置更新。因此,本文的改进思路从两个方面考虑:针对SSA在领导者更新阶段搜索范围不受限的问题,添加衰减因子,增强迭代后期的局部开发能力;针对跟随者位置更新的局限性,引入动态学习策略,提高全局探索能力。
(1)添加衰减因子
本文提出将衰减因子引入SSA,得到添加衰减因子的樽海鞘群算法(reduction factor salp swarm algorithm, RSSA),使得领导者位置更新范围随着迭代次数的增加而逐渐减小,收敛前期避免陷入局部极值,收敛后期越来越逼近最优值,达到更高的求解精度。
添加衰减因子的领导者位置更新公式(1)如下:xj1={A(l)[Fj+c1((ubj−lbj)c2+lbj)],c3≥0.5A(l)[Fj−c1((ubj−lbj)c2+lbj)],c3<0.5(1)x_j^1=\begin{dcases}A(l)[F_j+c_1((ub_j-lb_j)c_2+lb_j)],\quad c_3≥0.5\\A(l)[F_j-c_1((ub_j-lb_j)c_2+lb_j)],\quad c_3<0.5\end{dcases}\tag{1}xj1={A(l)[Fj+c1((ubj−lbj)c2+lbj)],c3≥0.5A(l)[Fj−c1((ubj−lbj)c2+lbj)],c3<0.5(1)其中控制搜索范围的衰减因子A(l)A(l)A(l)是一个非线性递减函数,定义如下:A(l)=e−30(lL)(2)A(l)=\text e^{-30(\frac lL)}\tag{2}A(l)=e−30(Ll)(2)收敛前期,搜索范围不受限,个体可以充分在全局移动,充分发挥算法的全局搜索能力,避免陷入局部极值;收敛后期,随着个体越来越逼近最优值,搜索范围也逐渐减小,个体在限制范围内进行精确搜索,增强局部搜索能力,以达到更高的求解精度。
(2)引入动态学习
为了增强精英个体的影响权重,本文将动态学习策略引入SSA,得到引入动态学习的樽海鞘群算法(dynamic learning salp swarm algorithm, DSSA),先比较xjix_j^ixji与xji−1x_j^{i-1}xji−1的适应值,在适应值较大的位置(即离最优值距离较远的位置)上添加削弱因子kkk,以削弱较差位置个体的影响权重,增强较优位置个体的影响权重。
引入动态学习策略的跟随者位置更新公式如下:xji={12(k×xji+xji−1),f(xji)≥f(xji−1)12(xji+k×xji−1),f(xji)<f(xji−1),i≥2(3)x_j^i=\begin{dcases}\frac12(k×x_j^i+x_j^{i-1}),\quad f(x_j^i)≥f(x_j^{i-1})\\\frac12(x_j^i+k×x_j^{i-1}),\quad f(x_j^i)<f(x_j^{i-1})\end{dcases},i≥2\tag{3}xji=⎩⎪⎨⎪⎧21(k×xji+xji−1),f(xji)≥f(xji−1)21(xji+k×xji−1),f(xji)<f(xji−1),i≥2(3)其中,f(xji)f(x_j^i)f(xji)和f(xji−1)f(x_j^{i-1})f(xji−1)分别表示两位置的适应值,kkk是服从参数为0.5的指数分布随机数。
在收敛过程中,精英个体能更好的发挥协助作用,帮助领导者做决策,不断向食物源逼近,提高寻优效率。
(3)RDSSA的实现流程
将RSSA和DSSA结合,同时改变领导者和跟随者的位置更新公式,可以得到新的优化算法RDSSA,提高领导者局部开发能力,增强跟随者的协助作用,以提高收敛速度,获得更好的优化效果。RDSSA的实现流程如下所示:
Step 1 设定种群规模NNN、迭代次数IterationIterationIteration、维数DDD和上下界;
Step 2 初始化樽海鞘群个体的位置,并计算各个体的适应值FitnessFitnessFitness,将最小适应值个体的位置确定为食物源位置FoodPositionFoodPositionFoodPosition;
Step 3 生成衰减因子A(l)A(l)A(l),根据式(1)更新领导者位置;
Step 4 生成随机数kkk,根据式(3)更新跟随者位置;
Step 5 计算更新位置后的个体适应值,若小于当前FoodPositionFoodPositionFoodPosition,则更新FoodPositionFoodPositionFoodPosition;
Step 6 判断当前迭代次数是否达到预设迭代次数,若已达到,结束迭代,否则返回执行Step 3;
Step 7 输出FoodPositionFoodPositionFoodPosition位置及该位置上的适应值FitnessFitnessFitness。
RDSSA的伪代码如下图所示:
二、测试实验分析
本文将RDSSA与SSA、RSSA、DSSA进行对比,测试函数为文献[1]中的f1~f4(单峰函数)、f13~f16(多峰函数)。为了遵循实验公平性原则,实验基本参数保持一致:种群数量NNN设为50,函数维数DDD设为45,迭代次数IterationIterationIteration设为500,每次实验结果为独立运行30次的平均值。
结果显示如下:
函数:F1
SSA:最差值: 3524.9065,最优值:998.8546,平均值:1973.4763,标准差:582.9121
RSSA:最差值: 2.4903e-35,最优值:1.0959e-35,平均值:1.6129e-35,标准差:2.811e-36
DSSA:最差值: 6.9699e-41,最优值:3.4148e-46,平均值:3.1646e-42,标准差:1.2662e-41
RDSSA:最差值: 4.9458e-64,最优值:4.6386e-69,平均值:3.8904e-65,标准差:1.0147e-64
函数:F2
SSA:最差值: 32.3036,最优值:17.566,平均值:25.5322,标准差:3.8434
RSSA:最差值: 2.565e-18,最优值:1.85e-18,平均值:2.1873e-18,标准差:1.9092e-19
DSSA:最差值: 2.4503e-21,最优值:2.7966e-23,平均值:5.5804e-22,标准差:7.2559e-22
RDSSA:最差值: 1.3688e-32,最优值:3.4198e-35,平均值:1.7116e-33,标准差:2.8507e-33
函数:F3
SSA:最差值: 21595.011,最优值:2401.204,平均值:8614.5134,标准差:4872.8367
RSSA:最差值: 2.0317e-34,最优值:2.5577e-35,平均值:8.0167e-35,标准差:4.1236e-35
DSSA:最差值: 9.5259e-41,最优值:1.3566e-44,平均值:1.2344e-41,标准差:2.2173e-41
RDSSA:最差值: 1.7051e-63,最优值:6.9384e-68,平均值:1.9419e-64,标准差:4.0834e-64
函数:F4
SSA:最差值: 21.8,最优值:13.3484,平均值:17.419,标准差:1.9018
RSSA:最差值: 1.7379e-18,最优值:9.8417e-19,平均值:1.3292e-18,标准差:1.8175e-19
DSSA:最差值: 6.9331e-22,最优值:1.5417e-23,平均值:2.0608e-22,标准差:1.6876e-22
RDSSA:最差值: 4.5634e-33,最优值:2.0181e-35,平均值:1.0902e-33,标准差:1.2728e-33
函数:F13
SSA:最差值: 312.019,最优值:179.0085,平均值:253.6474,标准差:43.6681
RSSA:最差值: 0,最优值:0,平均值:0,标准差:0
DSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F14
SSA:最差值: 7.2999,最优值:4.7999,平均值:6.1065,标准差:0.69428
RSSA:最差值: 0,最优值:0,平均值:0,标准差:0
DSSA:最差值: 0,最优值:0,平均值:0,标准差:0
RDSSA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F15
SSA:最差值: 199.4559,最优值:30.7942,平均值:94.9727,标准差:36.4916
RSSA:最差值: 1.7068e-36,最优值:3.0966e-37,平均值:9.8005e-37,标准差:3.8859e-37
DSSA:最差值: 1.3726e-42,最优值:3.5218e-46,平均值:1.4833e-43,标准差:3.5428e-43
RDSSA:最差值: 2.8864e-65,最优值:1.2069e-69,平均值:1.1872e-66,标准差:5.2416e-66
函数:F16
SSA:最差值: 1072.8803,最优值:330.2378,平均值:632.5687,标准差:168.8757
RSSA:最差值: 2.2621e-36,最优值:1.1537e-37,平均值:4.1213e-37,标准差:3.8945e-37
DSSA:最差值: 2.017e-42,最优值:3.048e-47,平均值:1.4334e-43,标准差:3.9035e-43
RDSSA:最差值: 3.958e-66,最优值:1.2899e-69,平均值:6.9684e-67,标准差:1.03e-66
结果表明,本文提出的改进算法在收敛精度和收敛速度方面有较大提升,具有良好的优化性能。
三、参考文献
[1] 陈雷, 蔺悦, 康志龙. 基于衰减因子和动态学习的改进樽海鞘群算法[J]. 控制理论与应用, 2020, 37(8): 1766-1780.
基于衰减因子和动态学习的改进樽海鞘群算法相关推荐
- 基于混沌映射与动态学习的自适应樽海鞘群算法
文章目录 一.理论基础 1.樽海鞘群算法SSA 2.改进樽海鞘群算法CDSSA (1)基于改进Tent映射的种群初始化 (2)基于Logistic映射的领导者更新 (3)基于动态学习的追随者更新 (4 ...
- 混沌映射与动态学习的自适应樽海鞘群算法-附代码
混沌映射与动态学习的自适应樽海鞘群算法 文章目录 混沌映射与动态学习的自适应樽海鞘群算法 1.樽海鞘群算法 2.改进樽海鞘群算法 2.1 基于改进 Tent 映射的种群初始化 2.2 基于 Logis ...
- 基于改进樽海鞘群寻优SVM的土壤含水量预测算法
摘要: 针对传统土壤含水量预测算法存在的精度和效率较低等问题,采用支持向量机(SVM, support vector machine)建立预测模型,提出一种改进樽海鞘群算法(SSA, salp swa ...
- 基于混沌映射的自适应樽海鞘群算法-附代码
基于混沌映射的自适应樽海鞘群算法 文章目录 基于混沌映射的自适应樽海鞘群算法 1.樽海鞘群算法 2.改进樽海鞘群算法 2.1 混沌映射 2.2 自适应权重变化 2.3 追随者机制变化 3.实验结果 4 ...
- 基于觅食生境选择的改进粒子群算法-附代码
基于觅食生境选择的改进粒子群算法 文章目录 基于觅食生境选择的改进粒子群算法 1.粒子群优化算法 2. 改进粒子群算法 3.实验结果 4.参考文献 5.Matlab代码 6.Python代码 摘要:在 ...
- 基于改进粒子群算法的WSN节点部署优化
文章目录 一.理论基础 1.PSO算法(经典粒子群算法) 2.UPSO算法(均匀搜索粒子群算法) 3.CPSO算法(本文算法) 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.PSO算法(经典 ...
- 基于Cat混沌与高斯变异的改进灰狼优化算法-附代码
基于Cat混沌与高斯变异的改进灰狼优化算法 文章目录 基于Cat混沌与高斯变异的改进灰狼优化算法 1.灰狼优化算法 2. 改进灰狼优化算法 2.1 混沌反向学习策略的种群初始化 2. 2 引入个体记忆 ...
- 《基于改进粒子群算法的混合储能系统容量优化》完全复现
<基于改进粒子群算法的混合储能系统容量优化>完全复现 matlab. 以全生命周期费用最低为目标函数,负荷缺电率作为风光互补发电系统的运行指标,得到蓄电池储能和超级电容个数,缺电率和系统最 ...
- 阅读《基于CPSO和DE改进粒子群算法的无功优化仿真》的感想
阅读<基于CPSO和DE改进粒子群算法的无功优化仿真>的感想 PS:文中提到的对比的文章都是指的是<电力系统无功优化的LRS-PSO算法>-陈功贵 CPSO Chaotic P ...
- 基于正交设计的折射反向学习樽海鞘群算法
文章目录 一.理论基础 1.樽海鞘群算法 2.正交反向学习樽海鞘群算法OOSSA (1)正交反向学习策略 (2)惯性权重策略 (3)OOSSA算法 二.仿真实验与结果分析 三.参考文献 一.理论基础 ...
最新文章
- 微信小程序星级评分和展示
- 3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- 《Linux菜鸟入门》Linux网络管理
- boost::hana::back用法的测试程序
- [BUUCTF-pwn]——pwn2_sctf_2016
- OpenCV学习笔记六-提高对比度
- servlet的执行过程
- python安装requests第三方模块
- PS抠图神器: KnockOut 2.0安装汉化和使用教程
- python实现不重复排列组合_python之itertools的排列组合相关
- 腾讯网易已称王,今日头条有什么勇气来做游戏?
- xpath返回结果是否有值_【自学C#】|| 笔记 41 DataReader:读取查询结果
- 古城钟楼微博地支报时程序铛,100行代码实现,价值一天20万粉丝
- 总结一下vue添加收藏取消收藏功能
- 使用theano进行深度学习实践(一)
- 如何使用docker和docker-compose在本地Testnet上开发EOS区块链
- 【Linux内核】Linux软中断处理机制-ksoftirqd
- Docker_学习笔记
- linux建立ss服务器,如何在linux服务器上部署ss服务
- sql语句批量导入数据库数据