遗传算法轮盘赌选择

时间:2011-11-26 07:23:15

标签: artificial-intelligence selection genetic-algorithm roulette-wheel-selection

我在理解算法时遇到了问题。这是在线看到的最受欢迎的

for all members of population
  sum += fitness of this individual
end for

for all members of population
  probability = sum of probabilities + (fitness / sum)
  sum of probabilities += probability
end for

loop until new population is full
  do this twice
    number = Random between 0 and 1
       for all members of population
          if number > probability but less than next probability 
             then you have been selected
       end for
      end
  create offspring
end loop


for all members of population
  probability = sum of probabilities + (fitness / sum)
  sum of probabilities += probability
end for

^^^这件作品特别让我困惑。在人口中个体的背景下,“概率总和”甚至“概率”是什么?这些是个人在开始时的价值吗?

2 个答案:

答案 0 :(得分:1)

关键是

probability = sum of probabilities + (fitness / sum)

if number > probability but less than next probability 
         then you have been selected

Probability衡量个人创造后代的机会;它在轮盘赌轮上的大小。 sum of probabilities是轮盘赌的总大小。 每个人的probability都是其适应性的函数。

我在尝试理解算法时发现this link很有帮助。

答案 1 :(得分:1)

这是一段非常模糊的代码。

在第二个代码块中,probability是附加到群体中每个成员的变量,sum of probabilities是整个群体的全局变量。

现在,轮盘赌的比喻说的是,整个人口可以表示为轮盘赌轮,并且每个人口中的每个成员在该轮盘赌轮中具有与其相对适合度成比例的切片。那段代码正在做那个隐喻背后的肮脏工作 - 而不是在车轮上楔形,成员现在用线段[0,1]上的比例区间来表示,这是表示概率的习惯方式。

为此,您在技术上需要为每个成员提供两个数字,即开始和结束。但第一个成员的开始将是0;第二个成员的开始将是第一个成员的结束;等,直到最后一个成员,结尾为1。

这就是代码正在做的事情。 Sum of probabilities从0开始,第一次循环,probability是你直觉所认为的。它标志着第一个成员的终点。然后更新“概率总和”。第二次通过循环,“概率”是你直觉上认为的......被“概率之和”转移。它就这样了。

所以第一个循环是将健身值相加作为规范事物的前奏。您要问的第二个循环是在单位间隔内对这些归一化概率进行归一化和排列。第三个(最复杂的)循环是挑选两个随机数,将它们与两个群体成员匹配,然后交配它们。 (请注意,假设这些成员采用某种类似于数组的格式,以便您可以根据已滚动的随机数顺序检查其端点。)