一种改进的进化模型和混沌优化的萤火虫算法
文章目录
摘要:针对传统萤火虫算法在全局寻优搜索中存在收敛速度慢、求解精度低、易陷入局部极值区域等缺陷,提出一种改进的进化模型和混沌优化的萤火虫算法(FAEC)。首先,采用逻辑自映射产生混沌序列对萤火虫个体位置进行初始化,提高种群多样性;其次,在算法进化过程中引入惯性权重,控制前代个体对后代个体的影响,并利用种群最优个体的引导作用加强不同个体之间的信息共享;然后,引入动态步长与对称边界变异操作,解决越界问题并继续提高种群多样性。
1.萤火虫算法
基础萤火虫算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108492552
2. 改进萤火虫算法
2.1 基于混沌优化策略的种群初始化
在非线性系统中, 存在一种特有的非周期运动 现象被称为混沌现象,其特点是行为复杂,与随机 现象类似,昍是存在内在的规律性。利用混沌运动 的随机性、遍历性和初值敏感性来提高随机优化算 法的效率就是混沌优化
[
12
]
{ }^{[12]}
[12] 。基本思想为利用混沌 变量的遍历性和随机性,通过混沌映射规则将待优 化变量映射到混沌变量的取值区间内, 将获得的混 沌㢁列,通过线性变换转化到目标函数的搜㝙空间。
在多种混沌序列的模型中, 逻辑自映射函数 产生的混沌序列遍历性要优于常用的 Logistics 映 射
[
13
]
{ }^{[13]}
[13] 。禾用逻辑自映射函数生成混沌㡵列,如式 (5)所示 :
y
(
n
+
1
)
.
d
=
1
−
2
∗
y
n
,
d
2
,
y
n
,
d
∈
(
−
1
,
1
)
,
n
=
0
,
1
,
⋯
(5)
y_{(n+1) . d}=1-2 * y_{n, d}^2, y_{n, d} \in(-1,1), \quad n=0,1, \cdots \tag{5}
y(n+1).d=1−2∗yn,d2,yn,d∈(−1,1),n=0,1,⋯(5)
其中,为避免混沌序列出现全为 1 或
0.5
0.5
0.5 的情况, 所 以初始值不能取 0 和
0.5
,
d
0.5, d
0.5,d 表示
D
D
D 维搜䒺空间的第
d
d
d 维。
2. 2 基于惯性权重的进化计算模型
由式 (2) 可知, 随着种群的持续迭代, 个体之间 距离不断减小, 个体间的相对吸引力逐渐增大, 降 低了算法的局部搜索能力。式 (4)中加人了带有特 定系数的随机项, 加大了搜索范围, 避免算法过早 陷人局部最优, 但可能需要迭代多次才能达到精度 要求, 使得算法在迭代次数受限的情况下, 无法满 足精度要求。为了提高算法的局部搜索和全局搜 索能力, 在式 (4) 中引人惯性权重, 并增加种群中 最优个体对其他个体的牛引作用
[
9
]
{ }^{[9]}
[9] 。改进的位置 更新公式如式 (7)所示:
x
j
(
t
+
1
)
=
ω
(
t
)
×
x
j
(
t
)
+
β
i
j
(
r
i
j
)
(
x
i
(
t
)
−
x
j
(
t
)
)
+
α
(
rand
−
1
/
2
)
+
ω
(
t
)
×
rand
×
(
x
best
(
t
)
−
x
j
(
t
)
)
(7)
\begin{aligned} &x_j(t+1)=\omega(t) \times x_j(t)+\beta_{i j}\left(r_{i j}\right)\left(x_i(t)-x_j(t)\right)+ \\ &\alpha(\text { rand }-1 / 2)+\omega(t) \times \text { rand } \times\left(x_{\text {best }}(t)-x_j(t)\right) \end{aligned} \tag{7}
xj(t+1)=ω(t)×xj(t)+βij(rij)(xi(t)−xj(t))+α( rand −1/2)+ω(t)× rand ×(xbest (t)−xj(t))(7)
式中, 第一项
ω
(
t
)
×
x
j
(
t
)
\omega(t) \times x_j(t)
ω(t)×xj(t) 表示茧火虫个体的前一次 迭代位置对当前位置的影响, 第四项
ω
(
t
)
×
rand
(
)
×
\omega(t) \times \operatorname{rand}() \times
ω(t)×rand()×
(
x
bess
(
t
)
−
x
j
(
t
)
)
\left(x_{\text {bess }}(t)-x_j(t)\right)
(xbess (t)−xj(t)) 表示当前迭代的种群最优个体对种 群中个体提供的㸻引作用, 用来控制当前种群最优 个体对其他个体的影响程度, 以及当前个体对前代 个体的继承情况。惯性权重分为固定权重和时变 的时变权重之一。为充分利用目标函数信息, 加强 搜索方向的指导性, 进一步提高个体移动速度
[
15
]
{ }^{[15]}
[15], 提出一种新型的自适应惯性权重,计算公式如式 (8)所示:
ω
(
t
)
=
e
−
1
(
f
(
x
k
,
(
t
)
−
M
(
f
)
)
2
+
(
f
(
t
−
1
)
−
f
(
t
−
2
)
)
2
(8)
\omega(t)=e^{-\frac{1}{\left(f\left(x_k,(t)-M(f)\right)^2+(f(t-1)-f(t-2))^2\right.}} \tag{8}
ω(t)=e−(f(xk,(t)−M(f))2+(f(t−1)−f(t−2))21(8)
式中,
f
(
x
best
(
t
)
)
f\left(x_{\text {best }}(t)\right)
f(xbest (t)) 为第
t
t
t 次迭代的全局最优值,
f
i
(
t
−
1
)
f_i(t-1)
fi(t−1) 和
f
i
(
t
−
2
)
f_i(t-2)
fi(t−2) 分别为
i
i
i 萤火虫第
t
−
1
t-1
t−1 和
t
−
2
t-2
t−2 次迭 代的值,
M
(
f
)
=
1
n
∑
i
=
1
n
f
(
x
i
(
t
)
)
M(f)=\frac{1}{n} \sum_{i=1}^n f\left(x_i(t)\right)
M(f)=n1∑i=1nf(xi(t)) 为第
t
t
t 次迭代的种 群目标函数值的平均值。
萤火虫的移动距离受到惯性权重的影响, 分析 式 (8)可得, 在每一次迭代中, 惯性权重根据上一次 迭代产生的全体目标函数值与
i
i
i 萤火虫前两次迭代 的目标函数值计算所得, 从而减少惯性权重变化的 斍目性。由于在惯性权重的求解过程中充分利用 了目标函数的信息, 使得萤火虫算法的搜索方向具 有指导性, 萤火虫个体向高质量区域快速移动。在 算法迭代后期, 茧火虫个体已经接近最优解, 且相 邻两次迭代差值减小, 此时惯性权重变小, 萤火虫 的移动距离随之减小,加快了算法的收敛速度, 提 高了搜索能力,从而改善算法的寻优性能。
2.3 基于高斯分布的种群变异操作
龩火虫种群陷人局部最优的特征是进化出现 停滞 即连续多次迭代并末使种群最优值发生变 化。通过实验总结初步设定, 当经过连续6次迭 代, 种群的全局最优值末发生变化, 则判定其进化 停滞,已经陷人局部最优区域。为了帮助萤火虫种 群脱离局部最优值束缚,本文采用高斯分布对萤火 虫种群进行变异操作。高斯概率分布被广泛应于 工程应用中, 对工程优化与设计具有良好的促进作 用。高斯分布的概率密度函数如式 (9)所示。
f
(
x
)
=
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
,
−
∞
<
x
<
+
∞
(9)
f(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x-\mu)^2}{2 \sigma^2}},-\infty<x<+\infty \tag{9}
f(x)=2πσ1e−2σ2(x−μ)2,−∞<x<+∞(9)
其中,
σ
\sigma
σ 为高斯分布的方差,
μ
\mu
μ 为期望。
将种群中的全部萤火虫个体按目标函数值的 大小进行排序,利用最优的
10
%
×
n
10 \% \times n
10%×n 个萤火虫将排 名最后的
10
%
×
n
10 \% \times n
10%×n 个萤火虫群体进行状态替换更新, 同时对更新萤火虫群体的状态进行高斯变异处 理,变异公式如式 (10) 所示。
x
i
=
x
i
×
(
1
+
N
(
0
,
1
)
)
(10)
x_i=x_i \times(1+N(0,1)) \tag{10}
xi=xi×(1+N(0,1))(10)
其中,
N
(
0
,
1
)
N(0,1)
N(0,1) 为随机向量,并且为服从期望为 0 、方 差为 1 的高斯分布。
2.4 动态步长与域约束机制
步长在萤火虫优化算法中扮演着重要的角色, 设置合适的步长值会直接影响到算法的全局搜索 和局部搜索能力。标准
F
A
\mathrm{FA}
FA 算法采用固定的步长 值, 在一定程度上无法体现出个体的差异性, 递减 步长能够动态调节个体的移动幅度, 使个体在迭代 前期以较大的步长进行全局搜索, 而后期则以较小 步长进行局部寻优。本文采用随着迭代次数非线 性递减的方式计算步长。如式(11)所示:
α
t
+
1
=
α
t
×
(
1
−
Δ
α
t
)
(11)
\alpha_{t+1}=\alpha_t \times\left(1-\Delta \alpha_t\right) \tag{11}
αt+1=αt×(1−Δαt)(11)
式中,
Δ
α
t
\Delta \alpha_t
Δαt 为步长的动态衰减系数, 并且
Δ
α
t
=
1
−
\Delta \alpha_t=1-
Δαt=1−
(
1
0
−
4
/
0.9
)
(
1
/
t
)
,
t
\left(10^{-4} / 0.9\right)^{(1 / t)}, t
(10−4/0.9)(1/t),t 表示迭代次数。随着迭代次数
t
t
t 的增 大,
Δ
α
\Delta \alpha
Δα, 逐渐增大,
(
1
−
Δ
α
t
)
\left(1-\Delta \alpha_t\right)
(1−Δαt) 减小, 使得
t
+
1
t+1
t+1 代的步 长逐渐减小。
在崹火虫算法的迭代过程中, 为了保证种群个 体能够在搜索空间中进行有效搜索, 当萤火虫的位 置超出目标函数的可行域时,一般是将茧火虫的位 置替换为超出的边界值, 此时域约束公式如式 (12) 所示:
x
i
=
{
x
min
,
x
i
<
x
min
x
max
,
x
i
>
x
max
(12)
x_i=\left\{\begin{array}{l} x_{\min }, x_i<x_{\min } \\ x_{\max }, x_i>x_{\max } \end{array}\right. \tag{12}
xi={xmin,xi<xminxmax,xi>xmax(12)
式中,
x
min
x_{\text {min }}
xmin 为搜索空间下限,
x
max
x_{\text {max }}
xmax 为搜索空间上 限。这种边界控制策略容易使算法陷人局部最优, 而且超出边界的点全部约束在边界处, 有可能会使 算法在边界处过早收敛,降低算法的寻优率。因 此, 引人一种对称边界变异操作
[
16
]
{ }^{[16]}
[16], 此时的域约束 公式如式 (13)所示:
x
i
=
{
2
x
min
−
x
i
,
x
i
<
x
min
2
x
max
−
x
i
,
x
i
>
x
max
(13)
x_i=\left\{\begin{array}{l} 2 x_{\min }-x_i, x_i<x_{\min } \\ 2 x_{\max }-x_i, x_i>x_{\max } \end{array}\right. \tag{13}
xi={2xmin−xi,xi<xmin2xmax−xi,xi>xmax(13)
对称边界变异操作能够使种群中萤火虫的位 置始终保持在可行域内, 避免了萤火虫算法在边界 处陷人局部最优, 同时在一定程度上提高了种群的 多样性, 动态步长与边界变异操作有效地提高了萤 火虫算法的收敛速度和寻优率。
一种改进的进化模型和混沌优化的萤火虫算法,其算法的执行流程描述如下:
步骤 1 : 初始化参数。设置萤火虫数目
m
m
m, 问题 维度
d
d
d,光强吸收系数
γ
\gamma
γ, 步长因子初始值
α
\alpha
α, 最大 吸引度因子
β
0
\beta_0
β0, 最大迭代次数 MaxGeneration, 搜 索精度
ε
\varepsilon
ε 。
步骤 2: 初始化种群。采用式 (5)生成初始混 沌序列, 然后根据式 (6)将混沌序列映射到萤火虫 算法的解空间, 生成萤火虫种群的初始位置
x
i
(
i
=
1
,
2
,
⋯
,
m
)
。
x_i(i=1,2, \cdots, m) 。
xi(i=1,2,⋯,m)。
步骤 3: 根据种群中个体的位置计算各萤火 虫的目标函数值, 作为萤火虫个体各自的最大䓎 光亮度
I
0
I_0
I0, 对种群中的茧火虫个体按照目标函数 值排序并记录最优值
f
best
f_{\text {best }}
fbest , 同时记录最优个体位 置。
步骤 4: 根据式 (3) 计算种群中茧火虫个体之 间的距离
r
i
j
r_{i j}
rij, 再由式 (1)计算种群中茧火种个体的 相对菼光亮度
I
i
j
(
r
i
j
)
I_{i j}\left(r_{i j}\right)
Iij(rij), 并比较邻域内萤火虫亮度的 大小,确定茧火虫个体的移动方向。
步骤 5 : 根据式 (2)计算萤火虫个体的吸引度
β
i
j
(
r
i
j
)
\beta_{i j}\left(r_{i j}\right)
βij(rij), 再由式 (8)计算当前第
t
t
t 次迭代的惯性权重
ω
(
t
)
\omega(t)
ω(t),最后根据式(7)更新萤火虫的空间位置。
步骤 6: 由式 (11) 对迭代步长进行更新, 并根 据式 (13)对种群中的萤火虫个体进行域约束操作。
步骤 7: 重新计算移动后的萤火虫种群的目标 函数值, 并记录种群的最优目标函数值
f
best
f_{\text {best }}
fbest 和最优 个体位置
x
bess
(
t
)
x_{\text {bess }}(t)
xbess (t) 。当连续 6 次迭代一直末更新, 则 将种群中最差的
10
%
×
m
10 \% \times m
10%×m 个萤火虫的状态替换为 最优的
10
%
×
m
10 \% \times m
10%×m 个萤火虫的状态, 并通过式 (10)对 过渡种群进行高斯变异操作。
步骤 8: 当满足搜索精度或者达到最大迭代次 数, 转步骤 9 ,否则转步骤 3 。
步骤9:算法迭代完成,输出结果。
3.实验结果
4.参考文献
[1]李肇基,程科,王万耀,崔庆华.一种改进的进化模型和混沌优化的萤火虫算法[J].计算机与数字工程,2019,47(07):1605-1612.