Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

news2024/9/20 0:59:43

Giant Trevally Optimizer : A Novel Metaheuristic Algorithm for Global Optimization and Challenging

  • 一、灵感来源
  • 二、算法的初始化
  • 三、GTO的数学模型
    •   Phase1:广泛搜索
    •   Phase2:选择区域
    •   Phase3:攻击
  • 四、流程图
  • 五、伪代码
  • 六、实验分析和结果

Giant Trevally Optimizer (GTO): A Novel Metaheuristic Algorithm for Global Optimization and Challenging
参考文献:H. T. Sadeeq and A. M. Abdulazeez, “Giant Trevally Optimizer (GTO): A Novel Metaheuristic Algorithm for Global Optimization and Challenging Engineering Problems,” in IEEE Access, vol. 10, pp. 121615-121640, 2022, doi: 10.1109/ACCESS.2022.3223388.
注:仅记录学习,如有侵权,联系删除。

一、灵感来源

  大鲹鱼是一种大型的海洋鱼类。属于鲹科鱼类。它也被称为巨型王鱼。他们在印度洋和太平洋上很丰富,例如在澳大利亚和新西兰周围地区。他们也在东非和夏威夷群岛周围被发现。
  大鲹鱼通常是银色的,有一些黑斑。它可以通过其尖锐的头部、强壮的尾部鳞片和许多其他解剖细节来识别。他们的身高可以达到170cm,体重可达到80公斤。他们的日常食物包括鱼类、头足类、甲壳类和海鸟。
  文献研究了随着搜索空间的扩大,巨鲹在其生态系统内和栖息地之间的移动。一些数据表明,成年巨鲹每天和季节性的移动在他们的漫游范围内可达9公里。幼小的能移动到距离它们的家园环礁70公里。
  在它的大多数栖息地,巨鲹是一个顶级的捕食者,并且使用只能方式进行捕猎。众所周知,巨鲹会单独和成群捕猎,根据研究,成群捕猎的效率更高。群体中捕捉猎物最有效的成员是领导者或者第一捕食者。
  在旱季,超过50万只燕鸥挤在印度洋的一个偏远环礁上。据报道,大概会有50只巨鲹会来捕食。在明确的捕食区域后,巨鲹开始跟踪其猎物,然后跳出水面,攻击猎物。
  这些新奇的捕猎策略,如觅食移动的牌子,在食物数量上选择合适的区域,以及跳出水面攻击和捕捉猎物,是设计GTO的主要灵感。

二、算法的初始化

  X代表GTO种群矩阵, X i = ( x i , 1 , x i , 2 , . . . , x i , m ) X_{i}=(x_{i,1},x_{i,2},...,x_{i,m}) Xi=(xi,1,xi,2,...,xi,m)是GTO的第i个成员(候选解)。
  F代表适应度函数值。
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=\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 & & \vdots \\ x_{i, 1} & \cdots & x_{i, j} & \cdots & x_{i, m} \\ \vdots & & \vdots & \ddots & \vdots \\ x_{N, 1} & \cdots & x_{N, j} & \cdots & x_{N, m} \end{array}\right]_{N \times m} X=X1XiXNN×m=x1,1xi,1xN,1x1,jxi,jxN,jx1,mxi,mxN,mN×m
x i , j = l b j +  rand  ⋅ ( u b j − l b j ) , i = 1 , 2 , … , N , j = 1 , 2 , … , m x_{i, j}=lb_{j}+\text { rand } \cdot\left(ub_{j}-lb_{j}\right), i=1,2, \ldots, N, j=1,2, \ldots, m xi,j=lbj+ rand (ubjlbj),i=1,2,,N,j=1,2,,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=F1FiFNN×1=F(X1)F(Xi)F(XN)N×1

  式中: x i , j x_{i, j} xi,j代表第i个成员的第j个变量的值;N是种群大小;m是维度;rand代表[0,1]之间的随机数; l b j lb_{ j} lbj代表下限; u b j ub_{ j} ubj代表上限。

三、GTO的数学模型

  所提出的GTO算法模仿了巨鲹猎杀海鸟时的行为。因此,所提出的GTO算法大致分为以下三个步骤:利用莱维飞行进行广泛搜索,选择区域步骤以确定狩猎区域,以及通过跳出水面追逐和攻击猎物。因此,GTO的探索阶段体现在第一个步骤中。第二三步骤代表GTO的开发阶段。巨鲹在大自然界捕食时的情况如下所示。

            在这里插入图片描述

  Phase1:广泛搜索

  如果我们考虑到巨鲹的作用,并且如前面所述,巨鲹可以长途跋涉进行日常的饮食。因此,在这一步中,用下面的式子来模拟巨鲹的觅食运动模式。
