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

news/2024/12/26 19:08:36/

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

文章目录

  • 前言
  • 1 算法原理
    • 2 算法步骤
      • 2.1 初始化种群
      • 2.2 搜索猎物(全局搜索)
      • 2.3 包围和围捕猎物(局部搜索)
      • 2.4 从全局搜索转向局部搜索
    • 3 算法流程图
    • 4 matlab代码实现
    • 运行F3测试案例
    • 与GWO、PSO、SO算法进行比对——F3算法


前言

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

1 算法原理

该算法主要是由雄雌豺狼带领各个豺狼对猎物进行搜索、包围和围捕。
A:雄雌豺狼对
B:个体搜索猎物
C:包围猎物
D&E:围捕猎物
在这里插入图片描述

2 算法步骤

2.1 初始化种群

对个体进行初始化,和大部分算法一样,Ymax:表示上界,Ymin:表示下界
在这里插入图片描述
通过上述公式对种群进行初始化。

2.2 搜索猎物(全局搜索)

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

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

在这里插入图片描述
在这里插入图片描述
E的计算公式:
E:回避能量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
c1=1.5,E1为从1.5~0线性递减。

rl的计算公式:
在这里插入图片描述
在这里插入图片描述
miu,v 为0-1的随机数,beta=1.5;

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

豺狼个体更新位置的公式

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

算法的探索阶段(全局搜索)使用如下3个公式对豺狼个体进行位置更新。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

算法的开发阶段(局部搜索)使用如下3个公式对豺狼个体进行位置更新
在这里插入图片描述
在这里插入图片描述

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

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

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

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

3 算法流程图

在这里插入图片描述

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:dimo=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_sizefor j=1:DimPop(i,j)=lb+rand*(ub-lb);endend%% 进化for t=1:T%筛选雄雌豺狼个体for i=1:Pop_sizefit_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_sizefor 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)>=1Y1_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)elseY1_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)endendend%% 计算所有新更新个体的适应度值for i=1:Pop_sizeFlag4Up=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,:);%替换个体endend%% 更新雄雌豺狼[~,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测试案例

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/59900.html

相关文章

HCIA的OSPF理论与实验

第6章:OSPF 开放式最短路径优先(Open Shortest Path First,OSPF)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本章所…

密码学【java】初探究加密方式之对称加密

文章目录 一 常见加密方式二 对称加密2.1 Cipher类简介2.2 Base算法2.3 补充&#xff1a;Byte&bit2.4 DES加密演示2.5 DES解密2.6 补充&#xff1a;对于IDEA控制台乱码的解决方法2.7 AES加密解密2.8 补充&#xff1a; toString()与new String ()用法区别2.9 加密模式2.9.1 …

(六)Spring源码阅读:invokeBeanFactoryPostProcessors方法

一、概述 invokeBeanFactoryPostProcessors的执行顺序大致如下&#xff0c;先执行子类BeanDefinitionRegistryPostProcessor再执行父类BeanFactoryPostProcessor。而对于同一个类的执行顺序是先执行外部的集合再到子集&#xff0c;之后再到父集。更小维度执行的顺序按照order注…

【VAR | 时间序列】以美国 GDP 和通货膨胀数据为例的VAR模型简单实战(含Python源代码)

以美国 GDP 和通货膨胀数据为例&#xff1a; 1. 数据集 下载数据我们需要从 FRED 数据库下载美国 GDP 和通货膨胀数据&#xff0c;并将它们存储在 CSV 文件中。可以在 FRED 网站&#xff08;https://fred.stlouisfed.org/&#xff09;搜索并下载需要的数据。在这里&#xff0…

7. Docker——Dockerfile

本章讲解知识点 DockerfileDockerfile 常用命令Dockerfile 综合示例Docker Compose当我们理解了镜像的基本原理后,我们就可以开始 Dockerfile 的学习了。 1. Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本。它包含一组指令,按顺序执行以创建 Docker 镜像,从而使其可…

windows下免费本地部署类ChatGpt的国产ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别下最低只需 6GB 显存&#xff09;。 Chat…

智慧城市规划数字化管理:数字孪生技术的创新应用

随着智能城市的不断发展&#xff0c;数字孪生技术也开始在智慧城市的建设中得到了广泛应用。数字孪生作为一种数字化的复制技术&#xff0c;它可以模拟真实世界中的实体和过程。 在城市规划方面&#xff0c;数字孪生可以帮助城市规划师更加直观地了解城市的整体规划和发展趋势&…

PostgreSQL14.6主从模式配置

一、系统架构 roleipmaster11.0.1.11slave11.0.1.12 二、编译安装PostgreSQL 不多描述&#xff0c;参考&#xff1a;https://zhaoll.blog.csdn.net/article/details/128416411 注意&#xff1a;两台服务器的PG&#xff0c;master正常安装和初始化&#xff0c;slave无需初始化…