浣熊优化算法(COA)(含MATLAB代码)

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

 

“今天的主角是一种可爱的动物——长鼻浣熊。这个算法也是2023年1月10日刚提出的新算法,大家可以拿来作为对比算法~”

浣熊优化算法(COA)(含MATLAB代码)_第1张图片

浣熊优化算法(COA)(含MATLAB代码)_第2张图片

浣熊优化算法(Coati Optimization Algorithm, COA)模拟了自然界中长鼻浣熊的两种自然行为:(1)攻击和捕猎鬣蜥时的行为;(2)逃离捕食者者时的行为。作者从勘探和开发两个阶段描述了COA的实现步骤,并对其进行了数学建模。COA的结果与11种著名的元启发式算法的结果进行了比较,仿真结果表明,COA具有明显的优势和较强的竞争力。COA的原始参考文献如下:

“Dehghani M, Montazeri Z, Trojovská E, et al. Coati Optimization Algorithm: A new bio-inspired metaheuristic algorithm for solving optimization problems[J]. Knowledge-Based Systems, 2023, 259: 110011.”

01
灵感来源

长鼻浣熊,原产于美国西南部、墨西哥、中美洲和南美洲的日间哺乳动物。所有长鼻浣熊都有一个细长的头部,灵活的、伸展的、略微向上翘的鼻子,黑色的爪子,小巧的耳朵,用来发出信号和保持平衡的长而不能缠绕的尾巴。成年长鼻浣熊从头到尾尖的长度在33到69厘米之间,可以和它们的身体一样长。长鼻浣熊的大小和家猫差不多,体重在2到8公斤之间,站立时肩部高约30厘米。雄性可以长到接近雌性的两倍大,有锋利的大犬齿。这些测量是针对南美长鼻浣熊和白鼻浣熊的。山地长鼻浣熊是两者中较小的。长鼻浣熊的图像如图1所示。长鼻浣熊是杂食动物:它们吃无脊椎动物,如狼蛛;长鼻浣熊也吃小型脊椎动物的猎物,如小鸟、蜥蜴、啮齿动物、鳄鱼蛋和鸟蛋。长鼻浣熊最喜欢的食物之一是绿鬣蜥。这些大型蜥蜴(鬣蜥)经常在树上发现,所以长鼻浣熊成群捕食它们。一些长鼻浣熊爬上树,吓得鬣蜥跳到了地上,而其他长鼻浣熊则会迅速攻击鬣蜥。然而,长鼻浣熊有被捕食者袭击的危险。美洲虎、豹猫、狗、狐狸、蟒蛇、鬃狼、水蟒等都是长鼻浣熊的捕食者。它们也被大型猛禽捕食,如大雕、黑雕等。

图1 长鼻浣熊捕食时的图片

长鼻浣熊攻击鬣蜥时的策略以及面对捕食者时的逃离行为都是智能过程。对长鼻浣熊的这些自然行为的模拟是设计COA方法的基本灵感。

02
算法设计

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

在COA中更新长鼻浣熊(候选解)位置的过程是基于对COA的两种自然行为进行建模。这些行为包括:(1)长鼻浣熊攻击鬣蜥时的策略;(2)长鼻浣熊逃离捕食者的策略。因此,COA总体在两个不同的阶段进行更新。

浣熊优化算法(COA)(含MATLAB代码)_第3张图片

浣熊优化算法(COA)(含MATLAB代码)_第4张图片

图2 COA第一阶段的模式图:(a)长鼻浣熊种群的一半攻击树上的鬣蜥;(b)长鼻浣熊种群的另一半在地上猎杀倒下的鬣蜥

浣熊优化算法(COA)(含MATLAB代码)_第5张图片

浣熊优化算法(COA)(含MATLAB代码)_第6张图片

图3 COA第二阶段:长鼻浣熊逃离捕食者的模式图

03
计算流程

COA的计算如下:

浣熊优化算法(COA)(含MATLAB代码)_第7张图片

04
实验仿真

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

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

浣熊优化算法(COA)(含MATLAB代码)_第8张图片

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

其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示COA在30维环境下的收敛效果,如图5所示。

浣熊优化算法(COA)(含MATLAB代码)_第9张图片

(a) 单峰函数Schwefel's 2.22 (f2)

浣熊优化算法(COA)(含MATLAB代码)_第10张图片

(b) 多峰函数Ackley (f10)

图5 COA在CEC2005两个测试函数上的收敛曲线

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

浣熊优化算法(COA)(含MATLAB代码)_第11张图片

图6 COA在CEC2013 F5上的误差收敛曲线

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

浣熊优化算法(COA)(含MATLAB代码)_第12张图片

图7 COA在CEC2014 F18上的误差收敛曲线

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

浣熊优化算法(COA)(含MATLAB代码)_第13张图片

图8 COA在CEC2017 F4上的误差收敛曲线

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

浣熊优化算法(COA)(含MATLAB代码)_第14张图片

图9 COA在CEC2020优化函数 F9上的误差收敛曲线

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

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

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

这里以焊接梁设计问题为例,展示COA求解效果。收敛曲线如图10所示。

浣熊优化算法(COA)(含MATLAB代码)_第15张图片

图10 COA在焊接梁设计问题上的目标函数收敛曲线

05
MATLAB代码

COA跑CEC2005测试集:

COA跑CEC2013测试集:

COA跑CEC2014测试集:

COA跑CEC2017测试集:

COA跑CEC2020优化函数测试集:

COA的勘探(Exploration)和开发(Exploitation)占比分析:

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

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

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

你可能感兴趣的:(算法,matlab,开发语言,人工智能,启发式算法)