基于龙格-库塔法(Runge-Kutta methods)的函数寻优算法

一、理论基础

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×xwu×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)×(1rand)(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×((xbrand×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×(xnrand×(ul))×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.(xmxc),rand<0.5(xm+r.SF.g.xm)+SF.SM+μ.randn.(xr1xr2),rand0.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.5rand)×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.(xnew1xavg)+randn,rand<0.5,w<1(xnew1xavg)+r.w.(u.xnew1xavg)+randn,rand<0.5,w1(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=(xnew2rand.xnew2)+SF.(rand.xRK+(v.xbxnew2))(21)其中, v v v是为 2 × r a n d 2×rand 2×rand的随机数。

4、RUN算法伪代码

RUN算法伪代码如下图所示:
在这里插入图片描述

图1 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.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值