轮盘赌选择程序

时间:2012-05-26 11:01:44

标签: c# c#-4.0 genetic-algorithm genetic-programming

是否可以使用适应度值来评估群体中的每个个体,而不会将概率视为以下伪代码

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

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

1 个答案:

答案 0 :(得分:2)

该代码用于选择随机元素,但具有根据特定权重的概率。

示例:

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

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