【智能算法】星鸦优化算法(NOA)原理及实现

server/2024/10/22 0:17:01/

在这里插入图片描述

目录


1.背景

2023年,M Abdel-Basset等人受到克拉克的星鸦自然行为启发,提出了星鸦优化算法算法(Nutcracker Optimization Algorithm, NOA)。

在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

NOA模拟了星鸦自然行为,星鸦在不同的时期表现出两种不同的行为。星鸦的季节性行为可以分为两个主要部分:

  • 夏季和秋季的种子储存:在这两个季节,星鸦积极寻找种子并将其储存在精心挑选的贮藏处,为冬季缺食的时期做准备。
  • 冬季和春季的基于记忆的寻食:利用空间记忆策略,星鸦通过识别地标和其他视觉线索来找到之前隐藏的种子。如果无法找到储存的种子,它们则会随机探索周围环境以寻找食物。

在这里插入图片描述

2.2算法过程

NOA模拟星鸦的行为,两种主要策略:(i)觅食和储存策略;(ii)缓存搜索和恢复策略
在这里插入图片描述
在这里插入图片描述

觅食阶段:探索阶段1

星鸦在搜索空间内进行寻食,它首先检查每个锥体的初始位置来寻找种子。如果发现优质的种子,星鸦会将其运送到储藏区并将其埋藏。如果未找到优质种子,它将继续在松树或其他树种的不同位置搜索新的种子:
X ⃗ i t + 1 = { X i , j t i f τ 1 < τ 2 { X m , j t + γ ⋅ ( X A , j t − X B , j t ) + μ . ( r 2 . U j − L j ) , i f t ≤ T m a x / 2.0 X C , j t + μ ⋅ ( X A , j t − X B , j t ) + μ . ( r 1 < δ ) . ( r 2 . U j − L j ) , o t h e r w i s e (1) \vec{X}_{i}^{t+1}=\begin{cases}X_{i,j}^{t}&\mathrm{if~}\tau_{1}<\tau_{2}\\\begin{cases}X_{m,j}^{t}+\gamma\cdot\left(X_{A,j}^{t}-X_{B,j}^{t}\right)\\\\+\mu.\left(r^{2}.U_{j}-L_{j}\right),&\mathrm{if~}t\leq T_{max}/2.0\\\\X_{C,j}^{t}+\mu\cdot\left(X_{A,j}^{t}-X_{B,j}^{t}\right)\\\\+\mu.\left(r_{1}<\delta\right).\left(r^{2}.U_{j}-L_{j}\right),&\mathrm{otherwise}\end{cases}\\\end{cases}\tag{1} X it+1= Xi,jt Xm,jt+γ(XA,jtXB,jt)+μ.(r2.UjLj),XC,jt+μ(XA,jtXB,jt)+μ.(r1<δ).(r2.UjLj),if tTmax/2.0otherwiseif τ1<τ2(1)
γ参数为莱维飞行得到,µ是基于正态分布(τ4), levy-flight (τ5),随机在0到1 (τ3)之间生成的数:
μ = { τ 3 i f r 1 < r 2 τ 4 i f r 2 < r 3 τ 5 i f r 1 < r 3 (2) \mu=\begin{cases}\tau_3&if r_1<r_2\\[2ex]\tau_4&if r_2<r_3\\[2ex]\tau_5&if r_1<r_3\end{cases}\tag{2} μ= τ3τ4τ5ifr1<r2ifr2<r3ifr1<r3(2)
τ1和τ2作为尺度因子控制NOA探索能力,可以在τ1和τ2的大小范围内交替进行局部和全局搜索。µ提供星鸦信息有关所需的方向与各种步长,以探索一个新的位置。

存储阶段:开发阶段1

星鸦首先将在前一阶段(探索阶段1)中获得的食物运送到临时存储地点(存储区域):
X ⃗ i t + 1 ( n e w ) = { X ⃗ i t + μ ⋅ ( X ⃗ b e s t t − X ⃗ i t ) ⋅ ∣ λ ∣ + r 1 ⋅ ( X ⃗ A t − X ⃗ B t ) if  τ 1 < τ 2 X ⃗ b e s t t + μ ⋅ ( X ⃗ A t − X ⃗ B t ) if  τ 1 < τ 3 X ⃗ b e s t t ⋅ l Otherwise (3) \vec{X}_i^{t+1(new)}=\begin{cases}\vec{X}_i^t+\mu\cdot\left(\vec{X}_{best}^t-\vec{X}_i^t\right)\cdot|\lambda|+r_1\cdot\left(\vec{X}_A^t-\vec{X}_B^t\right)&\text{if }\tau_1<\tau_2\\\vec{X}_{best}^t+\mu\cdot\left(\vec{X}_A^t-\vec{X}_B^t\right)&\text{if }\tau_1<\tau_3\\\vec{X}_{best}^t\cdot l&\text{Otherwise}\end{cases}\tag{3} X it+1(new)= X it+μ(X besttX it)λ+r1(X AtX Bt)X bestt+μ(X AtX Bt)X besttlif τ1<τ2if τ1<τ3Otherwise(3)
l是NOA开发行为从1到0线性递减的因子,觅食阶段与缓存之间平衡:
X ⃗ i t + 1 = { Eq.(1), if  φ > P a 1 Eq.(3), otherwise (4) \vec{X}_i^{t+1}=\begin{cases}\text{Eq.(1),}&\text{if }\varphi>P_{a_1}\\[2ex]\text{Eq.(3),}&\text{otherwise}\end{cases}\tag{4} X it+1= Eq.(1),Eq.(3),if φ>Pa1otherwise(4)
其中φ是0到1之间的随机数,Pa1表示从1到0线性递减的概率值。
在这里插入图片描述

参考记忆

在将种子储存好之后,星鸦将会激活记忆,它们依靠对贮藏物所在位置的记忆来度过冬天。

缓存搜索阶段:探索阶段2

星鸦利用了一种层级记忆策略来恢复它们隐藏的食物,如果星鸦不能找到第一个RP储存的食物,那么它将通过第二个RP识别它。如果星鸦不能第二次检索它的缓存,那么它将使用第三个引用。第一个RP是通过更新相邻区域内的当前位置来找到星鸦周围隐藏的缓存:
R P → i , k t = X ⃗ i t + α ⋅ cos ⁡ ( θ ) ⋅ ( ( X ⃗ A t − X ⃗ B t ) ) , k = 1 (5) \overrightarrow{RP}_{i,k}^t=\vec{X}_i^t+\alpha\cdot\cos{(\theta)}\cdot\left(\left(\vec{X}_A^t-\vec{X}_B^t\right)\right),k=1\tag{5} RP i,kt=X it+αcos(θ)((X AtX Bt)),k=1(5)
在这里插入图片描述
探索不同的区域寻找隐藏的宝藏,第二个RP表述为:
R P → i , k t = X ⃗ i t + α ⋅ cos ⁡ ( θ ) ⋅ ( ( U ⃗ − L ⃗ ) ⋅ τ 3 + L ⃗ ) ⋅ U → 2 , k = 2 U → 1 = { 1 r 2 → < P τ p 0 o t h e r w i s e (6) \begin{aligned}&\overrightarrow{RP}_{i,k}^{t}=\vec{X}_{i}^{t}+\alpha\cdot\cos{(\theta)}\cdot\left(\left(\vec{U}-\vec{L}\right)\cdot\tau_{3}+\vec{L}\right)\cdot\overrightarrow{U}_{2},k=2\\&\overrightarrow{U}_{1}=\begin{cases}1&\overrightarrow{r_{2}}<P_{\tau p}\\0&otherwise\end{cases}\end{aligned}\tag{6} RP i,kt=X it+αcos(θ)((U L )τ3+L )U 2,k=2U 1={10r2 <Pτpotherwise(6)
星鸦在三维空间中有三个不同的位置,一个缓存有三个不同的RP位置:
R P → i , 1 t = { X ⃗ i t + α ⋅ cos ⁡ ( θ ) ⋅ ( ( X ⃗ A t − X ⃗ B t ) ) + α ⋅ R P , i f θ = π / 2 X ⃗ i t + α ⋅ cos ⁡ ( θ ) ⋅ ( ( X ⃗ A t − X ⃗ B t ) ) , o t h e r w i s e (7) \overrightarrow{RP}_{i,1}^{t}=\begin{cases}\vec{X}_{i}^{t}+\alpha\cdot\cos\left(\theta\right)\cdot\left(\left(\vec{X}_{A}^{t}-\vec{X}_{B}^{t}\right)\right)+\alpha\cdot RP,&if \theta=\pi/2\\\vec{X}_{i}^{t}+\alpha\cdot\cos\left(\theta\right)\cdot\left(\left(\vec{X}_{A}^{t}-\vec{X}_{B}^{t}\right)\right),&other wise\end{cases}\tag{7} RP i,1t= X it+αcos(θ)((X AtX Bt))+αRP,X it+αcos(θ)((X AtX Bt)),ifθ=π/2otherwise(7)
R P → i , 2 t = { X ⃗ i t + ( α ⋅ cos ⁡ ( θ ) ⋅ ( ( U ⃗ − L ⃗ ) ⋅ τ 3 + L ⃗ ) + α ⋅ R P ) ⋅ U → 2 , i f θ = π / 2 X ⃗ i t + α ⋅ cos ⁡ ( θ ) ⋅ ( ( U ⃗ − L ⃗ ) ⋅ τ 3 + L ⃗ ) ⋅ U → 2 , o t h e r w i s e (8) \overrightarrow{RP}_{i,2}^{t}=\begin{cases}\vec{X}_{i}^{t}+\left(\alpha\cdot\cos\left(\theta\right)\cdot\left(\left(\vec{U}-\vec{L}\right)\cdot\tau_{3}+\vec{L}\right)+\alpha\cdot RP\right)\cdot\overrightarrow{U}_{2}, if \theta=\pi/2\\\vec{X}_{i}^{t}+\alpha\cdot\cos(\theta)\cdot\left(\left(\vec{U}-\vec{L}\right)\cdot\tau_{3}+\vec{L}\right)\cdot\overrightarrow{U}_{2},&other wise\end{cases}\tag{8} RP i,2t= X it+(αcos(θ)((U L )τ3+L )+αRP)U 2,ifθ=π/2X it+αcos(θ)((U L )τ3+L )U 2,otherwise(8)
α确保NOA定期收敛,允许胡桃夹子在下一代中改进其RP选择:
α = { ( 1 − t T m a x ) 2 t T m a x , i f r 1 > r 2 ( t T m a x ) 2 t , o t h e r w i s e (9) \alpha=\begin{cases}\left(1-\frac t{T_{max}}\right)^{2\frac t{T_{max}}},&if r_1>r_2\\\\\left(\frac t{T_{max}}\right)^{\frac2t},&otherwise&\end{cases}\tag{9} α= (1Tmaxt)2Tmaxt,(Tmaxt)t2,ifr1>r2otherwise(9)
随着每次迭代,算法将以适当的rp探索和利用缓存周围的区域,以避免陷入局部最小值:
X ⃗ i t + 1 = { X ⃗ i t , i f f ( X ⃗ i t ) < i f ( R P ⃗ i , 1 t ) R P → i , 1 t , o t h e r w i s e (10) \vec{X}_i^{t+1}=\begin{cases}\vec{X}_i^t,&\quad if f\left(\vec{X}_i^t\right)<if (\vec{RP}_{i,1}^t)\\\overrightarrow{RP}_{i,1}^t,&\quad other wise\end{cases}\tag{10} X it+1= X it,RP i,1t,iff(X it)<if(RP i,1t)otherwise(10)

恢复阶段:开发阶段2

星鸦在寻找它的食物时可能存在两种可能。第一,星鸦可以使用第一个RP记住缓存的位置。第二,该食物不存在:
X i , j t + 1 = { X i , j t , i f τ 3 < τ 4 X i , j t + r 1 ⋅ ( X b e s t , j t − X i , j t ) + r 2 ⋅ ( R P → i , 1 t − X C , j t ) , o t h e r w i s e (11) X_{i,j}^{t+1}=\begin{cases}X_{i,j}^{t},&if \tau_{3}<\tau_{4}\\X_{i,j}^{t}+r_{1}\cdot\left(X_{best,j}^{t}-X_{i,j}^{t}\right)+r_{2}\cdot\left(\overrightarrow{RP}_{i,1}^{t}-X_{C,j}^{t}\right),&otherwise\end{cases}\tag{11} Xi,jt+1= Xi,jt,Xi,jt+r1(Xbest,jtXi,jt)+r2(RP i,1tXC,jt),ifτ3<τ4otherwise(11)

在这里插入图片描述

第二个RP进行更新:
X ⃗ i t + 1 = { X ⃗ i t , i f f ( X ⃗ i t ) < i f ( R P ⃗ i , 2 t ) R P → i , 2 t , o t h e r w i s e (12) \vec{X}_{i}^{t+1}=\begin{cases}\vec{X}_{i}^{t},&if f\left(\vec{X}_{i}^{t}\right)<if (\vec{RP}_{i,2}^{t})\\\overrightarrow{RP}_{i,2}^{t},&otherwise\end{cases}\tag{12} X it+1= X it,RP i,2t,iff(X it)<if(RP i,2t)otherwise(12)
假设星鸦使用第二个RP找到它的缓存:
X i j t + 1 = { X i j t , i f τ 5 < τ 6 X i j t + r 1 ⋅ ( X b e s t , j t − X i j t ) + r 2 ⋅ ( R → P i , 2 t − X c j t ) , o t h e r w i s e (13) X_{ij}^{t+1}=\begin{cases}X_{ij}^t,&if \tau_5<\tau_6\\X_{ij}^t+r_1\cdot\left(X_{best,j}^t-X_{ij}^t\right)+r_2\cdot\left(\overrightarrow{R}P_{i,2}^t-X_{cj}^t\right),&otherwise\end{cases}\tag{13} Xijt+1={Xijt,Xijt+r1(Xbest,jtXijt)+r2(R Pi,2tXcjt),ifτ5<τ6otherwise(13)
算法围绕涉及最优解的最合适区域加强局部搜索,总结为:
X ⃗ i t + 1 = { Eq.(13), if τ 7 < τ 8 Eq.(15), otherwise (14) \vec{X}_i^{t+1}=\begin{cases}\text{Eq.(13),}&\text{if} \tau_7<\tau_8\\[2ex]\text{Eq.(15),}&\text{otherwise}\end{cases}\tag{14} X it+1= Eq.(13),Eq.(15),ifτ7<τ8otherwise(14)
等式中的第一种情况表示记住隐藏存储的星鸦,而第二种情况表示不记住隐藏存储的星鸦。第一个rp和第二个rp的探索行为之间平衡:
X ⃗ i t + 1 = { Eq.(12), if f(Eq.(12))<f(Eq.(14)) Eq.(14), otherwise (15) \vec{X}_{i}^{t+1}=\begin{cases}\text{Eq.(12),}&\text{if f(Eq.(12))<f(Eq.(14))}\\\text{Eq.(14),}&\text{otherwise}\end{cases}\tag{15} X it+1={Eq.(12),Eq.(14),if f(Eq.(12))<f(Eq.(14))otherwise(15)
缓存搜索阶段与回收阶段的交换按照下式进行,以保持勘探与开采的平衡:
X ⃗ i t + 1 = { E q . ( 16 ) , i f ϕ > P a 2 E q . ( 17 ) , o t h e r w i s e (16) \vec{X}_{i}^{t+1}=\begin{cases}\mathrm{Eq.} ( 16),\quad if \phi>P_{a_{2}}\\[2ex]\mathrm{Eq.} ( 17 ),\quad other wise\end{cases}\tag{16} X it+1= Eq.(16),ifϕ>Pa2Eq.(17),otherwise(16)
在这里插入图片描述
在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

使用测试框架,测试NOA性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2017-F13
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Abdel-Basset M, Mohamed R, Jameel M, et al. Nutcracker optimizer: A novel nature-inspired metaheuristic algorithm for global optimization and engineering design problems[J]. Knowledge-Based Systems, 2023, 262: 110248.


http://www.ppmy.cn/server/6098.html

相关文章

eBay、亚马逊自养号测评如何避免风控账号关联选择合适网络IP环境

在自养号下单中选择适合的网络环境至关重要。经过多次实践与测试&#xff0c;积累了大量的经验&#xff0c;希望能够与大家分享&#xff0c;帮助大家避开陷阱&#xff0c;顺利前行。 市面上的网络环境种类繁多&#xff0c;从纯IP类的Luminati、Rola&#xff0c;到纯环境类的VM…

多模态视觉语言模型:BLIP和BLIP2

1. BLIP BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP的总体结构如下所示&#xff0c;主要包括三部分&#xff1a; 单模态编码器&#xff08;Image encoder/Text encoder&#xff09;&#xff1a;分别进…

产品经理常用工具汇总

英文名称中文名称描述Axure原型原型图&#xff0c;流程图&#xff0c;框架图&#xff0c;原型图&#xff1b;Axhub团队原型共享Axure原型团队共享&#xff0c;链接转发&#xff1b;iconfont阿里矢量图标图标下载&#xff0c;协助原型和方案&#xff1b;visio流程图 业务流程图&…

【java】(软考)面向对象---责任链解析

目录 责任链的意义 手写笔记 ​编辑 责任链的意义 当您把请求给出时&#xff0c;如果某对象不能实现您的操作&#xff0c;责任链会自动把您的请求传给它的下一级 从而避免请求的发送者和接受者之间的耦合关系 这里以2007年下半年试题七进行说明 题目描述 某企业的采购审批…

机器学习理论基础—神经网络算法公式学习

机器学习理论基础—神经网络公式学习 M-P神经元 M-P神经元&#xff08;一个用来模拟生物行为的数学模型&#xff09;&#xff1a;接收n个输入(通常是来自其他神经 元)&#xff0c;并给各个输入赋予权重计算加权和&#xff0c;然后和自身特有的阈值进行比较 (作减法&#xff0…

信号分解 | VMD(变分模态分解)-Matlab

分解效果 VMD(变分模态分解) 变分模态分解(Variational Mode Decomposition,VMD)是一种信号分解方法,用于将非平稳信号分解为一组模态函数。VMD是一种自适应的数据驱动方法,可以有效地处理具有非线性和非平稳特性的信号。 VMD的基本思想是通过迭代优化过程,将原始信号分…

HarmonyOs开发:导航tabs组件封装与使用

前言 主页的底部导航以及页面顶部的切换导航&#xff0c;无论哪个系统&#xff0c;哪个App&#xff0c;都是最常见的功能之一&#xff0c;虽然说在鸿蒙中有现成的组件tabs可以很快速的实现&#xff0c;但是在使用的时候&#xff0c;依然有几个潜在的问题存在&#xff0c;第一&a…

一文学会 ts 构建工具 —— tsup

文章目录 能打包什么&#xff1f;安装用法自定义配置文件条件配置在 package.json 中配置多入口打包生成类型声明文件sourcemap生成格式自定义输出文件代码分割产物目标环境支持 es5编译的环境变量对开发命令行工具友好监听模式 watch提供成功构建的钩子 onSuccess压缩产物 min…