t-分布扰动策略和变异策略的花授粉算法-附代码

t-分布扰动策略和变异策略的花授粉算法


摘要:为了解决传统花授粉算法(FPA)收敛速度慢、易陷入局部最优、寻优精度低等缺陷,提出了一种t-分布扰动策略和变异策略的花授粉算法(t MFPA).首先利用混沌映射初始化花朵个体的位置,然后在全局授粉过程中,利用t-分布扰动的随机个体和莱维飞行共同实现个体位置更新,加快收敛速度的同时提高搜索空间的多样性;在局部授粉过程中,加入具有两个差分向量的变异策略和小概率策略,结合两种策略使算法能够跳出局部最优。

1.花授粉算法

基础花授粉算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108346554

2. 改进花授粉算法

2.1 混沌映射初始化花朵个体位置

由于传统花授粉算法采用随机方式对花朵个体的位置进 行初始化, 这就可能导致花朵个体的初始位置分布不均匀. 混 池具有随机性、对初值敏感等特点, 可以在一定范围内按照自 已的规律遍历所有状态而不重复 [ 18 ] { }^{[18]} [18], 因此本文利用混池映射 来初始化花朵个体的位置, 使花朵个体的初始位置分布地更 加均匀. 针对 n n n 个花朵个体 ( d d d 维空间), 本文采用混池映射初 始化种群的步骤如下:
a) 首先随机产生一个在 [ 0 , 1 ] [0,1] [0,1] 区间内的 d d d 维向量 c 1 c_{1} c1 (第 一个花粉个体).
b) 利用 logistic 映射 [ 19 ] { }^{[19]} [19] 迭代产生其余的 n − 1 n-1 n1 个向量, logistic 映射公式如下:
c i + 1 = μ c i ( 1 − c i ) (7) c_{i+1}=\mu c_{i}\left(1-c_{i}\right)\tag{7} ci+1=μci(1ci)(7)
其中, μ \mu μ 为控制参数, 当 μ = 4 \mu=4 μ=4 时, logistic 映射分布最均匀, c i c_{i} ci 为花朵个体经过混池映射后的位置, i = 1 , 2 , 3 , ⋯   , n − 1 i=1,2,3, \cdots, n-1 i=1,2,3,,n1.
c) 将混池映射后的值再映射到解的搜索空间中,公式 如下:
x i = L + c i ( U − L ) (8) x_{i}=L+c_{i}(U-L) \tag{8} xi=L+ci(UL)(8)
其中, L L L U U U 分别是搜索空间的上下限, x i x_{i} xi 是花朵个体在搜索 空间中的初始位置.

2. 2 基于 t-分布扰动策略的全局搜索

