改进交叉算子的自适应人工蜂群黏菌算法-附代码

改进交叉算子的自适应人工蜂群黏菌算法


摘要:针对黏菌算法存在的收敛速度慢,易陷入局部最小值的问题,提出了一种改进交叉算子的自适应人工蜂群黏菌算法(ISMA)。为了提高算法收敛速度,引入自适应可调节的反馈因子和改进的交叉算子;考虑到人工蜂群算法强大的搜索能力,引入改进的人工蜂群搜索策略,提高算法跳出局部最小值的能力。

1.黏菌算法

基础黏菌算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113710762

2.改进黏菌算法

2.1 自适应可调节反馈因子

在 SMA 中,反馈因子 v c 用来描述食物浓度与黏菌质量之间的反馈关系,其值从 1 线性下降到 0,这种线性下降的反馈因子并不能准确地描述实际情况下质量和浓度之间的反馈关系,可能会导致算法收敛速度慢等问题。因此,本文引入一种自适应可调节的反馈因子:在算法迭代前期,黏菌个体大范围感受食物浓度,此时食物浓度低,应该加快反馈因子的下降速度,减弱反馈关系,有利于提高算法全局搜索能力;在算法迭代后期,食物浓度高,此时应该保持较为平稳的反馈系数,有利于个体局部探索最高的食物浓度(最优解)。此外,加入下降速率调节因子 k,可以自动调节反馈因子下降速度,自适应可调节的反馈因子数学模型描述如公式 7 所示:
v c = ( e ( t max ⁡ − t ) / t max ⁡ − 1 ⋅ 1 e − 1 ) k (7) v_c=\left(e^{\left(t_{\max }-t\right) / t_{\max }-1} \cdot \frac{1}{e-1}\right)^k \tag{7} vc=(e(tmaxt)/tmax1e11)k(7)
式中, t t t 为当前迭代次数, t max ⁡ t_{\max } tmax 为最大迭代次数, k k k 是调 节因子。

2.2 算数交叉算子

