【智能算法】蝠鲼觅食优化算法(MRFO)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.代码实现
    • 4.参考文献


1.背景

2017年,Zhao等人受到蝠鲼自然捕食行为启发,提出了蝠鲼觅食优化算法(Manta Ray Foraging Optimization,MRFO)。

2.算法原理

2.1算法思想

MRFO模拟了蝠鲼在海洋中的觅食过程,提出了三种捕食策略链式觅食-螺旋觅食-翻滚觅食

2.2算法过程

链式觅食
蝠鲼可以观察到浮游生物的位置并朝它游去,在一个位置上浮游生物的浓度越高,位置越好(适应度函数)。蝠鲼排成一列,形成觅食链,除了第一个个体外,其他个体不仅朝着食物游去,还朝着它前面的个体游去。在每次迭代中,每个个体都会根据迄今为止找到的最佳解决方案和它前面的解决方案进行更新。
在这里插入图片描述

x i d ( t + 1 ) = { x i d ( t ) + r ⋅ ( x b e s t d ( t ) − x i d ( t ) ) + α ⋅ ( x b e s t d ( t ) − x i d ( t ) ) i = 1 x i d ( t ) + r ⋅ ( x i − 1 d ( t ) − x i d ( t ) ) + α ⋅ ( x b e s t d ( t ) − x i d ( t ) ) i = 2 , … , N x_i^d(t+1)=\begin{cases}x_i^d(t)+r\cdot(x_{best}^d(t)-x_i^d(t))+\alpha\cdot(x_{best}^d(t)-x_i^d(t))&i=1\\x_i^d(t)+r\cdot(x_{i-1}^d(t)-x_i^d(t))+\alpha\cdot(x_{best}^d(t)-x_i^d(t))&i=2,\ldots,N\end{cases} xid(t+1)={xid(t)+r(xbestd(t)xid(t))+α(xbestd(t)xid(t))xid(t)+r(xi1d(t)xid(t))+α(xbestd(t)xid(t))i=1i=2,,N
a a a为控制因子,表述为:
α = 2 ⋅ r ⋅ ∣ l o g ( r ) ∣ \alpha=2\cdot r\cdot\sqrt{|log(r)|} α=2rlog(r)
螺旋觅食
当一群蝠鲼在深水中发现一片浮游生物时,它们会组成一条长长的觅食链,并以螺旋形式向食物游去。(类似于鲸鱼算法(WOA)捕食策略)
在这里插入图片描述

t / T > r a n d 时 t/T>rand时 t/T>rand,此时进行全局探索:
x i d ( t + 1 ) = { x b e s t d + r ⋅ ( x b e s t d ( t ) − x i d ( t ) ) + β ⋅ ( x b e s t d ( t ) − x i d ( t ) ) i = 1 x b e s t d + r ⋅ ( x i − 1 d ( t ) − x i d ( t ) ) + β ⋅ ( x b e s t d ( t ) − x i d ( t ) ) i = 2 , … , N x_i^d(t+1)=\begin{cases}x_{best}^d+r\cdot(x_{best}^d(t)-x_i^d(t))+\beta\cdot(x_{best}^d(t)-x_i^d(t))&i=1\\x_{best}^d+r\cdot(x_{i-1}^d(t)-x_i^d(t))+\beta\cdot(x_{best}^d(t)-x_i^d(t))&i=2,\dots,N\end{cases} xid(t+1)={xbestd+r(xbestd(t)xid(t))+β(xbestd(t)xid(t))xbestd+r(xi1d(t)xid(t))+β(xbestd(t)xid(t))i=1i=2,,N
t / T ≥ r a n d 时 t/T \ge rand时 t/Trand,此时进行局部探索:
x i d ( t + 1 ) = { x r a n d d + r ⋅ ( x r a n d d − x i d ( t ) ) + β ⋅ ( x r a n d d − x i d ( t ) ) i = 1 x r a n d d + r ⋅ ( x i − 1 d ( t ) − x i d ( t ) ) + β ⋅ ( x r a n d d − x i d ( t ) ) i = 2 , … , N \left.x_{i}^{d}(t+1)=\left\{\begin{array}{ll}{{x_{rand}^{d}+r\cdot(x_{rand}^{d}-x_{i}^{d}(t))+\beta\cdot(x_{rand}^{d}-x_{i}^{d}(t))}}&{i=1}\\{{x_{rand}^{d}+r\cdot(x_{i-1}^{d}(t)-x_{i}^{d}(t))+\beta\cdot(x_{rand}^{d}-x_{i}^{d}(t))}}&{i=2,\ldots,N}\end{array}\right.\right. xid(t+1)={xrandd+r(xranddxid(t))+β(xranddxid(t))xrandd+r(xi1d(t)xid(t))+β(xranddxid(t))i=1i=2,,N
β \beta β为控制因子,表述为:
β = 2 e r 1 T − t + 1 T ⋅ sin ⁡ ( 2 π r 1 ) \beta=2e^{r_1\frac{T-t+1}T}\cdot\sin(2\pi r_1) β=2er1TTt+1sin(2πr1)
翻滚觅食
在这种行为中,食物的位置被视为一个中心点。每个个体倾向于在中心点周围来回游动,并翻滚到一个新的位置。
在这里插入图片描述

x i d ( t + 1 ) = x i d ( t ) + S ⋅ ( r 2 ⋅ x b e s t d − r 3 ⋅ x i d ( t ) ) , i = 1 , … , N x_i^d(t+1)=x_i^d(t)+S\cdot(r_2\cdot x_{best}^d-r_3\cdot x_i^d(t)),i=1,\ldots,N xid(t+1)=xid(t)+S(r2xbestdr3xid(t)),i=1,,N
伪代码
在这里插入图片描述

3.代码实现

% 蝠鲼觅食优化算法
function [Best_pos, Best_fitness, Iter_curve, History_pos, History_best] = MRFO(pop, maxIter,lb,ub,dim,fobj)
%input
%pop 种群数量
%dim 问题维数
%ub 变量上边界
%lb 变量下边界
%fobj 适应度函数
%maxIter 最大迭代次数
%output
%Best_pos 最优位置
%Best_fitness 最优适应度值
%Iter_curve 每代最优适应度值
%History_pos 每代种群位置
%History_best 每代最优个体位置
%% 初始化种群
PopPos = zeros(pop, dim);
for i = 1:dim
    PopPos(:,i) = lb(i) + (ub(i) - lb(i)) * rand(pop, 1);
end
%% 计算适应度
PopFit = zeros(1, pop);
for i=1:pop
     PopFit(i)=fobj(PopPos(i,:));
end
%% 记录
[MinFitness, MinIdx] = sort(PopFit);
Best_pos = PopPos(MinIdx(1),:);
Best_fitness = MinFitness(1);
%% 迭代
for It = 1:maxIter  
     Coef = It / maxIter;     
       if rand<0.5
          r1=rand;                         
          Beta=2*exp(r1*((maxIter-It+1)/maxIter))*(sin(2*pi*r1));    
          if  Coef > rand                                                      
              newPopPos(1,:)=Best_pos+rand(1,dim).*(Best_pos-PopPos(1,:))+Beta*(Best_pos-PopPos(1,:)); %Equation (4)
          else
              IndivRand=rand(1,dim).*(ub-lb)+lb;                                
              newPopPos(1,:)=IndivRand+rand(1,dim).*(IndivRand-PopPos(1,:))+Beta*(IndivRand-PopPos(1,:)); %Equation (7)         
          end              
       else 
            Alpha=2*rand(1,dim).*(-log(rand(1,dim))).^0.5;           
            newPopPos(1,:)=PopPos(1,:)+rand(1,dim).*(Best_pos-PopPos(1,:))+Alpha.*(Best_pos-PopPos(1,:)); %Equation (1)
       end
     
    for i=2:pop
        if rand<0.5
           r1=rand;                         
           Beta=2*exp(r1*((maxIter-It+1)/maxIter))*(sin(2*pi*r1));    
             if  Coef>rand                                                      
                 newPopPos(i,:)=Best_pos+rand(1,dim).*(PopPos(i-1,:)-PopPos(i,:))+Beta*(Best_pos-PopPos(i,:)); %Equation (4)
             else
                 IndivRand=rand(1,dim).*(ub-lb)+lb;                                
                 newPopPos(i,:)=IndivRand+rand(1,dim).*(PopPos(i-1,:)-PopPos(i,:))+Beta*(IndivRand-PopPos(i,:));  %Equation (7)       
             end              
        else
            Alpha=2*rand(1,dim).*(-log(rand(1,dim))).^0.5;           
            newPopPos(i,:)=PopPos(i,:)+rand(1,dim).*(PopPos(i-1,:)-PopPos(i,:))+Alpha.*(Best_pos-PopPos(i,:)); %Equation (1)
       end         
    end
         
           for i=1:pop
               % 边界检查
               H_ub=newPopPos(i,:)>ub;
               H_lb=newPopPos(i,:)<lb;
               newPopPos(i,:)=(newPopPos(i,:).*(~(H_ub+H_lb)))+ub.*H_ub+lb.*H_lb;  
               newPopFit(i)=fobj(newPopPos(i,:));    
              if newPopFit(i)<PopFit(i)
                 PopFit(i)=newPopFit(i);
                 PopPos(i,:)=newPopPos(i,:);
              end
           end
     
            S=2;
        for i=1:pop           
            newPopPos(i,:)=PopPos(i,:)+S*(rand*Best_pos-rand*PopPos(i,:)); %Equation (8)
        end
     
     for i=1:pop
        % 边界检查
        H_ub=newPopPos(i,:)>ub;
        H_lb=newPopPos(i,:)<lb;
        newPopPos(i,:)=(newPopPos(i,:).*(~(H_ub+H_lb)))+ub.*H_ub+lb.*H_lb;  
        newPopFit(i)=fobj(newPopPos(i,:));    
        if newPopFit(i)<PopFit(i)
            PopFit(i)=newPopFit(i);
            PopPos(i,:)=newPopPos(i,:);
         end
     end
     
     for i=1:pop
        if PopFit(i)<Best_fitness
           Best_fitness=PopFit(i);
           Best_pos=PopPos(i,:);            
        end
     end
 
  
     Iter_curve(It)=Best_fitness;
     History_pos{It} = PopPos;
     History_best{It} = Best_pos;
end
end

在这里插入图片描述

4.参考文献

[1] Zhao W, Zhang Z, Wang L. Manta ray foraging optimization: An effective bio-inspired optimizer for engineering applications[J]. Engineering Applications of Artificial Intelligence, 2020, 87: 103300.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

54、WEB攻防——通用漏洞跨域CORS资源JSONP回调域名接管劫持

文章目录 同源策略CORSJSONP跨域回调子域名劫持 同源策略 同源策略包括三个条件&#xff1a;同域名、同域名、同端口。同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。 CORS CORS&#xff08;跨域资源共享&#xff09;已被所有浏览器支持&#xff0c;跨…

简单了解 vim 编辑器最基础的操作

简单了解 vim 编辑器最基础的操作 vim 这个是 Linux 上自带的一个文本编辑器&#xff0c;使用 vim 就可以更灵活的对文件进行编辑了&#xff08;虽然和记事本的定位差不多,实际上vim的使用要复杂很多&#xff09; 1.打开文件 语法&#xff1a;vim 文件名 示例&#xff1a;…

简单理解NAT模式和桥接模式

目录 桥接模式NAT模式总结 桥接模式 1.桥接模式下 当物理机X创建了一台或多台虚拟机 那么这些创建出来的虚拟机 可以视作一台独立的新机器 加入了该局域网 并允许和该局域网的物理机或者其他虚拟机直接通信 2.问题一在于 C类网的分配是有范围的(0-255) 假如是一个教室里的局域…

智慧公厕建设,助力打造宜居、韧性、可持续的智慧城市

公共厕所作为智慧城市的重要组成部分&#xff0c;对于城市的高质量发展起着至关重要的作用。智慧公厕建设旨在通过全面监测、控制和管理公共厕所&#xff0c;实现多方面功能&#xff0c;包括公共厕所环境监测与调控、厕位占用监测与引导、消耗品监测与缺失提示、安全防范与管理…

WPF监控平台(科技大屏)[一]

跟着B站的视频敲了一个略微复杂的WPF界面,链接如下.在这里我详细的写一份博客进行设计总结. 系统介绍和配置及主窗口设计_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wy421Y7QD?p1&vd_source4796b18a2e4c1ec8a310391a5644b6da 成果展示 实现过程 总体来说,我的…

Shell常用脚本:hadoop集群启动、停止、重启脚本

脚本内容以我搭建的hadoop集群为例&#xff0c;你们自用的时候自行根据你们的情况进行修改即可 hadoop-cluster-manager.sh #!/bin/bash # 1. 调用此脚本前&#xff0c;请使用ssh-keygen -t rsa、ssh-copy-id -f 目标机器这两个命令使得目标机器是免密登录的 # 2. ssh远程执行…

Linux常用操作命令和服务器硬件基础知识

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

嵌入式学习day37 数据结构

1.sqlite3_open int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); 功能: 打开数据库文件(创建一个数据库连接) 参数: filename:数据库文…

【智能硬件、大模型、LLM 智能音箱】MBO:基于树莓派、ChatGPT 的桌面机器人

MAKER:David Packman/译:趣无尽(转载请注明出处) 这是国外 Maker David Packman 制作的基于树莓派机器人 MBO,该机器人的外观设计灵感来自动漫 Adventure Time 中的机器人 MBO。它具有强大的交互功能,可实现脱机唤醒词检测、调用 ChatGPT 3.5 进行聊天、机器视觉对图像进…

【开源】SpringBoot框架开发班级考勤管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支持模块2.3 考勤签到管理2.4 学生请假管理 三、系统设计3.1 功能设计3.1.1 系统基础支持模块3.1.2 班级学生教师档案模块3.1.3 考勤签到管理模块3.1.4 学生请假管理模块 3.2 数据库设…

实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)

导 读 本文主要介绍使用YOLOv9和OpenCV实现车辆跟踪计数&#xff08;步骤 源码&#xff09;。 实现步骤 监控摄像头可以有效地用于各种场景下的车辆计数和交通流量统计。先进的计算机视觉技术&#xff08;例如对象检测和跟踪&#xff09;可应用于监控录像&#xff0c;…

2023 收入最高的十大编程语言

本期共享的是 —— 地球上目前已知超过 200 种可用的编程语言&#xff0c;了解哪些语言在 2023 为开发者提供更高的薪水至关重要。 过去一年里&#xff0c;我分析了来自地球各地超过 1000 万个开发职位空缺&#xff0c;辅助我们了解市场&#xff0c;以及人气最高和收入最高的语…

C++_智能指针

目录 1、内存泄漏 1.1 什么是内存泄漏 1.2 内存泄漏的危害 1.3 如何避免内存泄漏 2、智能指针的应用场景 3、智能指针的原理 3.1 RAII 3.2 智能指针的使用 4、智能指针的拷贝问题 5、auto_ptr 6、unique_ptr 7、share_ptr 7.1 循环引用 7.2 weak_ptr 结…

Linux系统运维命令:查看系统的平均负载(查看CPU的负载)

目 录 一、要求 二、快速了解系统资源利用情况的Linux命令 &#xff08;一&#xff09;cat /proc/loadavg命令 1、命令介绍 2、命令输出 3、命令解释 &#xff08;1&#xff09;前三个数字&#xff1a; &#xff08;2&#xff09;第四个值&#xff1a; &…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextClock)

TextClock组件通过文本将当前系统时间显示在设备上。支持不同时区的时间显示&#xff0c;最高精度到秒级。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextClock(options?…

c++进阶(c++里的继承)

文章目录 1.继承的概念及定义1.1继承的概念1.2继承的定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承类成员访问方式的变化 2.基类和派生类对象赋值转化3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承域静态成员 1.继承的概念及定义 1.1继承的概念 继承机制…

23、设计模式之访问者模式(Visitor)

一、什么是访问者模式 访问者模式是一种行为型设计模式&#xff0c;它可以用于在不修改已有对象结构的情况下&#xff0c;定义新的操作方式。简单地说就是在不改变数据结构的前提下&#xff0c;通过在数据结构中加入一个新的角色——访问者&#xff0c;来达到执行不同操作的目的…

防御安全(IPSec实验)

目录 需求&#xff1a; pc1 ping通 pc2 ,使用IPSec VPN 拓扑图&#xff1a; ​编辑实验配置&#xff1a; 注意&#xff1a; 直接在路由器r1和r2分别配置即可&#xff0c;路由器r1和r2要写一条缺省指向ISP 实验配置截图如下&#xff1a; 2. r1​编辑 3. r3​编辑 3.r…

【C++】—— 代理模式

目录 &#xff08;一&#xff09;什么是代理模式 &#xff08;二&#xff09;为什么使用代理模式 &#xff08;三&#xff09;代理模式实现步奏 &#xff08;四&#xff09;代码示例 &#xff08;五&#xff09;代理模式优缺点 &#xff08;一&#xff09;什么是代理模式 …

车辆路径优化问题(VRP)变体及数学模型

车辆路径优化问题变体及数学模型 一、旅行商问题&#xff08;Travelling salesman problem&#xff0c;TSP&#xff09;TSP问题数学模型TSP问题求解 二、车辆路径问题&#xff08;Vehicle Routing Problem&#xff0c;VRP&#xff09;三、带容量约束的车辆路径优化问题&#xf…