【单目标优化求解】贪婪非分级灰狼算法求解单目标优化问题(G-NHGWO)【含Matlab源码 2005期】

news2025/8/12 21:13:42

⛄一、贪婪随机自适应搜索算法简介

1 贪婪随机自适应搜索算法
GRASP算法分两个阶段,构造阶段和局部搜索阶段[3]。在构造阶段,初始化可行解S和候选集C,并对候选集的每一个元素进行评估,判断是否可加入限制候选列表(Restricted Candidate List, RCL)。每次从RCL中随机选取一个值与可行解S进行比对,更新RCL的元素,并对包含的所有元素进行再次评估,直到满足条件时结束。

RCL规模大小也会影响此算法性能,规模过大会生成很多差别的解。RCL通常采用静态固定法和动态调整法来调整列表规模,体现了GRASP算法自适应功能。

在第一阶段会得到质量不高的可行解,因此在第二阶段,可行解需要以持续不断的迭代方式进行局部搜索,以求得最优解。若局部新优解S比目前的优解S更优的话,就更换S,直到找到最优解。选择相邻解在局部搜索阶段有两种方法:最优适应和首次适应。最优适应在所有相邻解被搜寻后,将更优相邻解替换为可行解;首次适应是当搜索到比可行解更优相邻解时进行替换后再次局部搜索,当循环达到满足给定的迭代次数时终止。

2 灰狼优化算法
GWO算法模仿灰狼的社会等级制度和猎食行为,并控制搜索方位。灰狼优化算法已被广泛应用并不断改进,主要体现在约束函数优化、多级阈值图像分割、路径优化等领域。灰狼等级从高到低为α,β,δ,ω这四种等级,每一个等级表示一个可能解。α狼是狼群头领,拥有最高决策权,代表最优解;β,δ,ω狼分别代表优解、次优解、候选解。狼群每次捕猎过程是由各等级的相互协作完成,由搜寻、包围、攻击3个步骤组成。

2.1 搜寻过程
该算法通过随机数扰乱判断与猎物之间的距离,以此初始化种群。
在这里插入图片描述
式中:t为当下迭代次数;X (t)为灰狼的位置;Xp (t)为第t次迭代中猎物位置;D为灰狼与猎物的间距;r为0~1之间的任意随机数。

2.2 包围过程
在灰狼包围猎物的过程中,通过狼之间不同距离和猎物距离,建立灰狼与猎物的关系模型。
在这里插入图片描述
式中:A表示包围步长;tmax表示最大迭代次数,控制参数a随着算法迭代次数的增加而线性递减。其中,当|A|≥1时,表示灰狼会进行全局搜索;而|A|<1时,意味灰狼将在附近搜索。A, C的随机初始化保证了灰狼在搜索过程中易达到全局最优位置。

2.3 位置更新(攻击)
通过α,β,δ,ω更新位置信息,判断目标猎物位置并对猎物攻击。产生新位置关系后,对狼群中的元素进行边界控制,完成一次迭代。此阶段狼群位置更新如图1所示。
在这里插入图片描述
式中:X1, X2, X3表示α,β,δ狼的位置;A1, A2, A3表示3个随机数;X表示灰狼攻击猎物的最终位置。灰狼通过速度变异、搜索半径变化、位置更新等策略,并借助参数A和C的随机变化、较强的全局能力,使得灰狼在全局范围亦可搜寻到最优解或次最优解。重复进行上述步骤,直到达到终止条件输出最优解。综述,灰狼捕食过程是可以抽象成连续空间上的组合优化模型。
在这里插入图片描述
图1 GWO算法中灰狼位置更新图

⛄二、部分源代码


clear

global NFE
NFE=0;

nPop=30;    % Number of search agents (Population Number)
MaxIt=1000; % Maximum number of iterations
nVar=30;    % Number of Optimization Variables

nFun=1;     % Function No, select any integer number from 1 to 14

CostFunction=@(x,nFun) Cost(x,nFun);        % Cost Function

%% Problem Definition

VarMin=-100;             % Decision Variables Lower Bound
if nFun==7
    VarMin=-600;             % Decision Variables Lower Bound
end
if nFun==8
    VarMin=-32;             % Decision Variables Lower Bound
end
if nFun==9
    VarMin=-5;             % Decision Variables Lower Bound
end
if nFun==10
    VarMin=-5;             % Decision Variables Lower Bound
end
if nFun==11
    VarMin=-0.5;             % Decision Variables Lower Bound
end
if nFun==12
    VarMin=-pi;             % Decision Variables Lower Bound
end
if nFun==14
    VarMin=-100;             % Decision Variables Lower Bound
