直觉上我会认为如果我想找到“最佳”参数集,我可以从许多子代中选择表现最好的1个人,让他生成100个类似于自己的子代,选出表现最佳的人并重复这个过程。那么选择最好的2个人并交叉繁殖有什么意义呢?同样的,为什么不选择3、4或10个父母(“混合衍生”的合子)来创建每一代的子代?
直觉上我会认为如果我想找到“最佳”参数集,我可以从许多子代中选择表现最好的1个人,让他生成100个类似于自己的子代,选出表现最佳的人并重复这个过程。那么选择最好的2个人并交叉繁殖有什么意义呢?同样的,为什么不选择3、4或10个父母(“混合衍生”的合子)来创建每一代的子代?
遗传算法的核心是在复杂环境中重新组合多个特征。这并不直观,因为我们通常不认为同时调整控制面板上的每个旋钮是优化的好方法,但如果您有许多参数并且它们相当独立,那么这样做是可行的。
如果你的父母越少,那么你就越有可能陷入一个本地最优解——可能是一个不太好的本地最优解——很长一段时间。只有一个父母时,唯一剩下的搜索机制是个体突变。
如果你的父母越多,那么你就越不可能捕捉到原始父母在第一次繁殖中被选中的任何特征。具体情况取决于你的n元交叉如何工作,但直观上讲,你拥有的父母越多,你从任何一个特定父母那里获得的遗传物质就越少,孩子们继承(并因此改进)父母的任何有益的多染色体特征的可能性就越小。
这与模式定理有关。
从技术上讲,您可以在您的种群中拥有源自群交的合子,但是没有数学证明(至少我所知道的)表明它们会改善多样性或算法找到的最终结果。此外,群交操作符(使用您的术语)比简单的双亲操作符更复杂,并且不容易被学生理解。因此,它们没有被广泛宣传(这并不意味着它们不被允许)。
实际上,您可以在遗传算法中同时使用单亲和双亲操作符。正如一个答案已经指出的那样,单亲元素相当于局部搜索,从技术上讲,您将实现一种模因算法,通常会改进简单的遗传算法。