一、理论基础
RUN(Runge Kutta optimizer )解释了RK(Runge-Kutta methods)技术的主要逻辑和其基于种群的进化。事实上,RK使用特定公式来计算斜率和求解常微分方程。RUN的主要思想基于RK方法中提出的计算坡度概念。运行使用计算出的斜率作为搜索逻辑,在搜索空间中探索有希望的区域,并根据基于群的优化算法的逻辑建立一组种群集的进化规则。以下详细介绍了运行的数学公式。
1、搜索机制的根源
在本研究中,RUN的领先搜索机制基于RK方法,使用一组随机解搜索决策空间,并实现适当的全局和局部搜索。采用RK4方法确定建议运行中的搜索机制。
S
M
SM
SM定义为:
k
1
=
1
2
Δ
x
(
r
a
n
d
×
x
w
−
u
×
x
b
)
(1)
k_1=\frac{1}{2\Delta x}(rand×x_w-u×x_b)\tag{1}
k1=2Δx1(rand×xw−u×xb)(1)
u
=
r
o
u
n
d
(
1
+
r
a
n
d
)
×
(
1
−
r
a
n
d
)
(2)
u=round(1+rand)×(1-rand)\tag{2}
u=round(1+rand)×(1−rand)(2)
k
2
=
1
2
Δ
x
(
r
a
n
d
.
(
x
w
+
r
a
n
d
1
.
k
1
.
Δ
x
)
−
(
u
.
x
b
+
r
a
n
d
2
.
k
1
.
Δ
x
)
)
(3)
k_2=\frac{1}{2\Delta x}(rand.(x_w+rand_1.k_1.\Delta x)-(u.x_b+rand_2.k_1.\Delta x))\tag{3}
k2=2Δx1(rand.(xw+rand1.k1.Δx)−(u.xb+rand2.k1.Δx))(3)
k
3
=
1
2
Δ
x
(
r
a
n
d
.
(
x
w
+
r
a
n
d
1
.
(
1
2
k
2
)
.
Δ
x
)
−
(
u
.
x
b
+
r
a
n
d
2
.
(
1
2
k
2
)
.
Δ
x
)
)
(4)
k_3=\frac{1}{2\Delta x}(rand.(x_w+rand_1.\left(\frac12k_2\right).\Delta x)-(u.x_b+rand_2.\left(\frac12k_2\right).\Delta x))\tag{4}
k3=2Δx1(rand.(xw+rand1.(21k2).Δx)−(u.xb+rand2.(21k2).Δx))(4)
k
4
=
1
2
Δ
x
(
r
a
n
d
.
(
x
w
+
r
a
n
d
1
.
k
3
.
Δ
x
)
−
(
u
.
x
b
+
r
a
n
d
2
.
k
3
.
Δ
x
)
)
(5)
k_4=\frac{1}{2\Delta x}(rand.(x_w+rand_1.k_3.\Delta x)-(u.x_b+rand_2.k_3.\Delta x))\tag{5}
k4=2Δx1(rand.(xw+rand1.k3.Δx)−(u.xb+rand2.k3.Δx))(5)
x
R
K
=
k
1
+
2
×
k
2
+
2
×
k
3
+
k
4
(6)
x_{RK}=k_1+2×k_2+2×k_3+k_4\tag{6}
xRK=k1+2×k2+2×k3+k4(6)
S
M
=
1
6
(
x
R
K
)
Δ
x
(7)
SM=\frac16(x_{RK})\Delta x\tag{7}
SM=61(xRK)Δx(7)其中,
r
a
n
d
1
rand_1
rand1和
r
a
n
d
2
rand_2
rand2均为
[
0
,
1
]
[0,1]
[0,1]之间的随机数。
Δ
x
\Delta x
Δx计算如下:
Δ
x
=
2
×
r
a
n
d
×
∣
S
t
p
∣
(8)
\Delta x=2×rand×|Stp|\tag{8}
Δx=2×rand×∣Stp∣(8)
S
t
p
=
r
a
n
d
×
(
(
x
b
−
r
a
n
d
×
x
a
v
g
)
+
γ
)
(9)
Stp=rand×((x_b-rand×x_{avg})+\gamma)\tag{9}
Stp=rand×((xb−rand×xavg)+γ)(9)
γ
=
r
a
n
d
×
(
x
n
−
r
a
n
d
×
(
u
−
l
)
)
×
exp
(
−
4
×
i
M
a
x
_
i
)
(10)
\gamma=rand×(x_n-rand×(u-l))×\exp(-4×\frac{i}{Max\_i})\tag{10}
γ=rand×(xn−rand×(u−l))×exp(−4×Max_ii)(10)
x
w
x_w
xw和
x
b
x_b
xb通过下式确定:
{
x
b
=
x
n
,
x
w
=
x
b
i
f
(
x
n
)
<
f
(
x
b
i
)
x
b
=
x
b
i
,
x
w
=
x
n
f
(
x
n
)
≥
f
(
x
b
i
)
(11)
\begin{dcases}x_b=x_n,x_w=x_{bi}\quad f(x_n)<f(x_{bi})\\x_b=x_{bi},x_w=x_n\quad f(x_n)≥f(x_{bi})\end{dcases}\tag{11}
{xb=xn,xw=xbif(xn)<f(xbi)xb=xbi,xw=xnf(xn)≥f(xbi)(11)
2、更新位置
RUN算法使用基于Runge-Kutta方法的搜索机制(SM)进行更新。
x
n
+
1
=
{
(
x
c
+
r
.
S
F
.
g
.
x
c
)
+
S
F
.
S
M
+
μ
.
r
a
n
d
n
.
(
x
m
−
x
c
)
,
r
a
n
d
<
0.5
(
x
m
+
r
.
S
F
.
g
.
x
m
)
+
S
F
.
S
M
+
μ
.
r
a
n
d
n
.
(
x
r
1
−
x
r
2
)
,
r
a
n
d
≥
0.5
(12)
x_{n+1}=\begin{dcases}(x_c+r.SF.g.x_c)+SF.SM+\mu.randn.(x_m-x_c),\quad\,\,\,\,\,\, rand <0.5\\(x_m+r.SF.g.x_m)+SF.SM+\mu.randn.(x_{r_1}-x_{r_2}),\quad rand≥0.5\end{dcases}\tag{12}
xn+1={(xc+r.SF.g.xc)+SF.SM+μ.randn.(xm−xc),rand<0.5(xm+r.SF.g.xm)+SF.SM+μ.randn.(xr1−xr2),rand≥0.5(12)其中,
r
r
r是1或-1的整数;
g
g
g是
[
0
,
2
]
[0,2]
[0,2]的随机数;
S
F
SF
SF是自适应因子;
μ
\mu
μ为随机数。
S
F
SF
SF计算公式如下:
S
F
=
2.
(
0.5
−
r
a
n
d
)
×
f
(13)
SF=2.(0.5-rand)×f\tag{13}
SF=2.(0.5−rand)×f(13)
f
=
a
×
exp
(
−
b
×
r
a
n
d
×
(
i
M
a
x
i
)
)
(14)
f=a×\exp\left(-b×rand×\left(\frac{i}{Maxi}\right)\right)\tag{14}
f=a×exp(−b×rand×(Maxii))(14)其中,
M
a
x
i
Maxi
Maxi表示最大迭代次数,
i
i
i表示当前迭代次数。
x
c
x_c
xc和
x
m
x_m
xm计算如下:
x
c
=
φ
×
x
n
+
(
1
−
φ
)
×
x
r
1
(15)
x_c=\varphi×x_n+(1-\varphi)×x_{r_1}\tag{15}
xc=φ×xn+(1−φ)×xr1(15)
x
m
=
φ
×
x
b
e
s
t
+
(
1
−
φ
)
×
x
l
b
e
s
t
(16)
x_m=\varphi×x_{best}+(1-\varphi)×x_{lbest}\tag{16}
xm=φ×xbest+(1−φ)×xlbest(16)其中,
φ
\varphi
φ是
[
0
,
1
]
[0,1]
[0,1]的随机数;
x
b
e
s
t
x_{best}
xbest是全局最优位置;
x
l
b
e
s
t
x_{lbest}
xlbest是每代最优位置。
3、增强解的质量(ESQ)
在RUN算法中,采用增强解的质量(ESQ)的方法来提高解的质量,避免每次迭代中出现局部最优。通过使用ESQ执行以下公式产生新解(
x
n
e
w
2
x_{new2}
xnew2):
x
n
e
w
2
=
{
x
n
e
w
1
+
r
.
w
.
∣
(
x
n
e
w
1
−
x
a
v
g
)
+
r
a
n
d
n
∣
,
r
a
n
d
<
0.5
,
w
<
1
(
x
n
e
w
1
−
x
a
v
g
)
+
r
.
w
.
∣
(
u
.
x
n
e
w
1
−
x
a
v
g
)
+
r
a
n
d
n
∣
,
r
a
n
d
<
0.5
,
w
≥
1
(17)
x_{new2}=\begin{dcases}x_{new1}+r.w.|(x_{new1}-x_{avg})+randn|,\,\,\quad \quad\quad\quad\,\, rand<0.5,w<1\\(x_{new1}-x_{avg})+r.w.|(u.x_{new1}-x_{avg})+randn|,\,rand<0.5,w≥1\end{dcases}\tag{17}
xnew2={xnew1+r.w.∣(xnew1−xavg)+randn∣,rand<0.5,w<1(xnew1−xavg)+r.w.∣(u.xnew1−xavg)+randn∣,rand<0.5,w≥1(17)
w
=
r
a
n
d
(
0
,
2
)
.
exp
(
−
c
i
M
a
x
i
)
(18)
w=rand(0,2).\exp\left(-c\frac{i}{Maxi}\right)\tag{18}
w=rand(0,2).exp(−cMaxii)(18)
x
a
v
g
=
x
r
1
+
x
r
2
+
x
r
3
3
(19)
x_{avg}=\frac{x_{r_1}+x_{r_2}+x_{r_3}}{3}\tag{19}
xavg=3xr1+xr2+xr3(19)
x
n
e
w
1
=
β
×
x
a
v
g
+
(
1
−
β
)
×
x
b
e
s
t
(20)
x_{new1}=\beta×x_{avg}+(1-\beta)×x_{best}\tag{20}
xnew1=β×xavg+(1−β)×xbest(20)其中,
β
\beta
β是
[
0
,
1
]
[0,1]
[0,1]之间的随机数;
c
c
c是一个随机数,在本文中等于
5
×
r
a
n
d
5×rand
5×rand;
r
r
r是1、0或-1的随机整数;
x
b
e
s
t
x_{best}
xbest表示全局最优位置。
该部分计算的解(
x
n
e
w
2
x_{new2}
xnew2)可能不比当前解(即
f
(
x
n
e
w
2
)
>
f
(
x
n
)
f(x_{new2})>f(x_n)
f(xnew2)>f(xn))具有更好的适应性。为了增强解的质量,将生成另一个新解
x
n
e
w
3
x_{new3}
xnew3,定义如下:
x
n
e
w
3
=
(
x
n
e
w
2
−
r
a
n
d
.
x
n
e
w
2
)
+
S
F
.
(
r
a
n
d
.
x
R
K
+
(
v
.
x
b
−
x
n
e
w
2
)
)
(21)
x_{new3}=(x_{new2}-rand.x_{new2})+SF.(rand.x_{RK}+(v.x_{b}-x_{new2}))\tag{21}
xnew3=(xnew2−rand.xnew2)+SF.(rand.xRK+(v.xb−xnew2))(21)其中,
v
v
v是为
2
×
r
a
n
d
2×rand
2×rand的随机数。
4、RUN算法伪代码
RUN算法伪代码如下图所示:
二、实验测试及分析
以文献[1]中的F1、F3、F5(单峰函数/30维)、F9、F10、F11(多峰函数/30维)为例,将RUN算法分别与樽海鞘群算法(SSA)、鲸鱼优化算法(WOA)、灰狼优化算法(GWO)以及正弦余弦算法(SCA)进行对比,设置种群规模为50,最大迭代次数为500(单峰)或1000(多峰),每个算法独立运行30次。RUN中设置
a
=
20
a=20
a=20、
b
=
12
b=12
b=12。
结果显示如下:
函数:F1
SSA:最差值: 2206.5555,最优值:4.1792,平均值:606.2104,标准差:673.3742
WOA:最差值: 9.0959e-79,最优值:4.1307e-88,平均值:7.8368e-80,标准差:2.4087e-79
GWO:最差值: 6.8254e-27,最优值:1.5003e-29,平均值:8.667e-28,标准差:1.464e-27
SCA:最差值: 14449588.9865,最优值:950.5699,平均值:2283177.5926,标准差:3142242.5557
RUN:最差值: 1.7219e-189,最优值:7.2358e-209,平均值:5.7399e-191,标准差:0
函数:F3
SSA:最差值: 5.7029e-08,最优值:1.4939e-08,平均值:3.1735e-08,标准差:1.0648e-08
WOA:最差值: 15622.3412,最优值:271.1465,平均值:6580.1507,标准差:4090.1731
GWO:最差值: 2.4208e-28,最优值:3.7159e-31,平均值:3.7513e-29,标准差:5.9621e-29
SCA:最差值: 7142.6134,最优值:17.4977,平均值:768.9403,标准差:1298.1964
RUN:最差值: 1.1889e-192,最优值:1.1343e-212,平均值:3.9667e-194,标准差:0
函数:F5
SSA:最差值: 41447.218,最优值:3126.1654,平均值:13818.4568,标准差:9093.7156
WOA:最差值: 1.2376e-81,最优值:8.3127e-95,平均值:4.1857e-83,标准差:2.2584e-82
GWO:最差值: 3.2111e-32,最优值:1.4687e-34,平均值:8.2882e-33,标准差:8.1827e-33
SCA:最差值: 39.5787,最优值:0.035002,平均值:4.8665,标准差:10.06
RUN:最差值: 9.0382e-192,最优值:2.5324e-216,平均值:3.0131e-193,标准差:0
函数:F9
SSA:最差值: 0.00038183,最优值:0.00038183,平均值:0.00038183,标准差:2.2905e-10
WOA:最差值: 0.00038183,最优值:0.00038183,平均值:0.00038183,标准差:5.5503e-13
GWO:最差值: 0.00038183,最优值:0.00038183,平均值:0.00038183,标准差:8.7214e-13
SCA:最差值: 0.0064263,最优值:0.00038183,平均值:0.00061473,标准差:0.0011051
RUN:最差值: 0.00038183,最优值:0.00038183,平均值:0.00038183,标准差:0
函数:F10
SSA:最差值: 3.2225,最优值:2.1354e-05,平均值:1.5327,标准差:0.89703
WOA:最差值: 7.9936e-15,最优值:8.8818e-16,平均值:3.9672e-15,标准差:2.421e-15
GWO:最差值: 1.5099e-14,最优值:7.9936e-15,平均值:1.3204e-14,标准差:2.5945e-15
SCA:最差值: 0.12136,最优值:0.00013434,平均值:0.0098863,标准差:0.024478
RUN:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0
函数:F11
SSA:最差值: 13.0373,最优值:4.3049,平均值:9.7229,标准差:1.732
WOA:最差值: 7.1054e-15,最优值:7.1054e-15,平均值:7.1054e-15,标准差:0
GWO:最差值: 32.1258,最优值:19.2112,平均值:26.6161,标准差:3.082
SCA:最差值: 11.8101,最优值:2.2048,平均值:8.9909,标准差:2.0273
RUN:最差值: 7.1054e-14,最优值:3.5527e-14,平均值:5.4238e-14,标准差:9.233e-15
结果表明,RUN算法比其他智能优化算法具有更快的收敛速度、更高的收敛精度,以及更好的寻优能力。
三、参考文献
[1] Iman Ahmadianfar, Ali Asghar Heidari, Amir H. Gandomi, et al. RUN beyond the metaphor: An efficient optimization algorithm based on Runge Kutta method[J]. Expert Systems with Applications, 2021, 181: 115079.