遗传算法中比赛选择的多次迭代

Posted

技术标签:

【中文标题】遗传算法中比赛选择的多次迭代【英文标题】:Multiple Iterations of Tournament Selection in Genetic Algorithm 【发布时间】:2010-11-12 04:49:34 【问题描述】:

大家好,我对锦标赛选择的多次迭代如何运作感到有些困惑。

我知道您开始选择随机配对(或 k 个成员)并将获胜者放入交配池。你继续这样做,直到交配池被填满。

但是,我不确定之后会发生什么。

我们是否只是开始随机地与交配池中的那些交配?然后通过从新一代中随机选择对来重新开始选择过程?

谢谢。

【问题讨论】:

【参考方案1】:

我已经编写了很多这样的通用算法,以至于我创建了一个框架以避免一次又一次地编写相同的代码。

对于交配池,这取决于您正在寻找的个体类型、您正在寻找的解决方案,以及如果您有办法以某种方式将个体结合起来,那么他们更有可能产生一个更好的个人。

您可以使用随机交配,但这会给您提供“更糟糕”的解决方案——更糟糕的是,您不知道它们是否会产生更好的个体。它仍然是很好的解决方案,当我开始编写这些算法时,我总是使用随机交配,但是在从 2 个旧个体中得到一个新个体后,我立即比较了 3 个的性能,并丢弃了最差的,最终得到有时有 2 位父母(并丢弃 1 秒大的孩子),或者最终有 1 位父母和 1 位孩子。

但是为了更高效,并且如果您知道如何组合个体以便他们产生更好的解决方案(这可能非常棘手),您可以使用亲和力函数,它需要 2 个个体并返回两个个体之间的亲和力他们。棘手的部分是确定亲和力。根据问题的不同,它可能会有很大的不同。例如,如果我考虑旅行商问题,我在交配相似度较低的个体时得到了最好的解决方案。所以我的亲和力函数返回 1 - 相似度。

这样,我可以减少 80% 的迭代次数并获得非常好的解决方案。

但请记住,池越大,执行亲和函数所需的时间就越长——亲和函数可以是 O(n²),甚至 O(n³),在这种情况下,它可能是你的算法。在这种情况下,使用随机交配会更好。

总之,随机交配是好的——毕竟,我们可以说它在现实生活中是这样工作的——但如果你知道如何计算两个人之间的亲和力,你可以用它来减少迭代次数您需要获得一个好的解决方案。请记住,计算亲和性可能非常复杂(我什至猜测计算给定池的最佳亲和性是 NP 完全的)。

【讨论】:

+1 用于制作框架。当我爱上 GA 并写了很多算法时,我在大学里自己做了一个。不幸的是,我在大学毕业后没有时间继续它。 :(【参考方案2】:

这不是一个好的建议,但是......

但是,我不确定之后会发生什么。

随心所欲。您可以将它们全部变异......或者您可以将您在锦标赛中选择的每一对配对。使用效果最好的。要有创意。

正如本论坛上的其他人指出的那样:关于 GA 的肮脏小秘密在于它更像是艺术而不是科学。

此外,要获得真正好的建议,您需要更好地描述您想要解决的问题。

【讨论】:

【参考方案3】:

传统上,在找到锦标赛获胜者后,他们会形成下一代。在此之后,所有的变异、选择等过程都在循环中继续进行。

【讨论】:

以上是关于遗传算法中比赛选择的多次迭代的主要内容,如果未能解决你的问题,请参考以下文章

遗传算法

遗传算法

遗传算法求解最优值

遗传算法

遗传算法-总结

遗传算法详解与实验