end
VarMax= -VarMin;             % Decision Variables Upper Bound
if nFun==13
    VarMin=-3;             % Decision Variables Lower Bound
    VarMax= 1;             % Decision Variables Upper Bound
end

%%   NH-Grey Wold Optimizer (GWO)

% Initialize Best Solution (Alpha) which will be used for archiving
Alpha_pos=zeros(1,nVar);
Alpha_score=inf;

%Initialize the positions of search agents
Positions=rand(nPop,nVar).*(VarMax-VarMin)+VarMin;
Positions1=rand(nPop,nVar).*(VarMax-VarMin)+VarMin;
BestCosts=zeros(1,MaxIt);

fitness(1:nPop)=inf;
fitness1=fitness;

iter=0;  % Loop counter

%% Main loop
while iter<MaxIt
    for i=1:nPop
        
        % Return back the search agents that go beyond the boundaries of the search space
        Flag4ub=Positions1(i,:)>VarMax;
        Flag4lb=Positions1(i,:)<VarMin;
        Positions1(i,:)=(Positions1(i,:).*(~(Flag4ub+Flag4lb)))+VarMax.*Flag4ub+VarMin.*Flag4lb;
        
        % Calculate objective function for each search agent
        fitness1(i)= CostFunction(Positions1(i,:), nFun);
        
        % Update Grey Wolves
        if fitness1(i)<fitness(i)
            Positions(i,:)=Positions1(i,:);
            fitness(i) =fitness1(i) ;
        end
        
        % Update Best Solution (Alpha) for archiving
        if fitness(i)<Alpha_score
            Alpha_score=fitness(i);
            Alpha_pos=Positions(i,:);
        end
        
    end
    

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 高珊,孟亮.贪婪随机自适应灰狼优化算法求解TSP问题[J].现代电子技术. 2019,42(14)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西电通信技术基础实验

实验一 基带传输常用编码 实验内容 数字编码技术&#xff1a;AMI码、曼彻斯特编码、HDB3码 实验目的 掌握几种基带传输常用码型的编码规则&#xff0c;如AMI码、HDB3码、曼彻斯特码。然后利用MATLAB设计并实现它们的编码。 实验环境 MATLAB程序设计、MATLAB Simulink仿真…

IMX6ULL + SPI LCD(驱动IC ILI9341)显示简单的QT界面

1. 硬件&#xff1a; 使用正点原子的IMX6ULL Linux开发板 开发板底板原理图版本&#xff1a;V2.1 核心板原理图版本&#xff1a;V1.6 LCD &#xff1a;MSP2402 (IC ILI9341) 2. 查找可用引脚 开发板上引出的引脚是在JP6上&#xff0c;只看JP6会发现没有可用的SPI引脚&…

【前端内容学习】vue的引用,下载,语法

&#xff08;1&#xff09;vue的使用方式 原版本应该是三种使用方式&#xff0c;但是现在vue官网好像已经找不到关于本地下载的内容了 1&#xff0c;直接在官网上引用网络CDN文件&#xff0c;注意这种引用方式&#xff0c;要把这一段写在所有使用vue的部分前面 <script s…

蓝鲸研运体系在腾讯内的应用实践

蓝鲸是腾讯IEG十多年研运探索的经验与成果&#xff0c;积累了很多人的智慧与付出。由于腾讯IEG的业务特殊性&#xff0c;蓝鲸体系天生地展现出对异构业务的友好&#xff0c;避免了需要重复造轮子才能完成对多业务的支持。本次分享主要介绍蓝鲸研运体系在腾讯内的发展、应用及未…

【Linux】Linux常用命令

目录一.帮助命令1.man获取帮助信息2.help获取shell内置命令的帮助信息3.怎么判断命令的类型4.使用man查看内置命令5.常用快捷键二.文件目录类命令1.pwd 显示当前工作目录的绝对路径2.cd 切换路径3.ls 列出目录的内容4.mkdir 创建一个新的目录(文件夹)5.rmdir 删除目录(文件夹)6…

linux64/ubuntu20.04安装NVIDIA驱动详细过程

每次安装Nvidia驱动的时候都要查询&#xff0c;各种各样的教程可能也不大适合自己&#xff0c;故记录一下安装过程&#xff1b; 本人所使用的系统为ubuntu20.04&#xff0c;64bit&#xff1b; 1、查看是否存在nvidia的显卡信息 命令&#xff1a;lspci | grep NVIDIA 2、根据显…

奥迪Q3电瓶损坏问题解决思路

背景 最近自己的小Q3坏了&#xff0c;具体场景就是无钥匙进入感应不生效&#xff0c;所有钥匙按键失灵&#xff0c;通过机械钥匙可以开启门锁但是汽车完全无法启动&#xff0c;方向盘锁死&#xff0c;灯光没有反应。初步推断电瓶损坏&#xff0c;或者漏电导致完全亏电。 怎么判…

