文章目录
- 【`获取资源`请见文章第5节:资源获取】
- 1. 原始BWO算法
- 2. 基于二次插值策略的EBWO算法
- 3. 部分代码展示
- 4. 仿真结果展示
- 5. 资源获取
【获取资源
请见文章第5节:资源获取】
1. 原始BWO算法
白鲸优化算法 (BWO,beluga whale optimization) 是2022 年在白鲸游泳、捕鲸及跌倒等行为中得到启发而提出的一种新型基于种群的元启发式算法。BWO 主要对白鲸游泳、捕食及跌倒 (坠落) 等行为进行模拟,其对应探索、开发及鲸鱼坠落三个阶段。BWO 当中鲸落概率与平衡因子均为自适应的,对开发能力与控制搜索起到决定性作用。除此之外,在开发阶段引入 Levy 飞行策略来进一步提升该阶段的全局收敛性。
2. 基于二次插值策略的EBWO算法
所谓二次插值法,是通过二次函数去模拟我们所得到的的单峰函数,用这个二次函数的极小点作为原来函数的极小点,如果这个极小点的横坐标已经满足了精度的要求,就停止运算。二次插值策略运用到群智能算法中时,对于单峰函数有较好的效果,对于多峰函数则效果一般。
二次插值法运用到白鲸优化算法中的公式如下:
其中,
X
b
e
s
t
t
X_{best}^{t}
Xbestt是第
t
t
t次迭代的最优解,
X
r
r
t
X_{rr}^{t}
Xrrt和
X
r
l
t
X_{rl}^{t}
Xrlt是第
t
t
t次迭代的随机选择的两个解,
e
p
s
eps
eps是一个极小值。
3. 部分代码展示
clear;
close all;
clc;
Function_name = 'F3'; % 测试函数名
Npop = 30; % 种群个数
Max_it = 500; % 最大迭代次数
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest_BWO,fvalbest_BWO,Curve_BWO]=BWO(Npop,Max_it,lb,ub,nD,fobj); % 白鲸优化算法
[fvalbest_GWO,xposbest_GWO,Curve_GWO]=GWO(Npop,Max_it,lb,ub,nD,fobj); % 灰狼优化算法
[fvalbest_WOA,xposbest_WOA,Curve_WOA]=WOA(Npop,Max_it,lb,ub,nD,fobj); % 鲸鱼优化算法
[fvalbest_SSA,xposbest_SSA,Curve_SSA]=SSA(Npop,Max_it,lb,ub,nD,fobj); % 麻雀搜索算法
[xposbest_EBWO,fvalbest_EBWO,Curve_EBWO]=EBWO(Npop,Max_it,lb,ub,nD,fobj); % 改进白鲸优化算法
figure('Position',[454 445 694 297]);
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
% 灰狼优化算法
semilogy(Curve_GWO,'Color','b','LineWidth',2)
hold on
% 鲸鱼优化算法
semilogy(Curve_WOA,'Color','g','LineWidth',2)
hold on
% 麻雀搜索算法
semilogy(Curve_SSA,'Color','m','LineWidth',2)
hold on
% 白鲸优化算法
semilogy(Curve_BWO,'Color','k','LineWidth',2)
hold on
% 改进白鲸优化算法
semilogy(Curve_EBWO,'Color','r','LineWidth',2)
title(Function_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('GWO','WOA','SSA','BWO','EBWO')
display(['The best optimal values of the objective funciton found by GWO is : ', num2str(fvalbest_GWO)]);
display(['The best optimal values of the objective funciton found by WOA is : ', num2str(fvalbest_WOA)]);
display(['The best optimal values of the objective funciton found by SSA is : ', num2str(fvalbest_WOA)]);
display(['The best optimal values of the objective funciton found by BWO is : ', num2str(fvalbest_BWO)]);
display(['The best optimal values of the objective funciton found by EBWO is : ', num2str(fvalbest_EBWO)]);
4. 仿真结果展示
5. 资源获取
可以获取完整代码资源。