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

摘要:人工兔优化算法( [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​))⋅n1​i,j=1,⋯,n and j=i​(1)

R = L ⋅ c (2) R=L \cdot c \tag{2} R=L⋅c(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=(e−e(Tt−1​)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,⋯,⌈r3​⋅d⌉(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} n1​∼N(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)+H⋅g⋅x 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=TT−t+1​⋅r4​(8)

n 2 ∼ N ( 0 , 1 ) (9) n_2 \sim N(0,1) \tag{9} n2​∼N(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⋅(r4​⋅b 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==⌈r5​⋅d⌉ 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)+H⋅fr​⋅x 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(1−Tt​)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

智能优化算法:人工兔优化算法-附代码相关推荐

  1. 基于人工兔优化算法的函数寻优和工程优化

    文章目录 一.理论基础 1.人工兔优化算法 (1)绕道觅食(探索) (2)随机躲藏(开发) (3)能量收缩(从探索转向开发) 2.ARO算法伪代码 二.仿真实验与结果分析 1.函数寻优 2.工程优化 ...

  2. 单目标应用:求解单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP)的人工兔优化算法ARO

    一.算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道觅食和随机躲藏 ...

  3. 多目标优化算法:基于非支配排序的人工兔优化算法(Non-Dominated Sorting Artificial Rabbits Optimization ,NSARO)

    一.人工兔优化算法算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道 ...

  4. 多目标优化算法:多目标人工兔优化算法(Multi-Objective Artificial Rabbits Optimization ,MOARO)

    一.人工兔优化算法算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道 ...

  5. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  6. 基于布谷鸟算法优化的Elman神经网络数据预测-附代码

    基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  7. 基于鲸鱼算法优化的Elman神经网络数据预测-附代码

    基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  8. 基于海鸥算法优化的Elman神经网络数据预测-附代码

    基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  9. 基于遗传算法优化的Elman神经网络数据预测-附代码

    基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

最新文章

  1. R语言可视化包ggplot2改变图例(legend)元素的大小实战:包含图例中标题字体、文本字体、标识模块(key)的大小
  2. 反射学习笔记之动态创建对象和调用方法
  3. SpringBoot - 优雅的实现【自定义参数校验】高级进阶
  4. DZ各个数据表详解(DZ论坛各表详细说明,二次开发用)
  5. JSON与Struts2的结合使用
  6. JavaScript 原型链学习(二)原型的动态性
  7. 从C到C++ string类
  8. MATLAB显示中文乱码问题 MATLAB2016
  9. 精心挑选的100多种机器学习数据集
  10. 树莓派 opencv 调用摄像头
  11. 学习笔记——物联网知识
  12. 魔兽争霸V星际争霸V红警
  13. 【持续更新】【产品相关名词解释】CBD、BOM、DFM、EVT、EOF、CMF、PP、MP等
  14. 黄河金岸诗词大赛获奖作品选登(2:现代新诗)
  15. panabit之PPPoE认证
  16. MYSQL排序加分页报错Out of sort memory, consider increasing server sort buffer size
  17. 开涛的博客 spring
  18. 从捕获的网络流量包提取数据
  19. 11+++各类计算机病毒介绍
  20. 利用R语言irr包计算ICC值(组内相关系数)

热门文章

  1. Mecanim动画系统 - 在角色上使用Mask 叠加动画层
  2. 与雅虎专利战 微软助阵Facebook
  3. 键盘录入两个数a,b并接收,编写代码实现a,b交换,打印结果
  4. 开机出现 system32\config\system,代码:0xc00000e9解决方法
  5. javabean:setProperty的四种方法
  6. 河圖-河圖生의 時運의 圖像
  7. ie的html缓存问题,解决IE下Ajax请求无效,IE请求缓存问题
  8. Tensorflow Slim入门教程(1)
  9. 烟台大学 计114-3.4 班学生的博客地址
  10. 2023年,新年伊始,万象更新,我的生活也将是全新的!