人工蜂群算法ABC(学习笔记_08)

1. 原理

  • 受到蜜蜂群体的有组织的觅食过程的启发,Karaboga提出了模拟蜜蜂群体觅食过程的人工蜂群(Artificial Bee Colony) 算法用于解决多维度多峰谷的优化问题。该算法创始之初被用来寻找SphereRosenbrockRastrigin函数的最小值。

  • 人工蜂群中的三种蜜蜂:

    • 雇佣蜂:

      • 利用已有的蜜源信息进行搜寻,与观察蜂分享信息

      • 维持优良解

    • 观察蜂:

      • 在蜂房等待,依据雇佣蜂分享的信息寻找新的蜜源

      • 提高收敛速度

    • 侦察蜂:

      • 寻找蜜源,在蜂房附近随机搜索

      • 增强摆脱局部最优的能力

  • 搜索蜜源步骤:

    • 雇佣蜂发现蜜源,通过8字舞方式共享蜜源

    • 观察蜂根据雇佣蜂提供的信息,外出采蜜

    • 雇佣蜂多次搜索找到的蜜源质量无明显改善,放弃现有的蜜源

    • 侦察蜂在蜂群附近寻找新的蜜源,搜索到高质量蜜源后,雇佣蜂出动

2. 参数:

  • nPop :引领蜂个数

  • nOnlooker:跟随蜂个数

  • L :蜜源试验次数上限,如果达到此上限,舍弃该蜜源。

3. 算法流程

  1. 初始化种群

  2. for it = 1:MaxIt

    1. 引领(雇佣)蜂阶段

    2. 跟随(观察)蜂阶段

    3. 侦察蜂阶段

  3. end

  4. 输出结果

  • 流程图如下:

    人工蜂群算法ABC(学习笔记_08)_第1张图片

4. 详细流程

1. 初始化阶段

  • 初始化各类参数

  • 产生初始种群

2. 引领蜂阶段

  • 引领蜂产生一个新解(新食物源)

    • k = 1,2,...,NP, k ≠ i ; ϕij : [-1,1] 之间的随机数

  • 贪婪选择

    • 计算新解的适应度值并评价它,若新解的适应度值优于旧解,则引领蜂更新旧解为新解。反之,保留旧解。

    • 函数值转适应度值: fiti是第 i个解的适应值,fi是第i个体对于优化问题的目标函数。

      人工蜂群算法ABC(学习笔记_08)_第2张图片

3. 跟随蜂阶段

  • 根据轮盘赌计算每个解的选择概率

    人工蜂群算法ABC(学习笔记_08)_第3张图片

  • 根据概率判断是否更新为新解

    • 随机产生一个[0,1]的随机数r

    • 若r>p,则产生一个新解,并检验新解的适应度值,若由于旧解,则更新旧解为新解

    • 若r<=p,则保留旧解

4. 侦察蜂阶段

  • 判断是否在探索极限L次数内都更新

    • 无更新:陷入局部最优,抛弃该解,该解对应的引领蜂变为侦察蜂,产生一个新解替代原引领蜂

    • 替代公式如下:

    • i=1,2,⋯,NP; j=1,2,⋯,D; Xij是第 i个解的第 j个维度;

    • X j max 和 X j min分别是问题第 j 个维度的上限和下限; rij 是 [0,1] 之间的随机数

4. 适应度函数曲线图

人工蜂群算法ABC(学习笔记_08)_第4张图片

你可能感兴趣的:(算法,机器学习)