算法介绍
鲸鱼算法(Whale Optimization Algorithm)是根据鲸鱼围捕猎物的行为而提出的算法。鲸鱼是一种群居的哺乳动物,在捕猎时会对猎物进行驱赶和围捕。
鲸鱼算法中,每个鲸鱼的位置代表了一个可行解。
在鲸鱼群捕猎过程中,每只鲸鱼有两种行为,一种是包围猎物,所有的鲸鱼都向着其他鲸鱼前进;另一种是汽包网,鲸鱼环形游动喷出气泡来驱赶猎物。
在每一代的游动中,鲸鱼们会随机选择这两种行为来进行捕猎。在鲸鱼进行包围猎物的行为中,鲸鱼将会随机选择是向着最优位置的鲸鱼游去还是随机选择一只鲸鱼作为自己的目标,并向其靠近。
(具体算法介绍请加下方微信获取)
部分代码展示
clear all
clc
SearchAgents_no=30; % 查册代理人数
Function_name='F1'; % 从F1到F23的测试函数名称(表1、2、3)
Max_iteration=500; % 最大迭代次数
%% 加载所选基准测试功能的详细信息
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_score,Best_pos,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
figure('Position',[269 240 660 290])
%% 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', 'LineWidth',3)
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
legend('WOA')
display(['The best solution obtained by WOA is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by WOA is : ', num2str(Best_score)]);
运行结果
代码获取途径
添加vx: shuxuexiaobaibututou,即可获取全部代码以及论文(50元)。
其他近些年提出的新型智能优化算法也可加微信咨询!