遗传算法中的轮盘赌选择。需要先对种群进行排序吗?

9
在遗传算法中,使用轮盘选择方法选择交叉成员时,是否需要先按适应度等级对种群进行排序?
可能的情况如下:
1.首先按适应度升序排列种群 2.按适应度降序排列种群 3.不对种群进行排序,让轮盘球随机落在哪里
我认为无论如何排序都可能没有影响-一个随机落在包含不同大小(按适应度)片的轮子上的小石头将具有完全相同的结果机会,无论较大的片是否分组。但我并不100%确信。
你认为呢?
每代都需要进行排序的需求也会影响算法的速度,因此我希望不要这样做(如果使用精英主义,我会进行排序,但在这种情况下我不会)。 如果您知道,请告诉我,因为我无法通过Google等找到明确的答案。

1
在阅读有关该算法的内容后,我也有完全相同的问题 +1。 - jkp
3个回答

6
不,你实际上不需要对它们进行排序。你的想法是完全正确的,即使高排名成员被分组在一起或不在一起(至少使用一个良好的随机数生成器 :)),也不会产生影响。
你的直觉是准确的 - 从统计学的角度来看,排序不会产生影响,正如你提到的那样,你不必浪费大量时间和精力去排序事物!

2
即使您采用精英主义,也没有必要对人口进行排序。
只需要一次迭代即可找到最好的N个个体。

1

如果使用这样的选择,您就不需要对人口进行排序。

而且您关于复杂性的看法也是正确的,排序是n*log(n),使遗传算法显着变慢(但仍然保持复杂性为多项式,这是遗传算法的一个关键特征)。

以下是我会做的方式(并在学校获得额外的分数):

  1. 使用钩子实现更通用的解决方案-在突变之前、选择之后等等。

  2. 测量算法的迭代次数和速度/每次迭代

  3. 在钩子中进行排序。测量。现在让钩子为空,再次测量等等。

您将获得一些好的数据,并通过实验验证您的直觉。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接