鼠群优化(RSO)算法(含开源MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附带MATLAB代码。

这篇文章在这里:点一下

在介绍之前,先分享两张我今天看到的图片,如图1所示。图片来自2016年上映的电影《致青春:原来你还在这里》(第35分钟左右)。注意看,神仙姐姐刘亦菲抱着一本MATLAB的教程。就连女神都在学MATLAB了,我们还有什么理由不学呢? 

图1 女神抱着一本MATLAB书

言归正传~

鼠群优化(Rat Swarm Optimizer, RSO)算法是2020年提出来的一种新型群智能优化算法,受启发于老鼠追逐和攻击猎物的种群行为。严格来说,应该叫鼠群优化器。该算法原理简单,且易实现。它的原始参考文献如下:

“Dhiman G, Garg M, Nagar A, et al. A novel algorithm for global optimization: rat swarm optimizer[J]. Journal of Ambient Intelligence and Humanized Computing, 2021, 12(8): 8457-8482.”

(文章是2020年在线发表的,2021年才见刊的,所以在引用中是2021)。所以,如果你在校园里看见有人蹲着观察蚂蚁、蚯蚓、老鼠啥的,不要去笑人家,说不定人家是在搞研究……

01

灵感来源

老鼠是长尾中型啮齿类动物,主要有两种:黑鼠和褐鼠。在鼠科中,公鼠叫雄鼠,母鼠叫雌鼠。一般来说,老鼠天生具有社交智慧(这里的社交指的是老鼠在种群中善于交流和合作,就像有的人是社牛一样,也是善于与其他人交际,而不是和其他的牛马啥的)。他们互相合作,参加各种各样的种群活动。老鼠是一种领地动物,群居,如图2所示。老鼠的行为在许多情况下具有很强的攻击性,这可能会导致一些其他动物的死亡。老鼠的这种攻击性行为是这项工作的主要灵感来源,主要包括对猎物追逐和攻击。作者通过对老鼠的追逐和攻击行为进行数学建模,设计出了RSO算法。

 图2 老鼠的群居属性

02

算法设计

如上所述,作者对老鼠的追逐和攻击行为进行数学建模,因此RSO算法主要包括两个过程:追逐猎物、攻击猎物。与上一期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

 图3 2维环境下,老鼠的搜索方式

由此,作者便提出了基于老鼠对猎物的追逐和攻击行为的RSO算法。这个算法最大的亮点就是仅用两个公式就实现了种群的搜索,且仅用两个参数就平衡了算法在搜索过程中的勘探和开发。算法设计简单,参数少。 

03

计算流程

RSO算法的计算流程非常简单,这里我用visio绘制了算法的计算流程图,如图4所示。可以看出,RSO算法不存在额外的循环或判断,很容易实现。

图4 RSO算法的计算流程(纠正:利用(1)式完成追逐,图中有误) 

04

仿真实验

RSO算法虽然简单,但对算法优劣的判断最主要还是要回到它的性能上。这里我对RSO算法进行了简单的测试。在MATLAB代码中,种群规模N我设置的是50,最大迭代次数T为500,问题的维度n设置为30。

这里以经典的基准函数Sphere和Ackley为例,展示RSO算法在30维环境上的收敛效果。其中,Sphere为单峰函数,Ackley为多峰函数,它们的最优值均为0。如图5所示。

 (a) Sphere

(b) Ackley

图5 RSO算法的收敛曲线

观察图5可知,RSO算法在两个基准函数上都收敛到了较高的精度,且收敛迅速。在函数Sphere上,收敛曲线始终处于下降状态,种群没有出现退化情况;在函数Ackley上,RSO算法没有陷入局部最优解,而是从迭代开始就迅速收敛,仅用了不到100次迭代就收敛到了最优值。

RSO算法的性能是可观的。我们的追求就是算法设计简单、参数少、计算量小,且性能优越。因此,RSO算法是一种比较值得推广的智能优化算法,大家可以进一步了解一下。

05

MATLAB代码

公众号:启发式算法讨论

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

algorithmzzy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值