智能优化算法:阿基米德优化算法
摘要:Archimedes optimization algorithm(AOA)称为阿基米德优化算法是于2020年提出的。受启发于有趣的物理定律阿基米德原理。它模仿了向上施加在物体上的浮力原理,物体部分或完全浸入流体中,浮力与被置换流体的重量成正比。
1.算法原理
AOA是一种基于种群的算法。在所提出的方法中,群体个体是浸没对象。与其他基于种群的元启发式算法一样,AOA也以具有随机体积、密度和加速度的对象(候选解)的初始种群开始搜索过程。在此阶段,每个对象也将使用其在流体中的随机位置进行初始化。在评估初始种群的适应度后,AOA在迭代开始,直到满足终止条件。在每次迭代中,AOA都会更新每个对象的密度和体积。对象的加速度根据其与任何其他相邻对象碰撞的情况进行更新。更新的密度、体积、加速度确定对象的新位置。
1)初始化: 使用初始化所有对象的位置由公式(1)。
O
i
=
l
b
i
+
r
a
n
d
∗
(
u
b
i
−
l
b
i
)
,
i
=
1
,
2
,
.
.
,
N
(1)
O_i=lb_i+rand*(ub_i-lb_i),i=1,2,..,N \tag{1}
Oi=lbi+rand∗(ubi−lbi),i=1,2,..,N(1)
初始化每个第
i
i
i个对象的体积(
v
o
l
vol
vol)和密度(
d
e
n
den
den)由公式(2)。
{
d
e
n
i
=
r
a
n
d
v
o
l
i
=
r
a
n
d
(2)
\begin{cases} den_i=rand \\ vol_i=rand \end{cases}\tag{2}
{deni=randvoli=rand(2)
最后,使用式(3)初始化第
i
i
i个对象的加速度(
a
c
c
acc
acc)。
a
c
c
i
=
l
b
i
+
r
a
n
d
∗
(
u
b
i
−
l
b
i
)
(3)
acc_i=lb_i+rand*(ub_i-lb_i)\tag{3}
acci=lbi+rand∗(ubi−lbi)(3)
其中ub,lb为变量的上下边界。
评估初始总体并选择具有最佳适应度值的对象 x b e s t , d e n b e s t , a c c b e s t x_{best},den_{best},acc_{best} xbest,denbest,accbest
2).更新密度及体积见式(4)。
{
d
e
n
i
t
+
1
=
d
e
n
i
t
+
r
a
n
d
∗
(
d
e
n
b
e
s
t
−
d
e
n
i
t
)
v
o
l
i
t
+
1
=
v
o
l
i
t
+
r
a
n
d
∗
(
v
o
l
b
e
s
t
−
v
o
l
i
t
)
(4)
\begin{cases} den^{t+1}_i=den_i^t+rand*(den_{best}-den_i^t)\\ vol_i^{t+1}=vol_i^t+rand*(vol_{best}-vol_i^t) \end{cases}\tag{4}
{denit+1=denit+rand∗(denbest−denit)volit+1=volit+rand∗(volbest−volit)(4)
3).计算转移算子与密度因子
起初,物体之间发生碰撞,经过一段时间后,物体试图达到平衡状态。这是在AOA中通过传输运算符
T
F
TF
TF实现的,该运算符将搜索从探索转换为利用,使用(5)定义:
T
F
=
e
x
p
(
t
−
t
m
a
x
t
m
a
x
)
(5)
TF=exp(\frac{t-t_{max}}{t_{max}})\tag{5}
TF=exp(tmaxt−tmax)(5)
同样,密度递减因子
d
d
d也有助于AOA进行全局到局部搜索。它随着时间的推移而减少,使用(6)定义:
d
t
+
1
=
e
x
p
(
t
−
t
m
a
x
t
m
a
x
)
−
t
t
m
a
x
(6)
d^{t+1}=exp(\frac{t-t_{max}}{t_{max}})-\frac{t}{t_{max}}\tag{6}
dt+1=exp(tmaxt−tmax)−tmaxt(6)
4)探索阶段(对象之间发生碰撞)
若 T F ≤ 0.5 TF\leq 0.5 TF≤0.5,对象之间发生碰撞,选择一个随机材质并 m r mr mr使用(7)更新迭 t + 1 t+1 t+1代时的对象的加速度:
a c c i t + 1 = d e n m r + v o l m r ∗ a c c m r d e n i t + 1 ∗ v o l i t + 1 (7) acc_i^{t+1}=\frac{den_{mr}+vol_{mr}*acc_{mr}}{den_i^{t+1}*vol_i^{t+1}}\tag{7} accit+1=denit+1∗volit+1denmr+volmr∗accmr(7)
值得一提的是, T F ≤ 0.5 TF\leq0.5 TF≤0.5确保在三分之一的迭代中进行探索。 T F > 0.5 TF>0.5 TF>0.5时将进行勘探开发行为。
5)开发阶段(对象之间无碰撞)
若 T F > 0.5 TF>0.5 TF>0.5,使用(8)更新 t + 1 t+1 t+1迭代时的对象的加速度:
a
c
c
i
t
+
1
=
d
e
n
b
e
s
t
+
v
o
l
b
e
s
t
∗
a
c
c
b
e
s
t
d
e
n
i
t
+
1
∗
v
o
l
i
t
+
1
(8)
acc_i^{t+1}=\frac{den_{best}+vol_{best}*acc_{best}}{den_i^{t+1}*vol_i^{t+1}}\tag{8}
accit+1=denit+1∗volit+1denbest+volbest∗accbest(8)
(6) 归一化加速度使用(9)计算变化百分比。
a
c
c
i
−
n
o
r
m
t
+
1
=
u
∗
a
c
c
i
t
+
1
−
m
i
n
(
a
c
c
)
m
a
x
(
a
c
c
)
−
m
i
n
(
a
c
c
)
+
l
(9)
acc_{i-norm}^{t+1}=u*\frac{acc_i^{t+1}-min(acc)}{max(acc)-min(acc)}+l \tag{9}
acci−normt+1=u∗max(acc)−min(acc)accit+1−min(acc)+l(9)
(7)对象位置更新
若 T F ≤ 0.5 TF\leq 0.5 TF≤0.5,第 i i i个 t + 1 t+1 t+1迭代时对象位置更新使用(10):
x
i
t
+
1
=
x
i
t
+
C
1
∗
r
a
n
d
∗
a
c
c
i
−
n
o
r
m
t
+
1
∗
d
∗
(
x
r
a
n
d
−
x
i
t
)
(10)
x_i^{t+1}=x_i^t+C1*rand*acc_{i-norm}^{t+1}*d*(x_{rand}-x_i^t)\tag{10}
xit+1=xit+C1∗rand∗acci−normt+1∗d∗(xrand−xit)(10)
若
T
F
>
0.5
TF>0.5
TF>0.5,第
i
i
i个
t
+
1
t+1
t+1迭代时对象位置更新使用(11):
x
i
t
+
1
=
x
b
e
s
t
t
+
F
∗
C
2
∗
r
a
n
d
∗
a
c
c
i
−
n
o
r
m
t
+
1
∗
d
∗
(
T
∗
x
b
e
s
t
−
x
i
t
)
(11)
x_i^{t+1}=x_{best}^t+F*C2*rand*acc_{i-norm}^{t+1}*d*(T*x_{best}-x_i^t)\tag{11}
xit+1=xbestt+F∗C2∗rand∗acci−normt+1∗d∗(T∗xbest−xit)(11)
其中:
F
=
{
+
1
,
i
f
P
<
0.5
−
1
,
i
f
P
≥
0.5
F = \begin{cases}+1,if\,P<0.5\\-1,if P\geq0.5\end{cases}
F={+1,ifP<0.5−1,ifP≥0.5,
T
=
C
3
∗
T
F
T=C3*TF
T=C3∗TF,
P
=
2
r
a
n
d
−
C
4
P=2rand-C4
P=2rand−C4
2.算法流程
Step1: 初始化算法参数:种群数量,最大迭代次数及C1至C4。
Step2:根据公式(1)-(3)分别初始化对象,体积,密度,并评估适应度函数值,确定初始最优解和最优位置。
Step3:更新密度及体积根据式(4)。
Step4:根据公式(5)和(6)更新转移算子与密度因子。
Step5:若 T F ≤ 0.5 TF\leq0.5 TF≤0.5,更新对象位置用式(8)(9)(10)。否则更新对象位置用式(8)(9)(11)。
Step6:判断是否满足迭代停止条件,满足则退出,输出最优结果,否则,重复执行Step2-6;
3.算法结果
4.参考文献
[1] Hashim, Fatma A., Kashif Hussain, Essam H. Houssein, Mai S. Mabrouk, and Walid Al-Atabany. “Archimedes optimization algorithm: a new metaheuristic algorithm for solving optimization problems.” Applied Intelligence (2020): 1-21.
5.Matlab代码
改进算法:
名称 | 参考文献 |
---|---|
融合Sin混沌和分段权值的阿基米德优化算法(SAOA) | [1]罗仕杭,何庆.融合Sin混沌和分段权值的阿基米德优化算法[J/OL].计算机工程与应用:1-12[2021-10-12].http://kns.cnki.net/kcms/detail/11.2127.TP.20210913.1319.012.html. |
基于黄金莱维引导机制的阿基米德优化算法(MSAOA) | [1]陈俊,何庆,李守玉.基于黄金莱维引导机制的阿基米德优化算法[J].计算机应用,2022,42(09):2807-2815. |
基于自适应反馈调节因子的阿基米德优化算法(IAOA) | [1]陈俊,何庆,李守玉.基于自适应反馈调节因子的阿基米德优化算法[J].计算机科学,2022,49(08):237-246. |
6.python代码
改进算法
名称 | 参考文献 |
---|---|
融合Sin混沌和分段权值的阿基米德优化算法(SAOA) | [1]罗仕杭,何庆.融合Sin混沌和分段权值的阿基米德优化算法[J/OL].计算机工程与应用:1-12[2021-10-12].http://kns.cnki.net/kcms/detail/11.2127.TP.20210913.1319.012.html. |
基于黄金莱维引导机制的阿基米德优化算法(MSAOA) | [1]陈俊,何庆,李守玉.基于黄金莱维引导机制的阿基米德优化算法[J].计算机应用,2022,42(09):2807-2815. |
基于自适应反馈调节因子的阿基米德优化算法(IAOA) | [1]陈俊,何庆,李守玉.基于自适应反馈调节因子的阿基米德优化算法[J].计算机科学,2022,49(08):237-246. |