数理统计笔记6:假设检验

引言 数理统计笔记的第6篇先介绍了假设检验&#xff0c;给出了各种常用的假设检验的方法&#xff0c;最后介绍了用置信区间和p值来进行假设检验的方法。 引言假设检验描述什么是假设什么是假设检验假设检验的基本思想假设检验的步骤假设检验的原理假设检验的两类错误双侧检验和…

【微电网优化】粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)【含Matlab源码 2190期】

⛄一、粒子群算法求解电联供型微电网经济运行优化简介 0 引言 热电联供 (combined heat and power, CHP) 系统建立在能源梯级利用的概念基础上, 统一解决了电能和热能的供应问题, 是一种经济节能、环境友好的用能方式, 具有良好的社会和经济效益, 在国内外引起广泛关注。在发展…

ShareSDK for Flutter

前言 这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交平台的分享等功能。 Demo例子&#xff1a;https://github.com/MobClub/ShareSDK-For-Flutter 开始集成 引入…

C++ 语言学习 day11 复习(3)

1.第一个是昨天的作业&#xff1a; 用类实现一个双向循环链表&#xff0c; 完成对应的功能&#xff0c;&#xff08;增删查改 &#xff09; 代码&#xff1a; list.h #ifndef LIST_H #define LIST_H #include <iostream> #include <string.h> using namespace s…

WebRTC入门教学和一对一通话实现

WebRTC入门学习 简介 大体架构 互联网实时通信平台&#xff0c;html5标准之一&#xff0c;使用简单的API就可以实现音频通信。 紫色部分的是Web应用开发者需要关注的部门&#xff0c;也就是WebRTC提供给开发者的接口蓝色部分是提供给浏览器厂商的接口&#xff0c;浏览器厂…

2023年天津理工大学中环信息学院专升本专业课报名考试须知

天津理工大学中环信息学院 2023年高职升本科专业课考试须知 根据《2023年天津市高职升本科招生实施办法》的相关要求&#xff0c;为做好高职升本科专业考试的报考工作&#xff0c;全面服务考生&#xff0c;保障考生权益&#xff0c;结合疫情防控要求&#xff0c;现将考试具体事…

14天学习训练营之 入门Pygame

目录 学习知识点 pygame 的 “hello world” pygame 模块概览 事件 理解事件 事件检索 处理鼠标事件 处理键盘事件 事件过滤 产生事件 模板代码 写一个把所有发生的事件输出的程序 使用方向键来移动图片 产生一个完全自定义的全新事件 这个程序让 “hello world”…

Linux--信号量

1.信号量的定义: 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c; 获取资源时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为p操作。当信号量值为0时&#xff0c;代表没有资源可用&#xff0c;p操作会阻塞。释…

Flutter高仿微信-第31篇-单聊-表情

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取表情实现的…

骨感传导蓝牙耳机怎么样,骨感传导耳机对于我们耳道有保护吗

人们对于自身健康越来越重视&#xff0c;更多的人意识到传统耳机对于我们耳道的危害&#xff0c;纷纷加入了新型的骨感传导耳机阵容中&#xff0c;但还是存在不少对于骨传导耳机保持顾虑的小伙伴们&#xff0c;认为骨感传导对于耳道还是有损害&#xff0c;那么今天小编就和大家…

【Redis】Redis 的基础数据结构 以及 各种数据结构常用命令使用示例

本文主要介绍 Redis 基础&#xff0c;包括什么是 Redis 、Redis 数据结构有那些 以及 各种Redis 数据结构的常用操作命令 1. 初始 Redis 1.1 NoSQL 数据库 —— 非关系型数据库 SQL 1&#xff09; 结构化 -—— 例如 MySQL 中的表结构 &#xff08;不建议修改&#xff0c;初始…

锐捷MPLS跨域方案A、B实验配置

目录 MPLS域内配置 MPLS域1配置 MPLS域2配置 域间方式A配置 域间方式B配置 MPLS隧道——跨域解决方案A、B讲解_静下心来敲木鱼的博客-CSDN博客_跨域a方案https://blog.csdn.net/m0_49864110/article/details/127601807?spm1001.2014.3001.5501 MPLS域内配置 MPLS域内配置…

同态加密库Seal库的安装(win11+VS2022)

先说一下&#xff0c;seal库是微软开发的同态加密库&#xff0c;目前支持三种算法bfv&#xff0c;bgv和ckks。提供的语言版本是C艹和C#。 工具准备 这是github上提供的要求。 要准备的东西有 vs2022&#xff08;社区版就行了&#xff0c;网上一堆教程&#xff09;&#xff0c…