智能优化算法:鱼鹰优化算法-附代码

news2024/9/23 23:35:06

智能优化算法:鱼鹰优化算法

文章目录

  • 智能优化算法:鱼鹰优化算法
    • 1. 鱼鹰优化算法
      • 1.1 初始化
      • 1.2 阶段一:定位和捕鱼(探索阶段)
      • 1.3 阶段二:把鱼带到合适的位置(开发阶段)
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab

摘要:鱼鹰优化算法(Osprey Optimization Algorithm (OOA)),是于2023年提出的一种基于鱼鹰行为的优化算法,该算法通过模拟鱼鹰猎食行为来进行寻优,具有寻优能力强,收敛速度快等特点

1. 鱼鹰优化算法

1.1 初始化

与其他优化算法类似,在寻优空间里随机初始化种群:
x i , j = l b j + r ⋅ ( u b j − l b j ) (2) x_{i, j}=l b_j+r \cdot\left(u b_j-l b_j\right) \tag{2} xi,j=lbj+r(ubjlbj)(2)
其中 x i , j x_{i,j} xi,j为个体, l b j lb_j lbj为寻优下边界, u b j ub_j ubj为寻优上边界, r r r为[0,1]之间的随机数。

1.2 阶段一:定位和捕鱼(探索阶段)

鱼鹰是一种强大的猎人,由于其强大的视力,能够探测水下鱼类的位置。在确定了鱼的位置后,他们攻击它,并在水下捕食。OOA中种群更新的第一阶段是基于对鱼鹰这种自然行为的模拟而建模的。对鱼鹰攻击鱼类的建模会导致鱼鹰在搜索空间中的位置发生显著变化,这增加了OOA在识别最佳区域和逃离局部最优方面的探索能力。

在OOA设计中,对于每只鱼鹰,搜索空间中具有更好目标函数值的其他鱼鹰的位置被视为水下鱼类。每个鱼鹰的鱼组是用(4)指定的。
F P i = { X k ∣ k ∈ { 1 , 2 , … , N } ∧ F k < F i } ∪ { X best  } (4) F P_i=\left\{X_k \mid k \in\{1,2, \ldots, N\} \wedge F_k<F_i\right\} \cup\left\{X_{\text {best }}\right\}\tag{4} FPi={Xkk{1,2,,N}Fk<Fi}{Xbest }(4)
其中 F P i FP_i FPi是第 i i i只鱼鹰的鱼集合, X b e s t X_{best} Xbest是最佳鱼鹰的位置。

鱼鹰随机检测到其中一条鱼的位置并攻击它。在模拟鱼鹰向鱼移动的基础上,使用(5)计算相应鱼鹰的新位置。如果该新位置更优,则根据(6)替换鱼鹰的先前位置。
x i , j P 1 = x i , j + r i , j ⋅ ( S F i , j − I i , j ⋅ x i , j ) , (5-a) x_{i, j}^{P 1}=x_{i, j}+r_{i, j} \cdot\left(S F_{i, j}-I_{i, j} \cdot x_{i, j}\right),\tag{5-a} xi,jP1=xi,j+ri,j(SFi,jIi,jxi,j),(5-a)