X ( t + 1 ) =  Best  P × R + ( (  Maximm  −  Minimum  ) × R +  Minimum  ) ×  Levy  (  Dim  ) \begin{aligned} X(t+1)= & \text { Best }_{P} \times R+((\text { Maximm }-\text { Minimum }) \\ & \times R+\text { Minimum }) \times \text { Levy }(\text { Dim }) \end{aligned} X(t+1)= Best P×R+(( Maximm  Minimum )×R+ Minimum )× Levy ( Dim )
  其中  Best  P \text{ Best }_{P}  Best P 是上一次搜索的最佳位置,R是一个随机数,取值在0到1之间。  Levy  (  Dim  ) \text { Levy }(\text { Dim })  Levy ( Dim )Levy飞行,他是一类特殊的非高斯随机过程,其步长由所谓的levy分布决定。该算法进行全局搜索的能力得益于其偶尔的大步幅。此外,使用levy飞行的主要优点是避免了局部优化和提高了收敛率。
  在这方面,值得一提的是,许多研究表明,包括海洋捕食者在内的多种动物都表现出levy飞行的行为。levy飞行用下面的式子计算。
Levy ⁡ (  Dim  ) = step ⁡ × u × σ 1 1 / β \operatorname{Levy}(\text { Dim })=\operatorname{step} \times \frac{u \times \sigma}{1^{1} / \beta} Levy( Dim )=step×11/βu×σ
  step是步长,固定为0.01; β \beta β是levy飞行分布函数的指数,其值取值范围为0到2,本文设定为1.5;u和v是在(0,1)范围内正态分布的随机数。 σ \sigma σ通过下面的式子进行计算。
σ ⁡ = ( Γ ( 1 + β ) × sin ⁡ e ( π β 2 ) Γ ( 1 + β 2 ) × β × 2 ( β − 1 2 ) ) \operatorname\sigma=\left(\frac{\Gamma(1+\beta) \times \sin e\left(\frac{\pi \beta}{2}\right)}{\Gamma\left(\frac{1+\beta}{2}\right) \times \beta \times 2\left(\frac{\beta-1}{2}\right)}\right) σ=Γ(21+β)×β×2(2β1)Γ(1+β)×sine(2πβ)

  Phase2:选择区域

  在选择区域的步骤中,巨鲹在选定的搜索空间内识别和选择食物数量方面的最佳区域,在那里他们可以猎取事物。下面的式子模拟了这种行为。

X ( t + 1 ) =  Best  P × A × R + Meaninfo − X i ( t ) × R X(t+1)=\text { Best }_{P} \times A \times R+\text{Meaninfo}-Xi(t) \times R X(t+1)= Best P×A×R+MeaninfoXi(t)×R
  A是一个位置变化控制参数,范围为0.3至0.4。 X i ( t ) Xi(t) Xi(t)是当前巨鲹在当前迭代的位置。同时Meaninfo指的是平均值,表示这些巨鲹已经用完了以前各点的所有可用信息。计算公式如下。
MeanInfo = 1 N ∑ i = 1 N X i ( t ) \text {MeanInfo}=\frac{1}{N} \sum_{i=1}^{N} X i(t) MeanInfo=N1i=1NXi(t)

选择区域的有效性,文献在sphere函数上进行了测试。10个个体,5次迭代。表明,使用最佳点和平均值作为选择区域步骤的基础,提高了所有解决方案的质量。也有图表明,所有的搜索都位于最佳点附近。(我写这篇的时候还未进行验证,可自行参照原文进行验证)

  Phase3:攻击

  在上一步骤中,在指定了最佳狩猎区域后。在这个步骤中,代表了GTO的开发阶段,鲹鱼开始追逐猎物。在这里,也是最后,当鲹鱼足够接近鸟类时,它通过杂技般地跳出水面并抓住鸟类来攻击。
  为了模拟巨鲹在追逐和攻击猎物时的行为,在GTO中假定巨鲹会收到视觉扭曲的影响,这主要是由光的折射引起的。光的折射是指光波在穿越两种介质(如水、玻璃和空气)的界面时,其轨迹发生偏移。如下图所示。
          在这里插入图片描述
  在GTO中,如下图所示,鸟是物体,而大鲹是观察者,图中的虚线表示视觉失真。由于光的折射,鸟总是被看成比它实际高度高。如果我们知道了入射角,就有可能预测折射角是多少,同样,如果知道了折射角,就有可能预判入射角。
          在这里插入图片描述

