目录
0 引言
山瞪羚优化算法(Mountain Gazelle Optimizer,MGO)是Benyamin Abdollahzadeh等人于2022年基于山瞪羚的社会生活和等级制度提出的群体智能算法。该算法模拟山瞪羚四个生活机制分别是单身雄性畜群、母性畜群、独居且有领地的成熟雄性畜群和迁徙觅食群,以实现有效的探索和开发。
1 数学模型
MGO的数学模型主要对四个机制进行建模,分别领地独居雄性(TSM)、母系山瞪羚群(MH)、单身雄性山瞪羚(BMH)、迁徙觅食(MSF),具体模型如下:
1)TSM:当雄性山瞪羚成年后,就会领地意识,成年雄性瞪羚之间的战斗发生在雌性瞪羚的领地或领地之上。年轻的雄性试图占领领地或雌性;另一方面,成年雄性试图保护自己的环境。从而更新自身位置,如下式模拟:
式中malegazelle 代表最佳全局解(成年雄性)的位置向量;参数 ri1 和 ri2 是随机整数 1 或 2; BH 代表年轻的雄性畜群系数向量; Cofi 是一个随机选择的向量系数,每次迭代中更新从而提升搜索能力;Xra是ra区间内的随机解(年轻的雄性); M pr 是一个平均数; N是标准正态分布的随机数; MaxIter 代表总迭代次数; Iter 代表当前迭代次数; r 代表0到1之间的随机数;
2)MH:母系山瞪羚在山瞪羚种群担任分娩瞪羚和年轻雄性中发挥作用。这种行为是用等式来表示如下:
式中:Xrand为山瞪羚种群随机种群向量,ri3,ri4为0到1的随机数;
3)BMH:年轻的雄性瞪羚之间会争夺雌性瞪羚和领地控制权,用下式数学方法来表示瞪羚的这种行为:
式中x(t) 是瞪羚向量在当前迭代中的位置;
4)MSF:山地瞪羚不断地寻找食物来源,并长途跋涉以获取食物和迁徙。用以下模型更新其位置更新。
式中ub,lb为问题维度边界。
2 优化方式
前篇对长短期记忆神经网络(长短期记忆神经网络原理及Matlab代码复现-CSDN博客)原理讲解,从长短期记忆神经网络matlab代码运算过程中,可以看到LSTM受多个超参数影响(隐藏层节点、学习率、分批量、正则化等等)。因此结合上述MGO原理介绍,可以将长短期记忆神经网络的超参数作为山瞪羚种群位置,每一个种群位置对应长短期记忆神经网络的预测值,将这个预测值作为适应度进行山瞪羚四种社会机制,更新更优位置。
3 MATLAB代码
3.1 伪代码
3.2 MGO主函数代码
% 主循环
for Iter=1:MaxIter
for i=1:N
RandomSolution=randperm(N,ceil(N/3));
%计算的年轻雄性畜群系数向量
M=X(randi([(ceil(N/3)),N]),:)*floor(rand)+mean(X(RandomSolution,:)).*ceil(rand);%eq (2)
% 计算随机选择系数向量
cofi = Coefficient_Vector(dim,Iter,MaxIter);%eq (4)
%位置参数
A =randn(1,dim).*exp(2-Iter*(2/MaxIter));
D =(abs(X(i,:)) + abs(BestX))*(2*rand-1);
% 进行山瞪羚社会活动的位置更新
NewX = Solution_Imp(X,BestX,lb,ub,N,cofi,M,A,D,i);
% 成本函数计算和边界检查
[NewX , Sol_CostNew] = Boundary_Check(NewX,net,LB,UB);
% 为羚羊群增添新成员
X=[X; NewX];
Sol_Cost=[Sol_Cost; Sol_CostNew];
[~,idbest]=min(Sol_Cost);
BestX=X(idbest,:);
end
% 更新种群
[Sol_Cost, SortOrder]=sort(Sol_Cost);
X=X(SortOrder,:);
[BestFitness,idbest]=min(Sol_Cost);
BestX=X(idbest,:);
X=X(1:N,:);
Sol_Cost=Sol_Cost(1:N,:);
cnvg(Iter)=BestFitness;
BestF=BestFitness;
end
end
3.3 MGO-LSTM
1)时间序列:山瞪羚优化算法优化长短期记忆神经网络-CSDN博客