当前位置: 首页 > news >正文

基于海马优化算法的函数寻优算法

文章目录

  • 一、理论基础
    • 1、海马优化算法
      • (1)初始化
      • (2)海马的移动行为
      • (3)海马的捕食行为
      • (4)海马的繁殖行为
    • 2、SHO算法伪代码
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

1、海马优化算法

文献[1]以自然界中海马的运动、捕食和繁殖行为为灵感,提出了一种新的基于群体智能的元启发式算法——海马优化算法(Sea-horse optimizer, SHO)。

(1)初始化

与其他现有的元启发式相似,SHO也从种群初始化开始。设每只海马代表问题搜索空间中的一个候选解,海马的整个种群(简称海马)可表示为: S e a h o r s e s = [ x 1 1 ⋯ x 1 D i m ⋮ ⋱ ⋮ x p o p 1 ⋯ x p o p D i m ] (1) Seahorses=\begin{bmatrix}x_1^1 & \cdots & x_1^{Dim}\\\vdots & \ddots & \vdots\\x_{pop}^1 & \cdots & x_{pop}^{Dim}\end{bmatrix}\tag{1} Seahorses= x11xpop1x1DimxpopDim (1)其中, D i m Dim Dim表示变量的维数, p o p pop pop表示种群个体数量。
每个解都是在指定问题的下限和上限之间随机生成的,分别用 L B LB LB U B UB UB表示。搜索空间 [ L B , U B ] [LB,UB] [LB,UB]中第 i i i个个体 X i X_i Xi的表达式为: X i = [ x i 1 , … , x i D i m ] x i j = r a n d × ( U B j − L B j ) + L B j (2) \begin{array}{c}X_i=\left[x_i^1,\ldots,x_i^{Dim}\right]\\[2ex]x_i^j=rand\times(UB^j-LB^j)+LB^j\end{array}\tag{2} Xi=[xi1,,xiDim]xij=rand×(UBjLBj)+LBj(2)其中, r a n d rand rand表示 [ 0 , 1 ] [0,1] [0,1]中的随机值, x i j x_i^j xij表示第 i i i个个体的第 j j j维, i i i是取值范围为 1 ∼ p o p 1\sim pop 1pop的正整数, j j j是取值范围为 [ 1 , D i m ] [1,Dim] [1,Dim]的正整数, L B j LB^j LBj U B j UB^j UBj表示优化问题第 j j j个变量的下界和上界。
以最小优化问题为例,将适应度最小的个体视为精英个体,记为 X e l i t e X_{elite} Xelite X e l i t e X_{elite} Xelite可由式(3)得到: X e l i t e = a r g m i n ( f ( X i ) ) (3) X_{elite}=argmin(f(X_i))\tag{3} Xelite=argmin(f(Xi))(3)其中, f ( ⋅ ) f(\cdot) f()为给定问题的目标函数值。

(2)海马的移动行为

