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

aho*_*fer 6 genetic-algorithm

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

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

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

对这种情况有什么适当的回应?

NWS*_*NWS 5

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

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

假设人口为 32 人,采用四核系统,以 8 个为一组生成线程(每个 cpu 2 个线程将很好地交错),您应该能够以大约 4 倍的速度运行。

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