【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】

文章目录

    • 【可更换其他算法,`获取资源`请见文章第5节:资源获取】
    • 1. 白鲸优化算法BWO
    • 2. 工程应用问题优化
      • 2.1 压力容器设计
      • 2.2 拉压弹簧设计
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


【可更换其他算法,获取资源请见文章第5节:资源获取】


1. 白鲸优化算法BWO

白鲸优化算法 (BWO,beluga whale optimization) 是2022 年在白鲸游泳、捕鲸及跌倒等行为中得到启发而提出的一种新型基于种群的元启发式算法。BWO 主要对白鲸游泳、捕食及跌倒 (坠落) 等行为进行模拟,其对应探索、开发及鲸鱼坠落三个阶段。BWO 当中鲸落概率与平衡因子均为自适应的,对开发能力与控制搜索起到决定性作用。除此之外,在开发阶段引入 Levy 飞行策略来进一步提升该阶段的全局收敛性。

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

在这里插入图片描述

在这里插入图片描述

2. 工程应用问题优化

程序共包含压力容器设计滚动轴承设计拉压弹簧设计悬臂梁设计轮系设计共5种工程应用问题,下面详细介绍了其中两种工程应用问题。

2.1 压力容器设计

在这里插入图片描述

2.2 拉压弹簧设计

拉压弹簧设计问题优化目标是使下图所示的拉伸/压缩弹簧的质量最小化。
在这里插入图片描述
该问题需要在满足剪切力、挠度、波动频率、外径等约束条件下进行求解。该问题中有3个设计变量,分别为线圈直径d、平均线圈直径D和线圈数量N。该问题数学模型如下所示:
在这里插入图片描述

3. 部分代码展示

    %----------------------------------------------------------------------
    %%% (BWO) for 5 engineering designs %%%
    % ---------------------------------------------------------------------
    %%%%%%%%%%% Engineering lists %%%%%%%%%%%%%%
    %  1.Pressure vessel design                %
    %  2.Rolling element bearing design        %
    %  3.Tension/compression spring design     %
    %  4.Cantilever beam design                %
    %  5.Gear train design                     %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % BestX:The best solution                  %
    % BestF:The best fitness                   %
    % HisBestF:History of the best fitness     %
    % EngIndex:index of engineerings           %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    clc;
    clear;
    close all;
    
    EngList=[{'Pressure vessel design'},...
             {'Rolling element bearing design'},...
             {'Tension/compression spring design'},...
             {'Cantilever beam design'},...
             {'Gear train design'}];
    MaxIteration=500;
    PopSize=30;
    
    EngIndex=5; % 切换数字:1=压力容器设计问题 2=滚动轴承设计问题 3=压缩弹簧设计问题 4=悬臂梁设计问题 5=轮系设计问题
    
    [BestX,BestF,HisBestF]=BWO(EngIndex,MaxIteration,PopSize);
    if EngIndex==2 || EngIndex==3
        BestX(3)=round(BestX(3));
    elseif  EngIndex==5
        BestX=round(BestX);
    end
    
    display(['The best fitness of ',EngList{EngIndex},' is: ', num2str(BestF)]);
    display(['The best solution is: ', regexprep(num2str(BestX),'\s*',',')]);
    figure;
    if BestF>0
        semilogy(HisBestF,'r','LineWidth',2);
    else
        plot(HisBestF,'r','LineWidth',2);
    end
    
    xlabel('Iterations');
    ylabel('Fitness');
    title([EngList{EngIndex}]);

4. 仿真结果展示

【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】_第1张图片
【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】_第2张图片
【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】_第3张图片
【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】_第4张图片
【群智能算法】基于白鲸优化算法的工程应用问题优化【Matlab代码#55】_第5张图片

5. 资源获取

可以获取完整代码资源,可以更换其他群智能算法。

你可能感兴趣的:(Matlab,算法,matlab,开发语言,白鲸优化算法,工程优化问题)