声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~
目录
今天给大家介绍一个2024年的新算法,伞蜥优化算法(Frilled Lizard Optimization, BSLO)。之前也发过介绍很多新算法的文章,起码都还是有一些新意的。但这个算法实在是和2023年的鱼鹰算法太像了,仅改动两个变量就直接又发了篇SCI。
废话不多说,来看看这位神奇的作者是如何做到的。
上图是2024年新出的伞蜥优化算法,下图是2023年新出的鱼鹰算法,两篇文章中均有同一作者。
这是一种新型的智能优化算法,灵感来自伞蜥的狩猎行为。该成果由Ibraheem Abu Falahah等人于2024年6月发表在SCI期刊《Computers Materials & Continua》上。
首先看下源代码:
第一部分:完全没有任何区别,仅改动了算法名称。
第二部分:也几乎完全没有任何区别,只是改动了变量名称,把OOA算法中的fish改成了prey,以迎合新创算法的写作需要,对算法构成毫无影响。
第三部分:唯一的改动点,将鱼鹰算法中的下界+随机数改成了1-2*随机数。当然,你可以说这能使得算法的性能更好(后文也给了测试结果,收敛速度会稍微快一些)。更何况,这两个算法的模板几乎一模一样。尽管作者都来自同一人,但如果这种改动都能称之为一个新的算法,那我一天可以编出10个这种算法出来,无非就是加几个随机数而已。
虽然作者均为同一人,但我还是倾向于认为他们构成了学术不端。当然,严格按定义来讲是够不上的,但你要说灌水那肯定是没跑的了。
如果你也对这个算法有什么看法,可以直接评论区留言,我会全部精选。
说了这么多,还是先一起来看下这个算法的原理。
原理简介
伞蜥是一种原产于新几内亚南部和澳大利亚北部的蜥科蜥蜴。伞蜥是一种树栖物种,每天有90%以上的时间在树上度过。在这种动物在地面上的短暂时间内,它忙于觅食、社交或前往新树。
一、种群初始化
BSLO首先在解空间中初始化一组随机分布的候选解:
Xi,d表示它在搜索空间(决策变量)中的第d维,N表示伞蜥的数量,r表示区间[0,1]中随机取的一个数字,lbd和ubd分别是第d个决策变量的下界和上界。
二、狩猎策略(勘探)
伞蜥最典型的自然行为之一就是它的捕猎策略。伞蜥是一种坐等捕食者,看到猎物后就会攻击它。对伞蜥向猎物移动的模拟,使得种群成员在问题求解空间中的位置发生了广泛的变化,从而提高了算法全局搜索的探索能力。在FLO的第一阶段,种群个体在问题解空间中的位置根据伞蜥的狩猎策略进行更新。在FLO的设计中,对于每只伞蜥,将目标函数值更优的种群成员的位置作为猎物位置。据此,利用式(4)确定每只伞蜥的候选猎物位置集:
其中CP为第i条伞蜥的候选猎物集,Xk为目标函数值优于第i条伞蜥的种群成员,Fk为其目标函数值。
在FLO设计中,假设伞蜥随机选择其中一个候选猎物并攻击它。基于伞蜥向选定猎物移动的建模,使用Eq.(5)计算种群中每个个体的新位置。然后,如果目标函数值更好,则使用Eq.(6)替换相应个体的先前位置:
其中XP1i表示基于FLO第一阶段的第i条伞蜥的新位置,XP1i,d表示它的第d维,FP1i表示它的目标函数值,r为一个区间[0,1]的正态分布随机数,SPi,d表示第I条伞蜥选择猎物的第d维,I是从集合{1,2}中随机取的数字,N表示伞蜥的数量,m表示决策变量的数量。
三、向上爬树(开发)
进食后,这只伞蜥会退到它所在位置附近的树顶。通过模拟伞蜥向树顶的移动,使得种群个体在问题解空间中的位置发生了微小的变化,从而提高了算法对局部搜索的利用能力。在FLO的第二阶段,种群个体在解空间中的位置根据进食后退回树顶时的策略进行更新。
基于对伞蜥移动到附近树顶的建模,使用Eq.(7)计算每个种群个体的新位置。然后,如果这个新位置改善了目标函数值,则使用Eq.(8)替换相应个体的先前位置:
其中XP2i表示基于FLO第二阶段的第i条伞蜥的新位置,XP2i,d表示它的第d维,FP2i表示它的目标函数值,t表示算法的迭代计数器,T表示算法的最大迭代次数。
算法流程图和伪代码
以下提供FLO算法的流程图和伪代码,非常清晰!
如果实在看不懂,不用担心,可以看下源代码,再结合上文公式理解就一目了然了!
性能测评
原文作者在CEC2017以及CEC2011中的22个约束优化问题和4个复杂的工程设计问题验证了BSLO的鲁棒性和通用性。
这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,设置迭代次数为1000,并与上文提到的鱼鹰算法OOA进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!
这个算法和鱼鹰算法很像,性能也非常相似,但比鱼鹰的收敛速度更快,基本在CEC2005中是一个天花板的存在。当然,我这里只测试了CEC2005,大家也可以测试了CEC2017的效果如何~大家应用到各类预测、优化问题中也是一个不错的选择。
参考文献
[1]Falahah I A, Al-Baik O, Alomari S, et al. Frilled Lizard Optimization: A Novel Bio-Inspired Optimizer for Solving Engineering Applications[J].
完整代码
如果需要免费获得图中的完整测试代码,只需点击下方小卡片,再后台回复关键字,不区分大小写:
FLO
也可点击下方小卡片,再后台回复个人需求(比如FLO-SVM)定制以下FLO算法优化模型(看到秒回):
1.回归/时序/分类预测类:SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~
2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可(可任意搭配非常新颖)~
3.分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD等分解模型均可~
4.路径规划类:机器人路径规划、无人机三维路径规划、冷链物流路径优化、VRPTW路径优化等等~
5.优化类:光伏电池参数辨识优化、储能容量配置优化、微电网优化、PID参数整定优化、无线传感器覆盖优化、故障诊断等等均可~~
6.原创改进优化算法(适合需要创新的同学):原创改进2024年的伞蜥优化算法FLO以及蛇鹫SBOA、蜣螂DBO等任意优化算法均可,保证测试函数效果!
更多免费代码链接: