一、理论基础
1、阿基米德算法
请参考这里。
2、多策略阿基米德算法
(1)变区间初始化策略
为了改善初始种群的缺陷,获得好的初始种群,本文利用变区间初始化策略来提取搜索空间中有用信息以保证种群向全局最优解靠近。
对于优化问题:
min
f
(
t
)
,
t
i
∈
[
L
B
i
,
U
B
i
]
,
i
∈
{
1
,
2
,
⋯
,
n
}
(1)
\min f(\boldsymbol t),\,\,t_i\in[LB_i,UB_i],\,\,i\in\{1,2,\cdots,n\}\tag{1}
minf(t),ti∈[LBi,UBi],i∈{1,2,⋯,n}(1)其中,
L
B
\boldsymbol{LB}
LB(Lower Bound)表示搜索空间中的搜索下限;
U
B
\boldsymbol{UB}
UB(Upper Bound)表示搜索空间中的搜索上限。变区间初始化策略对就是通过不断缩短
[
L
B
,
U
B
]
[\boldsymbol{LB},\boldsymbol{UB}]
[LB,UB],将初始种群逼近到式(1)中近似最优解的附近。
首先在中间取一个中点
l
\boldsymbol l
l。
l
=
L
B
+
0.5
(
U
B
−
L
B
)
(2)
\boldsymbol l=\boldsymbol{LB}+0.5(\boldsymbol{UB}-\boldsymbol{LB})\tag{2}
l=LB+0.5(UB−LB)(2)生成两个个体:
x
1
=
L
B
+
r
a
n
d
(
l
−
L
B
)
(3)
\boldsymbol x_1=\boldsymbol{LB}+\boldsymbol{rand}(\boldsymbol l-\boldsymbol{LB})\tag{3}
x1=LB+rand(l−LB)(3)
x
2
=
l
+
r
a
n
d
(
U
B
−
l
)
(4)
\boldsymbol x_2=\boldsymbol{l}+\boldsymbol{rand}(\boldsymbol{UB}-\boldsymbol{l})\tag{4}
x2=l+rand(UB−l)(4)计算
f
(
x
1
)
f(\boldsymbol x_1)
f(x1)和
f
(
x
2
)
f(\boldsymbol x_2)
f(x2)并比较它们大小,若
f
(
x
1
)
>
f
(
x
2
)
f(\boldsymbol x_1)>f(\boldsymbol x_2)
f(x1)>f(x2),则有
x
∗
∈
[
l
,
U
B
]
\boldsymbol x^*\in[\boldsymbol l, \boldsymbol{UB}]
x∗∈[l,UB],从而将潜在的最优解位置收缩到
[
l
,
U
B
]
[\boldsymbol l, \boldsymbol{UB}]
[l,UB]内;依次迭代,不断缩短搜索区间,并将搜索空间
[
L
B
,
U
B
]
[\boldsymbol {LB}, \boldsymbol{UB}]
[LB,UB]分割成
n
−
1
n-1
n−1个子区间,把初始种群聚集到问题(1)的最优解附近。具体步骤参见算法1。
算法1 变区间初始化策略伪代码
确定搜索空间[LB,UB], 并设置种群个数N
i = 1
while (i < N+1)
l = LB+0.5(UB-LB);
x(i) = LB+rand(l-LB);
x(i+1) = l+rand(UB-l);
计算适应度值f(x(i))和f(x(i+1))
if f(x(i)) > f(x(i+1))
LB = l;
else
UB = l;
end if
i = i+2;
end while
(2)黄金莱维引导机制
为了加强AOA跳出局部最优的能力,本文提出黄金莱维引导机制:在凸优化理论中,AOA收敛的关键之一是其步长应当满足适定性。即步长较大,会使得算法搜索精度低且收敛后期出现震荡现象。步长较小会导致搜索速度低,且不易跳出局部最优。莱维步长是一种服从莱维分布的随机游动,其短距离与较长距离步长相间的特性,使得在未知范围内搜索时,能够达到更大范围,从而有助于算法跳出局部最优。步长
s
s
s的计算公式为:
s
=
μ
∣
ν
∣
1
/
β
(5)
s=\frac{\mu}{|\nu|^{1/\beta}}\tag{5}
s=∣ν∣1/βμ(5)其中,
μ
\mu
μ和
ν
\nu
ν服从正态分布,其计算公式请参考这里。
其次本文引入正弦函数与单位圆之间的关系,使得种群能遍历正弦函数上的所有点,即单位圆上的所有点。个体位置更新公式为:
X
new
t
+
1
=
X
t
×
∣
sin
(
R
1
)
∣
+
R
2
×
sin
(
R
1
)
×
s
⊕
d
i
s
(6)
\boldsymbol X_{\text{new}}^{t+1}=\boldsymbol X^t\times|\sin(R_1)|+R_2\times\sin(R_1)\times s\oplus\boldsymbol{dis}\tag{6}
Xnewt+1=Xt×∣sin(R1)∣+R2×sin(R1)×s⊕dis(6)
d
i
s
=
∣
θ
1
×
X
best
t
−
θ
2
×
X
i
t
∣
(7)
\boldsymbol{dis}=|\theta_1\times\boldsymbol X_{\text{best}}^t-\theta_2\times\boldsymbol X_{i}^t|\tag{7}
dis=∣θ1×Xbestt−θ2×Xit∣(7)其中,
R
1
∈
[
0
,
2
π
]
R_1\in[0,2\pi]
R1∈[0,2π]的随机数,
R
1
R_1
R1和莱维步长
s
s
s共同决定搜索半径;
R
2
∈
[
0
,
π
]
R_2\in[0,\pi]
R2∈[0,π]的随机数,决定个体的位置更新方向;
θ
1
\theta_1
θ1和
θ
2
\theta_2
θ2引入黄金分割系数
τ
\tau
τ,其计算公式请参考这里,目的是缩小搜索空间,使得算法在每次迭代都会对能产生优秀解的区域进行充分搜索,从而加快了算法收敛速度。
最后,虽然对目标个体使用黄金莱维引导机制,能让算法跳出局部最优,但是并不能保证新的个体位置优于原目标个体位置。因此在引导机制后加入贪婪机制,通过比较个体位置更新前后个体适应度后再决定是否更新目标位置,以保留适应度较好的个体。
X
i
t
+
1
=
{
X
i
t
,
f
i
t
(
X
i
t
)
<
f
i
t
(
X
new
t
+
1
)
X
new
t
+
1
,
f
i
t
(
X
i
t
)
≥
f
i
t
(
X
new
t
+
1
)
(8)
\boldsymbol X_i^{t+1}=\begin{dcases}\boldsymbol X_{i}^{t},\quad\quad fit(\boldsymbol X_{i}^{t})<fit(\boldsymbol X_{\text{new}}^{t+1})\\\boldsymbol X_{\text{new}}^{t+1},\quad\, fit(\boldsymbol X_{i}^{t})≥fit(\boldsymbol X_{\text{new}}^{t+1})\end{dcases}\tag{8}
Xit+1={Xit,fit(Xit)<fit(Xnewt+1)Xnewt+1,fit(Xit)≥fit(Xnewt+1)(8)
(3)自适应波长算子
在AOA中,由于缺乏多样性的操作,当AOA进化到一定的程度时候,导致AOA很难从自身适应度获取收益。因此结合浸泡在液体中运动物体的物理现象,本文提出自适应波长算子,增强个体学习效率,以提高算法寻优精度。 λ i = α − ( f ( X i ) − f min + ε ) / ( f max − f min + ε ) (9) \lambda_i=\alpha^{-(f(\boldsymbol X_i)-f_{\min}+\varepsilon)/(f_{\max}-f_{\min}+\varepsilon)}\tag{9} λi=α−(f(Xi)−fmin+ε)/(fmax−fmin+ε)(9)其中, λ i \lambda_i λi表示第 i i i个体运动引起的波长系数;其中 f ( X i ) f(\boldsymbol X_i) f(Xi)表示当前迭代中第 i i i个个体的适应度值; f min f_{\min} fmin和 f max f_{\max} fmax分别表示当前迭代中最优适应度值和最差适应度值; α \alpha α为衰减因子, ε \varepsilon ε为一个非常小的有理数,以防止分母为0的情况。最后将自适应波长系数融合到密度因子,得到新密度因子更新公式为: d i t + 1 = 1.5 × exp ( t max − t t max ) − ( t t max ) × λ i (10) d_i^{t+1}=1.5\times\exp\left(\frac{t_{\max}-t}{t_{\max}}\right)-\left(\frac{t}{t_{\max}}\right)\times\lambda_i\tag{10} dit+1=1.5×exp(tmaxtmax−t)−(tmaxt)×λi(10)其中, d i t + 1 d_i^{t+1} dit+1表示在 t + 1 t+1 t+1代中第 i i i个个体的密度因子。新的密度因子的大小会根据个体自身适应度动态变化。适应度接近最优适应度的个体,AOA保持原来的密度因子的性质;而适应度较差的个体,密度因子接近最大值,使当前个体拥有较长的步长,快速向最优解靠近。
(4)MSAOA算法流程图
本文所提算法MSAOA的流程如图1所示。
二、数值实验与结果分析
为了验证本文所提算法和每个改进点的效果,将多策略阿基米德算法(MSAOA)与阿基米德算法(AOA)、仅加入变区间初始化策略的阿基米德算法(AOA1)、仅加入自适应波长算子的阿基米德算法(AOA2)以及仅加入黄金莱维飞行引导机制的阿基米德算法(AOA3),以文献[1]中表1的F1、F3、F6、F8、F10、F11为例。设置种群规模为30,最大迭代次数为1000次,维度为30,每个算法独立运算30次,结果显示如下:
函数:F1
AOA:最优值: 963.8856,最差值: 5130.0239,平均值: 2422.3696,标准差: 928.8023
AOA1:最优值: 0,最差值: 0.00034553,平均值: 1.1518e-05,标准差: 6.3085e-05
AOA2:最优值: 434.5415,最差值: 3793.324,平均值: 1468.0324,标准差: 785.8179
AOA3:最优值: 0,最差值: 0,平均值: 0,标准差: 0
MSAOA:最优值: 0,最差值: 0,平均值: 0,标准差: 0
函数:F3
AOA:最优值: 880.9517,最差值: 3587.475,平均值: 2133.053,标准差: 795.2373
AOA1:最优值: 0,最差值: 0.058828,平均值: 0.0037852,标准差: 0.012017
AOA2:最优值: 589.7479,最差值: 4471.3351,平均值: 1787.283,标准差: 813.7539
AOA3:最优值: 0,最差值: 0,平均值: 0,标准差: 0
MSAOA:最优值: 0,最差值: 0,平均值: 0,标准差: 0
函数:F6
AOA:最优值: 27.1013,最差值: 354.8103,平均值: 133.5451,标准差: 87.2335
AOA1:最优值: 8.2377e-08,最差值: 0.00010945,平均值: 1.1858e-05,标准差: 2.7071e-05
AOA2:最优值: 2.5129,最差值: 235.6314,平均值: 79.7623,标准差: 56.993
AOA3:最优值: 0,最差值: 0,平均值: 0,标准差: 0
MSAOA:最优值: 0,最差值: 0,平均值: 0,标准差: 0
函数:F8
AOA:最优值: 2.8557,最差值: 13.7988,平均值: 8.9067,标准差: 2.2216
AOA1:最优值: 0,最差值: 0.0011008,平均值: 9.8279e-05,标准差: 0.00030187
AOA2:最优值: 1.0958,最差值: 11.0041,平均值: 4.9011,标准差: 2.7317
AOA3:最优值: 0,最差值: 0,平均值: 0,标准差: 0
MSAOA:最优值: 0,最差值: 0,平均值: 0,标准差: 0
函数:F10
AOA:最优值: 15.952,最差值: 19.9668,平均值: 19.832,标准差: 0.73281
AOA1:最优值: 8.8818e-16,最差值: 0.0042601,平均值: 0.00054786,标准差: 0.0014212
AOA2:最优值: 3.6885,最差值: 19.9668,平均值: 19.4238,标准差: 2.9719
AOA3:最优值: 8.8818e-16,最差值: 8.8818e-16,平均值: 8.8818e-16,标准差: 0
MSAOA:最优值: 8.8818e-16,最差值: 8.8818e-16,平均值: 8.8818e-16,标准差: 0
函数:F11
AOA:最优值: 11.186,最差值: 42.3171,平均值: 24.5221,标准差: 8.8423
AOA1:最优值: 0,最差值: 0.0012159,平均值: 0.00013067,标准差: 0.00031257
AOA2:最优值: 7.3389,最差值: 38.9718,平均值: 18.2458,标准差: 8.5187
AOA3:最优值: 0,最差值: 0,平均值: 0,标准差: 0
MSAOA:最优值: 0,最差值: 0,平均值: 0,标准差: 0
实验结果表明,所提算法具有更好的寻优精度和收敛速度。
三、参考文献
[1] 陈俊, 何庆, 李守玉. 基于黄金莱维引导机制的阿基米德算法[J/OL]. 计算机应用: 1-11 [2021-12-08].