- 2020年,Hashim 等人受到阿基米德定律启发,提出了阿基米德最优化算法(Archimedes Optimization Algorithm,AOA)。
- AOA 算法模仿了完全或部分浸没在流体中的物体发生碰撞时所受浮力的关系,在迭代过程中不断调整个体密度、体积和加速度,从而使个体达到平衡状态,适应度值优的个体引导种群收敛到最优位置。
AOA algorithm
- 2020年,Hashim 等人受到阿基米德定律启发,提出了阿基米德最优化算法(Archimedes Optimization Algorithm,AOA)。
- AOA(Archimedes Optimization Algorithm),即阿基米德最优化算法,模仿了完全或部分浸没在流体中的物体发生碰撞时所受浮力的关系,在迭代过程中不断调整个体密度、体积和加速度,从而使个体达到平衡状态,适应度值优的个体引导种群收敛到最优位置。
- AOA 是一种基于种群的算法。在所提出的方法中,群体个体是浸没对象。与其他基于种群的元启发式算法一样,AOA 也以具有随机体积、密度和加速度的对象(候选解)的初始种群开始搜索过程。在此阶段,每个对象也将使用其在流体中的随机位置进行初始化。在评估初始种群的适应度后,AOA 开始迭代,直到满足终止条件。在每次迭代中,AOA 都会更新每个对象的密度和体积。对象的加速度根据其与任何其他相邻对象碰撞的情况进行更新。更新后的密度、体积、加速度用来确定对象的新位置。
算法细节
初始化:在种群初始化阶段,所有个体看作泡在流体中的不同物体:
- 位置:
- 其中
是搜索空间上限, 是搜索空间下限, 为种群规模, 为 [0, 1] 内随机数
- 其中
- 体积:
- 密度:
- 加速度:
- 位置:
更新物体的体积、密度:在 AOA 算法中,物体的体积、密度并不是固定的:
其中
是种群中最优个体的体积, 是种群中最优个体的密度 转移算子与密度因子:在算法迭代初期,物体之间会发生碰撞,而随着时间的推移,物体试图达到平衡状态。这个过程在算法中由转移算子
实现,其控制着算法从 exploration 到 exploitation 的转换: - 其中
为当前迭代次数, 为最大迭代次数
- 其中
同样,密度递减因子
也有助于 AOA 进行全局搜索过渡到局部搜索。它随着时间的推移而减少: 这里我们可以这样理解:迭代前期个体间存在碰撞现象,被弹开了嘛,所以能够弹到别的位置,因此就巧妙的对搜索空间进行了充分的探索;而迭代后期大家靠的越来越近,即使被碰也弹不了很远,所以就能很好地进行局部搜索。
探索阶段(对搜索空间进行探索)exploration:若
,个体之间会发生碰撞,所以选择随机个体 用以更新个体 的加速度: ,然后进行归一化处理:
开发阶段(对局部空间进行开发)exploitation:若
,个体间不再相互碰撞,则加速度更新方式为: ,然后进行归一化处理:
更新物体位置:
- 若
,则第 个物体在 迭代时的位置为: - 若
,则第 个物体在 迭代时的位置为:$x_i^{t+1} = x_{best}^{t}+FC2randacc_{i-norm}^{t+1}d(Tx_{best} - x_i^t)$ - 其中 $F = \left{
\right. T = C3 * TF P = 2rand - C4$
- 其中 $F = \left{
- 若
算法流程
初始化算法参数:种群数量,最大迭代次数及 C1 至 C4。
根据下面的公式分别初始化对象的位置、体积和密度。
位置:
- 其中
是搜索空间上限, 是搜索空间下限, 为种群规模, 为 [0, 1] 内随机数
- 其中
体积:
密度:
使用适应度函数评估种群,确定初始最优个体。
根据下式更新对象的体积和密度。
根据下式更新转移算子与密度因子。
若
,使用下式更新物体的加速度和位置。 ,然后进行归一化处理:
若
,使用下式更新物体的加速度和位置。 ,然后进行归一化处理: - $x_i^{t+1} = x_{best}^{t}+FC2randacc_{i-norm}^{t+1}d(Tx_{best} - x_i^t)$
- 其中 $F = \left{
\right. T = C3 * TF P = 2rand - C4$
- 其中 $F = \left{
使用适应度函数评估种群,确定最优个体。
判断是否满足迭代停止条件,满足则退出,输出最优结果,否则,重复执行 Step 4 - 7。