理想情况下,我应该在稳态选择过程中杀死群体中的多少条染色体?
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
。
根据书 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
。