• 【群智能算法改进】一种改进的棕熊优化算法 IBOA算法[1]【Matlab代码#64】



    获取资源请见文章第5节:资源获取】


    1. 棕熊优化算法(BOA)

    棕熊优化算法(Brown-bear Optimization Algorithm,BOA)由Tapan Prakash等人于2022年提出,其受模拟棕熊的气味标记和嗅探行为的启发所得,具有寻优速度快,求解精度高等优势。
    但是考虑到原始棕熊优化算法存在收敛精度低、收敛速度慢、易陷入局部最优等问题,故本文对BOA算法进行了改进。

    2. 改进的棕熊优化算法(IBOA)

    2.1 动态自适应参数

    原算法中线性变化的参数P会导致Gait while walking过程过少,导致算法陷入局部最优,所以引入动态自适应参数,使得算法在Gait while walking过程中尽量大范围搜索,跳出局部最优。

    在这里插入图片描述

    2.2 自适应t分布

    自适应t分布策略一般用于控制群体中个体的搜索范围或者搜索步长。它的基本思想是在搜索过程中根据当前的搜索状态动态调整搜索步长,以保证在探索和利用之间取得一个平衡。此外,自适应t分布策略通过动态调整搜索步长,可以使算法在探索阶段增加搜索范围,从而更有可能跳出局部最优解,进而找到全局最优解。

    自适应t分布系数的参考代码如下:

    % 设置自由度
    nu = 10; % 这里设置自由度为 10,你可以根据迭代次数变化
    % 生成随机样本
    t= trnd(nu, 1, 1); % 生成t分布系数
    
    • 1
    • 2
    • 3
    • 4

    2.3 黄金正弦策略

    黄金正弦算法通过组合正弦函数和黄金比例的方法进行迭代搜索,以接近最优解。黄金正弦作用时,搜索空间逐渐变窄,并在可能达到最优解的区域进行搜索,以提高收敛效率。黄金正弦的参考公式如下:
    在这里插入图片描述

    3. 部分代码展示

    clear;
    clc;
    close all;
     
    SearchAgents_no=30; % 种群数量 
    Function_name='F1'; % 标准测试函数编号(F1~F23)
    Max_iteration=500; % 最大迭代次数
    % 获取目标函数对应参数
    [lb,ub,dim,fobj]=Get_Functions_details(Function_name);
    
    [WOA_Best_score,WOA_Best_X,WOA_Convergence]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    [PSO_Best_score,PSO_Best_X,PSO_Convergence]=PSO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    [BOA_Best_score,BOA_Best_X,BOA_Convergence]=BOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    [IBOA_Best_score,IBOA_Best_X,IBOA_Convergence]=IBOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    
    semilogy(WOA_Convergence,'m','LineWidth',2);
    hold on
    semilogy(PSO_Convergence,'b','LineWidth',2);
    hold on
    semilogy(BOA_Convergence,'k','LineWidth',2);
    hold on
    semilogy(IBOA_Convergence,'r','LineWidth',2);
    legend('WOA','PSO','BOA','IBOA');
    xlabel('当前迭代次数');
    ylabel('适应度值');
    title('迭代曲线对比');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    4. 仿真结果展示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5. 资源获取说明

    可以获取完整代码资源。👇👇👇👀 名片

  • 相关阅读:
    c++ 运算符重载(一)
    关于Java中的运算符
    我的创作纪念日
    vue3 父子组件相互传值技巧
    J2EE从入门到入土05.XML配置文件
    groovy:调用jenkins任务时的请求失败问题
    ssm和springboot整合
    Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
    浅谈:服务架构进化论
    [libglog][FFmpeg] 如何把 ffmpeg 的库日志输出到 libglog里
  • 原文地址:https://blog.csdn.net/xiongyajun123/article/details/136665276