轮盘选择程序

Jon*_*mni 5 c# genetic-programming genetic-algorithm c#-4.0

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

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
Run Code Online (Sandbox Code Playgroud)

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

Do this twice
Run Code Online (Sandbox Code Playgroud)

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

usr*_*usr 3

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

例子:

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

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