【问题标题】:Maintaining Population Size in a Genetic Algorithm/Program在遗传算法/程序中保持种群大小
【发布时间】:2014-08-26 16:02:41
【问题描述】:

我正在编写基因程序,但是已经有一段时间了,所以我有点生疏了。

如果我从 100 个个体的种群规模开始,通过锦标赛选择选择 50 个进行繁殖,在交叉后每对产生 50 个下一代个体,我剩下 100 个第一代个体(这将不再繁殖,不再是“人口”的一部分)和 50 个当代个体。所以我的 50 锦标赛选择不会真正起作用。比赛中选出的个人是否也应该传给下一代?或者他们应该以某种方式复制 2:1?

感谢您的更新!

【问题讨论】:

    标签: genetic-algorithm genetic-programming


    【解决方案1】:

    在遗传算法中有许多方法可以执行选择和交叉,但一般来说,如果您使用锦标赛选择,您最好选择与您的人口一样多的个体,并让他们产生相同数量的后代。

    有多种方法可以产生与父母相同数量的后代,但例如,如果执行直接的一点交叉,则初始父母的每一半都会与另一父母的另一半结转。这样,两个父母产生两个后代。例如

    Parent 1: 00000000
    Parent 2: 11111111
    

    在第三位之后有一个交叉点。

    Offspring 1: 00011111
    Offspring 2: 11100000
    

    之后,您可以丢弃整个初始种群并用所有后代替换它们。

    注意:这并没有考虑到您可能想要包含的任何专业运营商,这些运营商可以帮助将最优秀的个人带到每个人口中。但那是另一回事了....

    【讨论】:

    • 知道了!所以这个想法是锦标赛选择会随机选择一对个体,两者中最好的一个将进行交叉,但交叉组中可以有同一个人的多个副本(如果它被多次选择)?跨度>
    • 根据您个人在锦标赛选择中的相对适应度,您经常会看到交叉群体中最佳个人的多个副本。因为他们很可能a)与不同的个体交叉和/或b)在不同的点交叉,这通常是一个好主意。它鼓励多样性,同时允许最优秀的人在下一代中更流行。
    • 通常,实际上并没有物理交叉组。您将执行两次选择,执行交叉以生成后代,然后重复该过程,直到获得所需数量的后代。遗传算法可能会有很大差异,因此您不会总是以 1:1 的比例交叉。我见过 GA 从 1,000 人口中选择两个父母来创造一个后代。这个过程执行 1,000 次以产生 1,000 个后代。如果两个选定的个体产生两个后代,则该过程将执行 500 次。这真的取决于偏好/要求
    • 只有在您为某个问题寻找单一解决方案时才有意义。如果您正在寻找多种解决方案,那么您正在寻找多种物种(这就是我认为应该的方式),根据定义,它们在遗传上是分离的(不能与其他物种交配),如果 GA 是 1:1 模型那么进化论应该是这样的。否则就差远了。不应将多个解决方案建模为同一物种的多个个体。但我猜 GA 是在为寻找单一解决方案的单一群体建模。
    • @OnABauer 谢谢你的回答,这是一个很大的难题:)
    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2011-12-23
    • 1970-01-01
    • 2015-12-06
    • 2019-10-04
    相关资源
    最近更新 更多