黏菌优化算法SMA(学习笔记_07)

2022/1/24 14:04:17

本文主要是介绍黏菌优化算法SMA(学习笔记_07),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 定理

  • 根据黏菌个体的振荡捕食行为提出。

  • 黏菌(通过黏菌静脉)可以根据空气中食物气味的浓度来接近食物。

    • 高:生物振荡越强,黏菌静脉宽度增大,该区域聚集更多黏菌。

    • 低:黏菌转向探索其他区域。

2. 参数

  • vc :反馈因子,描述食物浓度与黏菌质量之间的反馈关系。

    • [-1,1]之间的随机数,随迭代次数的增加逐渐趋于0

    • vc ∈ [-b,b],b=1−t/T

    • t:当前迭代次数,T:最大迭代次数

  • vb : [-a,a]之间的随机数,随迭代次数的增加逐渐趋于0

    • a = arctanh(−(t/T)+1)

  • p :控制参数,p = tanh∣S(i)−DF∣

    • S(i): 当前迭代第i个个体的适应度值

    • DF: 当前最佳适应度值

  • z : z = 0.03; %包裹食物时全局搜索的概率因子

3. 算法流程

  1. 初始化种群, 当前迭代次数it = 1

  2. while it <= iter_max

    1. 接近食物(气味指数)

      1. 计算每个黏菌的适应度值,S( )

      2. 对当前种群的适应度值进行排序(求最小值时升序,求最大值时降序),SI( )

      3. 记录黏菌个体的最佳适应度值DF及最佳位置

    2. 包裹食物

      1. 更新参数a,b

        1. a = arctanh(−(t/T)+1)
        2. b=1−t/T
      2. 计算每个黏菌个体的适应度权重 

         黏菌个体适应度权重公式如下:

          bF :当前迭代最佳适应度值,wF: 当前迭代最差适应度值,r :[0,1]随机数

      3. 更新黏菌个体的位置(产生下一代种群)

         黏菌个体位置更新公式如下:ub: 自变量上限,lb:自变量下限,vc = [-b,b]随机数,vb:[-a,a]随机数,A.B:随机选择的当前迭代中的两个个体的位置。
    3. 获取食物

      1. 记录最佳适应度值DF

      2. 迭代次数 it = it + 1;

  3. end

  4. 输出结果

4. 适应度函数

 

5. 参考文献

[1] Shimin Li, Huiling Chen, Mingjing Wang, Ali Asghar Heidari, Seyedali Mirjalili. Slime mould algorithm: A new method for stochastic optimization[J]. Future Generation Computer Systems, 2020, 111: 300-323.



这篇关于黏菌优化算法SMA(学习笔记_07)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程