基于火鹰优化算法的函数寻优算法

news2024/12/26 10:44:38

文章目录

  • 一、理论基础
    • 1、火鹰优化算法
    • 2、FHO算法伪代码
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

1、火鹰优化算法

文献[1]提出了火鹰优化算法(Fire Hawk Optimizer, FHO)作为一种新的元启发式算法,该算法基于啸鸢、麻鹰和褐隼的觅食行为,这些鸟类被称为火鹰,因为它们在自然界中捕捉猎物的具体行动,特别是通过“放火”的方式。
FHO元启发式算法模拟了火鹰的觅食行为,考虑了生火和传火以及捕获猎物的过程。首先,确定若干候选解( X X X)作为火鹰和猎物的位置向量,利用一个随机初始化过程来确定这些向量在搜索空间中的初始位置。 X = [ X 1 X 2 ⋮ X i ⋮ X N ] = [ x 1 1 x 1 2 ⋯ x 1 j ⋯ x 1 d x 2 1 x 2 2 ⋯ x 2 j ⋯ x 2 d ⋮ ⋮ ⋮ ⋱ ⋮ x i 1 x i 2 ⋯ x i j ⋯ x i d ⋮ ⋮ ⋮ ⋱ ⋮ x N 1 x N 2 ⋯ x N j ⋯ x N d ] , { i = 1 , 2 , … , N j = 1 , 2 , … , d (1) X=\begin{bmatrix}X_1\\X_2\\\vdots\\X_i\\\vdots\\X_N\end{bmatrix}=\begin{bmatrix}x_1^1x_1^2\cdots x_1^j\cdots x_1^d\\x_2^1x_2^2\cdots x_2^j\cdots x_2^d\\\vdots\vdots\vdots\ddots\vdots\\x_i^1x_i^2\cdots x_i^j\cdots x_i^d\\\vdots\vdots\vdots\ddots\vdots\\x_N^1x_N^2\cdots x_N^j\cdots x_N^d\end{bmatrix},\quad\begin{dcases}i=1,2,\ldots,N\\j=1,2,\ldots,d\end{dcases}\tag{1} X=X1X2XiXN=x11x12x1jx1dx21x22x2jx2dxi1xi2xijxidxN1xN2xNjxNd,{i=1,2,,Nj=1,2,,d(1) x i j ( 0 ) = x i , min ⁡ j + rand ⋅ ( x i , max ⁡ j − x i , min ⁡ j ) , { i = 1 , 2 , … , N j = 1 , 2 , … , d (2) x_i^j(0)=x_{i,\min}^j+\text{rand}\cdot\left(x_{i,\max}^j-x_{i,\min}^j\right),\quad\begin{dcases}i=1,2,\ldots,N\\j=1,2,\ldots,d\end{dcases}\tag{2} xij(0)=xi,minj+rand(xi,maxjxi,minj),{i=1,2,,Nj=1,2,,d(2)其中, N N N为搜索空间中候选解的总数; x i j x_i^j xij为第 i i i个候选解的第 j j j个决策变量; x i j ( 0 ) x_i^j(0) xij(0)表示候选解的初始位置; X i , min ⁡ j X_{i,\min}^j Xi,minj x i , max ⁡ j x_{i,\max}^j xi,maxj是第 i i i个候选解的第 j j j个决策变量的最小和最大边界; rand \text{rand} rand是一个 [ 0 , 1 ] [0,1] [0,1]均匀分布的随机数。
为了确定火鹰在搜索空间中的位置,候选解的目标函数评价考虑了所选优化问题。一些具有较好目标函数值的候选解表示为火鹰,而其余的候选解则是猎物。选定的火鹰用于在搜索空间内的猎物周围散布火焰,以使狩猎更容易。此外,假设全局最佳解决方案是火鹰在搜索空间(自然)中首先使用的主火。数学表达式如下: P R = [ P R 1 P R 2 ⋮ P R k ⋮ P R m ] ,    k = 1 , 2 , … , m (3) PR=\begin{bmatrix}PR_1\\PR_2\\\vdots\\PR_k\\\vdots\\PR_m\end{bmatrix},\,\,k=1,2,\ldots,m\tag{3} PR=PR1PR2PRkPRm,k=1,2,,m(3) F H = [ F H 1 F H 2 ⋮ F H l ⋮ F H n ] ,    l = 1 , 2 , … , n (4) FH=\begin{bmatrix}FH_1\\FH_2\\\vdots\\FH_l\\\vdots\\FH_n\end{bmatrix},\,\,l=1,2,\ldots,n\tag{4} FH=FH1FH2FHlFHn,l=1,2,,n(4)其中, P R k PR_k PRk是搜索空间中关于 m m m个猎物总数的第 k k k个猎物; F H l FH_l FHl是搜索空间中 n n n个火鹰的总数中的第 l l l个火鹰。
在算法的下一个阶段,计算火鹰和猎物之间的总距离。结果导致每只鸟最近的猎物被确定,从而区分这些鸟的有效领地。需要注意的是,确定距离第一火鹰最近且目标函数值最好的猎物,而通过剩余的猎物来考虑其他鸟类的领地。 D k l D_k^l Dkl由下式确定: D k l = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 ,    { l = 1 , 2 , … , n k = 1 , 2 , … , m (5) D_k^l=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2},\,\,\begin{dcases}l=1,2,\ldots,n\\k=1,2,\ldots,m\end{dcases}\tag{5} Dkl=(x2x1)2+(y2y1)2 ,{l=1,2,,nk=1,2,,m(5)其中, D k l D_k^l Dkl为第 l l l只火鹰与第 k k k只猎物之间的总距离; m m m为搜索空间中的猎物总数; n n n为搜索空间中火鹰的总数; ( x 1 , y 1 ) (x_1, y_1) (x1,y1) ( x 2 , y 2 ) (x_2, y_2) (x2,y2)表示火鹰和猎物在搜索空间中的坐标。
在进行了上述测量火鹰和猎物之间总距离的程序后,通过它们周围最近的猎物来区分这些鸟的领土。通过对火鹰和猎物的分类,配置了算法的搜索过程。需要注意的是,目标函数值较好的火鹰在其特定领土的搜索空间中选择最接近的最佳猎物。然后,其他的火鹰在搜索空间中完成了下一个最近的猎物,这证明了最强的火鹰比较弱的鸟完成了更成功的狩猎。
在算法的下一个阶段,火鹰从主火收集燃烧的木棍,以便在选定的区域点火。在这一阶段,每只鸟都会捡起一根燃烧的棍子,然后把它扔到自己的特定领地,迫使猎物匆忙逃离。与此同时,一些鸟渴望使用来自火鹰其他领地的燃烧棒。因此,这两种行为可作为FHO主搜索循环中的位置更新过程,如下式所示: F H l n e w = F H l + ( r 1 × G B − r 2 × F H N e a r ) ,    l = 1 , 2 , … , n (6) FH_l^{new}=FH_l+(r_1\times GB-r_2\times FH_{Near}),\,\,l=1,2,\ldots,n\tag{6} FHlnew=FHl+(r1×GBr2×FHNear),l=1,2,,n(6)其中, F H l n e w FH_l^{new} FHlnew为第 l l l只火鹰( F H l FH_l FHl)的新位置向量; G B GB GB是搜索空间中的全局最优解,被认为是主火; F H N e a r FH_{Near} FHNear是搜索空间中的另一只火鹰; r 1 r_1 r1 r 2 r_2 r2是在 ( 0 , 1 ) (0,1) (0,1)范围内均匀分布的随机数,用于确定火鹰向主火和其他火鹰领地的移动。
在算法的下一个阶段,猎物在每只火鹰的领地内的移动被认为是动物行为的一个关键方面,用于位置更新过程。当火鹰扔下一根燃烧的棍子时,猎物决定躲藏,逃跑,或者会误朝火鹰跑去。在位置更新过程中可以考虑这些动作,使用以下式子更新: P R q n e w = P R q + ( r 3 × F H l − r 4 × S P l ) ,    { l = 1 , 2 , … , n q = 1 , 2 , … , r (7) PR_q^{new}=PR_q+(r_3\times FH_l-r_4\times SP_l),\,\,\begin{dcases}l=1,2,\ldots,n\\q=1,2,\ldots,r\end{dcases}\tag{7} PRqnew=PRq+(r3×FHlr4×SPl),{l=1,2,,nq=1,2,,r(7)其中, P R q n e w PR_q^{new} PRqnew为被第 l l l只火鹰( F H l FH_l FHl)包围的第 q q q个猎物( P R q PR_q PRq)的新位置向量; G B GB GB是搜索空间中的全局最优解,被认为是主火; S P l SP_l SPl是第 l l l只火鹰属下的一个安全地点; r 3 r_3 r3 r 4 r_4 r4是在 ( 0 , 1 ) (0,1) (0,1)范围内均匀分布的随机数,用于确定猎物向火鹰和安全地点的移动。
此外,猎物可能会向其他火鹰的领地移动,而猎物也有可能在附近的伏击中更接近火鹰,甚至试图躲到火鹰领地之外更安全的地方。在位置更新过程中可以考虑这些动作,使用以下公式: P R q n e w = P R q + ( r 5 × F H A l t e r − r 6 × S P ) ,    { l = 1 , 2 , … , n q = 1 , 2 , … , r (8) PR_q^{new}=PR_q+(r_5\times FH_{Alter}-r_6\times SP),\,\,\begin{dcases}l=1,2,\ldots,n\\q=1,2,\ldots,r\end{dcases}\tag{8} PRqnew=PRq+(r5×FHAlterr6×SP),{l=1,2,,nq=1,2,,r(8)其中, P R q n e w PR_q^{new} PRqnew为第 q q q个猎物被第 l l l个火鹰包围的新位置向量( P R q PR_q PRq); F H A l t e r FH_{Alter} FHAlter是搜索空间中的另一个火鹰; S P SP SP是火鹰第 l l l团领地之外的安全地带; r 5 r_5 r5 r 6 r_6 r6是在 ( 0 , 1 ) (0,1) (0,1)范围内均匀分布的随机数,用于确定猎物向其他火鹰和领土外的安全地点移动。
基于自然界中的安全场所是大多数动物聚集在一起的场所,以便在危险期间保持安全和健康的事实, S P l SP_l SPl S P SP SP的数学表达式如下: S P l = ∑ q = 1 r P R q r ,    { l = 1 , 2 , … , n q = 1 , 2 , … , r (9) SP_l=\frac{\sum_{q=1}^rPR_q}{r},\,\,\begin{dcases}l=1,2,\ldots,n\\q=1,2,\ldots,r\end{dcases}\tag{9} SPl=rq=1rPRq,{l=1,2,,nq=1,2,,r(9) S P = ∑ k = 1 m P R k m ,    k = 1 , 2 , … , m (10) SP=\frac{\sum_{k=1}^mPR_k}{m},\,\,k=1,2,\ldots,m\tag{10} SP=mk=1mPRk,k=1,2,,m(10)其中, P R q PR_q PRq是被第 l l l只火鹰( F H l FH_l FHl)包围的第 q q q个猎物; P R k PR_k PRk是搜索空间中的第 k k k个猎物。

2、FHO算法伪代码

图1给出了FHO算法的伪代码。
在这里插入图片描述

图1 FHO算法伪代码

二、仿真实验与结果分析

将FHO与CS、MVO、SCA和ASO进行对比,实验设置种群规模为30,最大迭代次数为500,每个算法独立运行30次,以文献[2]表1中的F2、F5、F9、F12、F19、F20为例,结果显示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数:F2
CS:最差值: -24.1568,最优值:-24.1568,平均值:-24.1568,标准差:1.859e-14,秩和检验:2.8991e-11
MVO:最差值: -24.1568,最优值:-24.1568,平均值:-24.1568,标准差:9.844e-06,秩和检验:0.016955
SCA:最差值: -23.7608,最优值:-24.1523,平均值:-24.0896,标准差:0.082235,秩和检验:3.0199e-11
ASO:最差值: -24.1568,最优值:-24.1568,平均值:-24.1568,标准差:1.086e-14,秩和检验:2.0668e-11
FHO:最差值: -24.1568,最优值:-24.1568,平均值:-24.1568,标准差:8.2549e-06,秩和检验:1
函数:F5
CS:最差值: -176.1376,最优值:-176.1376,平均值:-176.1376,标准差:2.2545e-09,秩和检验:3.018e-11
MVO:最差值: -90.8845,最优值:-176.1375,平均值:-145.9469,标准差:27.745,秩和检验:0.077272
SCA:最差值: -174.9205,最优值:-176.072,平均值:-175.7971,标准差:0.2496,秩和检验:0.051877
ASO:最差值: -174.4688,最优值:-176.1376,平均值:-176.056,标准差:0.31906,秩和检验:1.1652e-09
FHO:最差值: -174.6498,最优值:-176.1358,平均值:-175.5762,标准差:0.42623,秩和检验:1
函数:F9
CS:最差值: 28.3278,最优值:22.4495,平均值:25.5358,标准差:1.587,秩和检验:3.0199e-11
MVO:最差值: 28.944,最优值:12.5698,平均值:18.4464,标准差:4.0713,秩和检验:3.0199e-11
SCA:最差值: 17.9536,最优值:0.1324,平均值:6.4182,标准差:4.8785,秩和检验:3.0199e-11
ASO:最差值: 2.8213,最优值:0.012917,平均值:0.60252,标准差:0.76176,秩和检验:3.0199e-11
FHO:最差值: 6.7388e-22,最优值:4.8612e-25,平均值:1.0095e-22,标准差:1.8365e-22,秩和检验:1
函数:F12
CS:最差值: -8.3158,最优值:-11.4563,平均值:-9.6363,标准差:0.93867,秩和检验:3.0199e-11
MVO:最差值: -5.6063,最优值:-12.0308,平均值:-8.3491,标准差:1.5287,秩和检验:3.0199e-11
SCA:最差值: -11.096,最优值:-19.4145,平均值:-14.1445,标准差:2.035,秩和检验:1.0937e-10
ASO:最差值: -12.7339,最优值:-21.8777,平均值:-16.4089,标准差:2.3121,秩和检验:7.1186e-09
FHO:最差值: -16.2835,最优值:-45.1872,平均值:-28.7838,标准差:8.8617,秩和检验:1
函数:F19
CS:最差值: 31.6907,最优值:22.6836,平均值:26.437,标准差:2.1178,秩和检验:3.0199e-11
MVO:最差值: 69.9174,最优值:45.083,平均值:58.079,标准差:6.1903,秩和检验:3.0199e-11
SCA:最差值: 94.7724,最优值:80.3177,平均值:90.0727,标准差:3.2913,秩和检验:3.0199e-11
ASO:最差值: 35.6872,最优值:17.571,平均值:28.0979,标准差:4.0029,秩和检验:3.0199e-11
FHO:最差值: 5.6983e-28,最优值:3.5571e-33,平均值:2.799e-29,标准差:1.0564e-28,秩和检验:1
函数:F20
CS:最差值: -366,最优值:-426,平均值:-386.6333,标准差:13.0608,秩和检验:1.1931e-12
MVO:最差值: -383,最优值:-467,平均值:-432.2333,标准差:19.493,秩和检验:1.2068e-12
SCA:最差值: -211,最优值:-253,平均值:-230.6667,标准差:10.9461,秩和检验:1.1892e-12
ASO:最差值: -250,最优值:-309,平均值:-280.4667,标准差:13.8159,秩和检验:1.2068e-12
FHO:最差值: -575,最优值:-575,平均值:-575,标准差:0,秩和检验:NaN

实验结果表明:FHO算法比文献中比较的算法具有更好的性能。

三、参考文献

[1] Mahdi Azizi, Siamak Talatahari, Amir H. Gandomi. Fire Hawk Optimizer: a novel metaheuristic algorithm[J]. Artificial Intelligence Review, 2022.
[2] Mahdi Azizi. Atomic orbital search: A novel metaheuristic algorithm[J]. Applied Mathematical Modelling, 2021, 93: 657-683.

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

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

相关文章

【网络原理】网络编程Socket套接字基础知识汇总

目录 1.网络初始: 2.网络编程: 3.UDP数据报套接字: 4.TCP流套接字: 1.网络初始: 局域网(LAN)广域网(WAN)IP地址用于定位主机的网络地址。端口号可以标识主机中发送数…

数据结构六:堆

前言:上一篇我们讲了二叉树,你知道吗?堆的底层是一棵完全二叉树。这样说会不会就会觉得熟悉了。 目录 1.堆的概念及存储方式 2:堆的创建 2.1:向下调整 3.堆的插入和删除 3.1:堆的插入 3.2:堆的删除 …

基于Web的商城后台管理系统的设计与实现

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Oracle和MySQL查询所有的表信息和字段信息

Oracle和MySQL查询所有的表信息和字段信息1. MySQL1.1 查询表1.2 查询字段1.2.1 方式1->SHOW FULL COLUMNS1.2.2 方式2->information_schema.COLUMNS1.3 查表和字段1.4 查表和字段-->转程Oracle需要的数据类型2. Oracle2.1 查表和字段的单表查询2.2 整理查表和字段的s…

超详细的JUnit单元测试介绍

前言 本文为JUnit单元测试相关知识,下边将对JUnit单元测试概念,JUnit优点,JUnit安装与使用,JUnit运行流程与常用注解,JUnit测试套件使用及参数化设置,JUnit断言等进行详尽介绍~ 📌博主主页&…

大数据Hadoop之——Apache Hudi 与 Presto/Trino集成

文章目录一、概述二、Trino 环境部署1)安装JDK2)安装python3)安装Trino1、下载解压并配置环境变量2、修改配置3、启动服务4、测试验证三、在Hive中创建表关联Hudi表1)添加jar包2)创建库表关联Hudi四、Hudi 与 Trino集成…

SpringCloud Alibaba系列 Sentinel(三)

高并发下的微服务容错方案? 限流、熔断、降级 1:限流 在高并发系统中一定要用,高并发的所有请求进来,不是让每个请求都打到后台集群的,后台集群有它的消费能力,应该在它消费能力之内放行请求,…

Hadoop HA集群全是standBy解决办法

文章目录原理解决方案原理 hadoop集群配置HA后,会存在多个namenode,但是同一时间仅有一台NN为Active的状态,其他NN都是StandBy的状态。 上图是hadoop集群配置HA的原理图,从上图我们可以看到多个NN的状态切换,是依靠Z…

linux命令与makefile学习

linux命令与makefile学习文件权限通配符*常用命令makefilegcc与g区别:Linux上有一句话:一切皆文件 普通文件 “-” 目录文件 “d” (directory) 管道文件 “p” (piping) 链接文件“l” (li…

SAP FICO银行账户余额查询表开发说明书(包括开发源代码、测试样例及FS)

程序说明 满足财务银行账户余额查询明细的需求; 支持财务实时查看银行余额数据。 筛选界面 序号 栏位标题 字段类型 是否必须 是否为范围

【pwn】2022 祥云杯 部分wp

【pwn】2022 祥云杯 部分wp 前言 又是一年的祥云杯,相比去年我啥也不会写,今年起码写了几个签到… 又被队友带飞咯 protool Google的Protobuf,参考学习连接 https://bbs.pediy.com/thread-270004.htm 发现了栈溢出,protobuf…

Unity技术手册-UGUI零基础详细教程-Toggle切换

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 本文约3千字,新手阅读需要7分钟,复习需要2分钟 【收藏随时查阅不再迷路】 👉关于作者 众所周知&#…

2.6 Python 基本数据类型

1. 数据类型 类型是变量所指的内存中对象的类型. 内置的type()函数可以用来查询变量所指的对象类型。Python 3中有六个标准的数据类型: Numbers(数字), String(字符串), List(列表), Tuple(元组), Sets(集合), Dictionary(字典).2. Numbers 数字型 Python 有三种数字类型 in…

SpringMVC基本配置

小常规 springmvc的处理器对应的bean必须按照规范格式开发,为避免加入无效的bean可通过bean加载过滤器进行包含设定或排除设定,表现层bean标注通常设定为Controller在此发现图片没有加载出来回到程序去分析当发起一个请求以后DispatcherServlet配置拦截所…

【JVM技术专题】 深入分析class字节码指令方法调用详解「原理篇」

方法调用详解 ​ 调用目标在程序代码写好、编译器进行编译时就必须确定下来,这类方法的调用称为解析。 解析 ​ 在Java语言中符合**“编译期可知,运行期不可变”**这个要求的方法,主要包括静态方法和私有方法两大类,前者与类型…

【JavaScript】网页轮播图

目录HTML搭建功能实现小圆圈事件左右按钮事件自动播放轮播图也叫焦点图,是网页中比较常见的网页特效。功能:鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。点击右侧按钮一次,图片往左播放一张,以此类…

UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation代码补充

上一篇看了文章创新点的代码,现在看一下train文件等其余的文件。 看主函数: import os import torch import argparse import tqdm import sysimport cv2 import torch.nn as nn import torch.distributed as distfrom torch.optim import Adam, SGD fr…

CVE-2022-21907 Microsoft Windows HTTP 协议栈远程代码执行漏洞复现

目录 0x01 声明: 0x02 简介: 0x03 漏洞概述: 0x04 影响版本: 0x05 环境搭建: 下载: 开启IIS: 0x06 漏洞复现: 利用POC: 0x07 流量分析: 客户端&am…

算法提升 (三)基础数据结构

作者:小萌新 专栏:算法提升 作者简介:大二学生 希望能够和大家一起进步! 内容简介:简单介绍基本数据结构的简单面试题 不负韶华 链表 阅读这篇文章之前需要有初阶数据结构的基础 关于链表的结构如果还有不了解的同学…

智能AI创意图片编辑Luminar Neo

Luminar Neo是Mac上的智能AI技术编辑软件背景替换、图像层、除尘、重新照明选项等,从而实现精确掌控。同时在这款软件中还拥有可简化复杂的编辑程序,如此一来用户即可将自己大脑中想象的愿景变为现实,让使用者能有多大胆的想法都可以在这款软…