CEC2014:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2014(提供MATLAB代码

news2025/4/10 13:02:21

一、鱼鹰优化算法简介

鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovský于2023年提出,其模拟鱼鹰的捕食行为。
在这里插入图片描述

鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米,体重1000-1750克。头部白色,头顶具有黑褐色的纵纹,枕部的羽毛稍微呈披针形延长,形成一个短的羽冠。头的侧面有一条宽阔的黑带,从前额的基部经过眼睛到后颈部,并与后颈的黑色融为一体。上体为暗褐色,略微具有紫色的光泽。下体为白色,胸部的暗色纵纹和飞羽,以及尾羽上相间排列的横斑均极为醒目。虹膜淡黄色或橙黄色,眼周裸露皮肤铅黄绿色,嘴黑色,蜡膜铅蓝色,脚和趾黄色,爪黑色。

鱼鹰栖息于湖泊、河流、海岸或开阔地,尤其喜欢在山地森林中的河谷或有树木的水域地带活动。常见在江河、湖沼及海滨一带飞翔,一见水中有饵,就直下水面,用脚掠之而去。趾具锐爪,趾底遍生细刺,外趾复能由前向后反转,这些都很适于捕鱼。在天气晴朗之日,盘旋于水面上空,定点后俯冲而下,再将捕获的鱼带至岩石、电杆、树上等地方享用。巢常营于海岸或岛屿的岩礁上。主要以鱼为食,有时也捕食蛙、蜥蜴、小型鸟类等其他小型陆栖动物。除了南极和北极,亚洲、北美洲等各大洲均有分布。

1.1鱼鹰优化算法原理

鱼鹰优化算法包含两个阶段:第一阶段为鱼鹰识别鱼的位置并捕鱼(全局勘探), 第二阶段为将鱼带到合适的位置( 局部开采),其详细设计如下:

1.1.1 种群初始化

采用下式随机初始化鱼鹰种群:
X = [ X 1 ⋮ X i ⋮ X N ] N × m = [ x 1 , 1 ⋯ x 1 , j ⋯ x 1 , m ⋮ ⋱ ⋮ ⋱ ⋮ x i , 1 ⋯ x i , j ⋯ x i , m ⋮ ⋱ ⋮ ⋱ ⋮ x N , 1 ⋯ x N , j ⋯ x N , m ] N × m , x i , j = l b j + r i , j ⋅ ( u b j − l b j ) , i = 1 , 2 , … , N , j = 1 , 2 , … , m , \begin{array}{c} X=\left[\begin{array}{c} X_{1} \\ \vdots \\ X_{i} \\ \vdots \\ X_{N} \end{array}\right]_{N \times m}=\left[\begin{array}{ccccc} x_{1,1} & \cdots & x_{1, j} & \cdots & x_{1, m} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{i, 1} & \cdots & x_{i, j} & \cdots & x_{i, m} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ x_{N, 1} & \cdots & x_{N, j} & \cdots & x_{N, m} \end{array}\right]_{N \times m}, \\ x_{i, j}=l b_{j}+r_{i, j} \cdot\left(u b_{j}-l b_{j}\right), i=1,2, \ldots, N, j=1,2, \ldots, m, \end{array} X= X1XiXN N×m= x1,1xi,1xN,1x1,jxi,jxN,jx1,mxi,mxN,m N×m,xi,j=lbj+ri,j(ubjlbj),i=1,2,,N,j=1,2,,m,
其中,N为鱼鹰的数量,m为问题的维度,初始化位置后依据优化问题计算适应度值:
F = [ F 1 ⋮ F i ⋮ F N ] N × 1 = [ F ( X 1 ) ⋮ F ( X i ) ⋮ F ( X N ) ] N × 1 F=\left[\begin{array}{c} F_{1} \\ \vdots \\ F_{i} \\ \vdots \\ F_{N} \end{array}\right]_{N \times 1}=\left[\begin{array}{c} F\left(X_{1}\right) \\ \vdots \\ F\left(X_{i}\right) \\ \vdots \\ F\left(X_{N}\right) \end{array}\right]_{N \times 1} F= F1FiFN N×1= F(X1)F(Xi)F(XN) N×1

1.1.2 全局勘探(第一阶段:位置识别和捕鱼)

鱼鹰是强大的猎人,由于其强大的视力,能够探测到水下鱼类的位置。在确定鱼的位置后,他们攻击它并通过潜入水下捕猎鱼。OOA中种群更新的第一阶段是基于对鱼鹰这种自然行为的模拟而建模的。对鱼鹰攻击鱼类进行建模会导致鱼鹰在搜索空间中的位置发生显著变化,这增加了OOA在识别最优区域和逃离局部最优方面的探索能力。在OOA设计中,对于每只鱼鹰,搜索空间中具有较好目标函数值的其他鱼鹰的位置被视为水下鱼类。每只鱼鹰的位置使用下式指定。
F P i = { X k ∣ k ∈ { 1 , 2 , … , N } ∧ F k < F i } ∪ { X best  } \boldsymbol{F P _ { i }}=\left\{X_{k} \mid \boldsymbol{k} \in\{1,2, \ldots, N\} \wedge \boldsymbol{F}_{k}<\boldsymbol{F}_{i}\right\} \cup\left\{\boldsymbol{X}_{\text {best }}\right\} FPi={Xkk{1,2,,N}Fk<Fi}{Xbest }
其中, F P i F P _ { i } FPi为第i只鱼鹰的位置集合, X best  {X}_{\text {best }} Xbest 为最佳鱼鹰的位置。
鱼鹰随机检测其中一条鱼的位置并攻击它。基于鱼鹰向鱼的运动模拟,使用下式计算相应鱼鹰的新位置。这个新位置,如果它的目标函数的值更好,则替换鱼鹰的先前位置。
x i , j P 1 = x i , j + r i , j ⋅ ( S F i , j − I i , j ⋅ x i , j ) , 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 . X i = { X i P 1 , F i P 1 < F i ; X i ,  else  , \begin{array}{l} 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), \\ x_{i, j}^{P 1}=\left\{\begin{array}{ll} 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. \\ X_{i}=\left\{\begin{array}{l} X_{i}^{P 1}, F_{i}^{P 1}<F_{i} ; \\ X_{i}, \text { else }, \end{array}\right. \\ \end{array} xi,jP1=xi,j+ri,j(SFi,jIi,jxi,j),xi,jP1= xi,jP1,lbj,ubj,lbjxi,jP1ubj;xi,jP1<lbj;xi,jP1>ubj.Xi={XiP1,FiP1<Fi;Xi, else ,
其中, x i , j P 1 x_{i, j}^{P 1} xi,jP1为第i只鱼鹰在第一阶段时,其第j维的新位置, F i , j P 1 F_{i, j}^{P 1} Fi,jP1是其对应的适应度值。 S F i , j S F_{i, j} SFi,j为[0,1]之间的随机数, I i , j I_{i, j} Ii,j为集合{1,2}中的随机数。

1.1.3 局部开采(第二阶段:将鱼带到合适的位置)

捕食鱼后,鱼鹰将其带到合适(对他来说安全)的位置,并在那里吃。OOA中更新种群的第二阶段是基于鱼鹰这种自然行为的模拟建模的。将鱼带到合适位置的建模导致鱼鹰在搜索空间中的位置发生微小变化,从而导致 OOA 在本地搜索中的开发能力增加,并在发现的解决方案附近收敛到更好的解决方案。在OOA的设计中,为了模拟鱼鹰的这种自然行为,首先,针对种群的每个成员,使用下式计算一个新的随机位置作为“适合吃鱼的位置”。然后,如果目标函数的值在这个新位置得到改善,则替换相应鱼鹰的先前位置。
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 , 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 , X i = { X i P 2 , F i P 2 < F i ; X i ,  else  , \begin{array}{c} 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, \\ 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. \\ X_{i}=\left\{\begin{array}{l} X_{i}^{P 2}, F_{i}^{P 2}<F_{i} ; \\ X_{i}, \text { else }, \end{array}\right. \end{array} xi,jP2=xi,j+tlbj+r(ubjlbj),i=1,2,,N,j=1,2,,m,t=1,2,,T,xi,jP2= xi,jP2,lbjxi,jP2ubj;lbj,xi,jP2<lbjubj,xi,jP2>ubj,Xi={XiP2,FiP2<Fi;Xi, else ,
其中, x i , j P 2 x_{i, j}^{P 2} xi,jP2为第i只鱼鹰在第二阶段时,其第j维的新位置, F i , j P 2 F_{i, j}^{P 2} Fi,jP2是其对应的适应度值。 r r r为[0,1]之间的随机数, t t t T T T分别为当前迭代次数和最大迭代次数。

1.2算法描述

在这里插入图片描述

1.3算法流程

在这里插入图片描述

1.4参考文献

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

二、CEC2014

CEC2014测试集共有30个单目标测试函数,每个测试函数可选择维度分别为10D、30D、50D、100D。
在这里插入图片描述

三、求解结果

完整代码添加博客下方博主微信:djpcNLP123

将鱼鹰优化算法OOA法用于求解CEC2014,测试函数维度为30(可根据自己需求更改),种群大小为100,最大迭代次数为50,部分实验结果如下:

close all
clear 
clc
SearchAgents_no=100; % 种群大小
Function_name=1; %测试函数1-30
Max_iteration=50; % 最大迭代次数
lb=-100;%变量下界
ub=100;%变量上界
dim=30;%维度 10/30/50/100
[fMin,bestX,curve]=OOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  
%Draw objective space
semilogy(curve,'Color','g','linewidth',2.5)
legend('OOA')
title(['cec2014-F' num2str(Function_name)])
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
display(['The best solution obtained is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton is : ', num2str(fMin)]);


部分结果如下:

F2

在这里插入图片描述

F8

在这里插入图片描述

F16

在这里插入图片描述

F22

在这里插入图片描述

四、参考代码

完整代码添加博客下方博主微信:djpcNLP123

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

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

相关文章

Spark 任务调度机制

1.Spark任务提交流程 Spark YARN-Cluster模式下的任务提交流程&#xff0c;如下图所示&#xff1a; 图YARN-Cluster任务提交流程 下面的时序图清晰地说明了一个Spark应用程序从提交到运行的完整流程&#xff1a; 图Spark任务提交时序图 提交一个Spark应用程序&#xff0c;首…

mysql数据库之存储过程

一、存储过程简介。 存储过程是事先经过编译并存储在数据库中的一段sql语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是也有好处的。 存储过程思想上很简单&…

Mysql常见面试题总结

1、什么是存储引擎 存储引擎指定了表的类型&#xff0c;即如何存储和索引数据&#xff0c;是否支持事务&#xff0c;同时存储引擎也决定了表在计算机中的存储方式。 2、查看数据库支持哪些存储引擎使用什么命令&#xff1f; -- 查看数据库支持的存储引擎 show engines; 或者 …

百趣代谢组学分享,关于儿童Graves病相关的新环境物质的鉴定

代谢组学文章标题&#xff1a;Identification of Novel Environmental Substances Relevant to Pediatric Graves’ Disease 发表期刊&#xff1a;Frontiers in endocrinology 影响因子&#xff1a;6.055 作者单位&#xff1a;苏州大学附属儿童医院 百趣提供服务&#xf…

外贸建站多少钱才能达到预期效果?

外贸建站多少钱才能达到预期效果&#xff1f;这是每个外贸企业都会问的问题。作为一个做外贸建站多年的人&#xff0c;我有一些个人的操盘感想。 首先&#xff0c;我认为外贸建站的投资是非常必要的。 因为在现代社会&#xff0c;网站已经成为外贸企业开展业务的必要工具之一…

3种方法删除7-Zip压缩包的密码

7-Zip压缩软件是一款完全免费且开源的软件&#xff0c;不仅能压缩和解压7-Zip压缩包&#xff0c;还能给压缩包设置打开密码。 有些小伙伴可能会遇到这样的问题&#xff0c;7-Zip压缩包设置密码后&#xff0c;过了一段时间不需要密码保护了&#xff0c;或者一不小心忘记了密码&…

后端快速上手前端三剑客 HtmlCSSJavaScript

文章目录前言HTML1.基础标签2.多媒体标签&#xff1a;3.表格&列表&布局4.表单CSS1.简介2.导入方式3.选择器JavaScript1.简介2.引入方式3.基本语法4.对象(1) 基本对象(2) BOM对象(3) DOM对象5.事件前言 结构&#xff1a;HTML 表现&#xff1a;CSS 行为&#xff1a;Java…

D. Linguistics(思维 + 贪心)

Problem - D - Codeforces Alina发现了一种奇怪的语言&#xff0c;它只有4个单词:a, B, AB, BA。事实也证明&#xff0c;在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子&#xff0c;她很好奇:有没有可能它恰好由a个单词a, b个单…

EasyExcel You can try specifying the ‘excelType‘ yourself 异常排查与处理

目录 问题发现 报错信息 问题排查 1、确定异常 2、查询easyexcel源码读取文件源码 3、查看业务代码 优化方案 1、将路径获取文件流的方式换为httpclient获取 2、dug测试修改代码 总结 问题发现 在测试环境测试导入订单&#xff0c;发现订单导入提示数据导入异常。 …

Python dict字典全部操作方法

文章目录一. 介绍二. 字典的创建1. 手动创建2. 使用内置函数dict()创建3. 使用dict.fromkeys()方法创建三. 字典元素的读取1. 下标方式读取Value2. dict.get()读取Value3. keys()方法返回“键”4. values()方法返回“值”5. items()方法返回“键-值”对四. 字典元素的添加与修改…

【20230227】回溯算法小结

回溯法又叫回溯搜索法&#xff0c;是搜索的一种方式。回溯法本质是穷举所有可能。如果想让回溯法高效一些&#xff0c;可以加一些剪枝操作。回溯算法解决的经典问题&#xff1a;组合问题切割问题子集问题排列问题棋盘问题如何去理解回溯法&#xff1f;回溯法解决的问题都可以抽…

hadoop调优

hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte&#xff0c;如果一台服务器128G&#xff0c;能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…

Linux--多线程(3)

目录1. POSIX信号量1.1 概念2. 基于环形队列的生产消费者模型2.1 环形队列的基本原理2.2 基本实现思想3. 多生产多消费1. POSIX信号量 1.1 概念 信号量本质是一个计数器&#xff0c;申请了信号量以后&#xff0c;可以达到预定临界资源的效果。 POSIX信号量和SystemV信号量相同…

【自动包装线标签打印翻转问题沟通】

最近纺丝自动包装线的标签打印机自动打印标签&#xff0c;是翻转状态。) 但是这个打印机它不是平放的&#xff0c;它是通过悬臂安装在半空的中的&#xff0c;是翻转的&#xff0c; 它的标签一个打在侧面&#xff0c;一个打在正前方&#xff0c;打印出来的样子是这样的。 是反…

全国媒体邀约怎么做?邀请媒体有哪些注意事项呢?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好好多企业或者机构都在参加外地的展览展会&#xff0c;活动会议&#xff0c;或者由于多种方面的考虑&#xff0c;会在公司总部以外的地方去做活动和发布会&#xff0c;在一个相对陌生的地方&#xff0c;不论是活动准备&#…

WebRTC → 多人通讯架构浅析

1、一对一通信模型一对一通信中&#xff0c;WebRTC会先尝试两个终端之间是否可以通过P2P直接进行通信&#xff0c;无法通信时会通过STUN/TURN服务器进行中转&#xff1b;其中STUN/TURN服务器的作用在不能直连时是中继服务器&#xff0c;通过该服务器进行端到端之间的数据中转&a…

数据挖掘多模块接口(二分类)python旗舰版

数据挖掘任务一般分为四大步骤&#xff1a;1、数据预处理2、特征选择3、模型训练与测试4、模型评估本文为四大步骤提供接口&#xff0c;使得能够快速进行一个数据挖掘多种任务中&#xff0c;常见的二分类任务。0. 导包0.1 忽略警告信息&#xff1a;import warnings warnings.fi…

【Java学习笔记】2.Java 开发环境配置

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境。 window系统安装java 下载JDK 首先我们需要下载 java 开发工具包 JDK&#xff0c;下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/&#xff0c;在下载页面中根据自己的系统选…

企业寄件现代化管理教程

现代化企业为了跟上时代发展的步伐&#xff0c;在不断完善着管理制度&#xff0c;其中公司寄件管理&#xff0c;也是重要的一个模块。为了提高公司快递的寄件效率&#xff0c;以及节约寄件成本&#xff0c;实现快递寄件的规范化&#xff0c;越来越多的现代化企业&#xff0c;开…

ES linux 环境下安装问题集锦

1&#xff1a; 所有的环境配置安装完成后验证&#xff1a; curl -u elastic http://127.0.0.1:9400 输入密码&#xff1b;2&#xff1a;错误1&#xff1a;解决方法&#xff1a;配置连接的用户名与密码&#xff1b; 重启ES 错误2&#xff1a;[1]: max number of threads [2048] …