2012-05-10 3 views

Antwort

12

Die Population muss überhaupt nicht sortiert werden - der Schlüssel zur Rouletteauswahl ist, dass die Wahrscheinlichkeit, dass ein bestimmtes Individuum für die Reproduktion ausgewählt wird, proportional zu seiner Fitness ist.

Sagen Sie bitte eine unsortierte Bevölkerung haben, mit Fitnessen wie folgt:

[12, 45, 76, 32, 54, 21] 

Roulette Auswahl auszuführen, müssen Sie nur eine Zufallszahl im Bereich von 0 bis 240 (die Summe der Bevölkerung der Fitness) wählen müssen. Beginnen Sie dann bei dem ersten Element in der Liste, subtrahieren Sie die Fitness jedes einzelnen, bis die Zufallszahl kleiner oder gleich Null ist. Also, im obigen Fall, wenn wir nach dem Zufall 112 holen, tun wir folgendes:

Step 1: 112 - 12 = 100. This is > 0, so continue. 
Step 2: 100 - 45 = 55. This is > 0, so continue. 
Step 3: 55 - 76 = -21. This is <= 0, so stop. 

Daher wählen wir einzelne # 3 für die Wiedergabe. Beachten Sie, dass die Population nicht sortiert werden muss.

Also, in Pseudo-Code, kocht es auf:

let s = sum of population fitness 
let r = random number in range [0, s]. 
let i = 0. 
while r > 0 do: 
    r = r - fitness of individual #i 
    increment i 
select individual #i - 1 for reproduction. 

Beachten Sie, dass die - 1 in der letzten Zeile der increment i entgegenzuwirken ist, die innerhalb der letzten Iteration der Schleife (denn auch getan, obwohl wir haben fand die Person, die wir wollen, erhöht es unabhängig).

Verwandte Themen