理想情况下,在稳态选择期间,我应该杀死人口中有多少染色体?

时间:2016-07-18 01:06:39

标签: selection genetic-algorithm evolutionary-algorithm

根据书Essentials of Metaheuristics 和本Stack Overflow thread,我应该在我应该杀死的人群中选择父染色体,以便为新的染色体腾出空间。我的问题来自你的经验,理想情况下,如果我的人口数量是100,我应该杀多少?或者如果我的人口规模是50?

注意:我在这里也假设number of offspring == number of parents to kill

3 个答案:

答案 0 :(得分:1)

这个问题没有真正的“正确答案”,因为GA一般用于大型搜索空间的复杂问题。虽然你做出的假设是有效的(但很自然地,有空间来试验随着时间的推移增长/缩小人口的机制),回答你问题的唯一方法就是试验 - 设置你系统的许多不同副本,使用相同的适应度函数,并查看哪些设置最适合。

答案 1 :(得分:1)

我从一个或两个孩子开始,人口规模固定(1)。

稳态人群经常表现出过早的收敛问题,所以你应该使用一些技术来限制这个问题。

一些简单的想法是:

  • 尝试选择压力较低的tournament selection(即使是2个人也足够)
  • 使用与精英相关的参数来控制替换的可能性
  • 不要替换随机个体。儿童与其两个父母之一竞争(“家庭竞争”算法)。

(1)至少最初。有许多论文描述了可变大小群体的优势,但它们引入了各种参数,这些参数难以调整并且需要更多的努力。

E.g。在“具有可变种群大小的遗传算法”(阿拉伯人)中,每个人都有一个年龄和一生。

答案 2 :(得分:1)

这取决于算法在每一代产生多少个后代。 例如,您有m个父母个体,您称之为染色体。您生成n个后代。现在你有m+n个人,你应该保持你的人口规模。所以你需要选择n个人来杀人。通常,您可以选择要杀死的最差n个人。 根据我的经验,m等于n