【群智能算法改进】一种改进的火鹰优化算法 改进的IFHO算法【Matlab代码#77】

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始火鹰优化算法
      • 1.1 种群初始化
      • 1.2 火鹰点火阶段
      • 1.3 猎物移动阶段
    • 2. 改进的火鹰优化算法
      • 2.1 Tent映射种群初始化
      • 2.2 非线性复合自适应惯性权重随机抉择策略
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 原始火鹰优化算法

火鹰优化算法(Fire Hawk Optimizer, FHO)是2023年提出的新算法。作者受鸣笛鸢,黑鸢和棕色猎鹰的觅食行为的启发,提出了这个算法。考虑这些鸟,它们在自然界中捕捉猎物的特定行为,特别是通过放火的方式,故命名此算法为火鹰优化算法。火鹰的奇怪行为是故意用嘴叼着燃烧的树枝来传播火焰,作者对它们的爪子进行了检查和分析,以建立一个数学模型。火鹰优化算法分为以下几个阶段:

1.1 种群初始化

在这里插入图片描述

1.2 火鹰点火阶段

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

1.3 猎物移动阶段

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

2. 改进的火鹰优化算法

2.1 Tent映射种群初始化

混沌序列具有良好的随机性、遍历性和规律性,利用这些特征进行优化、搜索,能够有效地保持种群的多样性,抑制算法陷入局部最优,使全局搜索能力得到加强。研究表明,不同的混沌映射对混沌优化过程的影响很大。目前来说,在优化启发式算法中,用的相对较多的是Logistic混沌映射和Tent混沌映射。Tent映射具有比Logistic映射更好的遍历均匀性和更快的搜索速度。Tent映射的表达式如下:
在这里插入图片描述

2.2 非线性复合自适应惯性权重随机抉择策略

在原始FHO算法中,如果某个个体陷入局部最优后,其更新公式在这个局部最优解附近进行搜索,也不易跳出这个局部解,为了提高算法跳出局部最优的能力,提出了这个非线性复合自适应惯性权重随机抉择策略。

提出的自适应权重因子w的图像如下:
在这里插入图片描述

3. 部分代码展示

function [Best_score,Best_pos,Curve] = IFHO(nPop,Max_iter,lb,ub,dim,fobj)
% 该算法基于啸鸢、麻鹰和褐隼的觅食行为,这些鸟类被称为火鹰,
% 因为它们在自然界中捕捉猎物的具体行动,特别是通过"放火”的方式。
% 该算法模拟了火鹰的觅食行为,考虑了生火和传火以及捕获猎物的过程。
%% 边界矢量化
VarMin = lb.*ones(1,dim);
VarMax = ub.*ones(1,dim);
%% 算法的一般参数
HN = randi([1 ceil(nPop/5)],1,1) ;      % 火鹰最大数量
%% 初始化阶段
Cost=[];%% 改进点1:Tent混沌映射初始化种群 %%%%
Pop = initialization_Tent(nPop, dim, ub, lb); for i=1:nPop% 随机初始化种群% Pop(i,:)=unifrnd(VarMin,VarMax,[1 dim]);% 计算适应度值Cost(i,1)=fobj(Pop(i,:));
end
% 排序找出初始最优
[Cost, SortOrder]=sort(Cost);
Pop=Pop(SortOrder,:);
BestPop=Pop(1,:);
SP=mean(Pop);% 火鹰
FHPops=Pop(1:HN,:);% 猎物
Pop2=Pop(HN+1:end,:);% 火鹰与猎物之间的距离
for i=1:HNnPop2=size(Pop2,1);if nPop2<HNbreakendDist=[];for q=1:nPop2Dist(q,1)=distance(FHPops(i,:), Pop2(q,:));end[ ~, b]=sort(Dist);alfa=randi(nPop2);PopNew{i,:}=Pop2(b(1:alfa),:);Pop2(b(1:alfa),:)=[];if isempty(Pop2)==1breakend
endif isempty(Pop2)==0PopNew{end,:}=[PopNew{end,:} ;Pop2];
end% 更新最优解
GB=Cost(1);
BestPos=BestPop;
%% 主循环
Iter=1;
while Iter<=Max_iterfprintf('迭代次数:%d\n', Iter);Iter=Iter+1;PopTot=[];Cost=[];

4. 仿真结果展示

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

5. 资源获取

可更换其他群智能算法,获取完整代码资源。👇👇👇👀名片

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python系列】pydantic版本问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

