目录
0 引言
为了提高鲸鱼算法全局搜索性能和局部开发性能,Mohammad H. Nadimi-Shahraki等人于2022年提出了一种增强的鲸鱼优化算法E-WOA,利用池化机制和三种有效的搜索策略:迁移、优先选择和丰富的包围猎物来提升WOA的局部和全局性能。
1 数学模型
EWOA是在WOA基础上引入池化机制来更新WOA种群增强随机性,同时采用迁移和优先选择搜索策略提高WOA全局性,丰富的包围猎物策略来提高局部开发能力,具体数学模型如下:
1)池化机制:池化机制是一种交叉算子,它将最坏的种群个体与最佳的种群个体混合,并增加多样性。具体数学模型如下:
式中为二进制随机向量,是其的反向向量。
2)迁移策略:它的搜索策略是随机选择一只座头鲸进行对无人区搜索猎物。增加整个种群的多样性,从而减少局部最优捕获。
式中是搜索空间范围内的一个随机位置,其中rand是0到1之间均匀分布的随机数,δmin和δmax是问题的下界和上界。是在最佳座头鲸附近的一个随机位置,其中δbest min和δbest max为最佳座头鲸的的上界和上界。
3)优先选择策略:优先选择策略基础池化机制随机个体选择,提高了典型WOA中寻找猎物方法的探索能力,具体模型如下:
式中为迭代t中随机选择种群个体,Ct i使用等式定义(6),采用柯西分布进行抽样。
4)丰富环绕猎物搜索策略:利用池化机制内随机个体丰富鲸鱼环绕猎物策略提高全局性,具体模型如下:
式中为迭代t中随机选择种群个体
2 模型性能提升可视化
EWOA-BP和WOA-BP的回归预测可视化:采用UCI回归数据。
精度指标:
寻优指标:
3 Matlab代码
3.1 伪代码
3.2 EWOA主函数代码
% 主循环
while t<Max_iteration %white(t<最大迭代次数)
a2 = -1+t*((-1)/Max_iteration);
% 随机选择一头鲸鱼
P_Portion = randperm(SearchAgents_no,p_rate);
Pop_Pool = Pool.position;
[P_rnd1, p_rnd2] = RandIndex(size(Pop_Pool,1),SearchAgents_no);
% 概率
p = rand(SearchAgents_no, 1);
%A(i)采用柯西分布取样 文献table1显示
A = 0.5 +0.1*tan(pi *(rand(SearchAgents_no,1)-0.5));
idx = find(A<=0);
while ~ isempty(idx)
A(idx) = 0.5 +0.1*tan(pi* (rand(length(idx),1)-0.5));
idx = find(A<=0);
end
A = min(A,1);
for i=1:size(Positions,1) %智能体个数
if(i ~=P_Portion)
C = 2*rand; %Eq(6)
b = 1;
for j = 1:size(Positions,2)
l = (a2-1)*rand+1;
if p(i)< 0.5
%增高方式:富集包围策略
if A(i) < 0.5
rand_leader_index = floor(size(Pop_Pool,1)* rand()+ 1);%pool内随机选择
P_rnd3 = Pop_Pool(rand_leader_index, j);
D_prim = abs(C*Leader_pos(j) -P_rnd3);%Eq(17)
X(i,j) = Leader_pos(j) - A(i)*D_prim;%Eq(16)
% 增高方式:优先选择策略
elseif A(i)>=0.5
X(i,j) = Positions(i,j) +A(i)*(C* Pop_Pool(P_rnd1(i),j)-Pop_Pool(p_rnd2(i),j));%Eq(15)
end
elseif p(i)>=0.5 % 螺旋泡泡攻击
D_prim = abs(Leader_pos(j) -Positions(i,j));%Eq(10)
X(i,j) = D_prim * exp(b.*l).*cos(2*pi*l)+Leader_pos(j);%Eq(9)
end
end
end
end
%增高方式:迁移搜索策略(增加种群多样性)
best_max = max(Leader_pos);
best_min = min(Leader_pos);
P_Portion = P_Portion';
X_rnd = rand(size(P_Portion,1),dim).*(ub-lb)+ lb;%Eq(13)
X_brnd = rand(size(P_Portion,1),dim).*(best_max - best_min) +best_min ;%Eq(14)增加种群多样性
X(P_Portion,:) = X_rnd - X_brnd;%Eq(12)
% 鲸鱼维度检查及适应度
for i = 1: size(Positions,1)
X(i,:) = boundConstraint(X(i,:),Positions(i,:),lb,ub);
Fit(i,1) = SYD(X(i,:),net);
net.trainParam.showWindow = 0; % 关闭训练窗口
% 重新选择领导者
if Fit(i,1) < Leader_score
Leader_score = Fit(i,1);
Leader_pos = X(i,:);
end
end
I = (Fitness > Fit);
Ind = find(I == 1);
x_worst = Positions(Ind, :);
% 增高方式:池化机制
Pool = Pooling_Mechanism(Pool, dim,x_worst,Leader_pos);
% 更新鲸鱼的位置
Fitness(Ind) = Fit(Ind);
Positions(Ind, :) = X(Ind,:);
3.3 EWOA-BP
单输出回归预测模型、多输出回归预测模型、分类模型和时间序列模型代码复现: