融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法-附代码

融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法


摘要:针对蝴蝶优化算法求解精度不高、收敛速度较慢等问题,提出融合正弦余弦和无限折叠迭代混沌映射(ICMIC)的蝴蝶优化算法.首先,采用ICMIC映射对蝴蝶个体状态进行初始化,避免算法陷入局部最优.然后,在自身认知飞行部分引入正弦余弦算子,平衡算法的局部搜索能力与全局搜索能力.最后,通过改进依赖香味大小的幂指数调整吸收程度,获取更好的最优解。

1.蝴蝶优化算法

基础蝴蝶优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107855860

2. 改进蝴蝶优化算法

2.1 无限折叠迭代混沌映射的种群初始化

蝴蝶种群初始状态的微小变化可能将随后的模 拟引向完全不同的最终结果, 所以蝴蝶群体的初始 化对 BOA 的收敛速度和寻优精度至关重要. 蝴蝶群 体的初始状态由于无先验知识可用, 一般采用随机 生成.而混池 [ 17 ] { }^{[17]} [17] 在数学上定义为简单确定性系统产 生的随机性, 使用混池变量进行优化搜索可将初始 种群均匀分布在搜索空间, 可能比使用随机变量进 行随机搜索更具优势 [ 18 ] [18] [18].
混池的遍历性和随机性可避免搜索过程陷入局 部极小, 通过这种方法, 使蝴蝶种群初始状态具有较 好的多样性, 防止 BOA 陷入局部解和过早收敛, 提 高全局收敛性和精度. 本文采用 ICMIC [ 14 ] { }^{[14]} [14] 映射初始 化蝴蝶优化算法的种群, 基本思想是通过映射关系 在 [ 0 , 1 ] [0,1] [0,1] 内产生混池序列, 再将混池序列转化至个 体的搜索空间.ICMIC 映射的数学表达如下:
x n + 1 = sin ⁡ ( α π x n ) (2) x_{n+1}=\sin \left(\frac{\alpha \pi}{x_{n}}\right) \tag{2} xn+1=sin(xnαπ)(2)
其中, α ∈ ( 0 , 1 ) \alpha \in(0,1) α(0,1) 为控制参数, 只有当 α > 0.6 \alpha>0.6 α>0.6 时才 能获得良好的混池序列, 因此本文设定 α = 0.7 \alpha=0.7 α=0.7.
ICMIC 映射对初始值的选取非常敏感, 选取 d d d 个具有微小差异的初始值, 可得到 d d d 个混池序列 y h i y_{h}^{i} yhi. 再将 d d d 个混池序列 y h i y_{h}^{i} yhi 逆映射至相应的个体搜索空 间,得到变量
x h i = l b i + y h i ( u b i − l b i ) , x_{h}^{i}=l b_{i}+y_{h}^{i}\left(u b_{i}-l b_{i}\right), xhi=lbi+yhi(ubilbi),
其中, [ l b i , u b i ] \left[l b_{i}, u b_{i}\right] [lbi,ubi] x h i x_{h}^{i} xhi 的搜索范围.

2.2 正弦余弦算子

在蝴蝶优化算法中,种群的花蜜源位置具有重要作用, 引导蝴蝶个体向最优解移动, 但若种群陷入 局部最优位置, 容易导致群体出现搜索停止的现象, 无法获得更优的全局最优解. 为了平衡 B O A \mathrm{BOA} BOA 的局部 搜索能力与全局搜索能力, 本文在算法的自身认知 飞行部分引入正弦余弦算子 [ 19 ] { }^{[19]} [19], 核心思想是通过数 学函数的变化改变蝴蝶种群的个体状态, 使种群在 前期保持多样性, 进行全局搜索, 后期个体趋于局部 开发, 最终收敛于全局最优位置. 引入正弦余弦算子 后的位置更新公式如下:
x i t = { x i t r 4 sin ⁡ r 5 + f i ( r 1 2 g best  − x i t ) , r 3 ⩽ P x i t r 4 cos ⁡ r 5 + f i ( r 2 2 x j t − x k t ) , r 3 > P (3) x_{i}^{t}= \begin{cases}x_{i}^{t} r_{4} \sin r_{5}+f_{i}\left(r_{1}^{2} g_{\text {best }}-x_{i}^{t}\right), & r_{3} \leqslant P \\ x_{i}^{t} r_{4} \cos r_{5}+f_{i}\left(r_{2}^{2} x_{j}^{t}-x_{k}^{t}\right), & r_{3}>P\end{cases} \tag{3} xit={ xitr4sinr5+fi(r12gbest xit),xitr4cosr5+fi(r22xjtxkt),r3Pr3>P(3)
其中: r 3 r_{3} r3 [ 0 , 1 ] [0,1] [0,1] 内的随机数; P P P 为开关概率, 决定算 法更新公式的选择; r 5 r_{5} r5 [ 0 , 2 π ] [0,2 \pi] [0,2π] 内的随机数, 定义 当前解应该靠近目标还是远离目标; r 4 sin ⁡ r 5 r_{4} \sin r_{5} r4sinr5 r 4 cos ⁡ r 5 r_{4} \cos r_{5} r4cosr5 共同控制算法进行局部搜索和全局搜索, 在 r 4 sin ⁡ r 5 r_{4} \sin r_{5} r4sinr5 r 4 cos ⁡ r 5 r_{4} \cos r_{5} r4cosr5 的值大于 1 或小于 − 1 -1 1 时, 开发不同的区 域进行全局搜索, 在 − 1 -1 1 和 1 之间时, 开发期望的搜 索空间进行局部搜索, r 4 r_{4} r4 为控制参数, 决定下一次迭 代时第 i i i 只蝴蝶个体的位置区域,
r 4 = δ − t δ T , r_{4}=\delta-t \frac{\delta}{T}, r4=δtTδ,
δ \delta δ 为常数 2 [ 19 ] , t 2^{[19]}, t 2[19],t 为当前迭代次数, T T T 为最大迭代次数.

2.3参数 a 的改进

在 BOA 中, 根据刺激的物理强度表述香味大小 f f f, 决定整个算法的寻优能力.从 BOA 可知, 有时随着 刺激强度 I I I 的增强, 蝴蝶种群个体对刺激变化的敏 感度降低, 此时要求香味大小 f f f 随蝴蝶吸收程度的 变化而变化, 吸收程度是通过幂指数参数 a a a 实现. 当 a = 1 a=1 a=1 时意味着没有香味被吸收, 即相当于香味是在 理想环境中传播, 可从搜索域的任何地方感觉蝴蝶 散发的香味, 容易取得全局最优值. a = 0 a=0 a=0 表示任何蝴 蝶发出的香味都无法被其它蝴蝶察觉. 因此, a a a 控制 算法中蝴蝶个体的行为, 影响整个算法的收玫速度 和寻优精度. 在 B O A \mathrm{BOA} BOA a = 0.1 a=0.1 a=0.1, 通过验证, 依赖于香 味大小 f f f 的幂指数 a a a 采用如下更新公式, BOA能获得 更佳的寻优性能:
a ( t ) = a max ⁡ ( a max ⁡ − a min ⁡ ) ( T − t T ) . a(t)=a_{\max }\left(a_{\max }-a_{\min }\right)\left(\frac{T-t}{T}\right) . a(t)=amax(amaxamin)(TTt).
其中: a max  、 a min  a_{\text {max }} 、 a_{\text {min }} amax amin  分别表示幂指数系数 a a a 的最大值和最 小值, 根据 B O A \mathrm{BOA} BOA, 本文定义 a max  = 0.3 , a min  = 0.01 , a a_{\text {max }}=0.3, a_{\text {min }}=0.01, a amax =0.3,amin =0.01,a 值 从 0.3 0.3 0.3 线性递减到 0.01 0.01 0.01, 可有效调节蝴蝶对于香味的 吸收程度, 便于蝴蝶个体更好地进行局部搜索和全 局搜索, 提高收敛精度; t t t 表示当前迭代次数; T T T 表示 最大迭代次数.香味大小 f f f 的更新公式如下:
f = c I a ( t ) , f=c I^{a(t)}, f=cIa(t),
其中, I I I 为刺激强度, 与寻优适应度有关, c c c 为感官因 子, 通常取值为 0.01 0.01 0.01.

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]王依柔,张达敏.融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法[J].模式识别与人工智能,2020,33(07):660-669.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/126256323