#include <RouletteSelection.h>
Diagram dziedziczenia dla RouletteSelection
Metoda selekcji ruletkowej w swej istocie polega na umożliwieniu lepszym chromosomom namnożenia się z większym prawdopodobieństwem niż chromosomom gorszym. W niniejszej klasie nie zaimplementowano tej metody w jej ogólnie przyjętej wersji w celu uniknięcia utworzenia kilku kopii tego samego chromosomu. Ogólne założenie metody jest zachowane: lepsze chromosomy mają większą szansę na znalezienie się w następnej generacji.
W pierwszym kroku algorytmu każdemu chromosomowi nadawane jest prawdopodobnieństwo jego eliminacji z populacji proporcjonalne do funkcji celu dla tego chromosomu. To wstępne pradopodobieństwo wyliczane jest ze wzoru:
Otrzymane wstępne prawdopodobieństwa modyfikujemy następnie tak, by największe z nich było równe 1, a proporcje między nimi pozostały zachowane:
Gdybyśmy nie dokonali tej modyfikacji prawdopodobieństwo usunięcia nawet dla najgorszego chromosomu w populacji byłoby znikome i ciężar odpowiedzialności za podążanie algorytmu w kierunku minimum spadłby na operator mutacji, co praktycznie uniemożliwiałoby znalezienie dobrego rozwiązania w rozsądnym czasie.