基于黄金莱维引导机制的阿基米德优化算法(MSAOA)
文章目录
- 基于黄金莱维引导机制的阿基米德优化算法(MSAOA)
- 1.阿基米德优化算法
- 2. 改进阿基米德优化算法
- 2.1 变区间初始化策略
- 2.2 黄金莱维引导机制
- 2.3 自适应波长算子
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
摘要:针对标准阿基米德优化算法(AOA)在求解优化问题时存在全局探索能力弱、收敛速度慢和求解精度低等问题,提出一种多策略阿基米德优化算法(MSAOA)。首先,利用变区间初始化策略,使得初始种群尽可能地靠近全局最优解,从而提高初始解的质量;其次,提出黄金莱维引导机制,以提高算法在迭代后期的种群多样性;最后,在维持种群多样性的前提下,引入自适应波长算子,以达到提高算法搜索效率的目的。
1.阿基米德优化算法
基础阿基米德优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/119999874
2. 改进阿基米德优化算法
2.1 变区间初始化策略
初始化种群的好坏一定程度上决定了算法的性能, 初始 种群在解空间中的细微不同,都可能影响算法进化方向。
A
O
A
\mathrm{AOA}
AOA 的初始种群在搜索空间中随机产生, 导致初始种群分 布不均匀, 搜索范围有限。为了解决以上问题, 获得好的初 始种群, 本文利用变区间初始化策略来提取搜索空间中有用 信息以保证种群向全局最优解靠近。
对于优化问题:
min
f
(
t
)
,
t
i
∈
[
L
B
i
,
U
B
i
]
;
i
∈
1
,
2
,
⋯
,
n
(13)
\min f(t), t_i \in\left[L B_i, U B_i\right] ; i \in 1,2, \cdots, n\tag{13}
minf(t),ti∈[LBi,UBi];i∈1,2,⋯,n(13)
式中:
L
B
L B
LB (Lower Bound) 表示搜索空间中的搜索下限;
U
B
U B
UB (Upper Bound) 表示搜索空间中的搜索上限。变区间初始化策略对就是通过不断缩短
[
L
B
,
U
U
B
]
[\boldsymbol{L B}, U \boldsymbol{U B}]
[LB,UUB], 将初始种群逼近到式 (13) 中近似最优解的附近。
首先在中间取一个中点
l
\boldsymbol{l}
l 。
l
=
L
B
+
0.5
(
U
B
−
L
B
)
(14)
\boldsymbol{l}=\boldsymbol{L B}+0.5(\boldsymbol{U B}-\boldsymbol{L} B) \tag{14}
l=LB+0.5(UB−LB)(14)
生成两个个体:
{
x
1
=
(
a
)
x
2
=
(
b
)
(15)
\left\{\begin{array}{l} x_1=(a) \\ x_2=(b) \end{array}\right.\tag{15}
{x1=(a)x2=(b)(15)
式中
a
\boldsymbol{a}
a 和
b
\boldsymbol{b}
b 分别为:
{
a
=
L
B
+
rand
(
l
−
L
B
)
b
=
l
+
rand
(
U
B
−
l
)
(16)
\left\{\begin{array}{l} \boldsymbol{a}=\boldsymbol{L} \boldsymbol{B}+\operatorname{rand}(\boldsymbol{l}-\boldsymbol{L} \boldsymbol{B}) \\ \boldsymbol{b}=\boldsymbol{l}+\operatorname{rand}(\boldsymbol{U} \boldsymbol{B}-\boldsymbol{l}) \end{array}\right.\tag{16}
{a=LB+rand(l−LB)b=l+rand(UB−l)(16)
计算
f
(
x
1
)
f\left(\boldsymbol{x}_1\right)
f(x1) 和
f
(
x
2
)
f\left(\boldsymbol{x}_2\right)
f(x2) 并比较它们大小, 若
f
(
x
1
)
>
f
(
x
2
)
f\left(x_1\right)>f\left(\boldsymbol{x}_2\right)
f(x1)>f(x2), 则有
x
∗
∈
[
l
,
U
B
]
\boldsymbol{x}^* \in[\boldsymbol{l}, \boldsymbol{U B}]
x∗∈[l,UB], 从而将潜在的最优解位置收缩到
[
l
,
U
B
]
[\boldsymbol{l}, U \boldsymbol{B}]
[l,UB] 内 ; 然 后依次迭代,不断缩短搜索区间, 并将搜索空间
[
L
B
,
U
B
]
[\boldsymbol{L B}, U \boldsymbol{B}]
[LB,UB] 分 割成
n
−
1
n-1
n−1 个子区间, 把初始种群聚集到问题(13)的最优解 附近。
2.2 黄金莱维引导机制
其次, 本文引人正弦函数与单位圆之间的关系
[
19
]
{ }^{[19]}
[19], 使得 种群能遍历正弦函数上的所有点, 即单位圆上的所有点。个 体位置更新公式为:
X
new
t
+
1
=
X
t
×
∣
sin
(
R
1
)
∣
+
R
2
×
sin
(
R
1
)
×
s
⊕
dis
(19)
\begin{aligned} & \boldsymbol{X}_{\text {new }}^{t+1}=X^t \times\left|\sin \left(R_1\right)\right|+R_2 \times \sin \left(R_1\right) \times s \oplus \text { dis } \end{aligned}\tag{19}
Xnew t+1=Xt×∣sin(R1)∣+R2×sin(R1)×s⊕ dis (19)
dis = ∣ θ 1 × X best t − θ 2 × X i t ∣ (20) \begin{aligned} & \text { dis }=\left|\theta_1 \times X_{\text {best }}^t-\theta_2 \times X_i^t\right| \end{aligned}\tag{20} dis = θ1×Xbest t−θ2×Xit (20)
式中:
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
τ, 其目的是缩小搜索空间, 使得算法 在每次迭代都会对能产生优秀解的区域进行充分搜索,从而 加快了算法收敛速度。公式中具体参数表达式如下所示:
{
θ
1
=
−
π
+
2
π
×
(
1
−
τ
)
θ
2
=
−
π
+
2
π
×
τ
τ
=
(
5
−
2
)
/
2
(21)
\left\{\begin{array}{l} \theta_1=-\pi+2 \pi \times(1-\tau) \\ \theta_2=-\pi+2 \pi \times \tau \\ \tau=(\sqrt{5}-2) / 2 \end{array}\right.\tag{21}
⎩
⎨
⎧θ1=−π+2π×(1−τ)θ2=−π+2π×ττ=(5−2)/2(21)
最后, 虽然对目标个体使用黄金莱维引导机制, 能让算 法跳出局部最优,但并不能保证新的个体位置优于原目标个 体位置, 因此在引导机制后加人贪婪机制, 通过比较个体位 置更新前后个体适应度后再决定是否更新目标位置, 以保留 适应度较好的个体。贪婪机制具体操作表达式如下:
X
i
t
+
1
=
{
X
i
t
+
1
,
fit
(
X
i
t
+
1
)
>
f
i
t
(
X
new
t
+
1
)
X
new
t
+
1
,
fit
(
X
i
t
+
1
)
⩽
fit
(
X
new
t
+
1
)
(22)
X_i^{t+1}= \begin{cases}X_i^{t+1}, & \text { fit }\left(X_i^{t+1}\right)>f i t\left(X_{\text {new }}^{t+1}\right) \\ X_{\text {new }}^{t+1}, & \text { fit }\left(X_i^{t+1}\right) \leqslant \text { fit }\left(X_{\text {new }}^{t+1}\right)\end{cases}\tag{22}
Xit+1={Xit+1,Xnew t+1, fit (Xit+1)>fit(Xnew t+1) fit (Xit+1)⩽ fit (Xnew t+1)(22)
2.3 自适应波长算子
受到浸泡在液体中运动物体会导致水平面发生波动现 象启发, 本文提出了自适应波长算子: 达到自身平衡(适应度 较好) 的个体, 引起波动较小, 从而具有较长的波长; 还远末 达到自身平衡(适应度较差) 的个体运动会引起的较大波动, 从而具有较短的波长。
在
A
O
A
\mathrm{AOA}
AOA 中, 由于缺乏多样性的操作, 当
A
O
A
\mathrm{AOA}
AOA 进化到一定 的程度时, 导致 AOA 很难从自身适应度获取收益。因此结 合浸泡在液体中运动物体的物理现象, 本文提出自适应波长 算子增强个体学习效率, 提高算法寻优精度。
λ
i
=
α
−
(
f
(
X
i
)
−
f
min
+
ε
)
/
(
f
max
−
f
min
+
ε
)
(23)
\lambda_i=\alpha^{-\left(f\left(X_i\right)-f_{\min }+\varepsilon\right) /\left(f_{\max }-f_{\min }+\varepsilon\right)}\tag{23}
λi=α−(f(Xi)−fmin+ε)/(fmax−fmin+ε)(23)
式中:
λ
i
\lambda_i
λi 表示第
i
i
i 个体运动引起的波长系数;
f
(
X
i
)
f\left(X_i\right)
f(Xi) 表示当前 迭代中第
i
i
i 个个体的适应度值;
f
min
f_{\min }
fmin 和
f
max
f_{\text {max }}
fmax 分别表示当前迭代 中最优适应度值和最差适应度值;
α
\alpha
α 为衰减因子,
ε
\varepsilon
ε 为一个非 常小的有理数, 以防止分母为 0 的情况。最后将自适应波长 系数融合到密度因子, 得到新密度因子更新公式为:
d
i
l
+
1
=
1.5
×
exp
(
(
t
max
−
t
)
/
t
max
)
−
λ
i
(
t
/
t
max
)
(24)
d_i^{l+1}=1.5 \times \exp \left(\left(t_{\text {max }}-t\right) / t_{\text {max }}\right)-\lambda_i\left(t / t_{\max }\right)\tag{24}
dil+1=1.5×exp((tmax −t)/tmax )−λi(t/tmax)(24)
式中
d
i
t
+
1
d_i^{t+1}
dit+1 表示在
t
+
1
t+1
t+1 代中第
i
i
i 个个体的密度因子。新的密度 因子的大小会根据个体自身适应度动态变化: 适应度接近最 优适应度的个体,
A
O
A
\mathrm{AOA}
AOA 保持原来的密度因子的性质; 而适应 度较差的个体, 密度因子接近最大值, 使当前个体拥有较长 的步长, 快速向最优解靠近。
3.实验结果
4.参考文献
[1]陈俊,何庆,李守玉.基于黄金莱维引导机制的阿基米德优化算法[J].计算机应用,2022,42(09):2807-2815.