Fin*_*ers 4 neat genetic-algorithm genome
我试图自己实现整洁,使用原始论文但被卡住了。
假设在上一代我有以下物种:
Specie 1: members: 100 avg_score: 100
Specie 2: members: 150 avg_score: 120
Specie 3: members: 300 avg_score: 50
Specie 4: members: 10 avg_score: 110
Run Code Online (Sandbox Code Playgroud)
我现在对下一代的尝试。如下:
将物种的分数设置为物种中每个基因组分数的平均值。
4.1 通过杀死每个物种中最差的 90% 来繁殖。
4.2 选择一个物种,根据他们的分数。
4.3 从那个物种中,选择 2 个基因组并培育一个新的基因组。
我不确定这是否是正确的尝试,尤其是当我“杀死”90% 的基因组时。这个百分比值是我现在随机选择的(这只是概念上的)。
如果一个物种,在杀死后,有 0 个成员。然后就灭绝了吗?
在我给出的例子中,如果我杀死 90%,物种 4 可能会灭绝。
我的尝试是否正确,或者一个物种通常是如何灭绝的?
首先,我强烈建议不要尝试从头开始实施 NEAT。这比起初看起来要复杂得多(请随意查看许多可用实现的公共存储库)。
现在,更具体地回答您的问题:
NEAT有多种口味。在您的情况下,您的疑虑似乎与精英主义的概念有关,是的,这通常是您需要自己设置的参数。通常,该算法的工作方式如下:
请注意,物种形成会定期(通常是每一代)重新应用,因此物种并没有真正的强定义(没有什么能真正阻止精英基因组,原封不动地复制到下一代,分配给新物种)。
如果您使用固定的种群规模和 k 均值物种形成,那么无论如何总会有 k 个物种。从某种意义上说,它们每次迭代都是新物种。