人口中有多少人到 select? (遗传算法)

How many individuals to select from population? (Genetic Algorithm)

我已经开始实现我自己的遗传算法,我正处于决定如何select parents 新一代的阶段。我读过一些书,似乎有很多不同的方法可以解决这个问题。

我知道各种 select离子技术(锦标赛、轮盘赌),但我似乎无法找到的信息恰好是 多少 parents 应该 selected。

我要处理的初始人口规模将在 50-75 人之间。我在想也许 select 下一代人口的一半,所以每一代人口都会减少一半,但不确定这是否是最好的选择。

任何建议都很好。

我没有使用遗传算法的经验,但阅读 [Wikipedia 页面] (https://en.m.wikipedia.org/wiki/Genetic_algorithm) 我可以看出每次迭代的总体规模通常应该相同。那里提到的终止条件包括固定的迭代次数和一代中最佳解决方案(个体)的适应度的最小值。从理论上讲,您应该能够继续迭代,生成更多代,直到满足终止条件。

考虑到这种理解,您现在可以计算需要多少parent才能生成新一代。请注意,您正在使用遗传运算符 selecting parentsgenerate 新的一代(通常交叉和突变以及它们的组合)。您不使用 selected 个体本身作为新一代,因为这不会导致解决方案的进化。因此,要计算所需的 parent 数量,您需要决定使用多少 parent 来生成一个 child("classic" 方法为 2,但它不是必需的)。通常,您不会使用同一组(一对)parent 来创建多个 child。但我猜测(因为它没有在 wiki 页面中提到)你会在几个不同的组(夫妇)中使用特定的 parent 来创建不同的 children。对于每个 child 创建的 parent 也可能没有恒定数量(例如,对于突变,您只能对一个 child 使用一个 parent)。

假设您为每个 child 使用了 2 个 parent,您没有多次使用同一对,而是在多个对中使用每个 parent产生多个children。要使人口规模达到 y,您需要 select x parents,以便 (x choose 2) = (x!)/(2!(x-2)!) = (x•(x-1)/2) = (1/2)(x^2 - x) 大于或等于 y。将 y 替换为您所需的人口规模并求解 x.

我注意到的另一件事是,他们在维基页面中写道,通常选择的人口规模为数百或数千,因此您选择的 50-75 规模似乎很小。

每一代循环包括选择N个parents(你觉得合适,最好的数取决于问题。2是通常的),将它们交叉,变异children(只有 % 的机会),并用它们代替一些人口(保持人口规模是一种常见的做法)。你问的是最后一个。

一个简单的策略是在每一代循环中替换整个种群。另一个只替代 N 个最差的个体。其他可能是 N 个随机个体...

作为硕士学位学习的一部分,我学习了遗传算法课程。

正如@et_l 正确所说的那样,每次迭代的总体规模通常应该相同,因此你希望每一代的解决方案越来越少是没有意义的(将人口减少一半说)。 50-75岁的人口也很少。我建议在你的人群中至少有 100 个解决方案。

多少 parent 到 select 完全取决于您。您可以 select 整个人口,或只有少数。 parent 的数量通常只会影响您的总体收敛到单个解决方案的速度。一般来说,你 select 的 parent 越少,收敛的速度就越快。

现在假设(例如)您选择 100 个人口中的前 10 个解决方案作为您下一代的 parents。您杀死了其他 90 个人口并保持前 10 名。(请注意,您杀死的数量也有所不同,这并不总是需要成为未进入顶部的人口的一部分并成为 parent.)

接下来,您结合 10 个 parent 来创建新的解决方案。组合的方式有很多种。在这一步,重要的是让你的种群恢复到你的种群的初始大小,即 100。你可以选择在你的新一代中保留你的 10 parents,或者杀死它们并拥有一个种群完全由 100 children 和 10 parent 组成,而不是 10 parent + 90 children.

可选地,您现在还可以对新种群进行一些变异以获得更广泛的解决方案。您是否这样做完全取决于您,我建议您对此进行试验,看看这可能会产生什么样的效果。如果您选择包括突变,通常只有一小部分人口会发生突变。

你终于有了新的人口,如果你愿意,你可以开始另一个迭代。继续进行迭代,直到您在总体中获得满意的解决方案。

我希望我已经讲清楚了有很多方法可以实现遗传算法,并且需要进行一些实验才能找出最适合您的特定问题的实现方式。