智能优化算法:人工兔优化算法-附代码

news2024/10/1 1:31:59

智能优化算法:人工兔优化算法

摘要:人工兔优化算法( [Artificial rabbits optimization,RSO)是 Liying Wang等 于 2022 年提出的一种新型元启发式优化算法 。 该算法受来源于自然界中兔子的生存策略的启发,具有寻优能力强,收敛速度快的特点。

1.人工兔优化算法

人工兔优化算法利用真实兔子的觅食和隐藏策略,并通过能量收缩在两种策略之间进行转换。

1.1 绕道觅食(探索)

兔子觅食时,总是寻找远的,而忽略了近处的。它们只在其他区域随机吃草,而不是在自己的区域,把这种觅食行为称为绕道 时,兔子很可能会扰乱食物来源以获得足够的食物。因此,ARO的绕道㐍食行为表明,每个搜索个体倾向于向种群中随机选择的另一个 搜索个体更新自己的位置,并增加扰动。
v ⃗ i ( t + 1 ) = x ⃗ j ( t ) + R ⋅ ( x ⃗ i ( t ) − x ⃗ j ( t ) ) + round ⁡ ( 0.5 ⋅ ( 0.05 + r 1 ) ) ⋅ n 1 i , j = 1 , ⋯   , n  and  j ≠ i (1) \begin{gathered} \vec{v}_i(t+1)=\vec{x}_j(t)+R \cdot\left(\vec{x}_i(t)-\vec{x}_j(t)\right)+\operatorname{round}\left(0.5 \cdot\left(0.05+r_1\right)\right) \cdot n_1 \\ i, j=1, \cdots, n \text { and } j \neq i \end{gathered} \tag{1} v i(t+1)=x j(t)+R(x i(t)x j(t))+round(0.5(0.05+r1))n1i,j=1,,n and j=i(1)

R = L ⋅ c (2) R=L \cdot c \tag{2} R=Lc(2)

L = ( e − e ( t − 1 T ) 2 ) ⋅ sin ⁡ ( 2 π r 2 ) (3) L=\left(e-e^{\left(\frac{t-1}{T}\right)^2}\right) \cdot \sin \left(2 \pi r_2\right) \tag{3} L=(ee(Tt1)2)sin(2πr2)(3)

c ( k ) = { 1 ,  if  k = = g ( l ) 0 ,  else  k = 1 , ⋯   , d  and  l = 1 , ⋯   , ⌈ r 3 ⋅ d ⌉ (4) c(k)=\left\{\begin{array}{ll} 1, & \text { if } k==g(l) \\ 0, & \text { else } \end{array} k=1, \cdots, d \text { and } l=1, \cdots,\left\lceil r_3 \cdot d\right\rceil\right. \tag{4} c(k)={1,0, if k==g(l) else k=1,,d and l=1,,r3d(4)

g = randperm ⁡ ( d ) (5) g=\operatorname{randperm}(d) \tag{5} g=randperm(d)(5)

n 1 ∼ N ( 0 , 1 ) (6) n_1 \sim N(0,1) \tag{6} n1N(0,1)(6)

其中, v ⃗ i ( t + 1 ) \vec{v}_i(t+1) v i(t+1) 是第 t + 1 t+1 t+1 次迭代时第 i i i 只兔子的候选位置; x ⃗ i ( t ) \vec{x}_i(t) x i(t) 是第 t t t 次迭代时第 i i i 只兔子的当前位置; n n n 是兔群的数量; d d d 是问题的维 度; T T T 是最大迭代次数; ⌈ ⋅ ⌉ \lceil\cdot\rceil 是向上取整函数; round表示四舍五入; randperm ⁡ ( d ) \operatorname{randperm}(d) randperm(d) 表示返回从1到 d d d 的整数的随机排列; r 1 , r 2 , r 3 r_1, r_2, r_3 r1,r2,r3 均为 ( 0 , 1 ) (0,1) (0,1) 区间的随机数; L L L 为奔跑动长度,代表绕行豆食时的运动速度; n 1 n_1 n1 为服从标准正态分布的随机数。
在式(1)中,扰动可以帮助ARO避免局部极值,进行全局搜索。由式(3)可知,奔跑长度 L L L 在初始迭代时可以产生更长的步长,而这个长度 可以在以后的迭代中生成更短的步骤。图1给出了 L L L 的动态变化,可以看出较长的步长有利于探索,较短的步长有利于开发。 C C C 是一个映 射向量,它可以帮助算法在㐍食行为中随机选择随机数量的搜索个体元素进行变异。 R R R 表示奔跑算子,用于模拟兔子的运行特性。

式(1)表示搜索个体根据彼此的位置进行随机的食物捭索。这种行为使一只兔子远离自己的区域,跑到其他兔子的区域。兔子这种不去自 己窝而去别人窝的特殊觅食行为极大地促进了探索,保证了ARO算法的全局搜索能力。

1.2 随机躲藏(开发)

为了躲避捕食者,兔子通常会在它的稞穴周围挖一些不同的洞穴来藏身。在ARO算法中,每一次迭代,一只兔子总是沿看搜索空间的每 一个维度在它周围产生 d d d 个洞,并且总是从所有的洞中随机选择一个隐臧起来,以降低被捕食的概率。第 i i i 只兔子的第 j j j 个洞穴由以下公式 产生:
b ⃗ i , j ( t ) = x ⃗ i ( t ) + H ⋅ g ⋅ x ⃗ i ( t ) , i = 1 , ⋯   , n  and  j = 1 , ⋯   , d (7) \vec{b}_{i, j}(t)=\vec{x}_i(t)+H \cdot g \cdot \vec{x}_i(t), \quad i=1, \cdots, n \text { and } j=1, \cdots, d \tag{7} b i,j(t)=x i(t)+Hgx i(t),i=1,,n and j=1,,d(7)

H = T − t + 1 T ⋅ r 4 (8) H=\frac{T-t+1}{T} \cdot r_4 \tag{8} H=TTt+1r4(8)

n 2 ∼ N ( 0 , 1 ) (9) n_2 \sim N(0,1) \tag{9} n2N(0,1)(9)

g ( k ) = { 1 ,  if  k = = j 0 ,  else  k = 1 , ⋯   , d (10) g(k)=\left\{\begin{array}{ll} 1, & \text { if } k==j \\ 0, & \text { else } \end{array} \quad k=1, \cdots, d\right. \tag{10} g(k)={1,0, if k==j else k=1,,d(10)

根据式(7),沿每个维度在兔子位置附近生成 d d d 个洞六。其中, H H H 是隐藏参数,在迭代过程中,随着随机扰动,隐藏参数从1线性減小到 1 / T 1 / T 1/T 。根据这个参数,最初这些洞穴是在兔子的一个更大的邻域中产生的。随看迭代次数的增加,这个邻域也会減少。
如上所述,兔子经常受到捕食者的追逐和攻击。为了生存,兔子需要找一个安全的地方躲起来。因此,它们被拒绝从洞穴中随机选择一个 洞穴㧶避,以免被抓住。为了对这种随机隐藏策略进行数学建模,提出了以下公式:
v ⃗ i ( t + 1 ) = x ⃗ i ( t ) + R ⋅ ( r 4 ⋅ b ⃗ i , r ( t ) − x ⃗ i ( t ) ) , i = 1 , ⋯   , n (11) \vec{v}_i(t+1)=\vec{x}_i(t)+R \cdot\left(r_4 \cdot \vec{b}_{i, r}(t)-\vec{x}_i(t)\right), i=1, \cdots, n \tag{11} v i(t+1)=x i(t)+R(r4b i,r(t)x i(t)),i=1,,n(11)

g r ( k ) = { 1 ,  if  k = = ⌈ r 5 ⋅ d ⌉ 0 ,  else  k = 1 , ⋯   , d (12) g_r(k)=\left\{\begin{array}{ll} 1, & \text { if } k==\left\lceil r_5 \cdot d\right\rceil \\ 0, & \text { else } \end{array} k=1, \cdots, d\right. \tag{12} gr(k)={1,0, if k==r5d else k=1,,d(12)

b ⃗ i , r ( t ) = x ⃗ i ( t ) + H ⋅ f r ⋅ x ⃗ i ( t ) (13) \vec{b}_{i, r}(t)=\vec{x}_i(t)+H \cdot f_r \cdot \vec{x}_i(t) \tag{13} b i,r(t)=x i(t)+Hfrx i(t)(13)

其中, b ⃗ i , r ( t ) \vec{b}_{i, r}(t) b i,r(t) 表示用于隐藏其 d d d 个洞穴而随机选择的洞穴; r 4 r_4 r4 r 5 r_5 r5 为两个 ( 0 , 1 ) (0,1) (0,1) 范围内的随机数。根据式(11),第 i i i 只搜索个体将尝试从其 d d d 个洞穴中向随机选择的洞穴更新其位置。
在实现绕道颃食和随机躯藏策略中的其中一个之后,兔子的位置更新为:
x ⃗ i ( t + 1 ) = { x ⃗ i ( t ) , f ( x ⃗ i ( t ) ) ≤ f ( v ⃗ i ( t + 1 ) ) v ⃗ i ( t + 1 ) , f ( x ⃗ i ( t ) ) > f ( v ⃗ i ( t + 1 ) ) (14) \vec{x}_i(t+1)= \begin{cases}\vec{x}_i(t), & f\left(\vec{x}_i(t)\right) \leq f\left(\vec{v}_i(t+1)\right) \\ \vec{v}_i(t+1), & f\left(\vec{x}_i(t)\right)>f\left(\vec{v}_i(t+1)\right)\end{cases} \tag{14} x i(t+1)={x i(t),v i(t+1),f(x i(t))f(v i(t+1))f(x i(t))>f(v i(t+1))(14)
该式表示,若兔子的候选位置的适应度比当前位置的适应度好,则兔子将放弃当前位置并更新为由式(1)或式(11)生成的候选位置。

1.3 能量收缩(从探索转向开发)

在ARO算法中,兔子在迭代的初始阶段经常进行绕道觅食,而在迭代的后期则经常进行随机隐藏。这种搜索机制是由兔子的能量产生 的,随着时间的推移,兔子的能量会逐渐减少。因此,设计了一个能量因子来模拟从探索到开发的转换过程。ARO中的能量因子定义如 下:
A ( t ) = 4 ( 1 − t T ) ln ⁡ 1 r (15) A(t)=4\left(1-\frac{t}{T}\right) \ln \frac{1}{r} \tag{15} A(t)=4(1Tt)lnr1(15)
其中 r r r ( 0 , 1 ) (0,1) (0,1) 中的随机数。因此,在ARO中,当能量因子 A ( t ) > 1 A(t)>1 A(t)>1 时,一只 兔子在探索阶段容易随机探索不同兔子的区域采食,因此发生绕行采食;当能量因子 A ( t ) ≤ 1 A(t) \leq 1 A(t)1 时,兔子在挖掘阶段倾向于随机挖掘自己 的洞六,从而发生随机隐藏。根据能量因子 A A A 的大小,ARO可以在绕道总食和随机躯藏之间切换。也就是说,当 A ( t ) > 1 A(t)>1 A(t)>1 时进行探索, 当 A ( t ) ≤ 1 A(t) \leq 1 A(t)1 时进行开发。

在这里插入图片描述

2.实验结果

在这里插入图片描述

3.参考文献

[1] Liying Wang, Qingjiao Cao, Zhenxing Zhang, et al. Artificial rabbits optimization: A new bio-inspired meta-heuristic algorithm for solving engineering optimization problems[J]. Engineering Applications of Artificial Intelligence, 2022, 114: 105082.

4.Matlab

5.Python

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

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

相关文章

【2.1】服务拆分--案例Demo

服务拆分--案例Demo服务拆分注意事项:导入服务拆分Demo测试结果:总结知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如有侵权请私信我。 服务拆分注意事项: 比如现在有一个需求,是查询订单&#x…

国产GPU芯片突破重围,迎来新发展,中国崛起的力量

最近,在GPU芯片领域我们终于迎来新进展,有望突破欧美企业垄断,实现完全国产化。高端GPU芯片对科技发展有着重要作用,广泛应用于云上服务、高密度高性能计算等领域,然而绝大部分GPU芯片市场都被英伟达、AMD、微软等国外…

骨传导耳挂式耳机排名前十名,最好的骨传导耳机推荐

挂耳式的骨传导耳机在佩戴时更舒适以及更加牢固,日常在多种场景使用都能完全兼顾。但是最好的骨传导耳机有哪些呢?还不知道如何选择骨传导耳机,可以看看这五款骨传导耳机~ 1、南卡Runner Pro4骨传导蓝牙耳机 ¥1498 选择骨传导耳机…

Kubernetes那点事儿——控制器Deployment

K8s应用程序生命周期管理——控制器Deployment一、部署应用程序流程二、Deployment控制器1、应用升级、弹性伸缩、回滚、删除2、滚动升级、回滚机制3、定义Deployment前言说到K8s程序的生命周期管理我们不得不提到k8s的控制器。其中Deployment是最为常用的controllers&#xff…

Liga妙谈 | 如何快速甄别、高效响应用户反馈?

敏捷开发说要「拥抱变化」,在充满不确定的环境中,唯一不变的正是变化。面对源源不断的市场反馈和需求变更,敏捷团队应该如何平衡「高效迭代」与「响应用户」的关系,既快又好地完成研发任务,交付业务价值? …

FFmpeg 滤镜详解

FFmpeg Filter 1. 概念介绍 在多媒体处理中,术语滤镜(filter)指的是修改未编码的原始音视频数据帧的一种软件工具。 2. 基本原理 ● 在编码前,ffmpeg可以对raw(真实/原)音频和视频使用libavfilter库中的滤镜进行处理。(非压缩…

骨感传导蓝牙耳机怎么样、骨感传导蓝牙耳机有什么特点

在正文开始前,先跟大家说明一下,骨感传导其实就是我们常说的骨传导,两者是相同的意思,只是表达的文字不太一样。我们可以理解为骨感传导耳机骨传导耳机,那既然是这样,骨传导耳机又是利用什么原理传播声音的…

CentOS搭建web服务器,并内网穿透实现公网访问

在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有tomcat容器、Apache等,这边使用Apache来建搭建。 Apache2 是一种流行…

一节摹课丨做会动的电子贺卡,当懂浪漫的成年人

你正在阅读摹客全新内容栏目【一节摹课】。 本栏目会通过一些有趣的、实用的、好看的、新潮的实操案例,分享摹客“设计12”产品矩阵 —— 「1个协作平台2款设计工具」的具体操作妙计! 带大家一步一步地解锁摹客协作、摹客RP、摹客DT中的大小功能。 一…

非正式全面解析 NebulaGraph 中 Session 管理

NebulaGraph 论坛最近有些讨论帖,各种姿势来问 NebulaGraph Session 管理相关的事情,我寻思这也不是一个法子,还是来写一篇文章来讲述下 NebulaGraph 中的 Session 管理。由于本文设定为非正式的 Session 讲解,所以本文主要分为理…

智能车|直流电机、编码器与驱动器---编码器

智能车|直流电机、编码器与驱动器---编码器编码器编码器简介编码器的工作原理四倍频采集编码器采集程序实现编码器 编码器简介 编码器是一种将角位移或者直线位移转换成一连串电数字脉冲的一种传感器。 可以通过编码器测量电机转动的位移或者速度信息。 编码器按照工作原理…

FTP多目录和多用户配置(用户隔离/虚拟目录)

FTP多目录和多用户配置(用户隔离/虚拟目录) 假设有四个部门分别是user1、user2、user3、admin。要求四个部门都有各自有独立的访问目录,且admin部门可以访问其他部门的文件但不能对其进行修改。 1、创建ftp文件→再创建LocalUser(…

【图像处理OpenCV(C++版)】——3.1几何变换之仿射变换

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

CSS 颜色

文章目录CSS 颜色关键字 & 十六进制 & RGBopacity 透明度RGBA 颜色CSS3 渐变线性渐变径向渐变CSS 颜色 关键字 & 十六进制 & RGB W3C十六色 opacity 透明度 语法 opacity: 数值;说明 在CSS3中,我们可以使用opacity属性来定义元素的透明度。 o…

excel排序求和:如何统计前几名数据合计 下篇

上次咱们说到一个公式SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H2))这部分如果写成ROW(1:H2)就会报错: 原因也告诉大家了,就是ROW函数的参数只能使用单元格或单元格区域。 因此解决的办…

Java IO流 - 字节流的使用详细介绍

文章目录IO流的基本介绍字节流的使用文件字节输入流创建字节输入流每次读取一个字节每次读取一个数组一次读取全部字节文件字节输出流创建字节输出流写入文件输出流文件拷贝练习IO流的基本介绍 IO流的概述: I 表示intput,是数据从硬盘文件读入到内存的过程&#xf…

频谱分析仪关键性能指标

频谱分析仪关键性能指标 频谱分析仪作为分析仪表,其基本性能要求包含: 1. 频率方面指标: 测量频率范围:反映频谱仪测量信号范围能力; 频率分辨率:反映频谱仪分辨两个频率间隔信号的能力。 2. 幅方面度指标&#x…

银河麒麟(aarch64)安装Qt,报错main.cpp:8:5: error: unknown type name ‘MainWindow‘...

环境: 版本:银河麒麟桌面操作系统V10(SP1) 内核:Linux 5.4.18-35-generic CPU:Phytium,D2000/8 终端输入 uname -m 查看 架构 aarch64 在商店安装Qt, 安装完成后 工具-选项-kits构…

SAP ABAP——SAP简介(五)【ABAP的前世今生和未来】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

kali安装cobaltstrike详细教程

下载cobaltstrike-linux版本,此下载链接提供4.3,4.4,4.5三个版本https://download.csdn.net/download/weixin_59679023/87354658 xshell上传至kali,解压 unzip cobaltstrike 进入cobaltstrike目录,ls查看如下 ls 给cs的服务端teamserver和客户端start.sh执行权限 chmod …