一种新颖的智能优化算法-蝠鲼优化算法(MRFO)

news2024/12/23 1:39:47

目录

一、MRFO数学模型

1.1  链式觅食

1.2 旋风式觅食 

1.3 翻筋斗式觅食

二、MRFO伪代码


   

       2019年提出一种新的仿生优化技术称为魔鬼鱼觅食优化算法,旨在提供一种替代优化 解决实际工程问题的方法。该算法的灵感是基于智能算法魔鬼鱼的行为。这项工作模拟了魔鬼鱼(蝠鲼)的三种独特的觅食策略,包括链状的觅食,旋风觅食,翻筋斗觅食。

       蝠鲼是奇特的生物,尽管它们看起来很可怕。它们是已知最大的海洋生物之一。蝠鲼从上到下都有一个扁平的身体和一对胸鳍,它们还有一对头叶,在它们巨大的末端嘴前面延伸。图 1显示了一条蝠鲼的结构。没有锋利的牙齿,蝠鲼以浮游生物为食,主要是水中的微观动物。觅食时,它们会使用喇叭状的头叶将水和猎物倒入嘴中。然后用改良的鳃耙从水中过滤猎物。蝠鲼可以分为两个不同的物种。一种是生活在印度洋和西、南太平洋的礁蝠鲼,宽可达5.5m。另一种则是遍布热带、亚热带和暖温带海洋的巨型蝠鲼,其宽度可达7m。它们已经存在了大约 500 万年。平均寿命为 20 年,但从未达到这个年龄,因为它们会被渔民猎杀。 

一、MRFO数学模型

1.1  链式觅食

        蝠鲼可以观察到浮游生物的位置并朝它游去。一个位置的浮游生物浓度越高,这个位置就越好。虽然目前尚不清楚最佳解决方案,但MRFO假设目前找到的最佳解决方案是具有高浓度的浮游生物蝠鲼想要靠近并吃掉。蝠鲼首尾相连,形成一条觅食链。除了第一个以外,其他个体不仅会走向食物,还会走向食物前面的个体。也就是说,在每次迭代中,每个个体都会根据目前找到的最佳解决方案及其前面的解决方案进行更新。这种链式觅食的数学模型表示如下:

        其中,x_{i}^{t}(d)是第 i个个体在时间 t在第d维的位置,r是 [0, 1] 范围内的随机向量,\alpha是权重系数,x_{best}^{d}(t)表示第t代最优个体在第d维上的位置,N表示个体数量。 下图描绘了这种在二维空间中的觅食行为。蝠鲼个体下一位置的移动方向与步长由当前最优解与前一个个体位置共同决定。

1.2 旋风式觅食 

       当一群蝠鲼认出深水中的一片浮游生物时,它们会形成一条长长的觅食链,并以螺旋状游向食物。对于蝠鲼群的旋风觅食策略来说,每条蝠鲼除了螺旋状地向食物移动外,还会向前方游动。也就是说,蝠鲼排成一列,形成螺旋状觅食。 下图说明了旋风在二维空间中的觅食行为。个体不仅跟随它前面的个体,而且只会沿着螺旋形路径向食物移动。 

        当\frac{t}{T}> rand,描述蝠鲼螺旋状运动的数学方程可以定义为:

式中,T为迭代总次数;r_{1}[0,1]上均匀分布的随机数。当\frac{t}{T}\leq rand,描述蝠鲼螺旋状运动的数学方程可以定义为:

 式中x_{rand}^{d}(t)表示第t代、第d维的随机位置。ub^{d}lb^{d}表示变量取值上、下界。

1.3 翻筋斗式觅食

       在这种行为中,蝠鲼个体当前最优解被视为一个支点。每个个体都倾向于围绕枢轴和翻筋斗来回游动到一个新的位置。因此,他们总是围绕迄今为止找到的最佳位置更新他们的位置。数学模型可以如下创建:

其中 S=2r_{2}r_{3}都是[0,1]上均匀分布的随机数。

二、MRFO伪代码

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

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

相关文章

轻量应用服务器性能如何?CPU带宽流量系统盘测评

轻量应用服务器性能如何?腾讯云轻量应用服务器是一种轻量级搭建小型网站和应用的服务器,相对于其他更高性能配置的服务器CVM,性价比更高。虽然其性能不如高性能云服务器CVM,但对于小型网站和应用来说,能够提供基本的计…

JDK1.8 lambda_函数式编程_stream流

