9

在遗传算法中,当使用轮盘选择方法选择成员进行交叉时,是否首先需要对种群进行适应度排序?

可能性似乎是:

  1. 首先按适应度升序对种群进行排序
  2. 按适应度降序对种群进行排序
  3. 不要对人口进行排序,让轮盘赌球落在它可能的地方。

我认为无论哪种方式进行排序都可能没有效果 - 无论较大的切片是否组合在一起,随机落在包含不同大小(按健身)切片的轮子上的鹅卵石将具有完全相同的结果机会。但我不是 100% 相信的。

你怎么看?

每一代都需要进行排序也会影响算法的速度,所以我不希望这样做(如果使用精英主义,我会进行排序,但我不在这种情况下)。谢谢,如果你知道,因为我无法通过谷歌等找到明确的答案。

4

3 回答 3

5

不,您实际上不需要对它们进行排序。您完全正确的是,无论是否将较高级别的成员分组在一起(至少使用一个好的随机数生成器:)),它都不会产生任何影响。

你的直觉在这里已经死了 - 从统计上讲,它不会对排序产生影响,而且正如你所提到的,你不必浪费大量时间和精力来排序!

于 2009-04-09T15:21:11.643 回答
2

即使你应用精英主义,也没有必要对人口进行分类。

找到最好的 N 个个体只需要在整个种群中进行一次迭代。

于 2009-06-01T09:35:53.620 回答
1

如果您使用此类选择,则无需对总体进行排序。

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

这是我的做法(并为此在学校获得加分):

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

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

  3. 用钩子进行分类。措施。现在让钩子为空并测量等等。

你会得到一些很好的数据,并通过实验验证你的直觉告诉你什么。

于 2009-04-09T15:23:24.087 回答