嘿伙计们,我对比赛选择的多次迭代如何运作感到有点困惑。
我知道你开始选择随机对(或k成员)并将胜利者放入交配池。你继续这样做,直到交配池被填满。
但是,我不确定之后会发生什么。
我们是否只是开始随意交配交配池中的那些?然后通过选择新一代的随机对来重启选择过程?
感谢。
答案 0 :(得分:4)
我写了很多这些通用算法,我做了一个框架,以避免一次又一次地编写相同的代码。
对于交配池,它取决于您正在寻找的个体类型,您正在寻找的解决方案,如果您有办法以某种方式组合个体,那么他们将有更好的机会生产更好的个人。
你可以使用随机交配,但这会给你“更糟糕”的解决方案 - 更糟糕的是因为你不知道他们是否会产生更好的个体。它仍然是很好的解决方案,当我开始编写这些算法时,我总是使用随机交配,但是在从2个旧的个体中获得一个新个体之后,我立即比较了3的性能,并且丢弃了更糟的,最终得到了有时2个父母(并丢弃1岁的孩子),或最终有1个父母和1个孩子。
但是要提高效率,如果你知道如何组合个体以便它们能够产生更好的解决方案(这可能非常棘手),你可以使用一个亲和功能,它需要2个人并返回一个亲和力他们。棘手的部分是确定亲和力。根据问题,它可能会有很大不同。例如,如果我采取旅行推销员的问题,我在与不太相似的个人交配时获得了最佳解决方案。所以我的亲和力函数返回1 - 相似性。
这样,我可以将迭代次数减少80%并获得非常好的解决方案。
但请记住,你的池越大,执行亲和功能的时间越长 - 亲和功能可以是O(n²),甚至是O(n³),在这种情况下它可能是瓶颈你的算法。在这种情况下,最好使用随机交配。
总之,随机交配是好的 - 毕竟,我们可以说它在现实生活中以这种方式运作 - 但如果你知道如何计算2个人之间的亲和力,你可以用它来减少迭代次数你需要获得一个好的解决方案。请记住,计算亲和力可能非常复杂(我甚至猜测计算给定池的最佳亲和力是NP-Complete)。
答案 1 :(得分:2)
这不是一个好建议,但是......
但是,我不确定之后会发生什么。
做你想做的事。你可以改变它们......或者你可以交配你在锦标赛中挑选的每一对。使用最好的方法。要有创意。
正如本论坛上的其他人所指出的那样:关于GA的肮脏小秘密在于它更多的是艺术而非科学。
此外,要获得真正好的建议,您需要更好地描述您想要解决的问题。
答案 2 :(得分:1)
传统上,在比赛获胜者被发现后,他们将成为下一代。在此循环后,所有突变,选择等过程都会继续。