基于衰减因子和动态学习的改进樽海鞘群算法-附代码

本文提出了基于衰减因子和动态学习的改进樽海鞘群算法,以提升其求解精度和寻优效率。在领导者更新阶段引入衰减因子,使搜索范围随迭代减小,增强局部搜索;跟随者更新阶段采用动态学习策略,增加精英个体影响,提高全局搜索。实验结果表明,改进后的算法在优化性能上表现出色。
摘要由CSDN通过智能技术生成

基于衰减因子和动态学习的改进樽海鞘群算法


摘要:樽海鞘群算法是一种新型的群智能优化算法.与其他智能优化算法相比,樽海鞘群算法的优化求解策略仍有待改进,以进一步提高该算法的求解精度和寻优效率.本文提出一种基于衰减因子和动态学习的改进樽海鞘群算法,通过在领导者更新阶段添加衰减因子,提高算法的局部开发能力,在跟随者更新阶段引入动态学习策略,提高算法的全局搜索能力。

1.樽海鞘群算法

基础樽海鞘群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869

2.改进樽海鞘群算法

2.1 添加衰减因子的樽海鞘群算法

基本SSA在领导者位置更新阶段, 个体在食物源 附近移动, 搜索范围不受限制, 使得收敛后期个体不 能在极值点进行精确搜索, 还有可能跳出极值点. 为 了改善这一问题, 本文提出将衰减因子引入SSA, 得 到添加衰减因子的樽海鞘群算法(reduction factor salp swarm algorithm, RSSA), 使得领导者位置更新范围 随着迭代次数的增加而逐渐减小, 收敛前期避免陷入 局部极值, 收敛后期越来越逼近最优值, 达到更高的 求解精度.
添加衰减因子的领导者位置更新公式(4)如下:
x j 1 = { A ( l ) [ F j + c 1 ( ( u b j − l b j ) c 2 + l b j ) ] , c 3 ⩾ 0.5 , A ( l ) [ F j − c 1 ( ( u b j − l b j ) c 2 + l b j ) ] , c 3 < 0.5 , (4) x_j^1=\left\{\begin{array}{l} A(l)\left[F_j+c_1\left(\left(u b_j-l b_j\right) c_2+l b_j\right)\right], c_3 \geqslant 0.5, \\ A(l)\left[F_j-c_1\left(\left(u b_j-l b_j\right) c_2+l b_j\right)\right], c_3<0.5, \end{array}\right.\tag{4} xj1={A(l)[Fj+c1((ubjlbj)c2+lbj)],c30.5,A(l)[Fjc1((ubjlbj)c2+lbj)],c3<0.5,(4)
其中控制搜索范围的衰减因子 A ( l ) A(l) A(l) 是一个非线性递 减函数, 定义如下:
A ( l ) = e − 30 ( l L ) (5) A(l)=\mathrm{e}^{-30\left(\frac{l}{L}\right)} \tag{5} A(l)=e30(Ll)(5)
收敛前期, 搜索范围不受限, 个体可以充分在全局 移动, 充分发挥算法的全局搜索能力, 避免陷入局部 极值; 收敛后期, 随着个体越来越逼近最优值, 搜索范 围也逐渐减小, 个体在限制范围内进行精确搜索, 增强 局 部 搜 索 能 力 , 以 达 到更高的求解精度。

2.2 引入动态学习的樽海鞘群算法

基本SSA算法没有参数影响跟随者的位置更新, 跟随者的移动由个体自身位置和前一个个体位置综 合决定, 精英个体的影响权重小, 使得跟随者对领导 者的协助作用很小. 为了增强精英个体的影响权 重, 本文将动态学习策略引入 SSA, 得到引入动态 学习的楢海鞘群算法 (dynamic learning salp swarm algorithm, DSSA), 先比较 x j i x_j^i xji x j i − 1 x_j^{i-1} xji1 的适应值, 在适应 值较大的位置(即离最优值距离较远的位置)上添加削 弱因子 k k k, 以削弱较差位置个体的影响权重, 增强较优 位置个体的影响权重.
引入动态学习策略的跟随者位置更新公式如下:
x j i = { 1 2 ( k × x j i + x j i − 1 ) , f ( x j i ) ⩾ f ( x j i − 1 ) , 1 2 ( x j i + k × x j i − 1 ) , f ( x j i ) < f ( x j i − 1 ) , i ⩾ 2 , (6) \begin{aligned} &x_j^i= \\ &\left\{\begin{array}{l} \frac{1}{2}\left(k \times x_j^i+x_j^{i-1}\right), f\left(x_j^i\right) \geqslant f\left(x_j^{i-1}\right), \\ \frac{1}{2}\left(x_j^i+k \times x_j^{i-1}\right), f\left(x_j^i\right)<f\left(x_j^{i-1}\right), \end{array} \quad i \geqslant 2,\right. \end{aligned}\tag{6} xji={21(k×xji+xji1),f(xji)f(xji1),21(xji+k×xji1),f(xji)<f(xji1),i2,(6)
其中: f ( x j i ) f\left(x_j^i\right) f(xji) f ( x j i − 1 ) f\left(x_j^{i-1}\right) f(xji1) 分别表示两位置的适应值, k k k 是 服从参数为 0.5 0.5 0.5 的指数分布随机数.
在收敛过程中, 精英个体能更好的发挥协助作用, 帮助领导者做决策, 不断向食物源逼近, 提高寻优效 率.

RDSSA 的实现流程如下所示:

Step 1 设定种群规模 N N N 、迭代次数 Iteration、维 数 D D D 和上、下边界;

Step 2 初始化樽海鞘群个体的位置, 并计算各个 体的适应值Fitness, 将最小适应值个体的位置确定为 食物源位置FoodPosition;

Step 3 生成衰减因子 A ( l ) A(l) A(l), 根据式(4)更新领导 者位置;

Step 4 生成随机数 k k k, 根据式(6)更新跟随者位 置;

Step 5 计算更新位置后的个体适应值, 若小于当 前FoodPosition, 则更新FoodPosition;

Step 6 判断当前迭代次数是否达到预设迭代次 数, 若已达到, 结束迭代, 否则返回执行 Step 3;

Step 7 输出FoodPosition位置及该位置上的适应 值Fitness.

3.实验结果

请添加图片描述

4.参考文献

[1]陈雷,蔺悦,康志龙.基于衰减因子和动态学习的改进樽海鞘群算法[J].控制理论与应用,2020,37(08):1766-1780.

5.Matlab代码

6.python代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值