目录

1.鲸鱼算法简介

2. 算法代码展示

3.算法运算结果展示


1.鲸鱼算法简介

鲸鱼算法是根据鲸鱼的捕食行为而衍生的一种算法,属于智能优化算法的一种。鲸鱼算法是Mirjalili等于2016年提出的一种模拟鲸鱼群体捕食行 为的启发式优化算法,捕食行为称为泡泡网捕食方法,分为搜寻猎物、包围猎物、泡网攻击3个阶段。

首先,鲸鱼随机地搜寻猎物,并且通过互相远离其他鲸鱼的位置,实现搜寻到更优的猎物;随后,鲸鱼识别出猎物的位置,向猎物靠拢;最后,鲸鱼采取螺旋的方式包围猎物,收缩包围圈,实现捕食。鲸鱼算法具有优化参数少,操作简单,收敛速度快等特点,广泛应用于工程中。其优化步骤为:①初始化参数:种群数量及迭代次数;②初始化搜索代理位置;③计算搜索代理的适应度值,取适应度值最小的搜索代理为最佳位置;④更新下一代搜索代理位置;⑤如达到终止条件,输出最优搜索代理,否则返回步骤③继续优化。其算法流程为:

2. 算法代码展示

主代码展示

clear all 
clc

SearchAgents_no=30; % Number of search agents 搜索代理数量

Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)

Max_iteration=500; % Maximum numbef of iterations

% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);%dim维数,变量的数量

[Best_score,Best_pos,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

figure('Position',[269   240   660   290]) %Position属性则指定窗口的大小和位置
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
semilogy(WOA_cg_curve,'Color','r')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');

WOA狩猎行为代码展示 

for i=1:size(Positions,1)
        r1=rand(); % r1 is a random number in [0,1]
        r2=rand(); % r2 is a random number in [0,1]
        
        A=2*a*r1-a;  % Eq. (2.3) in the paper
        C=2*r2;      % Eq. (2.4) in the paper
        
        
        b=1;               %  parameters in Eq. (2.5)
        l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)
        
        p = rand();        % p in Eq. (2.6)
        
        for j=1:size(Positions,2)
            
            if p<0.5   
                if abs(A)>=1
                    rand_leader_index = floor(SearchAgents_no*rand()+1);
                    X_rand = Positions(rand_leader_index, :);
                    D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)
                    Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)
                    
                elseif abs(A)<1
                    D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % Eq. (2.1)
                    Positions(i,j)=Leader_pos(j)-A*D_Leader;      % Eq. (2.2)
                end
                
            elseif p>=0.5
              
                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                % Eq. (2.5)
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);
                
            end
            
        end
    end

3.算法运算结果展示

欢迎大家一起交流学习

鲸鱼算法(WOA)在matlab中的实现相关推荐

  1. 怎么用matlab编写quad8算法,quad8 是 matlab 中调用( )公式的命令

    quad8 是 matlab 中调用( )公式的命令 更多相关问题 [判断题]对于糖尿病患者来说,心脏病.卒中和猝死的风险减少一半. [单选题]孔子曰:人皆可为尧舜.只要我们从小形成良好的生活态度.人 ...

  2. 鲸鱼算法(WOA)优化的BP神经网络预测,WOA-BP回归预测,多输入单输出模型。

    %%  清空环境变量 warning off             % 关闭报警信息 close all               % 关闭开启的图窗 clear                 ...

  3. 鲸鱼算法(WOA)优化支持向量机的数据回归预测,WOA-SVM回归预测,多输入单输出模型。

    %%  清空环境变量 warning off             % 关闭报警信息 close all               % 关闭开启的图窗 clear                 ...

  4. 鲸鱼算法(WOA)优化xgboost的分类预测模型,多输入单输出模型,WOA-xgboost分类预测。

    %%  清空环境变量 warning off             % 关闭报警信息 close all               % 关闭开启的图窗 clear                 ...

  5. 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  6. 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测

    分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 ...

  7. 分类预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元数据分类预测

    分类预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元数据分类预测 分类效果 基本描述 1.Matlab实现WOA-CNN-GRU多特征分类预测,多特征输入模型,运行环境Ma ...

  8. Matlab中N是什么意思,MATLAB中y=FFT(X,N)中的N是什么意思

    matlab傅里叶变换中fft(x,n),x,n分别是什么含义? fft(x,n)是一维快速傅里叶变换,x相当于信号,n是变换点数.离散傅里叶变换DFT的快速算法就是FFT. matlab中FFT函数 ...

  9. matlab中 y =ft(x)的意思,matlab中y=fft(x)语句的意思

    matlab傅里叶变换中fft(x,n),x,n分别是什么含义? fft(x,n)是一维快速傅里叶变换,x相当于信号,n是变换点数.离散傅里叶变换DFT的快速算法就是FFT. matlab中FFT函数 ...

最新文章

  1. C++ 反转单向链表
  2. Multi-Scale Densenet续作?搞定Transformer降采样,清华联合华为开源动态ViT!
  3. springboot项目修改个人头像
  4. JAVA中报错AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@f70ee1)
  5. ORA-01843:无效的月份
  6. TinyPNG批量智能图片压缩器无限制版(支持Mac/Win)
  7. 计算机主板故障检测维修,主板故障!教你如何用主板诊断卡检测维修电脑主板故障...
  8. runtime error python 3.5_Python 3.5 RuntimeError: can't start new thread
  9. EasyGUI-5:文本显示
  10. 三条中线分的六个三角形_为什么三角形的三条中线把三角形分为面积相等的六块...
  11. Ubuntu lightdm无法启动解决办法
  12. hdu 1873 看病要排队
  13. Validation 使用
  14. python语言中、用来安装第三方库的命令_python安装第三方库的方法
  15. 个人建站系列步骤流程(二.申请域名+实名认证)
  16. Matlab高光谱遥感、数据处理与混合像元分解实践技术应用
  17. C语言所有头文件整理
  18. 三生万物---算法生成的25幅三角形图像
  19. 找工作交流群(北上广深杭成都重庆南京武汉长沙西安)
  20. 气象数据的可视化展现形式

热门文章

  1. 随笔-《你的第一本保险指南》读后感
  2. LE和LPP基础知识
  3. vue根据按钮进行中英文切换
  4. 1-idea社区版创建springboot项目
  5. 正则表达式(经纬度、手机号、时间)
  6. 网络故障排查:Ping和Tracert命令
  7. 校园局域网组建方案分析
  8. 【ROS】Ros 发布2d boundingbox消息
  9. oracle查询不重复的列,ORACLE查问不重复字段的全部列
  10. 中国汽车品牌口碑榜之:--2013年第3季度福州商用车综合口碑排名