赞
踩
基础蝴蝶优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107855860
蝴蝶优化算法是在搜索空间中随机初始化种群的位置,
但是利用这种随机化方式生成初始种群, 有可能会导致蝴蝶 个体的位置分布不均匀。考虑到混沌具有随机性、非周期性 等特点, 可以利用混沌序列对蝴蝶个体位置进行初始化。目 前存在多种不同的混沌映射 [14], 主要有 Logistic 映射、 Chebyshev 映射、Tent 映射、Circle 映射等。而利用 Circle 映 射初始化种群的方法在智能优化算法中还很少被使用, 因此 本文采用 Circle 映射初始化蝴蝶个体位置, 先利用 Circle 映 射关系将变量映射到混沌变量空间内, 然后再将产生的混沌 变量通过线性变换映射到需要优化的解空间, Circle 映射具 体表达式如下:
x
i
+
1
=
m
o
d
(
x
i
+
0.2
−
(
0.5
/
2
π
)
sin
(
2
π
x
i
)
,
1
)
(6)
x_{i+1}=\bmod \left(x_{i}+0.2-(0.5 / 2 \pi) \sin \left(2 \pi x_{i}\right), 1\right) \tag{6}
xi+1=mod(xi+0.2−(0.5/2π)sin(2πxi),1)(6)
其中,
i
i
i 在本文中表示维度。
B
O
A
\mathrm{BOA}
BOA 算法在局部搜索过程中, 由于蝴蝶个体移动的范围 较小, 容易陷入局部最优。而
S
C
A
\mathrm{SCA}
SCA 算法具有较强的全局探测 能力和局部开发能力, 因此在 BOA 算法的局部搜索阶段中 融入 SCA 算法, 可以使局部搜索过程中少量的蝴蝶个体得到 充分地利用, 并且指引蝴蝶个体向目标位置移动, 增强算法 的局部开发能力。若切换概率设为常数, 不利于平衡
S
C
A
\mathrm{SCA}
SCA 算 法和 BOA 算法的局部开发能力, 因此本文利用一个随迭代 次数自适应变化、函数范围变化较小、前期变化较慢后期变 化较快的切换概率来控制在局部搜索阶段使用哪种位置更新 方式, 在算法局部寻优的前期能够充分利用局部范围内的个 体, 在局部寻优的后期能够快速地收玫到最优个体, 切换概 率
P
s
P_{s}
Ps 的计算公式如下:
P
s
=
0.01
×
(
t
N
−
i
t
e
r
)
3
+
1
(7)
P_{s}=0.01 \times\left(\frac{t}{N_{-} i t e r}\right)^{3}+1 \tag{7}
Ps=0.01×(N−itert)3+1(7)
其中
t
、
N
−
t 、 N_{-}
t、N−iter 分别为当前迭代代数和最大迭代次数。当 rand
<
P
s
<P_{s}
<Ps 时, 算法采用正弦余弦算法进行位置更新操作, 反之, 算法采用
B
O
A
\mathrm{BOA}
BOA 算法原来的局部位置更新公式, 这里的 rand 并不是
[
0
,
1
]
[0,1]
[0,1] 之间的随机数, 其范围为
[
1
,
1.01
]
[1,1.01]
[1,1.01] 。
由
1.2
1.2
1.2 节可知, 在 SCA 算法中, 转换参数
R
1
R_{1}
R1 发挥着关键 作用, 正弦与余弦的范围通过式(5)自适应的改变, 从而平衡 算法的全局搜索和局部开采。但是这种线性递减的方式使算法容易陷入局部最优, 因此提出一种非线性单调递减的凸函 数作为转换参数来更好地平衡全局搜索和局部开发。改进后 的转换参数公式如下:
R
1
=
δ
+
b
exp
(
4
×
(
t
N
−
iter
)
4
)
+
1
(8)
R_{1}=\delta+\frac{b}{\exp \left(4 \times\left(\frac{t}{N_{-} \text {iter }}\right)^{4}\right)+1} \tag{8}
R1=δ+exp(4×(N−iter t)4)+1b(8)
其中
b
b
b 为常数, 取值为
0.1
;
δ
0.1 ; \delta
0.1;δ 为调节因子, 经过多次实验证 明, 当
δ
=
0.95
\delta=0.95
δ=0.95 时, 实验结果为最优。与式
(
5
)
(5)
(5) 的线性递减方式 不同, 式(8)在算法迭代前期
R
1
R_{1}
R1 下降缓慢, 可以更好地利用
B
O
A
\mathrm{BOA}
BOA 算法局部搜索阶段的蝴蝶个体; 迭代后期
R
1
R_{1}
R1 下降快速, 可以指引蝴蝶个体尽快向目标值移动。改进后的正弦余弦算 法位置更新公式如下:
X
i
d
(
t
+
1
)
=
{
X
i
d
(
t
)
+
R
1
×
sin
(
R
2
)
×
∣
R
3
P
∗
d
(
t
)
−
X
j
d
(
t
)
∣
R
4
<
0.5
X
i
d
(
t
)
+
R
1
×
cos
(
R
2
)
×
∣
R
3
P
∗
d
(
t
)
−
X
j
d
(
t
)
∣
R
4
≥
0.5
(9)
X_{i}^{d}(t+1)=
其中
X
j
d
(
t
)
X_{j}^{d}(t)
Xjd(t) 表示第
t
t
t 次迭代中在种群内部随机选择的第
j
j
j 个个 体在第
d
d
d 维上的解。
根据 BOA 算法原理可知, 蝴蝶个体利用当前位置和当 前最优个体位置/随机蝴蝶个体位置来进行位置更新, 然而, 无论是在算法的全局搜索阶段还是局部搜索阶段, 这些个体 的位置都没得到充分的利用。因此本文在 BOA 算法的全局 搜索和局部搜索阶段共同引入一种随迭代次数变化的自适应 权重
w
(
t
)
w(t)
w(t), 使三种个体位置信息都能够得到充分地利用, 同 时控制当前蝴蝶个体的移动方向和移动距离, 从而提高算法 寻优精度和收敛速度。自适应权重
w
(
t
)
w(t)
w(t) 的数学表达式如下:
w
(
t
)
=
α
[
cosh
(
2
×
(
1
−
10
t
N
−
iter
)
4
)
−
1
]
(10)
w(t)=\alpha\left[\cosh \left(2 \times\left(1-\frac{10 t}{N_{-} \text {iter }}\right)^{4}\right)-1\right] \tag{10}
w(t)=α[cosh(2×(1−N−iter 10t)4)−1](10)
其中,
α
∈
[
0
,
1
]
\alpha \in[0,1]
α∈[0,1] 。因此, BOA 算法引入自适应权重系数后全局 搜索阶段的位置更新公式为
x
i
t
+
1
=
w
(
t
)
×
(
x
i
t
+
(
r
2
×
g
∗
−
x
i
t
)
×
f
i
)
(11)
x_{i}^{t+1}=w(t) \times\left(x_{i}^{t}+\left(r^{2} \times g^{*}-x_{i}^{t}\right) \times f_{i}\right) \tag{11}
xit+1=w(t)×(xit+(r2×g∗−xit)×fi)(11)
局部搜索阶段的位置更新为
x
i
t
+
1
=
w
(
t
)
×
(
x
i
t
+
(
r
2
×
x
j
t
−
x
k
t
)
×
f
i
)
(12)
x_{i}^{t+1}=w(t) \times\left(x_{i}^{t}+\left(r^{2} \times x_{j}^{t}-x_{k}^{t}\right) \times f_{i}\right) \tag{12}
xit+1=w(t)×(xit+(r2×xjt−xkt)×fi)(12)
BOA 算法同其他智能优化算法一样存在易陷入局部最 优这一缺点, 经分析可知, 主要是由于算法没有充分利用最 优个体的引导作用, 因此本文通过对最优个体进行变异, 提 高种群多样性的同时指引种群向最优个体位置进化, 避免算 法陷入局部最优。同时为了克服在高维情况下存在的维间干 扰问题, 本文对最优个体位置采用逐维变异策略, 有效避免 各维度之间信息的互相干扰。本文引入了文献 [15]中张超提 出的
t
\mathrm{t}
t-分布变异算子对最优个体位置进行扰动, 该
t
\mathrm{t}
t-分布变 异算子的自由度参数会跟随迭代次数的变化而变化, 逐维变 异策略具体定义如下。
设搜索空间为
d
d
d 维, 当前最优解
g
b
e
s
t
=
(
g
best
1
,
g
best
2
,
⋯
,
g
best
d
)
g_{b e s t}=\left(g_{\text {best }}^{1}, g_{\text {best }}^{2}, \cdots, g_{\text {best }}^{d}\right)
gbest=(gbest 1,gbest 2,⋯,gbest d), 那么当前最优解逐维变异得到的新解
g
new
=
(
g
n
e
w
1
,
g
new
2
,
⋯
,
g
new
d
)
g_{\text {new }}=\left(g_{n e w}^{1}, g_{\text {new }}^{2}, \cdots, g_{\text {new }}^{d}\right)
gnew =(gnew1,gnew 2,⋯,gnew d) 计 算方式如下:
g
new
d
=
g
best
d
+
T
D
(
t
)
d
×
g
best
d
(13)
g_{\text {new }}^{d}=g_{\text {best }}^{d}+T D(t)^{d} \times g_{\text {best }}^{d} \tag{13}
gnew d=gbest d+TD(t)d×gbest d(13)
其中
t
t
t 为当前迭代次数,
T
D
(
t
)
T D(t)
TD(t) 是自由度参数为
t
t
t 的
t
\mathrm{t}
t-分布,
T
D
(
t
)
d
T D(t)^{d}
TD(t)d 为
t
−
\mathrm{t}-
t− 分布在第
d
d
d 维时生成的随机数。
因为无法直接判断变异后得到的新位置是否优于原位置, 所以本文利用了贪婪原则来判断是否接受新位置代替原最优 位置。通过使用贪婪原则, 引导种群更好地向最优个体位置 进化, 更好地提高算法的收敛速度。
[1]宁杰琼,何庆.混合策略改进的蝴蝶优化算法[J/OL].计算机应用研究:1-7[2021-04-29].https://doi.org/10.19734/j.issn.1001-3695.2020.06.0171.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。