2012-05-10 14 views

Respuesta

12

No es necesario ordenar la población en absoluto; la clave de la selección de la ruleta es que la probabilidad de que un individuo determinado sea seleccionado para la reproducción es proporcional a su estado físico.

Digamos que tiene una población no seleccionada, con eficacias de la siguiente manera:

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

Para realizar la selección de la ruleta, sólo tiene que elegir un número aleatorio en el rango de 0 a 240 (la suma de la aptitud de la población). Luego, comenzando en el primer elemento de la lista, reste la aptitud de cada individuo hasta que el número aleatorio sea menor o igual a cero. Así, en el caso anterior, si elegimos al azar 112, hacemos lo siguiente:

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. 

Por lo tanto, Elección de la persona # 3 para la reproducción. Tenga en cuenta que esto no requiere que la población se ordene en absoluto.

Así, en pseudocódigo, que se reduce a:

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. 

Tenga en cuenta que la - 1 en la última línea es para contrarrestar el increment i que se hace dentro de la última iteración del bucle (porque a pesar de que hemos encontrado el individuo que queremos, se incrementa independientemente).

Cuestiones relacionadas