Question

is it possible to evaluate each individual in the population using the fitness value without finding the probability as the following pseudo code

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

and what the following part of the code do ?

Do this twice

I really confuse how the Roulette Wheel selects pair of parents. can any help ? thanks in advance

Was it helpful?

Solution

The code is meant to select a random element, but with probabilities according to a certain weight.

Example:

  • We want to select from a two-element array with the following weights: { 1, 9 }
  • The cumulative weight is { 1, 10 }
  • The total weight is 10
  • We choose a random number between 1 and 10
  • We look into the cumulative weight array and find the first index where our random number is greater than the element
  • This index is the index of the randomly chosen element

Intuitively, this example makes sense: 9 out of ten times the random number will fall between 1 and 9 causing the first element to be drawn with probability 0.9 (just as the weights specified).

OTHER TIPS

Number should be less than Currentfitness, otherwise it is heavily biased towards the first member of the population.

Example:

  • Consider weights {1, 2, 7}
  • Cumulative weights {1, 3, 10}
  • Total weight 10
  • Choose random double between 0 and 10 with r.NextDouble(10.0)
  • 90% of time 1 is chosen with given pseudo code. Should be 10%
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top