在遗传算法中挑选育种者
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,它使用非常小的种群,保留精英并频繁重启以取得进步。
我正在实施遗传算法,我不确定如何为下一代挑选育种者:
我手里拿着一份所有过去计算过的人的名单,
如果我 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,它使用非常小的种群,保留精英并频繁重启以取得进步。