目录
0 引言
人工大猩猩部队优化算法(Artificial gorilla troops optimizer,GTO)是由Benyamin Abdollahzadeh等人于2021年基于大猩猩部队自然社会智能启发而提出新的元启发式算法,即人工。在该算法中,用数学方法计算了大猩猩的集体生命,并设计了新的机制来进行探索和开发。该算法具有寻优能力强的特点。
1 数学模型
GTO算法主要包括两大部分(探索阶段和开发阶段),探索阶段分三小点建模大猩猩迁移到未知位置,迁移到已知位置,以及迁移到其他大猩猩。开发阶段建模包括跟随银背鱼和成年雌性竞争两种行为。因此算法GTO即是对上述大猩猩五种行为进行建模。具体如下:
1)探索阶段:研究了GTO勘探阶段机制。考虑到大猩猩群体生活的本质,他们主要进行下述状态,其一在银背大猩猩的统治下成群生活,其二有些大猩猩会离开他们的群体,迁移到自然界中的不同地方,它们在过去可能遇到过,也可能没有遇到过。因此在对GTO随机初始化种群进行上述三种生活机制建模,具体如下:
在式(1)中,GX(t + 1)是下一次t迭代中的大猩猩候选位置向量。X (t)是大猩猩位置的当前向量。此外,r1、r2、r3和rand是在每次迭代中更新的从0到1的随机值。P是0-1的参数;该参数决定了选择迁移机制到一个未知位置的概率。UB和LB分别表示变量的上界和下界。Xr,GXr是从整个种群中随机选择的大猩猩种群位置,C、H和L的计算如下:
式中It为当前迭代次数,Maxit为最大迭代次数,Z为问题维度边界随机值。
2)跟随银背大猩猩(开发阶段):在大猩猩的群体中,银背大猩猩最佳种群位置,其他大猩猩跟着银背,遵循银背大猩猩的命令或跟随去不同的地区寻找食物来源。具体模型如下:
式中Xsiliverback是银背大猩猩的位置向量(最佳解)。L的计算使用公式(4),M使用等式(8)。在式(8)中,GXi (t)显示了每个候选大猩猩在迭代t中的向量位置。N表示大猩猩的总数。G也用式(9)估计,在式(9)中,L也用式(4)计算。
3)竞争成年雌性(开发阶段):在GTO种群中当年轻的大猩猩进入青春期时,它们会与其他雄性大猩猩战斗,以选择成年的雌性,用以下式子表示竞争后大猩猩位置。
式中Q是模拟大猩猩竞争战斗力系数,用公式(11)计算;r5是范围从0到1的随机值;β是在优化操作前给定的参数,E在使用式(13)求值时,被用来模拟暴力对解维度的影响。如果rand≥为0.5,E的E的值将等于正常值中的随机值。
2 优化方式
前篇对支持向量机(支持向量机原理及Matlab代码-CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述GTO原理介绍,可以将支持向量机的超参数作为大猩猩种群位置,每一个种群位置对应支持向量机的预测值,将这个预测值作为适应度更新大猩猩和银背大猩猩,进而进行大猩猩社会群体活动,更新新一轮银背大猩猩,直至满足误差要求。
3 MATLAB代码
3.1 伪代码
3.2 GTO主函数代码
%% 探索阶段(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.3 GTO-SVR、GTO-SVM
1)回归模型、分类模型:(人工大猩猩部队优化算法优化支持向量机-CSDN博客)