鼠群优化(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代码

公众号:启发式算法讨论

猜你喜欢

转载自blog.csdn.net/jieyanping/article/details/128417033
今日推荐