在遗传算法中挑选育种者

Picking breeders in a genetic algorithm

我正在实施遗传算法,我不确定如何为下一代挑选育种者:

我手里拿着一份所有过去计算过的人的名单,

如果我 select 来自这个列表的育种者可以吗?还是我应该从最新一代中挑选最好的?

通常优于select具有最高适应值

的那些
  • 根据您定义的某个函数,评估您群体中的个体并选择最好的 N 个。例如,lightest rocks in algorithm 你想在其中生成轻型岩石。
  • 如果计算你种群中所有个人的适应度值是昂贵的操作,你应该首先select一个基于某种分布的样本。一个好的方法是 select 以 统一 的方式(所有人被 selected 的概率均等)
  • 如果您不能轻松定义适应度函数,运行 模拟是一个很好的技巧。例如,如果您的 表型 (标准)很难定义,例如不规则 3D 对象的形状。

您可以尝试以下方法之一给select饲养员(parent) - 轮盘 selection - 随机通用抽样 - 锦标赛选择 - 随机选择

参考: https://www.tutorialspoint.com/genetic_algorithms/genetic_algorithms_parent_selection.htm

如果你只 select 来自最新一代,你的种群有可能向后进化。不能保证后代比前几代更好。为了防止这种情况,一些算法维护了一个 "elite" 个体的池,这些个体不断地与正常人群混合。 (该策略称为 "elitism"。)这种方法的一个特别成功的版本是 Coello 的微型 GA,它使用非常小的种群,保留精英并频繁重启以取得进步。