machine-learning - "dynamic population"的进化算法

标签 machine-learning genetic-algorithm evolutionary-algorithm

我想使用进化/遗传算法解决问题。它与艺术有关 - 观看算法的人应该尝试一条染色体(=可能的解决方案),并根据自己的品味对其进行评估。

使用这种设置,评估过程(可以说)相当昂贵——测试每条染色体需要花费大量时间。为了确保在可行的时间内取得进展(这意味着频繁的世代更替),我必须接受人口规模较小(这也有缺点)。另一种选择是拥有更大的人口规模,但只有几代人。

我想到了一个不同的解决方案,我称之为“动态人口”。它会像这样工作:

  1. 在种群大小为 x 的情况下,为了设置算法,会随机创建 x 条染色体,并从 1 到 x 进行编号,这表示它们的 >年龄
  2. 评估初始种群染色体的适合度。
  3. 使用交叉和/或突变机制创建一条新染色体。 age = 1 被分配给这条新染色体。所有其他染色体都会变老一步(年龄 = 年龄 + 1)。 age > x 的染色体从群体中移除。 (在交叉机制产生两条染色体作为后代的情况下,选择一个 child 获得 age = 1,另一个 child 获得 age = 2,而对于其他染色体 年龄 = 年龄 + 2)
  4. 重复 1 - 3,直到找到解决方案。

(这个过程当然可以很容易地被采用来使用精英主义。)

使用这样的机制,每个(新)染色体以及(在我的情况下更重要的)每次评估都会有(可能的)进展。

但是我也能想到一些缺点......

这种使用“动态群体”的实现不适合进化算法是否有逻辑原因?

最佳答案

与其采用具有未知属性的临时解决方案,我建议首先尝试一些相关的众所周知的技术,例如:

  • 精英主义
  • 截断选择
  • 稳态遗传算法

你已经提到了精英主义。截断选择在某种程度上与精英主义原则有关。您可能对稳态选择(又名稳态遗传算法)特别感兴趣,它完全消除了一代的概念

作为对各种相关优化方法(包括提到的)的一个很好的概述,我可以推荐这本书 "Essentials of Metaheuristics"作者:Sean Luke(免费提供;但您也可以购买它以感谢作者)。

关于machine-learning - "dynamic population"的进化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452780/

相关文章:

binary - 格雷码在进化计算中的好处是什么?

R:ada:如何在具有分类描述符的数据帧上使用对?

python - 超时 : Access Azure blob storage from within an Azure ML experiment

python - scikit learn 中特征缩放的使用

java - 遗传算法 : nothing getting added?

r - GA包的ga功能实现

r - GenMatch() 中的 pop.size 参数分别为 genoud()

java - Java中的进化算法框架

python - DEAP:实现 NSGA-ii 解决机票问题

tensorflow - 如何在 Google 云中设置 TensorFlow?