对于海马的移动行为,海马的不同运动模式近似服从正态分布 r a n d n ( 0 , 1 ) randn(0,1) randn(0,1)。为了权衡探索和开发的性能,取 r 1 = 0 r_1 = 0 r1=0为分界点,一半用于局部开发,另一半用于全局搜索。所以运动可以分为以下两种情况:
第一种情况:海马的螺旋运动伴随着海洋中的旋涡。当正态随机值 r 1 r_1 r1位于分界点右侧时,它主要实现SHO的局部开发。海马沿着螺旋运动向精英个体 X e l i t e X_{elite} Xelite移动,特别是使用莱维飞行来模拟海马的移动步长,这有利于在迭代早期以较大概率跨越到其他位置的海马,避免了SHO的过度局部开发。同时,海马的这种螺旋移动方式不断改变旋转角度,以扩大现有局部解的邻域。在这种情况下,可以用数学表示,生成海马的新位置如下: X n e w 1 ( t + 1 ) = X i ( t ) + L e v y ( λ ) ( ( X e l i t e ( t ) − X i ( t ) ) × x × y × z + X e l i t e ) (4) X_{new}^1(t+1)=X_i(t)+Levy(\lambda)((X_{elite}(t)-X_i(t))\times x\times y\times z+X_{elite})\tag{4} Xnew1(t+1)=Xi(t)+Levy(λ)((Xelite(t)Xi(t))×x×y×z+Xelite)(4)其中, x = ρ × cos ⁡ ( θ ) x=\rho\times\cos(\theta) x=ρ×cos(θ) y = ρ × sin ⁡ ( θ ) y=\rho\times\sin(\theta) y=ρ×sin(θ) z = ρ × θ z=\rho\times\theta z=ρ×θ分别表示螺旋运动下坐标 ( x , y , z ) (x, y, z) (x,y,z)的三维分量,这有利于更新搜索代理的位置; ρ = u × e × v \rho=u\times e^{\times v} ρ=u×e×v表示由对数螺旋常数 u u u v v v定义的杆的长度(设置 u = 0.05 u=0.05 u=0.05 v = 0.05 v=0.05 v=0.05); θ \theta θ [ 0 , 2 π ] [0,2\pi] [0,2π]之间的随机值; L e v y ( z ) Levy(z) Levy(z)表示莱维飞行分布函数,并且由式(5)计算得到。 L e v y ( z ) = s × w × σ ∣ k ∣ 1 λ (5) Levy(z)=s\times\frac{w\times\sigma}{|k|^{\frac1\lambda}}\tag{5} Levy(z)=s×kλ1w×σ(5)在式(5)中, λ \lambda λ [ 0 , 2 ] [0,2] [0,2]之间的随机数(本文设 λ = 1.5 \lambda = 1.5 λ=1.5), s s s是一个固定常数0.01, w w w k k k是[0,1]之间的随机数, σ σ σ由式(6)计算: σ = ( Γ ( 1 + λ ) × sin ⁡ ( π λ 2 ) Γ ( 1 + λ 2 ) × λ × 2 ( λ − 1 2 ) ) (6) \sigma=\left(\frac{\Gamma(1+\lambda)\times\displaystyle\sin\left(\frac{\pi\lambda}{2}\right)}{\displaystyle\Gamma\left(\frac{1+\lambda}{2}\right)\times\lambda\times2^{\left(\frac{\lambda-1}{2}\right)}}\right)\tag{6} σ= Γ(21+λ)×λ×2(2λ1)Γ(1+λ)×sin(2πλ) (6)第二种情况:海马随海浪的布朗运动。在漂移作用下,当 r 1 r_1 r1位于分界点左侧时,进行SHO探索。在这种情况下,搜索操作对于避免SHO的局部极值非常重要。布朗运动用于模拟海马的另一个移动长度,以确保其在搜索空间中更好地探索。这种情况下的数学表达式为: X n e w 1 ( t + 1 ) = X i ( t ) + r a n d ∗ l ∗ β t ∗ ( X i ( t ) − β t ∗ X e l i t e ) (7) X_{new}^1(t+1)=X_i(t)+rand^*l^*{\beta_t}^*\left(X_i(t)-{\beta_t}^*X_{elite}\right)\tag{7} Xnew1(t+1)=Xi(t)+randlβt(Xi(t)βtXelite)(7)其中, l l l为常数系数(本文设置 l = 0.05 l=0.05 l=0.05); β t \beta_t βt为布朗运动的随机游走系数,本质上是一个服从标准正态分布的随机值。它可以由式(8)得到。 β t = 1 2 π e x p ( − x 2 2 ) (8) \beta_t=\frac{1}{\sqrt{2\pi}}exp\left(-\frac{x^2}{2}\right)\tag{8} βt=2π 1exp(2x2)(8)综上所述,这两种情况可以得到海马在第 t t t次迭代时的新位置: X n e w 1 ( t + 1 ) = { X i ( t ) + L e v y ( λ ) ( ( X e l i t e ( t ) − X i ( t ) ) × x × y × z + X e l i t e ) r 1 > 0 X i ( t ) + r a n d ∗ l ∗ β t ∗ ( X i ( t ) − β t ∗ X e l i t e )   r 1 ≤ 0 (9) X_{new}^1(t+1)=\begin{dcases}X_i(t)+Levy(\lambda)((X_{elite}(t)-X_i(t))\times x\times y\times z+X_{elite})\quad r_1>0\\[2ex]X_i(t)+rand^*l^*{\beta_t}^*\left(X_i(t)-{\beta_t}^*X_{elite}\right)\quad\quad\quad\quad\quad\quad\quad\quad\quad\, r_1\leq0\end{dcases}\tag{9} Xnew1(t+1)= Xi(t)+Levy(λ)((Xelite(t)Xi(t))×x×y×z+Xelite)r1>0Xi(t)+randlβt(Xi(t)βtXelite)r10(9)其中, r 1 = r a n d n ( ) r_1=randn() r1=randn()表示标准正态随机数。

(3)海马的捕食行为

海马捕食浮游动物和小型甲壳动物有两种结果:成功和失败。考虑到海马成功捕获食物的概率超过90%,设计SHO的随机数 r 2 r_2 r2来区分这两个结果,并将其设置为临界值0.1。由于精英在一定程度上表示了猎物的大致位置,因此捕食成功强调了SHO的开发能力。如果 r 2 > 0.1 r_2>0.1 r2>0.1,则意味着海马的捕食是成功的,即海马接近猎物(精英),比猎物移动得更快,最终将其捕获。否则,当捕食失败时,两者的响应速度与之前相反,这意味着海马倾向于探索搜索空间。这种捕食行为的数学表达式是: X n e w 2 ( t + 1 ) = { α ∗ ( X e l i t e − r a n d ∗ X n e w 1 ( t ) ) + ( 1 − α ) ∗ X e l i t e i f    r 2 > 0.1 ( 1 − α ) ∗ ( X n e w 1 ( t ) − r a n d ∗ X e l i t e ) + α ∗ X n e w 1 ( t ) i f    r 2 ≤ 0.1 (10) X_{new}^2(t+1)=\begin{dcases}\alpha^*\left(X_{elite}-rand^*X_{new}^1(t)\right)+(1-\alpha)^*X_{elite}\quad\quad if\,\,r_2>0.1\\[2ex](1-\alpha)^*\left(X_{new}^1(t)-rand^*X_{elite}\right)+\alpha^*X_{new}^1(t)\quad if\,\,r_2\leq0.1\end{dcases}\tag{10} Xnew2(t+1)= α(XeliterandXnew1(t))+(1α)Xeliteifr2>0.1(1α)(Xnew1(t)randXelite)+αXnew1(t)ifr20.1(10)其中, X n e w 1 ( t ) X_{new}^1(t) Xnew1(t)表示海马在迭第 t t t次迭代时移动后的新位置; r 2 r_2 r2 [ 0 , 1 ] [0,1] [0,1]之间的随机数; α \alpha α随迭代线性减小,以调整海马捕食时的移动步长,由式(11)计算。 α = ( 1 − t T ) 2 t T (11) \alpha=\left(1-\frac tT\right)^{\frac{2t}{T}}\tag{11} α=(1Tt)T2t(11)其中, T T T表示最大迭代次数。

(4)海马的繁殖行为

根据适应度值,种群被分为雄性和雌性群体。由于雄性海马负责繁殖,SHO算法将具有最佳适应度值的一半个体作为父体,另一半作为母体。这种划分将有利于父体和母体之间继承好的特征,以培养下一代,并避免新解决方案的过度局部化。海马角色分配的数学表达式为: f a t h e r s = X s o r t 2 ( 1 : p o p / 2 ) m o t h e r s = X s o r t 2 ( p o p / 2 + 1 : p o p ) (12) \begin{array}{c}fathers=X_{sort}^2(1:pop/2)\\[2ex]mothers=X_{sort}^2(pop/2+1:pop)\end{array}\tag{12} fathers=Xsort2(1:pop/2)mothers=Xsort2(pop/2+1:pop)(12)其中, X s o r t 2 X_{sort}^2 Xsort2表示所有 X n e w 2 X_{new}^2 Xnew2按适应度值升序排列, f a t h e r s fathers fathers m o t h e r s mothers mothers分别来自雄性和雌性群体。
雄性和雌性随机交配产生新的后代。为了使所提出的SHO算法易于执行,假设每对海马只繁殖一个后代。第 i i i个子代的表达式如下: X i o f f s p r i n g = r 3 X i f a t h e r + ( 1 − r 3 ) X i m o t h e r (13) X_i^{offspring}=r_3X_i^{father}+(1-r_3)X_i^{mother}\tag{13} Xioffspring=r3Xifather+(1r3)Ximother(13)其中, r 3 r_3 r3 [ 0 , 1 ] [0,1] [0,1]之间的随机数, i i i [ 1 , p o p / 2 ] [1,pop/2] [1,pop/2]范围内的正整数, X f a t h e r X^{father} Xfather X m o t h e r X^{mother} Xmother分别表示从雄性和雌性群体中随机选择的个体。

2、SHO算法伪代码

SHO算法的伪代码如图1所示。
在这里插入图片描述

图1 SHO算法伪代码

二、仿真实验与结果分析

将SHO与SCA、SFO、TSA和ChOA进行对比,以文献[1]中表2~表4的F3、F5、F7(单峰函数/30维)、F10、F11、F12(多峰函数/30维)、F15、F16、F18(固定维度多峰函数/4维、2维、2维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F3
SCA:最差值: 18368.1464, 最优值: 381.1087, 平均值: 8870.2067, 标准差: 5411.8773, 秩和检验: 3.0199e-11
SFO:最差值: 7759.311, 最优值: 6.8185, 平均值: 1761.5799, 标准差: 1924.3401, 秩和检验: 3.0199e-11
TSA:最差值: 0.0055186, 最优值: 3.8235e-09, 平均值: 0.00039452, 标准差: 0.0011145, 秩和检验: 3.0199e-11
ChOA:最差值: 595.7466, 最优值: 0.33056, 平均值: 78.0833, 标准差: 147.4911, 秩和检验: 3.0199e-11
SHO:最差值: 1.1809e-96, 最优值: 9.2915e-109, 平均值: 4.1727e-98, 标准差: 2.1545e-97, 秩和检验: 1
函数:F5
SCA:最差值: 1843098.6418, 最优值: 29.1753, 平均值: 133966.1289, 标准差: 354304.683, 秩和检验: 3.0199e-11
SFO:最差值: 3070.9505, 最优值: 13.8042, 平均值: 197.8938, 标准差: 549.5994, 秩和检验: 3.6459e-08
TSA:最差值: 29.745, 最优值: 26.0271, 平均值: 28.5275, 标准差: 0.7178, 秩和检验: 0.053685
ChOA:最差值: 28.9706, 最优值: 27.383, 平均值: 28.8451, 标准差: 0.3209, 秩和检验: 7.1186e-09
SHO:最差值: 28.8602, 最优值: 27.2442, 平均值: 28.2633, 标准差: 0.45871, 秩和检验: 1
函数:F7
SCA:最差值: 0.80374, 最优值: 0.0032941, 平均值: 0.14467, 标准差: 0.17658, 秩和检验: 3.0199e-11
SFO:最差值: 0.036979, 最优值: 0.00029887, 平均值: 0.0074278, 标准差: 0.0090561, 秩和检验: 3.0199e-11
TSA:最差值: 0.022183, 最优值: 0.0026778, 平均值: 0.0096315, 标准差: 0.0049444, 秩和检验: 3.0199e-11
ChOA:最差值: 0.0066974, 最优值: 0.00012385, 平均值: 0.0021978, 标准差: 0.0021073, 秩和检验: 1.0937e-10
SHO:最差值: 0.00027927, 最优值: 6.3171e-06, 平均值: 9.0713e-05, 标准差: 7.2435e-05, 秩和检验: 1
函数:F10
SCA:最差值: 20.3208, 最优值: 0.045212, 平均值: 15.1075, 标准差: 8.164, 秩和检验: 3.1507e-12
SFO:最差值: 4.0537, 最优值: 0.13557, 平均值: 2.1672, 标准差: 1.2368, 秩和检验: 3.1507e-12
TSA:最差值: 20.1429, 最优值: 2.9496e-12, 平均值: 1.8574, 标准差: 3.7532, 秩和检验: 3.1507e-12
ChOA:最差值: 19.9644, 最优值: 19.9597, 平均值: 19.9626, 标准差: 0.0011774, 秩和检验: 3.1507e-12
SHO:最差值: 4.4409e-15, 最优值: 8.8818e-16, 平均值: 4.0856e-15, 标准差: 1.084e-15, 秩和检验: 1
函数:F11
SCA:最差值: 1.8531, 最优值: 0.14491, 平均值: 0.95115, 标准差: 0.28752, 秩和检验: 1.7203e-12
SFO:最差值: 3.1087, 最优值: 0.36601, 平均值: 1.3575, 标准差: 0.55987, 秩和检验: 1.7203e-12
TSA:最差值: 0.024404, 最优值: 0, 平均值: 0.0070767, 标准差: 0.0086288, 秩和检验: 5.6652e-05
ChOA:最差值: 0.115, 最优值: 1.9304e-10, 平均值: 0.015874, 标准差: 0.032814, 秩和检验: 2.6819e-11
SHO:最差值: 0.031959, 最优值: 0, 平均值: 0.0010653, 标准差: 0.0058349, 秩和检验: 1
函数:F12
SCA:最差值: 244166.8628, 最优值: 0.97179, 平均值: 9929.5975, 标准差: 44561.5225, 秩和检验: 3.0199e-11
SFO:最差值: 0.59784, 最优值: 0.006079, 平均值: 0.16892, 标准差: 0.13795, 秩和检验: 0.00028389
TSA:最差值: 23.2113, 最优值: 0.81292, 平均值: 8.3327, 标准差: 5.1493, 秩和检验: 3.0199e-11
ChOA:最差值: 0.89046, 最优值: 0.23538, 平均值: 0.44436, 标准差: 0.15671, 秩和检验: 1.8608e-06
SHO:最差值: 0.71867, 最优值: 0.090756, 平均值: 0.2777, 标准差: 0.14157, 秩和检验: 1
函数:F15
SCA:最差值: 0.0016268, 最优值: 0.00041092, 平均值: 0.0010905, 标准差: 0.0003873, 秩和检验: 1.0105e-08
SFO:最差值: 0.0028866, 最优值: 0.00031332, 平均值: 0.0013138, 标准差: 0.00084783, 秩和检验: 4.6856e-08
TSA:最差值: 0.11711, 最优值: 0.00030772, 平均值: 0.014668, 标准差: 0.026132, 秩和检验: 0.016955
ChOA:最差值: 0.0013775, 最优值: 0.0012251, 平均值: 0.0012877, 标准差: 4.1797e-05, 秩和检验: 8.4848e-09
SHO:最差值: 0.0016193, 最优值: 0.00030868, 平均值: 0.00043028, 标准差: 0.00032552, 秩和检验: 1
函数:F16
SCA:最差值: -1.0315, 最优值: -1.0316, 平均值: -1.0316, 标准差: 2.4636e-05, 秩和检验: 3.0199e-11
SFO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 2.8474e-07, 秩和检验: 2.6695e-09
TSA:最差值: -1, 最优值: -1.0316, 平均值: -1.0295, 标准差: 0.0080246, 秩和检验: 4.9752e-11
ChOA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 9.9195e-06, 秩和检验: 3.0199e-11
SHO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 8.6802e-09, 秩和检验: 1
函数:F18
SCA:最差值: 3.0007, 最优值: 3, 平均值: 3.0001, 标准差: 0.00014316, 秩和检验: 3.0199e-11
SFO:最差值: 3.0001, 最优值: 3, 平均值: 3, 标准差: 1.428e-05, 秩和检验: 3.0199e-11
TSA:最差值: 84.0004, 最优值: 3, 平均值: 14.7022, 标准差: 25.2511, 秩和检验: 3.0199e-11
ChOA:最差值: 3.0006, 最优值: 3, 平均值: 3.0002, 标准差: 0.00016064, 秩和检验: 3.0199e-11
SHO:最差值: 3, 最优值: 3, 平均值: 3, 标准差: 6.5399e-09, 秩和检验: 1

实验结果表明:SHO算法在7个单峰函数和大部分多峰函数上都明显优于4种最先进的比较算法。

三、参考文献

[1] Shijie Zhao, Tianran Zhang, Shilin Ma, et al. Sea-horse optimizer: a novel nature-inspired meta-heuristic for global optimization problems[J]. Applied Intelligence, 2022.

相关文章:

  • o2o电子商务网站建设/北京网站优化校学费
  • 网站怎么做cdn/建站服务
  • 做网站哪里有/seo是什么意思啊
  • 工业设计代做网站/学电商出来一般干什么工作
  • 营销型网站软件/2024年度关键词
  • 网站建设与网站设计哪个好学/常用的seo工具推荐
  • 一周技术学习笔记(第85期)-两篇文章13个问题重入OO设计思想
  • 智能合约学习笔记——僵尸工厂(一)
  • Vue中实现放大镜效果
  • 【电商数仓】数仓即席查询之Presto简介,安装,Presto优化之数据存储、查询SQL、一些注意事项
  • 【C++笔试强训】第五天
  • linux调试器——gdb
  • 软件测试行业到底有没有前景和出路?2022辞职后涨薪5K+,凭什么?
  • MySQL的行锁、间隙锁和临建锁
  • SpringSecurity:前后端分离项目中用户名与密码通过国密算法SM2加密传输
  • UE4创建可以交互的Pickup效果和声音
  • go语言代码练习
  • Python 多进程处理数据