沙猫群优化(SCSO)算法及其工程应用(含MATLAB代码)

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

今天介绍2022年提出的一种新型群智能优化算法:沙猫群优化(Sand Cat Swarm Optimization, SCSO)算法。由Amir Seyyedabbasi和Farzad Kiani提出,该算法主要模仿了自然界中沙猫的捕食行为。

其参考文献如下:

Seyyedabbasi A, Kiani F. Sand Cat swarm optimization: A nature-inspired algorithm to solve global optimization problems[J]. Engineering with Computers, 2022: 1-25.

01
灵感来源

沙猫是一种猫科动物,它是一种哺乳动物。沙猫生活在中亚撒哈拉、非洲撒哈拉和阿拉伯半岛等沙质和石质沙漠的恶劣环境中。小而敏捷、谦逊的沙猫在捕猎和生活中有着不同的生活行为。沙猫的生活行为与家猫不同,尽管在外观上沙猫和家猫没有太大的区别。沙猫不像其他猫科动物那样群居。沙猫的手掌和脚底覆盖着密度较高的浅灰色皮毛。覆盖在脚底的皮毛使脚垫能够抵御沙漠中严酷的冷热天气。此外,沙猫的皮毛特征使得对它的检测和跟踪变得困难。沙猫的体长约为45-57厘米。它的尾巴大约是头和体长的一半(28-35厘米),短腿,边缘的爪子短而弯曲,后爪更拉长和弱弯曲。成年沙猫的体重在1到3.5公斤之间。头部两侧的耳朵有5-7厘米长。沙猫的耳朵在觅食方面有相当大的作用。这种猫的夜间活动、地下活动和秘密性质使它很特别。

动物在严酷恶劣的环境中很难寻找食物,沙猫在沙漠中也不例外。沙猫会在凉爽的夜晚寻找食物,白天躲在石头下休息,夜晚出去狩猎。沙猫大部分时间都在洞穴里度过,它们的姿势是仰卧以释放身体内的热量。为了克服口渴,它们从食物中提取水分,通常会吃自己体重10%左右的食物,但也可以吃得比平时多。雄性沙猫在夜间走得比雌性多,雄性和雌性猫的平均步行距离分别为 5.5 公里和 3.2 公里,冬天的步行平均值低于夏季。和猫科动物一样,沙猫也用爪子捕食,捕食小型沙漠啮齿动物、爬行动物、小鸟、刺鼠、昆虫和蛇。
 

沙猫的狩猎机制非常有趣,它们利用敏锐的听觉能力获得低频噪音,通过这种方式,沙猫可以发现在地下移动的猎物(昆虫和啮齿动物)。沙猫耳朵的耳廓凸缘(外耳)与家猫没有区别,但沙猫的耳道长度(中耳)比家猫长,中耳的空气空间很大,所以沙猫可以检测到不同声音之间到达时间的差异。沙猫的鼓膜是家猫的5倍。科学研究表明,沙猫接收到低于 2 kHz频率的能力令人难以置信,在这个频率下,沙猫比家猫敏感约8 dB。这些独特的特征可能是沙猫检测噪音(猎物移动)、跟踪猎物并根据猎物位置成功攻击的原因。如果猎物在地下,沙猫也有一种神奇的快速挖掘能力。根据沙猫的行为,将觅食分为两个阶段:搜索和攻击猎物。作者提出的SCSO算法就包括了这两个阶段,此外,还提出了一种机制来实现勘探和开发的平衡。

因此,SCSO算法模拟了沙猫的两个主要行为:搜寻猎物和攻击猎物。

02
算法设计

与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

03
勘探和开发的实现

勘探和开发作为进化算法的两个重要概率,在前期推送中已经详细介绍,可以点击以下链接查看:

种群的勘探(Exploration)与开发(Exploitation)(含MATLAB代码)

接下来,我们就来讨论SCSO算法是如何全局勘探与局部开发的。

04
计算流程

SCSO算法的计算流程如下:

05
实验仿真

这里对SCSO算法的性能进行简单的测试。将SCSO算法用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取的50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集和CEC2020优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。

首先,我们来检验一下SCSO对全局勘探和局部开发的平衡能力。如图1所示,是SCSO算法在CEC2005测试函数f8上的勘探和开发占比曲线。

图1 SCSO在CEC2005 f8上的勘探和开发百分占比变化曲线

其次,以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示SCSO算法在30维环境下的收敛效果,如图2所示。

(a) 单峰函数Sphere (f1)

(b) 多峰函数Ackley (f10)

图2 SCSO在CEC2005两个测试函数上的收敛曲线

再次,以CEC2013测试集中的单峰函数F2为例,展示SCSO算法在30维环境下的收敛效果,如图3所示。(注意是画的误差曲线)

图3 SCSO在CEC2013 F2上的误差收敛曲线

接着,以CEC2014测试集中的混合函数F19为例,展示SCSO算法在30维环境下的收敛效果,如图4所示。(注意是画的误差曲线)

图4 SCSO在CEC2014 F19上的误差收敛曲线

再然后,以CEC2017测试集中的多模态函数F7为例,展示SCSO算法在30维环境下的收敛效果,如图5所示。(注意是画的误差曲线

图5 SCSO在CEC2017 F7上的误差收敛曲线

最后,以CEC2020优化函数测试集中的复合函数F10为例,展示SCSO算法在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)

图6 SCSO在CEC2020优化函数 F10上的误差收敛曲线

进一步,可将SCSO应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以拉伸/压缩弹簧设计问题为例,展示求解效果。收敛曲线如图7所示。

图7 SCSO在拉伸/压缩弹簧设计问题上的目标函数收敛曲线

06
MATLAB代码

公众号里有,关注公众号:启发式算法讨论

SCSO算法跑CEC2005测试集:

SCSO算法跑CEC2013测试集:

SCSO算法跑CEC2014测试集:

SCSO算法跑CEC2017测试集:

SCSO算法跑CEC2020优化函数测试集:

SCSO算法的勘探(Exploration)和开发(Exploitation)占比分析:

SCSO算法的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。

SCSO算法的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。

其他算法跑CEC2020优化函数测试集:

灰狼优化(GWO)算法跑CEC2020优化函数测试集:

鲸鱼优化算法(WOA)跑CEC2020优化函数测试集:

哈里斯鹰优化(HHO)算法跑CEC2020优化函数测试集:

蜣螂优化(DBO)算法跑CEC2020优化函数测试集:

白鲸优化(BWO)算法跑CEC2020优化函数测试集:

金豺优化(GJO)算法跑CEC2020优化函数测试集:

蛇(SO)算法跑CEC2020优化函数测试集:

猜你喜欢

转载自blog.csdn.net/jieyanping/article/details/129922340