理想情况下,我应该在稳态选择过程中杀死群体中的多少条染色体?

Ideally how many chromosomes in the population should I kill during steady state selection?

根据书 Essentials of Metaheuristics and this Stack Overflow thread,我应该 select parent 人口中的染色体,我应该杀死这些染色体,以便为新染色体腾出空间。我的问题是根据你的经验,理想情况下我应该杀死多少,比如说我的人口规模是 100?或者如果我的人口规模是 50 人怎么办?

注意:我还假设 number of offspring == number of parents to kill

这个问题没有真正的 "right answer",因为 GA 通常用于具有大搜索空间的极其复杂的问题。虽然您所做的假设是有效的(尽管很自然地,有空间来试验 grow/shrink 随着时间的推移人口的机制),但回答您的问题的唯一方法是试验 - 设置许多不同的副本您的系统,使用相同的适应度函数,并查看哪些最适合哪些设置。

我会从一两个 children 和固定的人口规模 (1) 开始。

稳态总体通常会出现早熟收敛问题,因此您应该使用一些技术来限制该问题。

一些简单的想法是:

  • 尝试 tournament selection 低选择压力(即使 2 个人也足够)
  • 使用一个elitism-related参数来控制替换概率
  • 不要随机替换个人。 Child 与其两个 parents("family competition" 算法)之一竞争。

(1) 至少一开始是这样。有很多论文描述了可变规模人口的优势,但他们引入了各种参数,这些参数更难调整,需要更多的努力。

例如"Genetic Algorithm with Variable Population Size"(阿拉伯人)每个人都有年龄和寿命。

这取决于您的算法在每一代中产生多少后代。 例如,你有 m parents 个你称之为 chromosomes.And 的个体,你会产生 n 个后代。现在你有 m+n 个人,你应该保持你的人口规模不变。所以你需要selectn个人去杀。一般可以选择最差的n个人杀掉。 根据我的经验,m 等于 n