交叉算子是遗传算法中三个关键算子之一, 通过交 换两个父代的位置信息产生新的个体, 新的个体继承了 父代的有效信息。本文为了加快 SMA 的收玫速度, 引入 改进的算数交叉算子更新个体位置, 即以一定的概率 P t P_t Pt 让当前个体与种群最优个体进行交叉操作。交叉算子数 学模型如公式 8 所示:
{ X A 1 ( t + 1 ) = L ⋅ X A ( t ) + ( 1 − L ) ⋅ X best  ( t ) X A 2 ( t + 1 ) = L ⋅ X best  ( t ) + ( 1 − L ) ⋅ X A ( t ) (8) \left\{\begin{array}{l} X_{A 1}(t+1)=L \cdot X_A(t)+(1-L) \cdot X_{\text {best }}(t) \\ X_{A 2}(t+1)=L \cdot X_{\text {best }}(t)+(1-L) \cdot X_A(t) \end{array}\right.\tag{8} { XA1(t+1)=LXA(t)+(1L)Xbest (t)XA2(t+1)=LXbest (t)+(1L)XA(t)(8)
式中, t t t 为当前迭代次数, X A I X_{A I} XAI X A 2 X_{A 2} XA2 分别为交叉产生的 两个子代个体位置, X A X_A XA 为当前个体位置, X b e s t X_{b e s t} Xbest 为当前种 群最优个体位置, L L L 为取值 ( 0 , 1 ) (0,1) (0,1) 的随机参数。

由公式 8 可知, 子代主要由父代和参数 L L L 确定, 其 中参数 L L L 控制子代从两个父代获取信息的比例, 为了使 子代获取更多优秀父代的基因, 并保持种群多样性, 本 文改进了原始的随机参数, 引入用拉普拉斯系数 [ 13 ] { }^{[13]} [13] 控制 的参数 L L L 。改进后的控制参数 L L L 数学模型描述如公式 9 所示:
L = { μ − λ ⋅ log ⁡ e ( r ) , r ≤ 1 2 μ + λ ⋅ log ⁡ e ( r ) , r > 1 2 (9) L=\left\{\begin{array}{l} \mu-\lambda \cdot \log _e(r), r \leq \frac{1}{2} \\ \mu+\lambda \cdot \log _e(r), r>\frac{1}{2} \end{array}\right. \tag{9} L={ μλloge(r),r21μ+λloge(r),r>21(9)
式中, μ \mu μ λ \lambda λ 为拉普拉斯系数, 其中 μ \mu μ 取自然数, 控制 位置, λ > 0 \lambda>0 λ>0 控制尺度, r r r 为取值 [ 0 , 1 ] [0,1] [0,1] 的随机数。由公式 9 可知, 改进后的参数 L L L 通过引入系数 λ \lambda λ 调节父代与子代 的距离, λ \lambda λ 越小子代越靠近父代, 种群多样性越高, 同 时, 在拉普拉斯系数 μ \mu μ λ \lambda λ 的共同调节下, 子代能选择 性获得更多优秀父代的位置信息。

2.3 改进的人工蜂群搜索策略

人工蜂群算法 (Artificial Bee Colony Algorithm, A B C ) [ 14 ] \mathrm{ABC})^{[14]} ABC)[14] 是由 Karaboga 等人于 2006 年提出的一种智能优 化算法, 该算法通过模拟自然界蜂群的采蜜行为实现对 复杂优化问题的处理, 在复杂多峰函数寻优上具有良好 的性能, 拥有强大的探索能力。针对 SMA 易早熟收敛的 问题, 本文引入人工蜂群搜索策略并做出改进, 基本人 工蜂群搜索策略数学模型描述如公式 10 所示:
Z i , j = x i , j + ϕ i , j ( x i , j − x k , j ) ( 10 ) Z_{i, j}=x_{i, j}+\phi_{i, j}\left(x_{i, j}-x_{k, j}\right)(10) Zi,j=xi,j+ϕi,j(xi,jxk,j)(10)
式中, Z i , j Z_{i, j} Zi,j 为产生的候选解, x i , j x_{i, j} xi,j 为当前个体, x k , j x_{k, j} xk,j 为随机个 体, k k k j j j 为随机参数, k ∈ { 0 , 1 , … , M } , j ∈ { 1 , 2 , … , d } , M k \in\{0,1, \ldots, M\}, \mathrm{j} \in\{1,2, \ldots, d\}, M k{ 0,1,,M},j{ 1,2,,d},M为固定值, d d d 表示维度, 且 k k k 不等于 i , ϕ i , j i, \phi_{i, j} i,ϕi,j 为取值 [ − 1 , 1 ] [-1,1] [1,1] 的随机数。由公式 10 可知, 候选解由随机选取两个个体 进行差分操作产生。
虽然人工蜂群搜索策略在搜索能力上有着很大的优 势, 但是其开发能力不强, 因此本文引入一种新的搜索 策略, 在人工蜂群强大搜索能力的基础上加入全局最优 位置引导, 从而提高其开发能力, 改进策略数学模型描 述如公式 11 所示:
Z i , j = x i , j + ϕ i , j ( x i , j − x k , j ) + Ω i , j ( p g , j − x i , j ) (11) \begin{gathered} Z_{i, j}=x_{i, j}+\phi_{i, j}\left(x_{i, j}-x_{k, j}\right)+ \Omega_{i, j}\left(p_{g, j}-x_{i, j}\right) \end{gathered}\tag{11} Zi,j=xi,j+ϕi,j(xi,jxk,j)+Ωi,j(pg,jxi,j)(11)
式中, Ω \Omega Ω 为取值 [ 0 , 1.5 ] [0,1.5] [0,1.5] 的随机数, p g p_g pg 为全局最优位置。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]刘成汉,何庆.改进交叉算子的自适应人工蜂群黏菌算法[J/OL].小型微型计算机系统:1-8[2021-11-27].http://kns.cnki.net/kcms/detail/21.1106.TP.20211114.1427.002.html.

5.Matlab代码

6.python代码

猜你喜欢

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