具有收缩因子的自适应鸽群算法-附代码

具有收缩因子的自适应鸽群算法

文章目录

  • 具有收缩因子的自适应鸽群算法
    • 1.鸽群算法
    • 2.改进鸽群优化算法
      • 2.1 添加收缩因子及自适应策略
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:文中在鸽群算法的基础上添加收敛因子并使用自适应策略,通过标准的函数优化对算法进行了测试,实验结果表明,通过添加收敛因子和自适应策略的鸽群算法能有效提高收敛速度且具有一定竞争力,同时验证了在一些情况下全局搜索的优越性。

1.鸽群算法

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

2.改进鸽群优化算法

2.1 添加收缩因子及自适应策略

鸽群优化算法的基本思想来源于对鸽群归巢过程的研究及行为模拟。在原始 P I O \mathrm{PIO} PIO 算法基础上提出一种改进的收缩因子 PIO (Constriction Factor PIO, CFPIO) 算法, 用以加速算法收敛。 CFPIO 算法在收敛性方面效果良好。速度更新原则如下:
V i ( t ) = k [ V i ( t − 1 ) ⋅ e − k t +  rand  ⋅ ( X g − X i ( t − 1 ) ) ] V_i(t)=k\left[V_i(t-1) \cdot \mathrm{e}^{-k t}+\text { rand } \cdot\left(X_g-X_i(t-1)\right)\right] Vi(t)=k[Vi(t1)ekt+ rand (XgXi(t1))]
其中, k = 2 / ∣ 2 − φ − φ 2 − 4 φ ∣ , φ = φ 1 + φ 2 , φ > 4 k=2 /\left|2-\varphi-\sqrt{\varphi^2-4 \varphi}\right|, \varphi=\varphi_1+\varphi_2, \varphi>4 k=2/ 2φφ24φ ,φ=φ1+φ2,φ>4 。添加收缩 因子后发现 CFPIO 容易陷人局部最优, 因为鸽群不断向全局 最优营拢, 当觝群的位置接近全局最优位置 X g X_g Xg, 速度更新公 式的第二项为 0 时, 鸽子位置就得不到更新, 出现停滞情况。 若出现这种情况, 便重新初始化鸽群的 i i i 位置, 以增强的群活 力, 避免因停滞而陷入局部最优。
在 CFPIO 的基础上添加一个位置因子 γ ( γ ≥ 0 ) \gamma(\gamma \geq 0) γ(γ0), 测试鸽 子当前位置与全局最优欱子的距离 d ( d = ∥ X − G ∥ 2 ) d\left(d=\|X-G\|_2\right) d(d=XG2), 速度因 子 ε ( ε ≥ 0 ) \varepsilon(\varepsilon \geq 0) ε(ε0), 判斦鹑子的飞行速度, 一旦鸽子接近 X g ( d < γ ) X_g(d<\gamma) Xg(d<γ), 并且飞行速度小于设定的速度因子 ε ( ∣ V ∣ < ε ) \varepsilon(|V|<\varepsilon) ε(V<ε), 则认为该鸽 子可能出现停滞, 对该鸽子进行位置初始化, 保持的子的多 样性, 增加活力, 以避免局部最优。

3.实验结果

具有收缩因子的自适应鸽群算法-附代码_第1张图片

4.参考文献

[1]郭瑞,赵汝鑫,吴海舟,任东,范佳伟.具有收缩因子的自适应鸽群算法用于函数优化问题[J].物联网技术,2017,7(05):85-88.

5.Matlab代码

6.python代码

你可能感兴趣的:(智能优化算法改进)