【问题标题】:Prevent inbreeding and monoculture in genetic algorithm (newbie question)防止遗传算法中的近亲繁殖和单一栽培(新手问题)
【发布时间】:2011-11-25 10:25:05
【问题描述】:

我正在编写一个遗传算法。我的人口迅速发展出单一文化。我正在使用具有少量离散基因(每个个体 24 个基因)的小群体(32 个人)和单点交叉交配方法。将其与轮盘赌选择策略相结合,很容易看出所有遗传多样性是如何在短短几十代中消失的。

我想知道的是,适当的反应是什么?我没有关于 GA 的学术知识,我只想到了几个解决方案:

  1. 使用更大的人口。 (慢)
  2. 使用运行时检查来防止近亲繁殖。 (慢)
  3. 使用更多的交叉点。 (不是很有效)
  4. 提高突变数量。

对这种情况有哪些适当的反应?

【问题讨论】:

    标签: genetic-algorithm


    【解决方案1】:

    您可以添加:

    • 比赛选择而不是轮盘赌
    • 岛屿分离的多人口计划,有迁移
    • 重新启动
    • 结合分布算法估计中的想法 (EDA)(在有前景的区域附近重新采样以引入新个体)

    【讨论】:

      【解决方案2】:

      我会看一个更大的人口,32 个人是一个非常小的人口。我通常使用至少在染色体数量^2 范围内的种群(根据经验)运行 GA,以获得良好的个体初始分布。

      在运行适应度函数(通常是 GA 中最昂贵的部分)时,一种可能的加速方法是生成不同的线程(每个人 1 个,可能分批)。

      假设人口为 32,并且是一个四核系统,分批产生 8 个线程(每个 cpu 2 个线程将很好地交错),您应该能够以大约 4 * 的速度运行。

      因此,如果您对运行 GA 的时间有时间限制,这可能是一个解决方案。

      【讨论】:

      • 我正在使用 CUDA 将我的健身功能转移到 GPU 上。我将人口增加到 4096 并获得了更好的结果。我喜欢你的 population_size > num_genes^2 规则。
      • 谢谢,但请记住,这只是个人的经验法则,除了直觉和个人经验之外,我没有任何数据可以支持它。 :)
      猜你喜欢
      • 2016-06-23
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多