在遗传算法中防止近亲繁殖和单一栽培(新手问题)

时间:2011-09-26 18:05:33

标签: genetic-algorithm

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

我想知道的是,适当的反应是什么?我没有关于GA的学术水平知识,只有少数解决方案浮现在脑海中:

  1. 使用更多人口。 (慢)
  2. 使用运行时检查来防止繁殖。 (慢)
  3. 使用更多交叉点。 (不是很有效)
  4. 提高突变数量。
  5. 对这种情况有什么适当的回应?

2 个答案:

答案 0 :(得分:3)

您可以添加:

  • 锦标赛选择而不是轮盘赌
  • 孤岛多人口计划,迁移
  • 重新启动
  • 结合来自分配算法估算的想法(EDA)(重新采样领域接近有希望的领域以引入新的个人)

答案 1 :(得分:3)

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

一种加速人口增长的可能方法是在运行健身功能时(通常是GA中最昂贵的部分)产生不同的线程(每个人1个,可能是批量)。

假设一个32和一个四核系统的人口,以8个批量生成线程(每个cpu 2个线程将很好地交错),你应该能够以大约4 *的速度运行。

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