山岭羊优化算法,原理详解,MATLAB代码免费获取

山岭羊优化算法(Mountain gazelle optimizer,MGO)是一种受自然启发的群智能优化算法。该算法野生山羚社会生活和社会结构启发,具有进化能力强、搜索速度快、寻优能力强的特点。MGO的最佳全球解决方案是在牧区内寻找成年雄性山岭羊。由于单身雄羚群中的山岭羊还很年轻,还不够强壮,无法生育或控制雌山岭羊,与其他数学建模选择相比,估计在整个种群中有三分之一的搜索种群成本最低。

8f28e0bfff285126217eb463dd42869b.png

该成果于2022年发表在计算机领域二区期刊Advances in Engineering Software上,目前在谷歌学术上被引率175次。

387cb9d5966b58d751ccb0c4bf6294ba.png

利用山岭羊社会和群体生活的基本概念,建立了MGO算法的数学模型。MGO优化算法利用山岭羊生活中的四个主要因素进行优化操作:单身雄羚群、母畜群、独居雄羚、领地雄羚和觅食迁徙。下图显示了基于MGO中的代理的优化过程概述。

1745767c7d006545aeaed3879a4d6d32.png

1、算法原理

(1)领地独居雄性

当雄性山岭羊成年并变得足够强壮时,它们会建立一个单独的领地,并且具有高度的领地意识,领地之间的距离很远。成年雄性山岭羊之间的争斗是为了争夺雌性的领地或所有权。年轻的雄性试图占领领地或雌性;另一方面,成年雄性试图保护它们的环境。下式被用来模拟成年雄性的领地。

其中,malegazelle是全局最优解(成年雄性)的位置向量。参数ri1和ri2为随机整数1或2。BH是年轻雄性群系数向量,使用下式计算。Cofr也是随机选择的系数向量,在每次迭代中更新,用于增加搜索能力。

在式中,Xra是ra区间内的随机解。Mpr为随机选取的搜索代理(N 3)个数的平均值。其中N为山岭羊总数,r1和r2为0 ~ 1之间的随机值。

在式中,问题的维度中,N1是来自标准分布的随机数。指数函数也称为exp, MaxIter是总迭代次数,Iter是当前迭代次数。

在式中,r3、r4、rand是0 ~ 1范围内的随机数。N2, N3, N4是正常范围内的随机数,也是问题的维度。在问题的维度中,r4同样是0和1域中的随机数。最后,cos表示cos函数。

Мах

最后,在式中,MaxIter表示总迭代次数,Iter表示当前迭代次数。Cof矢量变化幅度如图所示。

ba8f2e6ece729da7bc4d463cd6b04414.png

(2)领地雌性畜

雌性畜群在山地山岭羊的生命周期中起着至关重要的作用,因为这些类型的群体会生下结实的雄性山岭羊。雄性山岭羊也可以在分娩山岭羊和年轻雄性试图占有雌性的过程中发挥作用。这种行为用以下公式表示。

在式中,BH为青年雄性影响因子向量。Cof2,r和Cof3,r是随机选择的协效向量。ri3和ri4为整数和随机数1或2。Malegazelle是当前重复中最好的(成年雄性)全球解决方案。最后,Xrand是从整个种群中随机选择的山岭羊的矢量位置。

(3)单身雄性羊群

当雄性山岭羊成熟时,它们倾向于创造领土并占有雌性山岭羊。在这个时候,年轻的雄性山岭羊进入与雄性山岭羊争夺领域和控制雌性山岭羊的战斗,这可能伴随着许多暴力。用下式对山岭羊的这种行为进行数学表述。

在式中,X(t)是山岭羊向量在当前迭代中的位置。ri5和ri6是随机选择的整数1或2。雄山岭羊的位置是雄山岭羊的载体(最佳解)。另外,BH是年轻雄象群的影响因子。Cofr是随机选择的系数向量。

式中,X(t)和malegazelle分别为本次迭代中山岭羊矢量的位置,矢量的位置为最优解(成年雄性)。R6也是0到1之间的随机数。

(4)迁徙寻找食物

山岭羊不断寻找食物来源,长途跋涉获取食物并迁徙。另一方面,山地羚羊有很高的奔跑速度和良好的跳跃力量。下式已经被用来用数学公式来表述山岭羊的这种行为。

在式中,ub和lb分别是问题的上限和下限。最后,r7是一个在0到1之间随机选择的整数。

MGO对应的算法流程算法流程图如下所示。

6d703394a1cbe77e99bc3d193b9e6c75.png

MGO算法的伪代码如下所示。

09e5bda1a4dde12f662077ce766d19c5.png

2、结果展示

dcb3bbb77dfc651e206d90abdb1e7fe9.png

dade56eb0f6beb448d52d3b07ed6f89d.png

436fff1313c84651f374563df4bd25bc.png

73e5de65ceb039a013c623cdc16bc968.png

3、MATLAB核心代码

function [BestF,BestX,cnvg]=MGO(N,MaxIter,LB,UB,dim,fobj)
lb=ones(1,dim).*LB;  
ub=ones(1,dim).*UB;
%Initialize the first random population of Gazelles 
X=initialization(N,dim,UB,LB);
% initialize Best Gazelle
BestX=[];
BestFitness=inf;
for i=1:N   
    % Calculate the fitness of the population
    Sol_Cost(i,:)=fobj(X(i,:));%#ok
    % Update the Best Gazelle if needed
    if Sol_Cost(i,:)<=BestFitness 
        BestFitness=Sol_Cost(i,:); 
        BestX=X(i,:);
    end
end
%mainloop
    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);     
            % Calculate the vector of coefficients
            cofi = Coefficient_Vector(dim,Iter,MaxIter);
            A=randn(1,dim).*exp(2-Iter*(2/MaxIter));
            D=(abs(X(i,:)) + abs(BestX))*(2*rand-1);
            % Update the location
            NewX = Solution_Imp(X,BestX,lb,ub,N,cofi,M,A,D,i); 
            % Cost function calculation and Boundary check
            [NewX , Sol_CostNew] = Boundary_Check(NewX,fobj,LB,UB);
            % Adding new gazelles to the herd
            X=[X; NewX];       %#ok
            Sol_Cost=[Sol_Cost; Sol_CostNew];%#ok
            [~,idbest]=min(Sol_Cost);
            BestX=X(idbest,:);
        end
        % Update herd
        [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;%#ok
        BestF=BestFitness;
    end
end

参考文献

[1]Abdollahzadeh B, Gharehchopogh F S, Khodadadi N, et al. Mountain gazelle optimizer: a new nature-inspired metaheuristic algorithm for global optimization problems[J]. Advances in Engineering Software, 2022, 174: 103282.

完整代码获取

后台回复关键词:

TGDM166

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天吃饺子

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值