GWO灰狼优化算法以及Matlab代码

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

文章目录

  • GWO灰狼算法原理
  • 进化更新
    • 位置更新(紧随3只头狼)
  • GWO灰狼算法流程图
  • GWO优化算法matlab代码
    • main函数
    • 适应度函数
    • GWO主体代码
    • 测试结果F1~ F6测试问题


GWO灰狼算法原理

灰狼算法:种群个体的位置更新主要是跟随alpha、beta、delta三只头狼的所在位置进行迭代更新。
灰狼种群结构:
在这里插入图片描述

进化更新

Xp为猎物的位置,A和C属于系数向量,a是随迭代过程线性减少的数值从2→0
在这里插入图片描述
在这里插入图片描述

位置更新(紧随3只头狼)

X(t+1)为狼个体紧随头狼更新后的位置。
在这里插入图片描述

GWO灰狼算法流程图

在这里插入图片描述

GWO优化算法matlab代码

main函数

close all;
clear all;
clc;

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

N=300;
Dim=30;
T=500;
ub=30;
lb=-30;
[X_prey,G_best]=GWO(Dim,ub,lb,N,T);
figure,
plot(G_best,'Color','blue');
xlim([1,500]);

适应度函数

function my_fitness=my_function(X)
%F1测试问题[-100,100] min=0
% o=sum(X.^2);
% my_fitness=o;

%F2测试问题[-10,10] min=0;
% o=sum(abs(X))+prod(abs(X));
% my_fitness=o;


%F3测试问题——结果极差 min=0
% dim=size(X,2);
% o=0;
% for i=1:dim
%     o=o+sum(X(1:i))^2;
% end
% my_fitness=o;

%F4测试问题——结果极差[-100,100] min=0
% o=max(abs(X));
% my_fitness=o;

%F5测试问题[-30,30] min=0
% dim=size(X,2);
% my_fitness=sum(100*(X(2:dim)-(X(1:dim-1).^2)).^2+(X(1:dim-1)-1).^2);

%F6测试问题[-100,100] min=0
o=sum(abs((X+.5)).^2);
my_fitness=o;
end

GWO主体代码

function [X_prey,G_best]=GWO(Dim,ub,lb,N,T)
%% 初始化种群
Pop=zeros(N,Dim);
for i=1:N
    for j=1:Dim
    Pop(i,j)=lb+rand().*(ub-lb);
    end
end
X_prey=zeros(T,Dim);
%% 初始化
% 计算所有个体的适应度
for i=1:N
    fitness(i)=my_function(Pop(i));
end
    % 种群进行分等级排序
    [sort_fitness,sort_index]=sort(fitness);
    % 更新alpha、beta、delta狼个体
    X_alpha=Pop(sort_index(1),:);
    X_beta=Pop(sort_index(2),:);
    X_delta=Pop(sort_index(3),:); 
%% 进化操作
for t=1:T
    a=2-t*(2/T);
    for i=1:N
        for j=1:Dim
            % 跟随alpha、beta、delta
            r1=rand();
            r2=rand();
            A1=2.*a.*r1-a;
            C1=2.*r2;
            D_alpha=abs(C1.*X_alpha(j)-Pop(i,j));
            X_one(i,j)=X_alpha(j)-A1.*D_alpha;
            
            r1=rand();
            r2=rand();
            A2=2.*a.*r1-a;
            C2=2.*r2;
            D_beta=abs(C2.*X_beta(j)-Pop(i,j));
            X_two(i,j)=X_delta(j)-A2.*D_beta;

            r1=rand();
            r2=rand();
            A3=2.*a.*r1-a;
            C3=2.*r2;
            D_delta=abs(C3.*X_delta(j)-Pop(i,j));
            X_three(i,j)=X_delta(j)-A3.*D_delta;

            % 跟随3只头狼,新的个体位置
            X_new(i,j)=(X_one(i,j)+X_two(i,j)+X_three(i,j))./3;
        end
    end
    % 计算所有个体的适应度值
    for i=1:N
        Flag4Up=X_new(i,:)>ub;
        Flag4Lp=X_new(i,:)<lb;
        X_new(i,:)=(X_new(i,:).*(~(Flag4Up+Flag4Lp)))+Flag4Up.*ub+Flag4Lp.*lb;%修正
        y=my_function(X_new(i,:));
        if y<my_function(Pop(i,:))
            fitness(i)=y;
            Pop(i,:)=X_new(i,:);%替换个体
        end
    end   
    % 种群进行分等级排序
    [sort_fitness,sort_index]=sort(fitness);
    % 更新alpha、beta、delta狼个体
    X_alpha=Pop(sort_index(1),:);
    X_beta=Pop(sort_index(2),:);
    X_delta=Pop(sort_index(3),:);
    X_prey(t,:)=X_alpha;
    G_best(t)=my_function(X_alpha);%每次迭代最好的个体的适应度值
