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


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


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

    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\{

    A(l)[Fj+c1((ubjlbj)c2+lbj)],c30.5,A(l)[Fjc1((ubjlbj)c2+lbj)],c3<0.5," role="presentation">A(l)[Fj+c1((ubjlbj)c2+lbj)],c30.5,A(l)[Fjc1((ubjlbj)c2+lbj)],c3<0.5,
    \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)

    xji={12(k×xji+xji1),f(xji)f(xji1),12(xji+k×xji1),f(xji)<f(xji1),i2," role="presentation" style="position: relative;">xji={12(k×xji+xji1),f(xji)f(xji1),12(xji+k×xji1),f(xji)<f(xji1),i2,
    \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代码

  • 相关阅读:
    html css制作正六边形
    MongoDB简明手册
    VR全景拍摄酒店,为用户消除“不透明度”
    gentoo-useflags
    【国外框架】—— quasar 应用程序插件
    java判断对象是否还在被引用
    基于Alexnet深度学习网络的人员口罩识别算法matlab仿真
    jQuery动态添加元素后,元素注册事件失效
    【笔记】【Java并发编程实战】2线程安全
    odoo15 大部分模块都用的附件整理成一独立模块
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126826042