η 1 sin ⁡ θ 1 = η 2 sin ⁡ θ 2 \eta_{1} \sin \theta_{1}=\eta_{2} \sin \theta_{2} η1sinθ1=η2sinθ2
  其中 η 1 = 1.00029 \eta_{1}=1.00029 η1=1.00029, η 2 \eta_{2} η2=1.33分别表示空气和水的绝对折射率。而 θ 1 \theta_{1} θ1 θ 2 \theta_{2} θ2分别表示入射角和折射角。 θ 2 \theta_{2} θ2是区间[0,360]中的一个随机数。

   θ 1 \theta_{1} θ1通过下面的式子来得到。
sin ⁡ θ 1 = η 2 η 1 sin ⁡ θ 2 \sin \theta_{1}=\frac{\eta_{2}}{\eta_{1}} \sin \theta_{2} sinθ1=η1η2sinθ2
  V是视觉失真,sin是变量的正弦,单位是度,D是猎物和攻击者之间的距离。式子如下面两个所示。
V = sin ⁡ ( θ 1 ∘ ) × D \mathcal{V}=\sin \left(\theta_{1}^{\circ}\right) \times \mathcal{D} V=sin(θ1)×D

D = ∣ (  Best  P − X i ( t ) ) ∣ \mathcal{D}=\mid\left(\text { Best }_{P}-X i(t)\right) \mid D=( Best PXi(t))
  然后用下面的式子对打鲹追赶和跳出水面时的行为进行数学模拟。L表示模拟追赶鸟的发射速度。其中 × F − o b j ( X i ( t ) ) \times F_{-} o b j(X i(t)) ×Fobj(Xi(t))指的是X在当前迭代的的适应度值。
X ( t + 1 ) = L + V + H X(t+1)=\mathcal{L}+\mathcal{V}+\mathcal{H} X(t+1)=L+V+H

L = X i ( t ) × sin ⁡ ( θ 2 ∘ ) × F − o b j ( X i ( t ) ) \mathcal{L}=X i(t) \times \sin \left(\theta_{2}^{\circ}\right) \times F_{-} o b j(X i(t)) L=Xi(t)×sin(θ2)×Fobj(Xi(t))
  最后这一项H指定了跳跃斜率函数,是算法能够自适应地进行从探索阶段到开发阶段的适当过度,用下面的式子进行计算。其中t和T分别指当前迭代和最大迭代次数,R是一个随机数,这里指开发步骤中大鲹的不同运动感。值得一提的是,在迭代过程中,H有一个从2到0的递减趋势,而且该算法在开发步骤中尝试开发解的邻域(开发解的领域这个我不大理解,先备注上)。
H = R × ( 2 − t × 2 T ) \mathcal{H}=R \times\left(2-t \times \frac{2}{T}\right) H=R×(2t×T2)

四、流程图

在这里插入图片描述

五、伪代码

在这里插入图片描述

六、实验分析和结果

  为了适当验证GTO算法的性能,原作者进行了两组实验,对GTO提供的实验结果进行评估,并于其他算法得到的结果进行比较
  案例1:第一个实验使用具有各种类型特征的四十个基本测试函数从多个角度评估算法的性能。
  案例2:使用五个具有挑战性的工程设计有话问题对GTO算法的有效性进行了评估。

  注:原文已经进行大量实验结果分析,感兴趣的请阅读原文,学习学习一篇好的论文是怎么写的。源代码也已公开,我就不点运行和截图了,大家自行下载。

  特别提示:不要买什么基本的算法,这些算法都是全网公开的,优秀的东西从来都不保密,不怕任何人抄袭的,各位不要再交智商税了。

在这里插入图片描述

收获:

  1. GTO分三个阶段,其实都是在位置更新上,第一个阶段levy这个没有什么新意
  2. 第二个阶段就用到了一个平均值,可能是我看的少,觉得由些许创新型
  3. 第三个阶段,算是这篇文章的亮点,引入了折射率这个想法,加入了视觉误差和自动调整两个。
  4. 做了大量的对比试验,很完整的分析,优秀的论文不是通篇说自己哪里哪里都好,看清晰的完整的分析。
  5. 没了。。。

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

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

相关文章

[附源码]计算机毕业设计四川景区管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SWT Table列自适应大小

要实现列自适应大小首先需要保证Table根据窗口拖动而改变大小。 Window中提供setShellStyle可以设置外壳样式。 构造一个新的自定义器对话框,在构造函数中添加setShellStyle(getShellStyle() | SWT.RESIZE);即可改变自定义对话框大小,如: ge…

[附源码]Python计算机毕业设计SSM教师教学质量评价系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据卷(Data Volumes)dockerfile

目录一、宿主机与容器之间的文件拷贝1、利用MySQL镜像安装MySQL服务2、从容器中拷贝文件到宿主机3、从宿主机拷贝文件到容器二、数据卷三、数据卷容器四、Dockerfile1、自定义centos,具备vim及ifconfig作用2、自定义tomcat8一、宿主机与容器之间的文件拷贝 1、利用…