end
end

测试结果F1~ F6测试问题

F1
在这里插入图片描述
F2
在这里插入图片描述
F3
在这里插入图片描述
F4
在这里插入图片描述
F5
在这里插入图片描述
F6
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何正确选择集体渲染(云渲染)和gpu离线渲染

在数字娱乐领域&#xff0c;渲染是制作高质量影像的关键步骤之一。随着技术的不断发展和应用的广泛普及&#xff0c;渲染方式也在不断演进。目前&#xff0c;集体渲染&#xff08;云渲染&#xff09;和GPU离线渲染是两种比较流行的渲染方式。那么&#xff0c;哪种方式会更快呢&…

Docker-compose

目录 第一章.Docker-compose 概述 1.1.Docker-compose使用场景 1.2.简介 第二章.compose 部署 2.1.Docker Compose 环境安装 2.2.YAML 文件格式及编写注意事项 2.3.Docker Compose配置常用字段 2.4.Docker Compose 常用命令 2.5.Docker Compose 文件结构 第三章.实验…

Koordinator 一周年,新版本 v1.2.0 支持节点资源预留,兼容社区重调度策略

作者&#xff1a;佑祎、吕风 背景 Koordinator 是一个开源项目&#xff0c;基于阿里巴巴在容器调度领域多年累积的经验孵化诞生&#xff0c;可以提升容器性能&#xff0c;降低集群资源成本。通过混部、资源画像、调度优化等技术能力&#xff0c;能够提高延迟敏感的工作负载和…

3个月,从功能测试进阶到自动化测试涨薪10k,我悟了....

因为我最近在分享自动化测试技术&#xff0c;经常被问到&#xff1a; 功能测试想转自动化&#xff0c;请问应该怎么入手&#xff1f;有没有好的资源推荐&#xff1f; 那么&#xff0c;接下来我就结合自己的经历聊一聊我是如何在工作中做自动化测试的。&#xff08;学习路线和…

macOS 13.4Beta 3(22F5049e)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像

镜像特点 完全由黑果魏叔官方制作&#xff0c;针对各种机型进行默认配置&#xff0c;让黑苹果安装不再困难。系统镜像设置为双引导分区&#xff0c;全面去除clover引导分区&#xff08;如有需要&#xff0c;可以自行直接替换opencore分区文件为clover引导文件&#xff09;备注…

云服务器使用jenkins+docker自动化部署SpringBoot项目

docker 安装jenkins&#xff0c;就这一步都恶心死了 //拉取镜像&#xff0c;踩了很多坑&#xff0c;用其它版本的镜像插件一直安装失败&#xff0c;最后用的是lts版本&#xff08;基础版&#xff09; 用其它版本要么是连不上插件的下载地址&#xff0c;要么是插件下载不成功 d…

【应急响应】后门攻击检测指南Rookit内存马权限维持WINLinux

文章目录 Windows实验常规后门&#xff1a; 网络对外连接查看 自启动测试&#xff1a;隐藏账户映像劫持屏保&登录 Linux实验常规后门&#xff1a;Rootkit后门&#xff1a;GScan rkhunter权限维持后门&#xff1a;GScan rkhunter Web层面&#xff1a;通用系统层面 主机层面后…

大数据技术之SparkCore

第1章 RDD概述 1.1 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象。 代码中是一个抽象类&#xff0c;它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD代表的是弹性、…

【Pytorch】六行代码实现:特征图提取与特征图可视化

前言 之前记录过特征图的可视化&#xff1a;Pytorch实现特征图可视化&#xff0c;当时是利用IntermediateLayerGetter 实现的&#xff0c;但是有很大缺陷&#xff0c;只能获取到一级的子模块的特征图输出&#xff0c;无法获取内部二级子模块的输出。今天补充另一种Pytorch官方…

数字孪生新能源智慧充电桩Web3D可视化运维系统

