鲸鱼算法(WOA)在matlab中的实现
目录
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中的实现相关推荐
- 怎么用matlab编写quad8算法,quad8 是 matlab 中调用( )公式的命令
quad8 是 matlab 中调用( )公式的命令 更多相关问题 [判断题]对于糖尿病患者来说,心脏病.卒中和猝死的风险减少一半. [单选题]孔子曰:人皆可为尧舜.只要我们从小形成良好的生活态度.人 ...
- 鲸鱼算法(WOA)优化的BP神经网络预测,WOA-BP回归预测,多输入单输出模型。
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear ...
- 鲸鱼算法(WOA)优化支持向量机的数据回归预测,WOA-SVM回归预测,多输入单输出模型。
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear ...
- 鲸鱼算法(WOA)优化xgboost的分类预测模型,多输入单输出模型,WOA-xgboost分类预测。
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear ...
- 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)
先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...
- 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测
分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 ...
- 分类预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元数据分类预测
分类预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元数据分类预测 分类效果 基本描述 1.Matlab实现WOA-CNN-GRU多特征分类预测,多特征输入模型,运行环境Ma ...
- Matlab中N是什么意思,MATLAB中y=FFT(X,N)中的N是什么意思
matlab傅里叶变换中fft(x,n),x,n分别是什么含义? fft(x,n)是一维快速傅里叶变换,x相当于信号,n是变换点数.离散傅里叶变换DFT的快速算法就是FFT. matlab中FFT函数 ...
- matlab中 y =ft(x)的意思,matlab中y=fft(x)语句的意思
matlab傅里叶变换中fft(x,n),x,n分别是什么含义? fft(x,n)是一维快速傅里叶变换,x相当于信号,n是变换点数.离散傅里叶变换DFT的快速算法就是FFT. matlab中FFT函数 ...
最新文章
- C++ 反转单向链表
- Multi-Scale Densenet续作?搞定Transformer降采样,清华联合华为开源动态ViT!
- springboot项目修改个人头像
- JAVA中报错AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@f70ee1)
- ORA-01843:无效的月份
- TinyPNG批量智能图片压缩器无限制版(支持Mac/Win)
- 计算机主板故障检测维修,主板故障!教你如何用主板诊断卡检测维修电脑主板故障...
- runtime error python 3.5_Python 3.5 RuntimeError: can't start new thread
- EasyGUI-5:文本显示
- 三条中线分的六个三角形_为什么三角形的三条中线把三角形分为面积相等的六块...
- Ubuntu lightdm无法启动解决办法
- hdu 1873 看病要排队
- Validation 使用
- python语言中、用来安装第三方库的命令_python安装第三方库的方法
- 个人建站系列步骤流程(二.申请域名+实名认证)
- Matlab高光谱遥感、数据处理与混合像元分解实践技术应用
- C语言所有头文件整理
- 三生万物---算法生成的25幅三角形图像
- 找工作交流群(北上广深杭成都重庆南京武汉长沙西安)
- 气象数据的可视化展现形式