金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

这篇具有很好参考价值的文章主要介绍了金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

金豺(GJO)优化算法是2022年由Nitish Chopra 等人提出,GJO 的灵感来自金豺 (Canis aureus) 的协作狩猎行为。算法的三个基本步骤是猎物搜索、包围和突袭

1 算法原理

该算法主要是由雄雌豺狼带领各个豺狼对猎物进行搜索、包围和围捕。
A:雄雌豺狼对
B:个体搜索猎物
C:包围猎物
D&E:围捕猎物
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

2 算法步骤

2.1 初始化种群

对个体进行初始化,和大部分算法一样,Ymax:表示上界,Ymin:表示下界
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
通过上述公式对种群进行初始化。

2.2 搜索猎物(全局搜索)

Ym(t):所有豺狼个体中最好的个体——雄性豺狼

Yfm(t):所有豺狼个体中次好的个体——雌性豺狼

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
E的计算公式:
E:回避能量
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
c1=1.5,E1为从1.5~0线性递减。

rl的计算公式:
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
miu,v 为0-1的随机数,beta=1.5;

ps:τ对应matlab函数中的gamma函数。

豺狼个体更新位置的公式

ps:有点类似于灰狼优化算法个体更新位置的公式

算法的探索阶段(全局搜索)使用如下3个公式对豺狼个体进行位置更新。
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

2.3 包围和围捕猎物(局部搜索)

算法的开发阶段(局部搜索)使用如下3个公式对豺狼个体进行位置更新
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

2.4 从全局搜索转向局部搜索

主要通过躲避能量的绝对值大小进行改变

当|E|>=1,豺狼对不同部分探索猎物,

当|E|<1,豺狼开始包围和攻击猎物。

3 算法流程图

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

4 matlab代码实现

main函数:

close all;
clear all;
clc;

% N种群大小
% Dim个体维度
% T最大迭代次数
% ub上界
% lb下界
% X_prey最好的个体
% G_best存储每次迭代后的最好个体的适应度值

N=300;
Dim=30;
T=500;
ub=100;
lb=-100;
[Y_prey,G_best]=GJO(Dim,ub,lb,N,T);
figure,
plot(G_best,'Color','blue');
best=G_best';%转置用于origin填充数据使用
xlim([1,500]);

my_function函数:

function my_fitness=my_function(X)
%F3测试问题
dim=size(X,2);
o=0;
for i=1:dim
    o=o+sum(X(1:i))^2;
end
my_fitness=o;
end

GJO主体代码

function [Y_prey,G_best]=GJO(Dim,ub,lb,N,T)
    %% 初始化参数
    c1=1.5;
    beta=1.5;
    %% 初始化种群
    Pop=zeros(N,Dim);
    Pop_size=size(Pop,1);
    for i=1:Pop_size
        for j=1:Dim
            Pop(i,j)=lb+rand*(ub-lb);
        end
    end
    %% 进化
    for t=1:T
        %筛选雄雌豺狼个体
        for i=1:Pop_size
            fit_ness(i)=my_function(Pop(i,:));
        end
        [~,sort_index]=sort(fit_ness);
        Y1=Pop(sort_index(1),:);%雄性豺狼
        Y2=Pop(sort_index(2),:);%雌性豺狼
        Y1_fitness=fit_ness(sort_index(1));%雄性豺狼适应度值
        Y2_fitness=fit_ness(sort_index(2));%雌性豺狼适应度值

        for i=1:Pop_size
            for j=1:Dim
            %eq(6)~eq(8)
            E0=2*rand-1;
            E1=c1*(1-(t/T));
            E=E1*E0;
            
            %eq(9)~eq(10)
            miu=rand;
            v=rand;
            sita=((gamma(1+beta)*sin(pi*beta/2))/(gamma((1+beta)/2)*beta*2.^((beta-1)/2))).^(1/beta);
            LF=0.01*(miu*sita)/(abs(v.^(1/beta)));
            rl=0.05*LF;

            if abs(E)>=1
            Y1_new=Y1(j)-E.*abs(Y1(j)-rl.*Pop(i,j));
            Y2_new=Y2(j)-E.*abs(Y2(j)-rl.*Pop(i,j));
            Y_new(i,j)=(Y1_new+Y2_new)./2;%紧随雄雌豺狼,更新豺狼位置 eq(4)、(5)and(11)
            else
            Y1_new=Y1(j)-E.*abs(rl*Y1(j)-Pop(i,j));
            Y2_new=Y2(j)-E.*abs(rl*Y2(j)-Pop(i,j));
            Y_new(i,j)=(Y1_new+Y2_new)./2;%紧随雄雌豺狼,更新豺狼位置 eq(12)、(13)and(11)
            end
            end
        end
            %% 计算所有新更新个体的适应度值
    for i=1:Pop_size
        Flag4Up=Y_new(i,:)>ub;
        Flag4Lp=Y_new(i,:)<lb;
        Y_new(i,:)=(Y_new(i,:).*(~(Flag4Up+Flag4Lp)))+Flag4Up.*ub+Flag4Lp.*lb;%修正
        y=my_function(Y_new(i,:));
        if y<my_function(Pop(i,:))
            fit_ness(i)=y;
            Pop(i,:)=Y_new(i,:);%替换个体
        end
    end
    %% 更新雄雌豺狼
    [~,sort_index]=sort(fit_ness);
    Y1=Pop(sort_index(1),:);%雄性豺狼
    Y2=Pop(sort_index(2),:);%雌性豺狼
    Y_prey=Y1;%最好的个体
    G_best(t)=my_function(Y1);%每次迭代后计算雄性豺狼个体的适应度值
    end
end

运行F3测试案例

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

与GWO、PSO、SO算法进行比对——F3算法

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对
金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对文章来源地址https://www.toymoban.com/news/detail-434344.html

到了这里,关于金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包