放眼全球&#xff0c;近十年来&#xff0c;新能源汽车赛道堪称“热得发烫”。伴随着进入成年期的新能源汽车行业对相关配套设备支撑水平的提升&#xff0c;作为其“新基建”的充电桩领域表现更为突出的价值势能。过去&#xff0c;在一系列补贴政策和资本刺激下&#xff0c;充电…

插装式两位两通电磁阀DSV-080-2NCP、DDSV-080-2NCP

特性 压力4000 PSI(276 Bar) 持续的电磁。 硬化处理的提升阀和柱塞可获得更长的寿命和低泄漏量。 有效的混式电磁铁结构。 插装阀允许交流电压。可选的线圈电压和端子。 标准的滤网低泄漏量选择 手动关闭选择。 工业化通用阀腔。 紧凑的尺寸。 两位两通常闭式双向电磁…

vue element-ui web端 引入高德地图,并获取经纬度

发版前接到一个临时新需求 &#xff0c;需要在web端地址选择时用地图&#xff0c;并获取经纬度。 临阵发版之际加需求&#xff0c;真的是很头疼&#xff0c;于是赶紧找度娘&#xff0c;找api。 我引入的是高德地图&#xff0c;首先要去申请key &#xff0c; 和密钥&#xff0c;…

在安装docker配置端口时 centos7 防火墙规则失效

一、问题 1、做端口映射管理的时候&#xff0c;自己关闭了防火墙&#xff0c;或者开启防火墙&#xff0c;或者指定开关端口&#xff0c;但是都不影响端口的使用&#xff0c;这就很奇怪&#xff0c;也就是本文的内容&#xff01; 2、思路&#xff0c;确认是请求到了防火墙的那…

老板们搞怪营业,品牌好感度upup真有梗

老板下场营业最经典的莫过于“老乡鸡”了。在手撕联名信事件出圈后&#xff0c;老乡鸡围绕束从轩创始人IP&#xff0c;开展了一系列社交传播宣传&#xff0c;比如“咯咯哒糊弄学”等。 50多岁的老乡鸡董事长束从轩&#xff0c;一改传统企业家严肃正经的形象&#xff0c;跟着老乡…

Windows下virtualbox相关软件安装设置全过程

一、下载 virtual box 程序 virtual box扩展程序-Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack Virtualbox GuestAdditions 程序-解决分辨率&#xff0c;主机虚拟机之间共享文件、剪贴板等问题 http://download.virtualbox.org/virtualbox/7.0.8/ 或者 virtual b…

【shell脚本】条件语句

一、条件测试操作 1.1test命令与 [ ] 符号 测试表达试是否成立&#xff0c;若成立返回0&#xff0c;否则返回其它数值 1.1.1文件测试常用的测试操作符 符号作用-d测试是否为目录-e测试是否为目录或文件-f测试是否为文件-r测试当前用户是否有读取权限-w测试当前用户是否有写…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持&#xff0c;比如lamda函数式接口的支持&#xff0c;支持更多函数式接口的使用&#xff0c;对链表&#xff0c;数组&#xff0c;队列&#xff0c;集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…

运维监控工具PIGOSS BSM扩展指标介绍

PIGOSS BSM运维监控工具&#xff0c;除系统自带指标外&#xff0c;还支持添加SNMP扩展指标、脚本扩展指标、JMX扩展指标、自定义JDBC指标等&#xff0c;今天本文将介绍如何添加SNMP扩展指标和脚本扩展指标。 添加SNMP扩展指标 前提&#xff1a;需要知道指标的oid 例子&#xff…

如何实现Spring AOP以及Spring AOP的实现原理

AOP:面向切面编程,它和OOP&#xff08;面向对象编程)类似。 AOP组成: 1、切面:定义AOP是针对那个统一的功能的&#xff0c;这个功能就叫做一个切面&#xff0c;比如用户登录功能或方法的统计日志&#xff0c;他们就各种是一个切面。切面是有切点加通知组成的。 2、连接点:所有可…

Redis入门学习笔记【一】

目录 一、Redis是什么 二、Redis数据结构 2.1 Redis 的五种基本数据类型 2.1.1String&#xff08;字符串&#xff09; 2.1.2字符串列表&#xff08;lists&#xff09; 2.1.3字符串集合&#xff08;sets&#xff09; 2.1.5哈希&#xff08;hashes&#xff09; 2.2 Red…