智能优化算法之金豺优化算法(GJO),原理公式详解,附matlab代码

金豺优化算法(Golden jackal optimization,GJO)是一种新的全局优化算法,该算法的灵感来自于金豺的合作狩猎行为。该成果于2022年发表在知名SCI期刊Expert Systems with Applications上。目前谷歌学术上查询被引173次。

d0d27cead6c5270a71f22666cf1db9e6.png

GJO算法通过种群位置初始化、确定雌雄金豺对位置、搜索猎物阶段和包围攻击猎物阶段四个主要操作模拟了金豺合作狩猎的行为,最后选取最优解。

算法原理

(1)种群位置初始化

每一只猎物的位置随机分布在搜索空间上,每个个体的相对位置的数学模型如下式表示:

其中,  表示第i只猎物在第j维空间的位置,  和  分别表示第  维空间的上边界和下边界,random( )为[0,1]内的随机数。最终形成的猎物种群位置矩阵如下:

其中,m为猎物种群的大小,n为搜索空间的总维度。

(2)确定雌雄金豺对位置

根据猎物种群位置矩阵以及特定的适应度函数计算适应度矩阵,位置具有最优适应度的猎物记为雄性金豺,位置记为  ,适应度记为  ;位置具有次优适应度的记为雌性金豺,位置记为  ,适应度记为   。

(3)搜索猎物阶段

在搜索猎物阶段,雄性金豺对于猎物种群中每个个体的相对位置的数学模型如下式表示:

雌性金豺对于猎物种群中每个个体的相对位置如下:

其中,t为当前迭代的次数,  表示第t次迭代时第  个猎物的位置,  表示第  次迭代时雄性金豺的位置,  表示第  次迭代时雌性金豺的位置。  为逃跑能量,数学模型如下式表示:

其中,  为初始逃跑能量;  为一个系数,用来递减逃跑能量  ;  为总迭代次数;  为常数,取值为1.5。  随着迭代次数的变化,由1.5逐渐减小至0;  为[-1,1]内的随机值。

(4)包围攻击猎物阶段

在包围攻击猎物阶段,雄性金豺对于猎物种群中每个个体的相对位置如下:

雌性金豺对于猎物种群中每个个体的相对位置如下:

结果展示

以为CEC2005函数集为例,进行结果展示:

08741fddf1952a290e1bd5c2b6448c76.png

b4474fbe16427d7af96b7f898fb61289.png

eb0a6b187461e18f3c5d6b875ed299f3.png

2191061280d510a2cb39b2dfa84b387d.png

 MATLAB核心代码

% 金豺优化算法(GJO)
function [Male_Jackal_score,Male_Jackal_pos,Convergence_curve]=GJO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
%% initialize Golden jackal pair
Male_Jackal_pos=zeros(1,dim);
Male_Jackal_score=inf; 
Female_Jackal_pos=zeros(1,dim);  
Female_Jackal_score=inf; 


%% Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);


Convergence_curve=zeros(1,Max_iter);


l=0;% Loop counter


% Main loop
while l<Max_iter
        for i=1:size(Positions,1)  


           % boundary checking
            Flag4ub=Positions(i,:)>ub;
            Flag4lb=Positions(i,:)<lb;
            Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;               


            % Calculate objective function for each search agent
            fitness=fobj(Positions(i,:));


            % Update Male Jackal 
            if fitness<Male_Jackal_score 
                Male_Jackal_score=fitness; 
                Male_Jackal_pos=Positions(i,:);
            end  
             if fitness>Male_Jackal_score && fitness<Female_Jackal_score 
                Female_Jackal_score=fitness; 
                Female_Jackal_pos=Positions(i,:);
            end
        end

参考文献

[1] Chopra N, Ansari M M. Golden jackal optimization: A novel nature-inspired optimizer for engineering applications[J]. Expert Systems with Applications, 2022, 198: 116924.

[2] 李伟彦,董宝良,王凯. 基于金豺优化算法的云计算资源调度研究[J]. 电子设计工程,2023

完整代码获取方式:后台回复关键字:TGDM880

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值