目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码
WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索、包围、追捕和攻击猎物等过程实现优时化搜索的目的。在原始的WOA中,提供了包围猎物,螺旋气泡、寻找猎物的数学模型。
鲸鱼优化算法是模仿自然界中鲸鱼捕食行为的新型群体智能优化算法,而鲸鱼的捕食行为主要分为3类:1)包围猎物;2)发泡网攻击;3)搜索捕食。因此,在使用WOA求解问题之前,需要对上述3类捕食行为进行建模,即用数学公式表达上述3类捕食行为。
鲸鱼捕食行为的目的是捕获猎物,一群鲸鱼在共同寻找猎物时,一定会存在某条鲸鱼先发现猎物的情况,这时候其它鲸鱼一定会向这条发现猎物的鲸鱼游来争抢猎物。
将上述捕食过程可以应用到WOA求解问题的过程中,即一个解就可以用一个鲸鱼个体表示,若干个解就可以用若干个鲸鱼个体表示。在使用WOA搜索问题解的过程就可以看作是若干个鲸鱼个体不断更新个体位置,直至搜索到满意的解为止。
主函数部分代码:
clear all
clc
SearchAgents_no=50; % 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=300; % Maximum numbef of iterations
% Load details of the selected benchmark function
[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')
%title('Objective space')
%xlabel('Iteration');
%ylabel('Best score obtained so far');
plot(WOA_cg_curve,'LineWidth',2,'Color','r')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
hold on;
[1]李雅丽,王淑琴,陈倩茹等.若干新型群智能优化算法的对比研究[J].计算机工程与应用,2020,56(22):1-12.