目录
0 引言
人工大猩猩部队算法(Artificial gorilla troops optimizer,GTO)是由Benyamin Abdollahzadeh等人于2021年提出群智能算法,该算法主要模拟了大猩猩种群的迁移策略和求偶行为进行问题全局探索搜索和开发利用,具有寻优能力强特点。
1 数学模型
GTO数学模型主要包括俩个部分,首先是探索阶段,该阶段主要进行大猩猩迁移,包括以下三个机制,即迁移到一个未知的地方、向其他大猩猩的移动、向已知位置的迁移。其次是开发阶段,该阶段包括了
(1)探索阶段(迁移):给定p的参数被用来选择迁移机制选择,该阶段见下式数学模型:
其中p为介于0到1之间参数,该参数确定迁移到未知的位置概率;rand≥为0.5,则选择了向其他大猩猩的迁移机制;rand <为0.5,则选择迁移到已知位置的机制;GX是大猩猩个体候选位置向量,X为大猩猩个体当前位置向量;r1、r2、r3为0到1的随机参数,UB和LB为问题维度上下界限Xr和GXr为对应种群随机选择大猩猩个体,C、L、H是系数向量,其公式见下式:
其中it为当前迭代,MaxIt为最大迭代
(2)开发阶段(跟随):银背大猩猩Xsilverback是大猩猩领导者,带领种群走向食物,同时负责团队安全和福祉,因此在开发阶段,大猩猩逐渐向优势个体银背大猩猩靠拢,提高问题精度,其数学模型见下式:
(2)开发阶段(竞争成年雌性):这是开发阶段的第二个机制。一段时间后,当年轻的大猩猩进入青春期时,它们会与其他雄性大猩猩在选择成年䧳性的问题上展开竞争,这种竞争通常是激烈的。式(10)模拟了这种行为:
式中Q为冲击力,A为竞争中暴力程度;r5为0到1随机值;β优化操作之前的参数,E为评估值,符合问题正态分布的随机值;
2 优化BP神经网络
2.1 优化的方式
前篇对BP神经网络原理讲解(BP神经网络原理及matlab代码-CSDN博客),从BP神经网络原理讲解中可以发现预测值主要受权值和阈值调整修正完成。因此结合上述GTO原理介绍,可以将BP神经网络权值和阈值作为大猩猩种群,每一个种群对应BP神经网络的预测值,将这个预测值作为适应度进行上述大猩猩活动。
2.2 伪代码
3 matlab代码
3.1 主函数代码
%% 参数
% max_iter 最大迭代次数
% pop_size 种群
% ub、lb 问题维度上下界
% variables_no 问题维度
% SYD 适应度函数
% BoundaryCheck 边界函数
% p 迁移概率
%
%%主函数
for It=1:max_iter
a=(cos(2*rand)+1)*(1-It/max_iter);
C=a*(2*rand-1);
%% 探索阶段(3种情况)
for i=1:pop_size
if rand<p
GX(i,:) =(ub-lb)*rand+lb;
else
if rand>=0.5
Z = unifrnd(-a,a,1,variables_no);
H=Z.*X(i,:);
GX(i,:)=(rand-a)*X(randi([1,pop_size]),:)+C.*H;
else
GX(i,:)=X(i,:)-C.*(C*(X(i,:)- GX(randi([1,pop_size]),:))+rand*(X(i,:)-GX(randi([1,pop_size]),:)));
end
end
end
GX = BoundaryCheck(GX, lower_bound, upper_bound);
% 重新分配种群
for i=1:pop_size
New_Fit= SYD(GX(i,:),net);
net.trainParam.showWindow = 0;
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end
%% 开发(应用了“跟随银背”和“竞争”两种成年雌性行为)
for i=1:pop_size
if a>=w
g=2^C;
delta= (abs(mean(GX)).^g).^(1/g);
GX(i,:)=C*delta.*(X(i,:)-Silverback)+X(i,:);
else
if rand>=0.5
h=randn(1,variables_no);
else
h=randn(1,1);
end
r1=rand;
GX(i,:)= Silverback-(Silverback*(2*r1-1)-X(i,:)*(2*r1-1)).*(Beta*h);
end
end
GX = BoundaryCheck(GX, lower_bound, upper_bound);
% 重新分配种群
for i=1:pop_size
New_Fit= SYD(GX(i,:),net);
net.trainParam.showWindow = 0;
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end
convergence_curve(It)=Silverback_Score;
end
3.2 GTO-BP
1)单输出回归预测:单输出回归:人工大猩猩部队算法优化BP神经网络(GTO-BP)
2)多输出回归预测:多输出回归:人工大猩猩部队算法优化BP神经网络(GTO-BP)
3)分类模型:分类模型:人工大猩猩部队算法优化BP神经网络(GTO-BP)
4)时间序列:时间序列:人工大猩猩部队算法优化BP神经网络(GTO-BP)
4 视频讲解
B站搜索:‘ 不想学习的陈成 ’