Linux虚拟化网络之vlan配置

问题描述: Linux主机划分两个vlan,服务器server1的物理网卡的IP地址为1.1.1.1/24,服务器server2的物理网卡的IP地址为1.1.1.2/24。物理网卡下要虚拟化出来两个Vlan子接口,vlan10中主机的IP地址分别为10.10.10.1/24和10.10.10.2/2…

99%的人都把三层架构和SpringMVC的关系搞错了

99%的人都把三层架构和SpringMVC的关系搞错了!!! 先说结论, 三层架构和SpringMVC的关系就是没有关系。 很多人之前把SpringMVC中的M-Model当作三层架构中的servicedao(包括我),这个是一个错误…

前端知识粉碎机

diff算法 Dep的作用是收集观察者以及当数据发生变动时通知观察者去更新。 Dep.notify()通知观察者去更新。 当数据改变时,就会触发setter,然后触发Dep.notify,通知订阅者,比对新旧虚拟节点,判断是否是同类标签&#xf…

Emlog博客文章图片自动加水印插件

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 给Emlog博客的上传图片添加水印可以有效地保护作品版权,有效地打击那些转载文件不留原作者地址的垃圾网站,部分Emlog博主通常都是手动给图片添加水印,…

MySQL学习记录(7)SQL优化

3. SQL优化 3.1、插入数据 3.1.1 insert 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry); .....(1&#xf…

cartgrapher ukf 代码清晰属实不错

文章目录原理UKFSigma and weightUKF AlgorithmUT/UKF/EKF Summarycato_code外围函数检测是否为对称矩阵矩阵的开方根高斯分布UKF 代码实现类预测观测更新点评原理 UKF KF 系列求解: Kalman filter 需要线性模型EKF通过泰勒展开线性化更好的方式线性化 -> Unsc…

【OpenCV学习】第6课:图像模糊(中值滤波,高斯双边滤波)

仅自学做笔记用,后续有错误会更改 理论 中值滤波:对核内数值先进行排序,再取中间那个值 注1:中值滤波属于统计学的排序滤波器 注2:中值滤波对椒盐噪声有很好的抑制作用 高斯双边滤波(美颜磨皮效果一般都是用的这个)&#xff1a…

JAVA中的基本数据类型

文章目录0 写在前面1 特点2 举例说明2.1 数字型2.2 字符型布尔型3 写在最后0 写在前面 Java 语言支持 8 种基本数据类型:byte,short,int,long,float,double,char 和 boolean 1 特点 基本数据…

Java项目:SSM网上外卖订餐管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录; 普通用户…

区分度评估指标-KS

1.背景 KS指标来评估模型的区分度(discrimination),风控场景常用指标之一。本文将从区分度的概念、KS的计算方法、业务指导意义、几何解释、数学思想等多个维度展开分析,以期对KS指标有更为深入的理解认知。 Part 1. 直观理解区…

javaee之黑马旅游网2

下面我们来做邮件激活功能 提示邮箱需要登录才能进行账号激活 保证用户填写的邮箱是正确的,可以推广宣传信息到邮箱中 下面分成两部分来做: 第一部分:发送邮件 这个功能就是通过工具类来进行实现的,直接从网上copy的代码 Mai…

痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用。 如果我们从一颗 MCU 芯片的引脚分类来看芯片功能,大概可以分为三大类:电源、时钟、外设功能。作为嵌入式开发者&#…

service 详解

8.3.3 HeadLiness类型的Service 在某些场景中,开发人员可能不想使用Service提供的负载均衡功能,而希望自己来控制负载均衡策略,针对这种情况,kubernetes提供了HeadLiness Service,这类Service不会分配Cluster IP&…

在线表单设计器都有哪些优秀的功能?

当前,在大数据时代的发展背景下,自定义的在线表单设计器是提升办公效率和协作效率的工具。可视化表单工具丰富的组件、简单的操作等优势特点得到了很多客户的喜爱和支持。那么,您知道在线表单设计器的功能都有哪些吗?通过这篇文章…

前端_Vue_1.初识Vue

文章目录一、前言二、开始1. 简介1.1. 什么是Vue?1.2. 渐进式框架1.3. 单文件组件1.4. API风格1.4.1. 选项式API(Options API)1.4.2. 组合式API(Composition API)1.4.3. 该选哪个?2. 快速上手(学…

导出微信通讯录

不知道什么时候,微信好友已经增加到了几百人,熟悉的、不熟悉的人都淹没在一溜的名字里,今天来整理一下微信通讯录,该删的、该分组的都搞一搞。 首先,导出微信的通讯录 单击微信左下角“菜单”,选择“设置…