目前,我正在实现肯尼思·斯坦利( Kenneth )开发的Stanley算法,并以原始纸为参考。
在描述交叉方法的部分,有一件事让我有点困惑。
所以,上面的图说明了above的交叉方法。为了决定一个基因是从哪个父母那里遗传的,文章说:
匹配的基因是随机遗传的,而不相交的基因(中间不匹配的基因)和多余的基因(最终不匹配的基因)则是从更合适的父母那里遗传的。
对于匹配的基因(1-5),很容易理解。您只是随机地从Parent1或Parent2继承(两者都有50%的可能性)。但是对于不相交的(6-8)和多余的(9-10)基因,你不能从更合适的父母那里继承,因为你只有Parent1或Parent2中的那些基因。
例如:
父母1的适应度高于亲本2,不相交的基因6只存在于Parent2中(当然,因为不相交和过量的基因只发生在双亲中),所以不能决定从更适合的父母那里继承这个基因。所有其他不相交和多余的基因也是如此。您只能从它们存在的父级继承它们。
所以我的问题是:你会不会从更健康的父母那里继承所有匹配的基因,然后接管那些不相交和多余的基因呢?还是我在这里遇到什么事了?
提前谢谢。
发布于 2018-05-30 23:50:15
查看实际的实现并查看如何处理它可能会有所帮助。在最初的C++代码这里 (看看2085年之前的代码)中,似乎跳过了不适合父母的不相交和多余的基因。
在您的实现中,您可以从不适合的父母那里继承不相交和多余的基因,但是以1的概率禁用它们,这样以后您就可以对它们进行点态突变(切换禁用为已启用)。然而,这可能会导致显着的基因组膨胀,所以测试和看看什么是可行的。
发布于 2018-10-04 10:14:54
从“更健康的父母”中提取不匹配的基因就更有意义了。这将产生强大的后代作为交叉的结果。对于匹配的基因,应用通常的交叉算子。为了提高多样性,从双亲中随机选择错配基因,产生第二个后代。
这样,第一个后代将更健康,第二个后代将保持多样性。希望这个能帮上忙。
发布于 2021-04-21 09:59:14
图中描述的是父母双方具有相同适应度的特殊情况,因此选择又是随机的,因此可能导致所描述的情况。我同意,如果没有额外的资料,这是有误导性的。
https://stackoverflow.com/questions/50553867
复制相似问题