Obecnie próbuję zrealizować bardzo prosty przykład algorytmów genetycznych.Przekraczanie dwóch liczb całkowitych bitowych
W pewnym momencie musisz zrobić "Cross-Over" (biologia) z dwoma liczbami (rodzicami), aby uzyskać "dziecko".
można znaleźć wyjaśnienie cross-over here: (. Druga ilustracja, tym łatwiej "punktowe" cross-over jest jeden Próbuję zrobić)
How to "crossover" two strings (1234 & abcd -> 12cd & ab34)
Chromosomy (rodzice i dziecko) to liczby, ale "Cross-Over" będzie nieco operacją.
I znalazł rozwiązanie dla jednego z „chromosomach”, który jest następujący:
- Przenieść ilość bitów X na prawo (
>>>
operatora) - a następnie przenieść bity ponownie X pozycje ale tym razem w lewo (operator
<<
)
To zatrzymałoby koniec jednego z chromosomów i wypełniłoby początek 0s.
Ale tak naprawdę nie wiem, jak rozwiązać problem drugiego chromosomu, a następnie zrobić Cross-Over.
(prawdopodobnie XOR raz Ciągle początku/końcu chromosomów i wypełnione resztę z 0s).
Albo mam nawet podejść do tego problemu z innej strony?
Czy zawsze wiemy jak duży dwa wejścia są numery (np 16-bitowe liczby całkowite) ? – David
Tak, zawsze są to 16-bitowe liczby całkowite. Jedna rzecz, którą można zmodyfikować, to% Cross-Over. Na przykład 75% zachowałoby pierwsze 4 (25%) bitów rodzica A, a następnie podążyłoby za tymi 4 bitami z 12 (75%) bitami od rodzica B. –