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

embedded/2025/2/19 5:53:10/

文章目录

    • 【`获取资源`请见文章第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. 部分代码展示

matlab">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.ppmy.cn/embedded/7606.html

相关文章

日期相关的题目

日期相关的题目 1. 计算日期到天数转换2. 日期累加3. 打印日期4. 日期差值 1. 计算日期到天数转换 输出示例: 思路&#xff1a;计算前n-1个月的天数在加上这个月的天数。 #include <iostream> using namespace std;int main() {int year, month, day;cin >> yea…

ZCMU 1531: 序列的混乱程度

Description 有一个长度为n的正整数序列&#xff0c;一个序列的混乱程度定义为这个序列的最大值和最小值之差。请编写一个程序&#xff0c;计算一个序列的混乱程度。 Input 输入的第一行为一个正整数T (T<1000)&#xff0c;表示一共有T组测试数据。 每组测试数据的第一行为一…

C语言中, 文件包含处理,#include< > 与 #include ““的区别

文件包含处理 指一个源文件可以将另外一个文件的全部内容包含进来 &#xff23;语言提供了#include命令用来实现文件包含的操作 #include< > 与 #include ""的区别 <> 表示系统直接按系统指定的目录检索 "" 表示系统先在 "" 指定…

全量知识系统 详细程序设计 之“编程理念”(QA SmartChat)

Q1. 今天聊聊 全量知识系统 &#xff08;“全知系统”&#xff09;详细程序设计 之“编程理念” 全知系统是一种拥有无限知识和能力的智能系统&#xff0c;它能够理解和应对各种复杂问题&#xff0c;并给出最优解决方案。在设计全知系统的程序时&#xff0c;需要遵循以下编程理…

【Kotlin】协程

1 前言 相较于 C# 中的协程&#xff08;详见 → 【Unity3D】协同程序&#xff09;&#xff0c;Kotlin 中协程更灵活&#xff0c;难度更大。 协程是一种并发设计模式&#xff0c;用于简化异步编程&#xff0c;它允许以顺序化的方式表达异步操作&#xff0c;避免回调地狱等问题。…

设计模式-命令模式

命令模式 命令模式是一种行为设计模式&#xff0c;它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中&#xff0c;且能实现可撤销操作。 Hystrix是Netflix开源的一款容错框架&#xff0c;具有自我…

上海人工智能实验室代表的国家科研模式创新

本文转载自AI科技评论,真实性由 AI科技评论 负责。 文章目录 1. 人工智能科研模式创新2. 候选人特征Reference2023 年 12 月,上海人工智能实验室第一位主任汤晓鸥意外逝世。汤博士的突然离世令人惋惜,其离世后,上海人工智能实验室的主任位置也一直空缺至今。 1. 人工智能科…

深入浅出Python机器学习:从零开始的SVM教程/厾罗

导言&#xff1a; 在众多机器学习算法中&#xff0c;支持向量机&#xff08;Support Vector Machine, SVM&#xff09;以其强大的分类能力和理论背景受到了广泛的应用。SVM不仅在学术领域表现出色&#xff0c;而且在工业界也有着极高的声誉。本文将带领大家从零开始&#xff0…