2012-05-10 19 views

cevap

12

nüfus hiç sıralanabilir gerekmez - rulet seçimi anahtarı, belirli bir bireyin olasılık onun fitness orantılıdır üreme seçilme olmasıdır.

şu şekilde uyumu yapılmıştır ile, bir sıralanmamış nüfusu olduğunu varsayalım:

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

rulet seçimini gerçekleştirmek için, sadece aralık 0 (nüfusun uygunluk toplamı) 240 için rastgele bir numara seçmek gerekir. rasgele sayı daha az ya da sıfıra eşit olana kadar sonra, listedeki ilk eleman başlayarak her bireyin formunu çıkarılır.

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. 

nedenle, üreme bireysel 3. belirleyin: rastgele 112 almak Yani, yukarıdaki durumda, biz aşağıdakileri yapın. Bunun, nüfusun hiç sıralanmamasını gerektirmediğini unutmayın.

Yani, pseudocode, bu aşağı kaynar: Nihai doğrultusunda - 1 (döngü son yineleme içinde yapılabilir biz ettik çünkü rağmen oluyor increment i karşı koymak olduğunu

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. 

Not İstediğimiz bireyi bulduk, bu sayede artar).

İlgili konular