智能优化算法:龙格-库塔优化算法

文章目录

  • 智能优化算法:龙格-库塔优化算法
    • 1.算法原理
      • 1.1 搜索机制
      • 1.2 位置更新
      • 1.3 解质量增强(ESQ)
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab代码

摘要:龙格-库塔优化算法(Runge Kutta optimizer,RUN)是于2021年提出的一种新型智能优化算法,该算法基于龙格-库塔方法中提出的计算梯度搜索概念来指导寻优,具有寻优能力强,收敛速度快等特点。

1.算法原理

1.1 搜索机制

该算法的搜索机制基于RK方法,使用一组随机解搜索决策空间,并实现适当的全局和局部搜索。采用4阶RK方法。
SM=16(xRK)Δx(1)SM=\frac{1}{6}(x_{RK})\Delta x\tag{1} SM=61​(xRK​)Δx(1)

xRK=k1+2k2+2k3+k4(2)x_{RK}=k_1+2k_2+2k_3+k_4 \tag{2} xRK​=k1​+2k2​+2k3​+k4​(2)

k1=12Δx(rand∗xw−u∗xb)(3)k_1=\frac{1}{2\Delta x}(rand*x_w-u*x_b)\tag{3} k1​=2Δx1​(rand∗xw​−u∗xb​)(3)

u=round(1+rand)∗(1−rand)(4)u=round(1+rand)*(1-rand)\tag{4} u=round(1+rand)∗(1−rand)(4)

k2=12Δx(rand(xw+rand1∗k1∗Δx)−(uxb+rand2∗k1Δx))(5)k_2=\frac{1}{2\Delta x}(rand(x_w+rand_1*k_1*\Delta x)-(ux_b+rand_2*k_1\Delta x))\tag{5} k2​=2Δx1​(rand(xw​+rand1​∗k1​∗Δx)−(uxb​+rand2​∗k1​Δx))(5)

k3=12Δx(rand(xw+rand1(k2/2)Δx)−(uxb+rand2(k2/2)Δx))(6)k_3=\frac{1}{2\Delta x}(rand(x_w+rand_1(k_2/2)\Delta x)-(ux_b+rand_2(k_2/2)\Delta x))\tag{6} k3​=2Δx1​(rand(xw​+rand1​(k2​/2)Δx)−(uxb​+rand2​(k2​/2)Δx))(6)

k4=12Δx(rand∗(xw+rand1k3Δx)−(uxb+rand2k3Δx))(7)k_4=\frac{1}{2\Delta x}(rand*(x_w+rand_1k_3\Delta x)-(ux_b+rand_2k_3\Delta x))\tag{7} k4​=2Δx1​(rand∗(xw​+rand1​k3​Δx)−(uxb​+rand2​k3​Δx))(7)

Δx=2∗rand∗∣Stp∣(8)\Delta x=2*rand*|Stp| \tag{8} Δx=2∗rand∗∣Stp∣(8)

Stp=rand∗((xb−rand∗xavg)+γ)(9)Stp=rand*((x_b-rand*x_{avg})+\gamma) \tag{9} Stp=rand∗((xb​−rand∗xavg​)+γ)(9)

γ=rand∗(xn−rand∗(u−l)∗exp(−4i/Maxi))(10)\gamma=rand*(x_n-rand*(u-l)*exp(-4i/Max_i))\tag{10} γ=rand∗(xn​−rand∗(u−l)∗exp(−4i/Maxi​))(10)

其中xbx_bxb​和xwx_wxw​分别为种群的最优解和最差解。rand1,rand2rand_1,rand_2rand1​,rand2​为[0,1]之间的随机数。xavgx_{avg}xavg​为种群的平均值。iii为当前迭代次数,MaxiMax_iMaxi​为最大迭代次数。

1.2 位置更新

