一种改进的进化模型和混沌优化的萤火虫算法-附代码

一种改进的进化模型和混沌优化的萤火虫算法


摘要:针对传统萤火虫算法在全局寻优搜索中存在收敛速度慢、求解精度低、易陷入局部极值区域等缺陷,提出一种改进的进化模型和混沌优化的萤火虫算法(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=12yn,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(t1)f(t2))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(t1) f i ( t − 2 ) f_i(t-2) fi(t2) 分别为 i i i 萤火虫第 t − 1 t-1 t1 t − 2 t-2 t2 次迭 代的值, 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)=n1i=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π σ1e2σ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 (104/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={2xminxi,xi<xmin2xmaxxi,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.

5.Matlab代码

6.Python代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值