1 简介

布谷鸟搜索(Cuckoo Search, CS)算法是 2009 Xin-She Yang Susash Deb 提出的一种新型的启发算法[61]。算法灵感来源于一些布谷鸟种属(Cuckoo Species)的专性寄生哺育(BroodParasitism)行为,即这些种群不会像绝大多数鸟类一样自己筑巢哺育后代,而是通常把蛋产于宿主鸟巢内,由宿主代养,这种行为被称为巢寄生。此类布谷鸟会观察宿主鸟所产的卵并对其进行模仿,按照宿主鸟卵的颜色形状来产卵,导致宿主鸟辨别出布谷鸟卵的几率微乎其微,布谷鸟卵混在宿主鸟卵中,孵化后由宿主鸟哺育并与宿主雏鸟争夺生存资源。然而,布谷鸟卵一旦被宿主鸟识破情况便不同,宿主将完全摧毁鸟巢或是仅仅将布谷鸟卵摧毁。因此布谷鸟在繁殖季会寻找孵化周期类似、雏鸟习性类似以及卵外观类似的宿主鸟。布谷鸟通常会趁宿主外出时将卵产于巢内,有时会将宿主卵推出巢后进行产卵,使布谷雏鸟独享生存资源,以提高生存几率。此外,布谷鸟等动物的觅食过程是也是一种有启发性的随机行为过程。所在位置确定移动的下一个目标点,所选取的数学模型决定移动方向。根据当前位置与到下一个位置的转移概率,它们会飞向或是走向搜索路径。鸟类的这种飞行行为,在很多研究中被证明为莱维飞行(Levy Flight)的典型特征

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_搜索

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_搜索_02

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_全局搜索_03

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_搜索_04

GWO 的这种位置更新方式缺陷十分明显:全局搜索能力薄弱,有较高的概率陷入局部最优解,尤其是在使用高维数据集时。而 CS 算法在更新宿主鸟巢的位置时,主要是通过寄养行为与莱维飞行两种操作实现。因而算法搜索步长或长或短都有几乎相等的概率,并且移动方向的选择具有高度随机性。此外,算法更容易从当前区域跳转到其他区域,完成全局搜索。基于 CS 算法的以上优点,本章将 CS 算法与 GWO 结合以提高 GWO 算法的性能,提出经布谷鸟搜索算法改进的 GWO 算法(CS-GWO),改善了 GWO 算法存在的易于陷入局部最优的问题。CS-GWO 算法具体流程图如图 所示:

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_搜索_05

2 部分代码

clear all
clc
close all
warning off
SearchAgents_no=30; % Number of search agents
Function_name='F2'; % Name of the test function that can be from F1 to F23
Max_iteration=500; % Maximum number of iterations
Run_no = 20;
for k =  1 : 1 : Run_no
% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Function_details(Function_name);
[Best_score_CS2,Best_pos_CS2,AGWOCS_cg_curve]=AGWO_CS(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); % Augmented GWO- Cuckoo Search.
BestSolutions1(k) = Best_score_CS2;
Average= mean(BestSolutions1);
Mean=mean(BestSolutions1);
StandDP=std(BestSolutions1);
Med = median(BestSolutions1);
[BestValueP I]   = min(BestSolutions1);
[WorstValueP IM] = max(BestSolutions1);
disp(['Run # ' , num2str(k), ' Best_score_AGWOCS : ' , num2str( Best_score_CS2)]);
end
disp([ 'Best=',num2str( BestValueP)]);
disp([ 'Worst=',num2str(WorstValueP)]);
disp([ 'Average=',num2str( Average)]);
disp([ 'Mean=',num2str( Mean)]);
disp([ 'Standard Deviation=',num2str( StandDP)]);
disp([ 'Median=',num2str(Med)]);
figure('Position',[300 190 980 490])
%figure('Position',[300 190 500 270])
%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 )'])
%colormap parula
%Draw objective space
subplot(1,2,2);
%semilogy(GWO_cg_curve,'Color','r')
hold on
semilogy(AGWOCS_cg_curve,'Color','m')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
%legend('AGWO-CS')
legend({'AGWO-CS'},'FontSize',14,'location','best')

3 仿真结果

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_全局搜索_06

4 参考文献

[1]顾凯冬. 基于灰狼算法优化最小二乘支持向量机的调制信号识别研究. Diss. 南京邮电大学.​

【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码_搜索_07