在基本花授粉算法中,全局搜索是在当前最优的花朵个体的基础上,使用莱维飞行函数来反映昆虫等授粉者的飞行轨迹,更新当前花朵个体的位置生成新解. 由于莱维飞行具有步长长短相间和跳跃方向多变的特点,算法可以在相应范围对花朵进行全局搜索,但也可能会因跳跃太大导致最优花朵个体信息的丢失. 而且每一代花朵位置的更新都是通过当前一代的位置和最优位置利用莱维飞行机制更新,不能有效地拓展搜索空间. 因此,tMFPA 在保留莱维飞行特征的同时,将种群中其他个体的信息引入到全局搜索更新机制中,通过在个体之间交换信息来调整位置更新机制,增强了搜索空间的多样性. 为了使其他花朵个体能够尽可能地被遍历到,引入 t-分布扰动算子对随机花朵个体进行扰动. 改进后的全局搜索位置更新公式为:
{  if rand  < m X i t + 1 = X i t + γ L ( X i t − g best  ) + t − distrub ⁡ ( t ) ⊗ ( X j t − X k t )  else  X i t + 1 = X i t + γ L ( X i t − g best  ) + t − distrub ⁡ ( t ) ⊗ X l t − X i t (9) \left\{\begin{array}{l} \text { if rand }<m \\ X_{i}^{t+1}=X_{i}^{t}+\gamma L\left(X_{i}^{t}-g_{\text {best }}\right)+t_{-} \operatorname{distrub}(t) \otimes\left(X_{j}^{t}-X_{k}^{t}\right) \\ \text { else } \\ X_{i}^{t+1}=X_{i}^{t}+\gamma L\left(X_{i}^{t}-g_{\text {best }}\right)+t_{-} \operatorname{distrub}(t) \otimes X_{l}^{t}-X_{i}^{t} \end{array}\right.\tag{9}  if rand <mXit+1=Xit+γL(Xitgbest )+tdistrub(t)(XjtXkt) else Xit+1=Xit+γL(Xitgbest )+tdistrub(t)XltXit(9)
其中, m ∈ [ 0 , 1 ] m \in[0,1] m[0,1], 步长 γ \gamma γ 的表达式如下:
γ = 0.01 + 0.49 ( t / N − iter  ) (10) \gamma=0.01+0.49\left(t / N_{-} \text {iter }\right) \tag{10} γ=0.01+0.49(t/Niter )(10)
公式 (9) 对随机花朵个体进行 t − \mathrm{t}- t 分布扰动, t \mathrm{t} t 分布的自由 度随着迭代次数的变化而变化. 随着自由度参数 t \mathrm{t} t 值的增长, 数值分布状态逐渐由 Cauchy 分布趋近于 Gaussian 分布. 算法 迭代前期, t t t-分布表现出的特征与 Cauchy 分布特征一致, 帮 助开采新的搜索空间,提高算法的全局搜索能力;在中后期 时, t t t-分布表现出的特征与 Gaussian 分布特征一致, 有助于算 法在当前解邻域范围内进行搜索. 在改进的位置更新公式中, 将全局搜索策略分为两部分, 在每次迭代时评估 rand 和 m m m 的 关系以确定使用哪种方法. 当 rand < m <m <m 时, 在莱维飞行的基础 上, 两个随机花朵个体分别在 t − t- t 分布扰动下逐渐靠近, 以开采 新的搜索空间,提高搜索空间的多样性; 当 rand ⩾ m \geqslant m m 时, 一个 随机花朵个体在 t − \mathrm{t}- t 分布扰动下, 逐渐向当前解靠近, 在当前解 邻域进行开采. 通过这两种位置更新策略, 将解之间的信息交 换用于动态选择更新机制, 算法能够在当前解邻域和其他解 周围进行大规模搜索, 帮助算法跳出局部最优, 同时又能加快 算法的收敛速度.

2.3 基于变异策略的局部搜索

相对于单个差分向量的策略, 具有两个差分向量的变异 策略可以提高种群的多样性, 并且仅使用单个差分向量策略 仍有可能使算法陷入局部最优, 而算法可以得到全局最优的 关键是算法能否跳出局部最优. 因此将原始差分变异策略根 据式 (5) 和式 (6) 进行改进, 将改进后的差分变异策略引入到 局部搜索, 在全局最优解的基础上,保持了差分向量确定性与 随机性的平衡, 提高了种群的多样性, 在此基础上, 将小概率 变异策略引入局部搜索, 通过判断 rand 和 q q q 之间的关系来决 定使用哪种更新方式, 最终通过两种策略的结合提高算法跳 出局部最优的能力. 改进后的局部搜索位置更新公式为:
{  if  r a n d < q x i t + 1 = g best  + rand ⁡ ( x j t − x i t ) + rand ⁡ ( x l t − x k t )  else  x i t + 1 = x i t + F ( x j t − x i t ) + F ( x l t − x k t ) (11) \left\{\begin{aligned} \text { if } r a n d &<q \\ x_{i}^{t+1} &=g_{\text {best }}+\operatorname{rand}\left(x_{j}^{t}-x_{i}^{t}\right)+\operatorname{rand}\left(x_{l}^{t}-x_{k}^{t}\right) \\ \text { else }\\ &x_{i}^{t+1}=x_{i}^{t}+F\left(x_{j}^{t}-x_{i}^{t}\right)+F\left(x_{l}^{t}-x_{k}^{t}\right) \end{aligned}\right. \tag{11}  if randxit+1 else <q=gbest +rand(xjtxit)+rand(xltxkt)xit+1=xit+F(xjtxit)+F(xltxkt)(11)
其中, q ∈ [ 0 , 1 ] , x i t 、 x i t + 1 q \in[0,1], x_{i}^{t} 、 x_{i}^{t+1} q[0,1],xitxit+1 分别是迭代 t t t 次和 t + 1 t+1 t+1 次的值, g best  g_{\text {best }} gbest  是一次迭代过程中的全局最优解.

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]宁杰琼,何庆.t-分布扰动策略和变异策略的花授粉算法[J].小型微型计算机系统,2021,42(01):64-70.

5.Matlab代码

6.Python代码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值