一、 lambda表达式 jdk 1.8 引入了 lambda表达式 能够我们 编写代码时更加简洁,也为函数式编程提供了支持 lambda表达式 作用 简化匿名实现类的书写,实现接口抽象方法; (参数类型 参数名1,参数类型 参数名2,……参数类型 参数名n)->{ //方法体 } …

【工具】搜狗输入法常用配置(持续更新)

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 按键相关通用快捷键系统快捷键辅助输入快捷键 2️⃣ 其它自定义语句关闭自动更新 🛬 结论 🛫 问题 描述 作为输入法的常青树,重装系统后经常第一步就是装输入法,由于以下原因&#…

开发框架前后端分离的好处是什么

关于将前端和后端保持在一起或分开,存在广泛的意见分歧。唯一重要的是,这两个组件对于开发成熟的应用程序都是必需的。 考虑:紧密耦合的前端和后端 许多人认为后端和前端的分离是一个坏主意,这两个角色之间没有太大区别。 以下…

多旋翼无人机振动分析与减振方法

多旋翼无人机振动分析与减振方法 振动分析无人机减振设计机械减振数字滤波减振 振动分析 振动机制包括: 激励(振动源)系统响应 无人机振动机制: 激励 —— 动力系统(旋翼电机)系统 —— 机架响应 —— …

《产品思维》 要点

“一切以用户价值为依归”的价值观,落地下来就是从用户中来,到用户中去。 认知用户 用户画像 用户是一切产品的源头 用户不是理性人 我们的用户到底是谁、究 竟在哪里。这个“到底是谁”“究竟在哪里”。 用户生活工作的环境,是他们日常的…

【机器学习】机器故障的二元分类模型-Kaggle竞赛

竞赛介绍 数据集描述 本次竞赛的数据集(训练和测试)是从根据机器故障预测训练的深度学习模型生成的。特征分布与原始分布接近,但不完全相同。随意使用原始数据集作为本次竞赛的一部分,既可以探索差异,也可以了解在训…

[RockertMQ] Broker启动加载消息文件以及恢复数据源码 (三)

Broker的启动过程中, 在DefaultMessageStore实例化后, 会调用load方法将磁盘中的commitLog、ConsumeQueue、IndexFile文件的数据加载到内存中, 还有数据恢复的操作。 调用isTempFileExist方法判断上次broker是否是正常退出, 如果是正常退出不会保留abort文件, 异常退出则会。 …

【MySQL】关于自增id、雪花id还是uuid作为MySQL主键

在MySQL中设计表的时候,MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long型且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment。那么为什么不使用雪花id或者uuid呢?让我们来探讨分析一下这个问题的原因。 关于…

【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)

零基础带你进军人工智能领域的全流程技术体系和实战指南(机器学习基础知识) 前言专栏介绍专栏说明学习大纲前提条件面向读者学习目标核心内容机器学习的概念定义回顾人工智能机器学习概念国外知名学者对机器学习的定义中文翻译 机器学习发展历程机器学习…

Oracle JSON_ARRAYAGG()函数的排序失效问题

引入: 在实际操作中,俺写了这样一个Funtcion: FUNCTION fun_get_xxx(v_param_one VARCHAR2) RETURN CLOB ASv_OUTPUT CLOB;BEGINWITH temp_table AS (SELECT * FROM (( SELECT one.action_id,two.log_timeFROM table_one oneLEFT JOIN table…

【深度学习】6-4 卷积神经网络 - CNN的实现

CNN的实现 网络的构成是“Convolution - ReLU - Pooling -Affine - ReLU - Affine - Softmax”,我们将它实现为名为 SimpleConvNet的类。 首先来看一下 SimpleConvNet的初始化(init),取下面这些参数。 input_dim——输入数据的维…

七彩虹CN600+Meetiger N10C测评

七彩虹CN600这款M.2固态硬盘的参数就不多说了 本期采用为512版本 迷虎品牌,英文名Meetiger,Meetiger/迷虎品牌成立于2012年,品牌迷虎产品主要有硬盘底座,保护盒,硬盘座,移动硬盘盒子,硬盘盒子,... 以下就是本期的硬盘盒 当这两样东西在一起…

C++(10):泛型算法

泛型算法:可用于不同类型的容器和不同类型的元素的通用算法。 概述 大多数算法都定义在头文件algorithm 中。标准库在头文件 numeric 中定义了一组数值泛型算法。 一般情况下,泛型算法不直接操作容器,而是遍历由两个迭代器指定的一个元素范…

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

前言: 大家好,我是良辰丫,在上一篇文章中我们已经学习了Spring Boot的配置,接下来我们要学习一些日志相关的东西,什么是日志呢?我们慢慢往下看.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaE…

7.4_2B树的插入删除

我们先设置根节点 我们再往里面插入关键字 比如说:80 中间位置为49:(5/2)向上取整为3 新元素一定要插入到最底层”终端结点“,用”查找”来确定插入位置。 失败节点(叶子节点不属于同一层) 讲…

Vue-全局事件总线(GlobalEventBus)

全局事件总线(GlobalEventBus) 全局事件总线是vue中特别厉害的一种组件中通信的方式,它可以实现任意组件中通信,随便拿出来两个组件就能互通数据,就像对讲机一样,它在开发中用的也是特别的多 1 编写案例 首先准备两个组件&…

Python列表 (超详细举例加讲解)

得之我幸,失之我命 文章目录 1.列表的值 2.列表的定义 3.下标 4.列表长度 5.列表的加法和乘法 6.列表切片 7.操作方法(一些基础的函数) (1)append——向列表末尾添加元素 (2)insert——…

VUE3实现页面缓存,tab切换时不刷新

如上图所示,为了实现页面缓存,防止每次页面切换时重新刷新数据,前前后后尝试了多种写法,如上图被注释的那段写法,与没注释掉的写法,在router-view上主要是第一种写法有设置key属性,第二种没有&a…

常见面试题之框架篇

1.Spring框架中的单例bean是线程安全的吗? 不是线程安全的,是这样的。 当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求对应的业务逻辑(成员方法),…