x i , j P 1 = { x i , j P 1 , l b j ≤ x i , j P 1 ≤ u b j l b j , x i , j P 1 < l b j u b j , x i , j P 1 > u b j (5-b) x_{i, j}^{P 1}=\left\{\begin{array}{l} x_{i, j}^{P_1}, l b_j \leq x_{i, j}^{P_1} \leq u b_j \\ l b_j, x_{i, j}^{P_1}<l b_j \\ u b_j, x_{i, j}^{P 1}>u b_j \end{array}\right.\tag{5-b} xi,jP1= xi,jP1,lbjxi,jP1ubjlbj,xi,jP1<lbjubj,xi,jP1>ubj(5-b)

X i = { X i P 1 , F i P 1 < F i X i ,  else  (6) X_i=\left\{\begin{array}{l} X_i^{P 1}, F_i^{P 1}<F_i \\ X_i, \text { else } \end{array}\right.\tag{6} Xi={XiP1,FiP1<FiXi, else (6)

其中 S F SF SF为鱼鹰选中的鱼, r r r为[0,1]之间的随机数, I I I的值为{1,2}中的一个。

1.3 阶段二:把鱼带到合适的位置(开发阶段)

鱼鹰在猎杀一条鱼后,会把它带到一个合适的(对他来说安全的)位置,在那里吃。OOA中种群更新的第二阶段是基于对鱼鹰这种自然行为的模拟进行建模的。将鱼带到合适位置的建模导致鱼鹰在搜索空间中的位置发生微小变化,这导致OOA在局部搜索中的利用能力增加,并在发现的解决方案附近收敛到更好的解决方案。

在OOA的设计中,为了模拟鱼鹰的这种自然行为,首先,对于种群中的每个成员,使用(7)计算一个新的随机位置作为“适合吃鱼的位置”。然后,如果目标函数的值在这个新位置上得到改善,则它根据(8)替换相应鱼鹰的先前位置。
x i , j P 2 = x i , j + l b j + r ⋅ ( u b j − l b j ) t , i = 1 , 2 , … , N , j = 1 , 2 , … , m , t = 1 , 2 , … , T , (7-a) x_{i, j}^{P 2}=x_{i, j}+\frac{l b_j+r \cdot\left(u b_j-l b_j\right)}{t}, i=1,2, \ldots, N, j=1,2, \ldots, m, t=1,2, \ldots, T, \tag{7-a} xi,jP2=xi,j+tlbj+r(ubjlbj),i=1,2,,N,j=1,2,,m,t=1,2,,T,(7-a)

x i , j P 2 = { x i , j P 2 , l b j ≤ x i , j P 2 ≤ u b j l b j , x i , j P 2 < l b j u b j , x i , j P 2 > u b j , (7-b) x_{i, j}^{P 2}=\left\{\begin{array}{l} x_{i, j}^{P 2}, l b_j \leq x_{i, j}^{P 2} \leq u b_j \\ l b_j, x_{i, j}^{P 2}<l b_j \\ u b_j, x_{i, j}^{P 2}>u b_j, \end{array}\right.\tag{7-b} xi,jP2= xi,jP2,lbjxi,jP2ubjlbj,xi,jP2<lbjubj,xi,jP2>ubj,(7-b)

X i = { X i P 2 , F i P 2 < F i X i ,  else  (8) X_i=\left\{\begin{array}{l} X_i^{P 2}, F_i^{P 2}<F_i \\ X_i, \text { else } \end{array}\right.\tag{8} Xi={XiP2,FiP2<FiXi, else (8)

其中 t t t为迭代次数, T T T为最大迭代次数。

算法流程图如下:
在这里插入图片描述

2.实验结果

在这里插入图片描述

3.参考文献

[1]Dehghani Mohammad,Trojovský Pavel. Osprey optimization algorithm: A new bio-inspired metaheuristic algorithm for solving engineering optimization problems[J]. Frontiers in Mechanical Engineering,2023.

4.Matlab

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

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

相关文章

RISC-V U-Boot 启动 Linux 内核的参数

RISC-V U-Boot 启动 Linux 内核的参数 U-Boot (the Universal Boot Loader简写U-Boot) flyfish U-Boot 启动Linux内核的参数举例说明 RISC-V U-Boot 启动 Linux 内核的参数方式一 文本操作earlyprintksunxi-uart,0x02500000clk_ignore_unusedconsolettyS0,115200init/sbin/i…

go-resiliency源码解析之-batcher

go-resiliency源码解析之-batcher 源代码地址 &#xff1a; https://github.com/eapache/go-resiliency/blob/master/batcher/batcher.go 1.batcher定义 创建一个batch对象需要2个参数: Timeout:超时,这是一个batch对象收集输入参数的时间。 work函数变量&#xff1a;在ti…

使用Jumpserver+Frp集中管理远程内网服务器

我们设想这样一种情况&#xff0c;我们是一家小公司&#xff0c;在全国有几个小分支办公机构&#xff0c;每个机构有一台服务器&#xff0c;由于公司财务紧张&#xff0c;买不起专线&#xff0c;用的也是普通家用宽带&#xff0c;SD-WAN设备说实话也挺贵的&#xff0c;那么我们…

Docker部署MySQL主从复制架构

文章目录 1、准备工作2、下拉镜像&#xff0c;启动容器3、编辑 MySQL 主节点配置4、编辑 MySQL 从节点配置5、通过 Navicat 配置主节点6、通过 Navicat 配置从节点7、最终测试 1、准备工作 云服务器&#xff08;虚拟机也可以&#xff09;安装Docker&#xff0c;参考该文章第1小…

Telnet 【实验】

1 什么是Telnet&#xff1f; Telnet是进行远程登录的标准协议&#xff0c;它是当今Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端&#xff0c;使得用户可以方便地使用远程主机上的软、硬件资源。 为什么需要telnet&#xf…

python自动化程序操作浏览器在后台访问网站

目录 1、简介2、详细步骤3、驱动3.1、ChromeDriver3.2、GeckoDriver3.3、Microsoft WebDriver3.4、下载链接 4、完整代码 ⭐在当今信息化的时代&#xff0c;访问网站已经成为人们生活中必不可少的一部分。 1、简介 对于某些需要批量访问网站的任务&#xff0c;手动访问既费时又…

Java - Thread、ThreadLocal、ThreadLocalMap

一、概念 用处每个线程需要持有自己单独的数据&#xff0c;数据在同线程中被多个地方共享&#xff0c;但多线程中不共享。原理创建 ThreadLocal 对象用来存取值&#xff0c;操作的是 CurrentThread 里的 ThreadLocalMap&#xff0c;由于每个 Thread 中都有自己的 ThreadLocalM…

Codeforces Round 870 (Div. 2)

Codeforces Round 870 (Div. 2) A. Trust Nobody 题意&#xff1a; 给你一个数组a&#xff0c;a[i]表示第i个人认为至少有a[i]个人说谎&#xff0c;请你找到正确的说谎人数 思路&#xff1a; 我们认为说谎人数有x人&#xff0c;那么数组a中大于x的元素都是说谎&#xff0c;…

rosbag相关操作

一些很好用的网站 时间戳在线转换网页 旋转矩阵、四元数、绕轴旋转、欧拉角在线转换网页 四元数、欧拉角可视化在线转换网页 一、按时间截取bag 使用如下代码&#xff1a; rosbag filter 原始包名.bag 截取后的包名.bag "t.to_sec() > 开始时间 and t.to_sec() <…

机器学习随记(3)— Softmax

Softmax 与sigmoid不同&#xff0c;softmax可以多个输出&#xff0c;每个输出以概率的形式表示。 或者 def my_softmax(z):ez np.exp(z) sm ez/np.sum(ez)return(sm) 1 损失函数Loss Softmax 相关的损失函数&#xff0c;即交叉熵损失&#xff1a; 2 成本函数Cos…

Vben Admin 自学记录 —— 路由跳转的基本使用及练习(持续更新中...)

路由 项目路由配置存放于 src/router/routes 下面。 src/router/routes/modules用于存放路由模块&#xff0c;在该目录下的文件会自动注册。 路由相关使用及概念 练习 —— 在之前table基础上&#xff0c;添加新增功能&#xff0c;点击新增按钮&#xff0c;跳转页面&#xf…

电脑中病毒了怎么修复、怎么办,计算机windows系统如何预防faust勒索病毒

随着科技技术的不断发展&#xff0c;计算机已经成为现代人工作和生活中的必备工具之一&#xff0c;同时衍生出的各种计算机病毒也越来越多。各种勒索家族的加密病毒程序不断升级&#xff0c;给我们的工作和生活带来了极大困扰&#xff0c;特别是最近爆发的一种新型计算机病毒—…

如何优化 yolov8 模型,压缩模型大小,部署到边缘设备上

在CV领域&#xff0c;YOLO系列目标检测模型是一种非常流行的深度学习网络模型。yolov8是23年1月10号开源的最新版本。虽然YOLOv8已经在精度和速度方面取得了显著的改进&#xff0c;但我们仍然可以从轻量化角度等很多方面来进一步优化该模型。 模型压缩&#xff1a;使用轻量化的…

华为EC6108V9A_RK3128_安卓4.4.4_卡刷固件包-内有教程-当贝纯净桌面

华为EC6108V9A_RK3128_安卓4.4.4_卡刷固件包-内有教程-当贝纯净桌面 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&a…

不用花一分钱!!!获得一个自己的网页版chatGPT

不用花一分钱&#xff01;&#xff01;&#xff01;获得一个自己的网页版chatGPT 当然还是需要一个chatGPT账号的&#xff0c;不会注册的同学可以看一下这篇文章 chatGPT到底要怎么注册 那就先让我们看一下效果吧 chatgpt-web介绍 github项目地址 https://github.com/Chanzha…

【源码解析】实现异步功能的注解 @Async 的源码解析

使用方式 启动类上添加注解EnableAsync()在方法或者类上添加Async 源码解析 初始化配置 EnableAsync注入了AsyncConfigurationSelector Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Import(AsyncConfigurationSelector.class) public interf…

【郭东白架构课 模块二:创造价值】23|节点四:架构规划之统一语义

你好&#xff0c;我是郭东白。从这节课开始&#xff0c;我们就进入到架构活动的第四个环节——架构规划。这个环节比较复杂&#xff0c;可以分为四个部分&#xff1a;统一语义、需求确认、边界划分和规划确认。这节课我们先来讲统一语义。 架构师的工作日常就是跟不同的角色沟…

Mysql索引(4):索引语法

1 创建索引 CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (index_col_name,... ) ; 2 查看索引 SHOW INDEX FROM table_name; 3 删除索引 DROP INDEX index_name ON table_name; 4 案例演示 先来创建一张表 tb_user&#xff0c;并且查询测试数据。 creat…

从零开始学习Linux运维,成为IT领域翘楚(九)

文章目录 &#x1f525;Linux系统服务&#x1f525;Linux系统定时任务 &#x1f525;Linux系统服务 Service命令 服务(service) 本质就是进程&#xff0c;但是是运行在后台的&#xff0c;通常都会监听某个端口&#xff0c;等待其它程序的请求&#xff0c;比如(mysql , sshd 防…

Vue加SpringBoot实现项目前后端分离

首先需要搭建一个Vue的脚手架项目&#xff08;已经放在gitee里面了&#xff0c;下面是gitee网址&#xff0c;可以直接拉&#xff09; 那么接下来就是实现前后端分离的步骤 首先我们需要有一个登录页面 登录的点击事件利用axios提交到后台去&#xff0c;代码放在后面&#xff08…