SCI一区TOP|电鳗觅食优化算法(EEFO)原理及实现【免费获取Matlab代码】

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2024年,W Zhao受到自然界中电鳗群体觅食行为启发,提出了电鳗觅食优化算法(Electric Eel Foraging Optimization, EEFO)。

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

2.算法原理

2.1算法思想

EEFO灵感来自于自然界中电鳗群体觅食行为,其对交互行为、休息行为、狩猎行为和迁移行为四种关键觅食行为进行数学建模。

在这里插入图片描述

2.2算法过程

交互行为

在EEFO中,每条电鳗都是一个候选解,每一步得到的最佳候选解被认为是目标猎物。这种相互作用表明,每条鳗鱼都利用鳗鱼的位置信息与其他个体进行合作互动。电鳗可以通过使用种群中所有个体的位置信息,与从种群中随机选择的任何鳗鱼进行互动。
{ { v i ( t + 1 ) = x j ( t ) + C × ( x ˉ ( t ) − x i ( t ) ) p 1 > 0.5 v i ( t + 1 ) = x j ( t ) + C × ( x r ( t ) − x i ( t ) ) p 1 ⩽ 0.5 f i t ( x j ( t ) ) < f i t ( x i ( t ) ) { v i ( t + 1 ) = x i ( t ) + C × ( x ˉ ( t ) − x j ( t ) ) p 2 > 0.5 v i ( t + 1 ) = x i ( t ) + C × ( x r ( t ) − x j ( t ) ) p 2 ⩽ 0.5 f i t ( x j ( t ) ) ⩾ f i t ( x i ( t ) ) (1) \begin{cases} \begin{cases} v_i(t + 1) = x_j(t)+C\times(\bar{x}(t)-x_i(t)) p_1 > 0.5\\ v_i(t + 1) = x_j(t)+C\times(x_r(t)-x_i(t)) p_1 \leqslant 0.5\end{cases} fit\big(x_j(t)\big) < fit(x_i(t)\big)\\ \\ \begin{cases} v_i(t + 1) = x_i(t)+C\times(\bar{x}(t)-x_j(t)) p_2 > 0.5\\ v_i(t + 1) = x_i(t)+C\times(x_r(t)-x_j(t)) p_2 \leqslant 0.5\end{cases} fit\big(x_j(t)\big) \geqslant fit(x_i(t))\end{cases}\tag{1} {vi(t+1)=xj(t)+C×(xˉ(t)xi(t))p1>0.5vi(t+1)=xj(t)+C×(xr(t)xi(t))p10.5fit(xj(t))<fit(xi(t)){vi(t+1)=xi(t)+C×(xˉ(t)xj(t))p2>0.5vi(t+1)=xi(t)+C×(xr(t)xj(t))p20.5fit(xj(t))fit(xi(t))(1)
其中,平均位置和随机个体表述为:
x ‾ ( t ) = 1 n ∑ i = 1 n x i ( t ) x r = L o w + r × ( U p − L o w ) (2) \overline{x}(t)=\frac1n\sum_{i=1}^nx_i(t)\\x_r=Low+r\times(Up-Low)\tag{2} x(t)=n1i=1nxi(t)xr=Low+r×(UpLow)(2)

休息行为

为了提高搜索效率,将鳗鱼位置向量的任意一维投影到搜索空间的主对角线上,在该区域建立一个休息区域。为了确定鳗鱼的休息区域,搜索空间和鳗鱼的位置都归一化为0-1的范围。鳗鱼位置的一个随机选择的维度被投射到归一化搜索空间的主对角线上。投影位置被认为是鳗鱼休息区域的中心。
{ X ∣ X − Z ( t ) ∣ ⩽ α 0 × ∣ Z ( t ) − x p r e y ( t ) ∣ } α 0 = 2 ⋅ ( e − e t T ) (3) \begin{aligned}&\left\{X|X-Z(t)|\leqslant\alpha_{0}\times\left|Z(t)-x_{prey}(t)\right|\right\}\\&\alpha_{0}=2\cdot\left(e-e^{\frac{t}{T}}\right)\end{aligned}\tag{3} {XXZ(t)α0×Z(t)xprey(t)}α0=2(eeTt)(3)

在这里插入图片描述

Z ( t ) = L o w + z ( t ) × ( U p − L o w ) z { t = x r a n d { n r a n d { d { t − L o w r a n d { d U p r a n d { d − L o w r a n d { d (4) Z(t)=Low+z(t)\times(Up-Low)\\z\{t=\frac{x_{rand\{n}^{rand\{d}\{t-Low^{rand\{d}}{Up^{rand\{d}-Low^{rand\{d}}\tag{4} Z(t)=Low+z(t)×(UpLow)z{t=Uprand{dLowrand{dxrand{nrand{d{tLowrand{d(4)
在进行休息行为之前,在其休息区域内获得鳗鱼的休息位置:
R i ( t + 1 ) = Z ( t ) + α × ∣ Z ( t ) − x p r e y ( t ) ∣ α = α 0 × sin ⁡ ( 2 π r 2 ) (5) \begin{aligned}&R_{i}(t+1)=Z(t)+\alpha\times\left|Z(t)-x_{prey}(t)\right|\\&\alpha=\alpha_{0}\times\sin(2\pi r_{2})\end{aligned}\tag{5} Ri(t+1)=Z(t)+α×Z(t)xprey(t)α=α0×sin(2πr2)(5)
其中α为静息区的尺度,r2为(0,1)内的随机数。尺度α使静息区的范围随着迭代的进行而减小,休息行为:
ν i ( t + 1 ) = R i ( t + 1 ) + n 2 × ( R i ( t + 1 ) r o u n d ( r a n d ) × x i ( t ) ) n 2 ∼ N ( 0 , 1 ) (6) \begin{aligned}&\nu_{i}(t+1)= R_{i}(t+1)+n_{2}\times(R_{i}(t+1)round(rand)\times x_{i}(t))\\&n_{2}\sim N(0,1)\end{aligned}\tag{6} νi(t+1)=Ri(t+1)+n2×(Ri(t+1)round(rand)×xi(t))n2N(0,1)(6)

狩猎行为
当鳗鱼发现猎物时,它们通过低电器官放电不断地与同伴交流和合作:
{ X ∣ X − x p r e y ( t ) ∣ ⩽ β 0 × ∣ x ‾ ( t ) − x p e r y ( t ) ∣ } β 0 = 2 × ( e − e t T ) (7) \begin{Bmatrix}X\big|X-x_{prey}(t)\big|\leqslant\beta_0\times\big|\overline{x}(t)-x_{pery}(t)\big|\end{Bmatrix}\\\beta_0=2\times\begin{pmatrix}e-e^{\frac{t}{T}}\end{pmatrix}\tag{7} {X Xxprey(t) β0× x(t)xpery(t) }β0=2×(eeTt)(7)
其中,β0为狩猎区域的初始尺度。猎物位置为:
H p r e y ( t + 1 ) = x p r e y ( t ) + β × ∣ x ‾ ( t ) − x p e r y ( t ) ∣ β = β 0 × sin ⁡ ( 2 π r 3 ) (8) \begin{aligned}&H_{prey}(t+1) = x_{prey}(t)+\beta\times\left|\overline{x}(t)-x_{pery}(t)\right|\\&\beta=\beta_{0}\times\sin(2\pi r_{3})\end{aligned}\tag{8} Hprey(t+1)=xprey(t)+β×x(t)xpery(t)β=β0×sin(2πr3)(8)
其中,β为狩猎区域的尺度,r3为(0,1)范围内的随机数。尺度β使狩猎区域的范围随着时间的推移而变小。鳗鱼在狩猎过程中所表现出的卷曲行为:
v i ( t + 1 ) = H p r e y ( t + 1 ) + η × ( H p r e y ( t + 1 ) − r o u n d ( r a n d ) × x i ( t ) ) (9) \begin{matrix}v_i(t+1)&=&H_{prey}(t+1)+\eta\times(H_{prey}(t+1)-round(rand)\times x_i(t))\end{matrix}\tag{9} vi(t+1)=Hprey(t+1)+η×(Hprey(t+1)round(rand)×xi(t))(9)
η表示卷曲因子:
η = e r 4 ( 1 − t ) T × cos ⁡ ( 2 π r 4 ) (10) \eta=e^{\frac{r_4(1-t)}{T}}\times\cos(2\pi r_4)\tag{10} η=eTr4(1t)×cos(2πr4)(10)

在这里插入图片描述

迁移行为

当鳗鱼发现猎物时,它们往往会从休息区迁移到捕猎区,迁徙行为:
ν i ( t + 1 ) = − r 5 × R i ( t + 1 ) + r 6 × H r ( t + 1 ) − L × ( H r ( t + 1 ) − x i ( t ) ) H r ( t + 1 ) = x p r e y ( t ) + β × ∣ x ˉ ( t ) − x p r e y ( t ) ∣ (11) \begin{aligned}&\nu_{i}(t + 1) = - r_{5}\times R_{i}(t+1) + r_{6}\times H_{r}(t+1)-L\times(H_{r}(t+1) - x_{i}(t))\\&H_{r}(t+1)=x_{prey}(t)+\beta\times\left|\bar{x}(t)-x_{prey}(t)\right|\end{aligned}\tag{11} νi(t+1)=r5×Ri(t+1)+r6×Hr(t+1)L×(Hr(t+1)xi(t))Hr(t+1)=xprey(t)+β×xˉ(t)xprey(t)(11)
鳗鱼可以通过低放电感知猎物的位置,因此它可以随时调整自己的位置。如果鳗鱼在觅食过程中感觉到猎物的靠近,它们就会移动到候选位置;否则,鳗鱼将停留在当前位置。
x i ( t + 1 ) = { x i ( t ) f i t ( x i ( t ) ) ⩽ f i t ( ν i ( t + 1 ) ) v i ( t + 1 ) f i t ( x i ( t ) ) > f i t ( ν i ( t + 1 ) ) (12) x_i(t+1)=\left\{\begin{array}{ccc}x_i(t)&&fit(x_i(t) )\leqslant fit(\nu_i(t+1) )\\v_i(\text{t} + 1)&&fit(x_i(t) )>fit(\nu_i(t+1) )\end{array}\right.\tag{12} xi(t+1)={xi(t)vi(t+1)fit(xi(t))fit(νi(t+1))fit(xi(t))>fit(νi(t+1))(12)

在这里插入图片描述

流程图

在这里插入图片描述

伪代码

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

3.结果展示

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b55c18d69e474069b1ce88398a80897a.png

4.参考文献

[1] Zhao W, Wang L, Zhang Z, et al. Electric eel foraging optimization: A new bio-inspired optimizer for engineering applications[J]. Expert Systems with Applications, 2024, 238: 122200.

5.代码获取

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

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

相关文章

通俗易懂四元数

基本概念 定义&#xff1a; 四元数是由实部和虚部组成的扩展复数。一个四元数可以表示为 q a b i c j d k q a bi cj dk qabicjdk&#xff0c;其中 w w w 是实部&#xff0c; ( x i , y j , z k ) (xi, yj, zk) (xi,yj,zk) 是虚部。他的共轭值定义为&#xff1a; …

泛微E9技术网站

泛微E9技术网站: 1、丸子小工具 - 丸子张丨OnesZha 2、官方文档网站首页&#xff1a; 泛微在线文档 (e-cloudstore.com) 2.1、E9表单建模前端接口API 泛微在线文档 (e-cloudstore.com) 2.2、E9流程表单前端接口API 泛微在线文档 (e-cloudstore.com)

SSRF漏洞原理与案例分析

一、什么是SSRF漏洞 SSRF (Server-Side Request Forgery&#xff1a;服务器端请求伪造)是一种由攻击者构造请求&#xff0c;由服务端发起请求的安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的&#xff0c;所以服务端能请…

Marin说PCB之如何在CST仿真软件中添加三端子的电容模型?--02

小编我在上期文章的结尾给大家留下一个小问题就是&#xff1a;在三端子电容创建模型中间的部分我有说了一句就是&#xff1a;&#xff08;其中有一个creat reference pin 设置我们也默认不勾选&#xff09;&#xff0c;这个勾选不勾选有啥区别呢&#xff1f;这期文章就来给大家…

提高LabVIEW程序可靠性

​提高LabVIEW程序的可靠性是确保系统稳定运行、减少故障和维护成本的重要措施。以下从多个方面详细分析如何提高LabVIEW程序的可靠性 1. 选择合适的架构 1.1 状态机架构 适用情况&#xff1a; 多状态、多步骤操作。 具体例子&#xff1a;在一个自动测试系统中&#xff0c;…

【Samba端口映射文件共享】

Samba端口映射文件共享 参考链接&#xff1a;windows和linux之间的共享目录,实现Windows和Linux之间的文件共享 首先需要安装samba&#xff0c;Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB(Server Messages Block&#xff…

微信小程序canvas2d频繁重绘时图片闪烁问题

问题&#xff1a;使用了拖动事件&#xff0c;需要频繁重绘canvas&#xff0c;导致图片闪烁。 原因&#xff1a;官方示例中&#xff0c;canvas2d需要手动加载图片&#xff0c;再在图片的onLoad函数绘制图片&#xff0c;延迟太高&#xff0c;导致刷新时图片闪烁。 解决&#xff1…

[汇总] Docker容器详解 Macvlan 创建不同容器独立跑仿真(持续更新中)

一、概念介绍 1.1 什么是macvlan macvlan是一种网卡虚拟化技术&#xff0c;能够将一张网卡&#xff08;Network Interface Card, NIC&#xff09;虚拟出多张网卡&#xff0c;这意味着每个虚拟网卡都能拥有独立的MAC地址和IP地址&#xff0c;从而在系统层面表现为完全独立的网络…

mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段

使用mybatisplus自带的字段填充策略注入值的时候&#xff0c;发现并没有扫描到我的指定字段。 1. 初始代码 Component Slf4j public class MyMetaObjectHandler implements MetaObjectHandler {private static final String createByFiled "createBy";private stati…

Python数据可视化---pygal模块(基础篇)

pygal模块 安装pygal模块 pygal模块的安装非常简单&#xff0c;只需输入一行pip命令即可 pip install pygal安装完成&#xff1a; pygal模块介绍 pygal官网地址 pygal是Python的第三方库&#xff0c;他的主要功能就是数据可视化&#xff0c;即将数字转化成图表的形式来呈…

情绪管理篇:让七情自然流露,不过分压抑也不掺杂极端的想法即可来去自如

情绪管理篇&#xff1a; 人有七情&#xff0c;本属常理&#xff0c;该哭的时候哭、该笑的时候笑、该怒的时候怒、该忧的时候忧 学习圣贤之学&#xff0c;并非让我们像木头人一样&#xff0c;枯木死灰&#xff0c;而要让自己不要被七情所缠缚、被七情所乱心&#xff0c;我们的喜…

CUDA-Programming-Guide-in-Chinese

CUDA-Programming-Guide-in-Chinese/第1章CUDA简介 at main HeKun-NVIDIA/CUDA-Programming-Guide-in-Chinese GitHub

ONLYOFFICE 文档 8.1 现已发布:功能全面的 PDF 编辑器、幻灯片版式等等

0、前言 在技术的快速发展和工作方式的持续演进下&#xff0c;现代办公软件正变得越来越强大和多样化。ONLYOFFICE&#xff0c;作为市场上备受瞩目的一体化办公解决方案&#xff0c;以其全面的文档编辑、表格处理和演示制作功能&#xff0c;满足了用户在不同办公场景下的需求。…

25、架构-微服务的驱动力

微服务架构的驱动力可以从多方面探讨&#xff0c;包括灵活性、独立部署、技术异构性、团队效率和系统弹性等。 灵活性和可维护性 灵活性是微服务架构的一个主要优势。通过将单体应用拆分成多个独立的微服务&#xff0c;开发团队可以更容易地管理、维护和更新各个服务。每个微…

前端 响应式设计的概念

响应式设计&#xff08;Responsive Design&#xff09;是一种网页设计和开发的方法论&#xff0c;旨在使网站能够适应各种不同的设备和屏幕尺寸&#xff0c;包括桌面电脑、平板电脑和手机等移动设备。其核心理念是一个网站能够根据访问者的设备特性自动调整布局、内容和功能&am…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex

CMSIS 2.0接口中的Mutex&#xff08;互斥锁&#xff09;是用于在多线程环境中保护共享资源的访问机制。Mutex&#xff08;互斥锁&#xff09;是一种特殊的信号量&#xff0c;用于确保同一时间只有一个线程可以访问特定的共享资源。 在嵌入式系统或多线程应用中&#xff0c;当多…

Mysql索引底层数据结构——Java全栈知识(28)

Mysql索引底层数据结构 1、什么是索引 索引在项目中还是比较常见的&#xff0c;它是帮助MySQL高效获取数据的数据结构&#xff0c;主要是用来提高数据检索的效率&#xff0c;降低数据库的IO成本&#xff0c;同时通过索引列对数据进行排序&#xff0c;降低数据排序的成本&…

还看不懂 DETR 的匈牙利损失函数?4个公式教你理解

看到 DETR 的损失函数的时候&#xff0c;你是否有下面的疑问&#xff1a; 公式中的 σ ∈ S N \sigma \in \mathfrak{S}_N σ∈SN​ 是什么意思?公式中的 y ^ σ ( i ) \hat{y}_{\sigma(i)} y^​σ(i)​ 的下标 σ ( i ) \sigma(i) σ(i) 又有什么含义&#xff1f;DETR 的…

arduino按钮

Arduino - Button Arduino - 按钮 参考&#xff1a; ezButton-按钮库从按钮开关看上拉pull-up电阻、下拉电阻按键的防抖动处理 The button is also called pushbutton, tactile button or momentary switch. It is a basic component and widely used in many Arduino projec…

【gif制作】Win下视频生成GIF;工具GifCam单色保存,灰度保存,调速,编辑删除帧添加文本

下载地址 https://blog.bahraniapps.com/gifcam/#download https://gifcam.en.softonic.com/ 界面功能 GifCam 简洁、小巧的 gif 录制软件。GifCam就像照相机一样位于所有窗口的顶部&#xff0c;可以移动它并调整其大小录屏所需的区域。 如图&#xff1a;空闲状态下窗口内…