机器学习 | 使用Scikit-Learn实现分层抽样

在本文中&#xff0c;我们将学习如何使用Scikit-Learn实现分层抽样。 什么是分层抽样&#xff1f; 分层抽样是一种抽样方法&#xff0c;首先将总体的单位按某种特征分为若干次级总体&#xff08;层&#xff09;&#xff0c;然后再从每一层内进行单纯随机抽样&#xff0c;组成…

1.9 数据结构之 并查集

编程总结 在刷题之前需要反复练习的编程技巧&#xff0c;尤其是手写各类数据结构实现&#xff0c;它们好比就是全真教的上乘武功 本栏目为学习笔记参考&#xff1a;https://leetcode.cn/leetbook/read/disjoint-set/oviefi/ 1.0 概述 并查集&#xff08;Union Find&#xff09…

如何在MacOS上使用OpenHarmony SDK交叉编译?

本文以cJSON三方库为例介绍如何通过OpenHarmony的SDK在Mac平台进行交叉编译。 环境准备 SDK准备 我们可以通过 openHarmony SDK 官方发布渠道下载对应mac版本的SDK&#xff0c;当前OpenHarmony MAC版本的SDK有2种&#xff0c;一种是x86架构&#xff0c;另一种是arm64&#x…

如何在 MySQL 中开启日志记录并排查操作记录

在数据库管理中&#xff0c;能够追踪和审查操作记录是至关重要的。这不仅有助于识别和分析正常的数据库活动&#xff0c;还可以在数据泄露或未经授权的更改发生时进行调查和响应。本文将介绍如何在 MySQL 中开启通用日志记录&#xff0c;并如何排查操作记录。 开启 MySQL 通用…

适配器模式:连接不兼容接口的桥梁

在软件开发中&#xff0c;适配器模式是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行交互&#xff0c;从而使它们能够一起工作。这个模式经常用于系统升级或集成第三方库的时候&#xff0c;当现有的代码无法直接使用新系统或库提供的接口时&#xff0c;适配器可以…

Vector - CAPL - XCP介绍_02

前面我们介绍了关于使用vector XCP License后&#xff0c;通过CAPL对XCP协议进行连接、断开和获取当前XCP连接状态的函数&#xff0c;本篇文章不做过多的其他赘述&#xff0c;我们继续介绍CAPL控制XCP相关的其他函数。 目录 xcpActivate 代码示例 xcpDeactivate xcpActiva…

Arthas实战教程:定位Java应用CPU过高与线程死锁

引言 在Java应用开发中&#xff0c;我们可能会遇到CPU占用过高和线程死锁的问题。本文将介绍如何使用Arthas工具快速定位这些问题。 准备工作 首先&#xff0c;我们创建一个简单的Java应用&#xff0c;模拟CPU过高和线程死锁的情况。在这个示例中&#xff0c;我们将编写一个…

防汛物资仓库管理系统|实现应急物资仓库三维可视化

系统概述 智慧应急物资仓库可视化系统&#xff08;智物资DW-S300&#xff09;采用了 B/S 架构的设计&#xff0c;通过浏览器即可快速登录操作。实现对库房内的应急物资从申购入库、出库、调拨、库内环境监测、维修保养、检测试验、处置报废等全周期、科学、规范的管理。系统以…

【Linux】进程基础铺垫(三)软件基础:系统调用接口

系统调用接口 前言&#xff1a;系统调用接口的引入例子理解 总结小图一、系统调用接口二、底层封装 系统调用接口1. printf && scanf 重新理解 三、库函数 与 系统调用函数 前言&#xff1a;系统调用接口的引入 例子理解 就好比 去银行取钱&#xff0c;银行不可能让你…

车机系统与 Android 的关系概述

前言&#xff1a;搞懂 Android 系统和汽车到底有什么关系。 文章目录 一、基本概念1、Android Auto1&#xff09;是什么2&#xff09;功能 2、Google Assistant3、Android Automotive1、Android Auto 和 Android Automotive 的区别 4、App1&#xff09;App 的开发2&#xff09;…

Vol.42 推荐几个高质量的独立开发、商业相关的播客

给大家推荐几个播客&#xff0c;这些博客信息密度都挺高的&#xff0c;是我经常听的&#xff0c;分享给大家&#xff1b; 1.代码之外 代码之外 Beyond Code | 小宇宙 - 听播客&#xff0c;上小宇宙 主播是Randy Lu&#xff1b; 2.三五环 三五环 | 小宇宙 - 听播客&#xff0…