RUN算法的位置更新如式(11)所示
xn+1={(xc+r∗SF∗g∗xc)+SF∗SM+u∗xs,ifrand<0.5(xm+r∗SF∗g∗xm)+SF∗SM+u∗xs′,else(11)x_{n+1}=\begin{cases} (x_c+r*SF*g*x_c)+SF*SM+u*x_s,if \, rand<0.5\\ (x_m+r*SF*g*x_m)+SF*SM+u*x_s',else \end{cases}\tag{11} xn+1​={(xc​+r∗SF∗g∗xc​)+SF∗SM+u∗xs​,ifrand<0.5(xm​+r∗SF∗g∗xm​)+SF∗SM+u∗xs′​,else​(11)

xs=randn∗(xm−xc)(12)x_s=randn*(x_m-x_c)\tag{12} xs​=randn∗(xm​−xc​)(12)

xs′=randn∗(xr1−xr2)(13)xs'=randn*(x_{r1}-x_{r2})\tag{13} xs′=randn∗(xr1​−xr2​)(13)

中,rrr是1或-1的整数;ggg是[0,2]的随机数;SFSFSF是自适应因子;uuu为随机数。

SF计算如下:
SF=2∗(0.5−rand)∗f(13)SF=2*(0.5-rand)*f\tag{13} SF=2∗(0.5−rand)∗f(13)

f=a∗exp(−b∗rand∗i/Maxi)(14)f=a*exp(-b*rand*i/Max_i)\tag{14} f=a∗exp(−b∗rand∗i/Maxi​)(14)

其中iii为当前迭代次数,MaxiMax_iMaxi​为最大迭代次数。aaa和bbb为一个常数。randrandrand为[0,1]之间的随机数。

xcx_cxc​和xmx_mxm​的定义如下:
xc=φxn+(1−φ)∗xr1(15)x_c=\varphi x_n+(1-\varphi)*x_{r_1} \tag{15} xc​=φxn​+(1−φ)∗xr1​​(15)

xm=φxbest+(1−φ)xlbest(16)x_m=\varphi x_{best}+(1-\varphi)x_{lbest} \tag{16} xm​=φxbest​+(1−φ)xlbest​(16)

其中φ\varphiφ为[0,1]之间的随机数;xbestx_{best}xbest​为全局最优解;xlbestx_{lbest}xlbest​是每代最优位置。

1.3 解质量增强(ESQ)

在该算法中,采用解质量增强(ESQ)的方法来提高解的质量,避免每次迭代中出现局部最优。通过使用ESQ执行以下公式产生新解(xnew2x_{new2}xnew2​):
xnew2={xnew1+rw∣(xnew1−xavg)+randn∣,rand<0.5,w<1(xnew1−xavg)+rw∣(uxnew1−xavg)+randn∣,rand<0.5,w≥1(17)x_{new2}=\begin{cases} x_{new1}+rw|(x_{new_1}-x_{avg})+randn|,rand<0.5,w<1\\ (x_{new1}-x_{avg})+rw|(ux_{new1}-x_avg)+randn|,rand<0.5,w\geq 1 \end{cases}\tag{17} xnew2​={xnew1​+rw∣(xnew1​​−xavg​)+randn∣,rand<0.5,w<1(xnew1​−xavg​)+rw∣(uxnew1​−xa​vg)+randn∣,rand<0.5,w≥1​(17)
其中:
w=rand(0,2)∗exp(−ci/Maxi)(18)w=rand(0,2)*exp(-ci/Max_i) \tag{18} w=rand(0,2)∗exp(−ci/Maxi​)(18)

xavg=xr1+xr2+xr33(19)x_{avg}=\frac{x_{r1}+x_{r2}+x_{r3}}{3} \tag{19} xavg​=3xr1​+xr2​+xr3​​(19)

xnew1=β∗xavg+(1−β)xbest(20)x_{new1}=\beta*x_{avg}+(1-\beta)x_{best} \tag{20} xnew1​=β∗xavg​+(1−β)xbest​(20)

其中,β\betaβ为[0,1]之间随机数。ccc为[0,5]之间随机数;rrr是1、0或-1的随机整数;xbestx_{best}xbest​表示全局最优位置。该部分计算的解xnew2x_{new2}xnew2​可能比不上当前解。为了增强解的质量,将生成另一个新解xnew3x_{new3}xnew3​ ,定义如下:
xnew3=(xnew2−randxnew2)+SF(rand∗xRK+(vxb−xnew2))(21)x_{new3}=(x_{new2}-randx_{new2})+SF(rand*x_{RK}+(vx_b-x_{new2}))\tag{21} xnew3​=(xnew2​−randxnew2​)+SF(rand∗xRK​+(vxb​−xnew2​))(21)
其中,vvv为2*rand的随机数。

算法伪代码如下:

Algorithm 1. The pseudo-code of RUN
Stage 1. Initialization
Initializea,b
Generate the RUN population X n (n = 1,2,…,N)
Calculate the objective function of each member of population
Determine the solutions x w , x b , andx best
Stage 2. RUN operators
for i = 1: Maxi
for n = 1 : N
for l = 1 : D
Calculate position x n+1,l  using Eq. (11)
end for
Enhance the solution quality
ifrand < 0.5
Calculate position x new2  using Eq. (17)
if f(x n ) < f(x new2 )
if rand<w
Calculate position x new3  using Eq. (21)
end
end
end
Update positions x w  andx b
end for
Update positionx best
i = i + 1
end
Stage 3. returnx best

2.实验结果

3.参考文献

[1] Iman Ahmadianfar, Ali Asghar Heidari, Amir H. Gandomi, Xuefeng Chu, Huiling Chen. RUN beyond the metaphor: An efficient optimization algorithm based on Runge Kutta method[J]. Expert Systems with Applications, 2021, 181(115079): 0957-4174.

4.Matlab代码

d the metaphor: An efficient optimization algorithm based on Runge Kutta method[J]. Expert Systems with Applications, 2021, 181(115079): 0957-4174.

智能优化算法:龙格-库塔优化算法 - 附代码相关推荐

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

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

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

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

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

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

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

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

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

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

  6. python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码

    原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...

  7. 基于蜣螂优化的Elman神经网络数据预测-附代码

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

  8. 【AI超级美发师】深度学习算法打造染发特效(附代码)

    [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...

  9. 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)

    本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...

  10. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...

    授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...

最新文章

  1. AI 生成的代码可信吗?编写的代码有 Bug 吗?
  2. 5个案例让Python输出漂亮的表格!
  3. ospf专题二:虚链路
  4. java/android 做题中整理的碎片小贴士(5)
  5. linux用cat查看本机ip,linux sh 如何根据出口网关来获取本机出口ip
  6. python文件操作2:在指定目录下查找指定后缀名的文件
  7. [羊城杯 2020]Bytecode [UTCTF2020]babymips
  8. Oracle12cR2的CDB与PDB简单管理操作
  9. AV1编码时间下降,接近使用水平
  10. 加速你的Hibernate引擎(上)
  11. 如何安装python3.8.1_如何用源代码安装Python 3.8.1
  12. 数据结构笔记(十九)-- 二叉树性质
  13. 手动处理MNIST手写数据集的逻辑斯蒂回归算法实践
  14. 【雷达】Tracking radar targets with multiple reflection points
  15. 百度AI输入法发布全感官输入2.0版本,语音技术取得世界级突破
  16. ClientToScreen 和ScreenToClient用法
  17. 渲染用计算机功耗,【IT之家评测室】满功耗 RTX 3060 笔记本 GPU 表现如何?拯救者 R9000P 实测...
  18. 付临门商服宝 v1.0.5
  19. CH340与Android串口通信
  20. mathmatica中ListLinePlot函数画图不能混合是咋回事啊

热门文章

  1. 删除链表中相邻重复元素
  2. Maven中DependencyManagement和Dependencies区别
  3. 每天一道剑指offer-二叉搜索树与双向链表
  4. java会议记录管理系统实验报告代码_会议记录管理系统.docx
  5. python定位网页元素_python爬虫技术:如何定位网页上的内容?xpath定位元素
  6. NextJS基础教程
  7. 谷粒商城:11.商品服务 — 新增商品
  8. SQL:postgresql将查询结果拼接起来
  9. 计算机组成原理:二进制与十进制互转
  10. Javascript特效:天猫导航