#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.
Metody publiczne | |
~RouletteSelection (void) | |
Destruktor. | |
virtual std::auto_ptr< SelectionMethod > | Clone () const |
Utwórz nowy egzemplarz metody z prototypu. | |
virtual void | Select (Population &population, double partOfPopulationToLeave, EvolutionaryMethodIteration &iteration) const |
Funkcja dokonująca selekcji populacji bazowej. | |
virtual wxString | ToString () const |
Przedstaw opis metody. | |
virtual wxString | Name () const |
Zwróć nazwę metody. |
|
Zwróć nazwę metody.
Implementuje SelectionMethod. |
|
Funkcja dokonująca selekcji populacji bazowej. Funkcja dokonująca selekcji populacji metodą ruletkową (proporcjonalną).
Implementuje SelectionMethod. |
|
Przedstaw opis metody.
Implementuje SelectionMethod. |