Będę pisał algorytm genetyczny do optymalizacji wielokryterialnej.
Mam kilka fundamentalnych pytań ale najpierw troszkę wyjaśnienia.
Celem takiej optymalizacji jest odszukanie zbioru optymalnych rozwiązań. Taki zbiór nazywamy FrontPareto i na wykresie jest to czerwony zbiór. Zielone rozwiązania są zdominowane przez czerwone. Zielone punkty są takie same jeśli chodzi o cenę ale gorsze jeśli chodzi o jakość. Algorytm optymalizacji wielokryterialnej ma zbudować taki "czerwony zbiór rozwiązań". Przykład w którym chcę maksymalizować Jakość(Y) a minimalizować Koszt(X)
</img>
Rozwiązanie x jest lepsze (dominuje) od rozwiązania y wtedy, gdy wartość każdego kryterium dla rozwiązania x jest nie niższa niż dla rozwiązania y oraz istnieje przynajmniej jedno kryterium i, którego wartość dla rozwiązania x jest wyższa niż dla y. Czyli x jest niezdominowane, y zdominowane.
Mam wątpliwości co do warunku stopu takiego algorytmu. I nie chodzi mi tu o taki klasyczny warunek stopu bo jak mówi się pół żartem "dobry algorytm genetyczny nigdy się nie kończy", ale o to skąd algorytm będzie wiedział że ma szukać akurat takiego czerwonego FrontPareto jak na wykresie?
Dlaczego nie będzie szukał coraz lepszych i lepszych rozwiązań. Dlaczego nie wyszuka rozwiązań ze zbioru niebieskiego, a następnie z fioletowego i tak dalej...?
</img>
Nie mogę tego sobie wyobrazić, w praktyce mam zbiór kilkudziesięciu samochodów z przypisanymi wartościami liczbowymi cena i jakość. I taki algorytm powinien mi wybrać właśnie rozwiązania najbardziej optymalne, niezdominowane. A nie zasuwać w nieskończoność.
Moje domysły to to że ogranicza się jakoś przestrzeń poszukiwań, czyli czy mam ograniczyć np. cenę 3.0 a jakość do 5.5?
A może muszę mu podać na wstępie zbiór mozliwych rozwiązań? Przecież populację startową się losuje, jak algorytm ustali mi rozwiązania które na prawdę istnieją a nie wskaże takich które nie istnieją?