Krzyżowanie a warunki ograniczające

0

Załóżmy, że osobnik w pewnej części swojego genotypu przechowuję liczbę, która musi się znajdować w określonym przedziale, np. (0, 30>. Stosujemy kodowanie binarne i losowo wybieramy punkt krzyżowania. Kiedy krzyżujemy dwóch osobników to pomimo, że początkowo każdy to z nich ma daną część genotypu w przedziale (0,30> to jakieś z dzieci może uzyskać wartość wykraczającą poza zadany przedział. Co wtedy ? Czy można jakoś znormalizować wartości aby po krzyżowaniu dostać wartość mieszczącą się w zadanym przedziale ?

0

Albo nie stosuj kodowania binarnego.
Albo przeskaluj to na przedziały 0..31 lub 0..63 lub 0..127 potem krzyżuj potem skaluj z powrotem na 0..30

0

albo zrób modulo 31 albo odrzuć i krzyżuj jeszcze raz z pkt krzyżowania w innym miejscu. Możliwości jest wiele, zależy co będzie najlepsze dla uzyskania jak najlepszych wyników

0

Załóżmy, że kodujemy binarnie na 8 bitach, czyli max wartość to 255. Na danej pozycji w genotypie może być wartość z zakresu (0, 110>. Krzyżujemy bez skalowania 33 (0010 0001) i 99 (0110 0011) z punktem krzyżowania np. 4 i dostajemy 35 (0010 0011) i 22 (0001 0110). Ze skalowaniem, które pozwala uniknąć przekroczenia zakresu, w tym wypadku (0 , 110> wyglądałoby to tak ? : najpierw 33 - 110 = x - 255, x = 76.5 (zaokrąglamy do 76). Analogicznie 99 przechodzi w 229. Potem krzyżujemy 76 i 229 co daje wynik 69 i 206. Teraz skalujemy to z powrotem na (0, 110> i dostajemy 30 i 89 po zaokrągleniu ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1