优化算法(三)——算术优化算法
再次开张啦,今天给大家带来的是由Mirjalili教授合作开发的算数优化算法(Arithmetic Optimization Algorithm, AOA)[1],该算法于2021年提出并发表于 Comput. Methods Appl. Mech. Eng.。AOA算法结构简单、参数较少且易于实现,它的搜索过程主要受基本数学运算符控制,即乘法(M“×”),除法(D“÷”),减法(S“-”)和加法(A“ +”))。下面直上干货!!1. 算法介绍
算数优化算法用于解决优化问题。 首先,AOA通过创建多个初始随机候选解决方案,通常以创建一组矩阵来实现,如Eq(1):
优化通常分为探索和开发两个阶段,在AOA算法完成初始化后,首先将进入探索阶段,在探索阶段前将先计算Math Optimizer Accelerated(MOA)用于探索阶段,MOA由下公式获取Eq(2):
根据算术运算符,使用除法(D)运算符或乘法(M)运算符的数学计算可得到高分布的值或决策,这些有助于算法的探索机制,使用乘法(M)或除法(D)作为AOA的探索机制,可以通过在解空间中多次迭代探索中找到尽可能的近似最优解,从而为后续优化阶段(开发阶段)得到更有希望的最优解提供了可能。MO P数学优化器,MOP(C_Iter)表示第t次迭代的函数值其公式如下Eq(4):
其中,C_Iter表示当前迭代,而M_Iter表示最大迭代次数, https://www.zhihu.com/equation?tex=%5Calpha 是是一个敏感参数(sensitive parameter),定义了迭代过程中的开发精度,在本文中 https://www.zhihu.com/equation?tex=%5Calpha%3D5 。
根据算术运算符,使用减法(S)或加法(A)进行的数学计算可以获得高密度的结果,当然,此结果与利用搜索机制有关。 但是,与乘法(M)和除法(D)算子不同,加法(A)和减法(S)算子可以由其低分散性而可以轻松地接近目标,以此可以利用加法(A)和减法(S)算子作为AOA的开发阶段,从而得到更有优势的解,开发阶段公式如下:
2. 源代码
AOA源代码传送门:https://seyedalimirjalili.com/aoa
3. 算法改进
值得一提,AOA的相关改进再原文文章处有所提及:
此外,可以提出所提出的 AOA 的其他改进版本来分别解决具有二元、离散和多目标的优化问题。Levy 飞行、中断、突变和对立学习(OBL)可以与 AOA 相结合以提高其性能。AOA 算法可以在优化领域与其他随机组件混合(hybrid),包括局部搜索或全局搜索方法,以提高其性能。原文作者已经说的非常全面,我也试测过Levy 飞行改进,确实比原算法有很大的提升。
4. 引用
[1]Abualigah, L.; Diabat, A.; Mirjalili, S.; Abd Elaziz, M.; Gandomi, A.H. The Arithmetic Optimization Algorithm. Comput. Methods Appl. Mech. Eng. 2021, 376, 113609. https://doi.org/10.1016/j.cma.2020.113609.
页:
[1]