5

是否可以使用适应度值来评估种群中的每个个体,而无需找到概率,如下面的伪代码

For all members of population
    sum += fitness ( member)
End for 
Loop until new population is full 
      Do this twice 
            Number = Random between 0 and sum
            Currentfitness = 0.0
            For each member in population
               Currentfitness += fitness (member)
               if Number > Currentfitness then select member
            End for 
      End
Create offspring 
End loop

以及代码的以下部分做什么?

Do this twice

我真的很困惑轮盘赌如何选择一对父母。有什么帮助吗?提前致谢

4

2 回答 2

4

Number 应该小于Currentfitness,否则会严重偏向于人口的第一个成员。

例子:

  • 考虑权重 {1, 2, 7}
  • 累积权重 {1, 3, 10}
  • 总重量 10
  • 使用 r.NextDouble(10.0) 选择 0 到 10 之间的随机双精度
  • 90% 的时间 1 是用给定的伪代码选择的。应该是 10%
于 2015-08-27T10:36:05.003 回答
3

该代码旨在选择一个随机元素,但具有一定权重的概率。

例子:

  • 我们想从具有以下权重的二元素数组中进行选择:{ 1, 9 }
  • 累积权重为 { 1, 10 }
  • 总重量为 10
  • 我们选择 1 到 10 之间的随机数
  • 我们查看累积权重数组并找到我们的随机数大于元素的第一个索引
  • 这个索引是随机选择的元素的索引

直观地说,这个例子是有道理的:十分之九的随机数将落在 1 到 9 之间,导致第一个元素以 0.9 的概率被绘制(就像指定的权重一样)。

于 2012-05-26T11:11:22.257 回答