algorytm ewolucji różnicowej
Transkrypt
algorytm ewolucji różnicowej
ALGORYTM EWOLUCJI RÓŻNICOWEJ Andrzej Sawicki EWOLUCJA RÓŻNICOWA - WSTĘP • Stosunkowo nowy (połowa lat 90tych) algorytm optymalizacji numerycznej (autorzy: R. Storn i K. Price). • Należy do rodziny algorytmów ewolucyjnych. • Został zaprojektowany z myślą o optymalizacji problemów rzeczywistoliczbowych. EWOLUCJA RÓŻNICOWA - WSTĘP • Osobniki są L-wymiarowymi wektorami liczb rzeczywistych. • Mutacja polega na perturbacji losowo wybranego wektora o różnicę dwóch innych wektorów pomnożoną przez stały współczynnik. • Algorytm wymaga tylko trzech parametrów, z których jeden (Np) jest rozmiarem populacji, drugi (F) steruje mutacją, a trzeci (CR) krzyżowaniem. EWOLUCJA RÓŻNICOWA – DOBÓR PARAMETRÓW • • • • Algorytm posiada tylko trzy parametry: F, CR, Np. F – czynnik skalujący - zazwyczaj 0.5≤F≤ 0.9. Cr - jednostka intensywności krzyżowania Np – wielkośd populacji. W literaturze spotyka się propozycje 5*L≤ Np ≤ 10*L, ale prowadziłoby to do bardzo dużych rozmiarów populacji dla funkcji wielowymiarowych. Proponuję w swoich eksperymentach przyjąd na początek S≈50 • 0≤Cr≤1. Proponuję zacząd od bardzo małe (bliskie 0) oraz bardzo duże (bliskie 1) wartości Cr. • Zaproponowano również schematy adaptacji i samoadaptacji parametrów algorytmu. Np. Dla każdego mutanta losuj F z rozkładu N(0.5,0.3). • Literatura podpowiada, aby co dobraną ilośd iteracji zwiększad/ zmniejszad wartości Cr i F EWOLUCJA RÓŻNICOWA - ALGORYTM • • • • • • • • • • • • zainicjuj współczynniki F, Cr, Np. zainicjalizuj populację p0 (Np) t=0 while (nie zachodzi warunek stopu) for i ∈ {1, … , Np } pt r1 , pt r2 , pt r3 ← losowa_selekcja (pt ) u ← mutacja_roznicowa (pt r1 , pt r2 , pt r3 ) y ← krzyzowanie_wymieniające(pt i ,u) pi t+1 ← sukcesja_elitarna (pt i ,y) end for t ← t+1 end while EWOLUCJA RÓŻNICOWA – INICJALIZACJA POPULACJI • Należy zainicjalizowad populację o wielkości Np przechowującą wektory o wielkości D gdzie D oznacza wymiarowośd problemu . • Przyjmuje się, że wielkośd populacji Np powinna byd 5-10x większa niż liczba parametrów (D) tworzących wektor pojedynczego osobnika EWOLUCJA RÓŻNICOWA - SELEKCJA • W klasycznym wariancie algorytmu DE/rand/1 reprodukują osobniki wylosowane z bieżącej populacji. • Osobniki próbne są wybierane losowo. • Często wymaga się ,aby indeksy osobników biorących udział w mutacji różnicowej były różne . • Stąd warto zadbad , aby i≠r1 ≠r2 ≠r3 . EWOLUCJA RÓŻNICOWA - MUTACJA • Mutacja polega na wykorzystaniu trzech reprodukowanych osobników i dodaniu do pierwszego z nich r1 przeskalowanej różnicy pomiędzy dwoma pozostałymi r2 i r3 ui =pr1 + F*(pr2−pr3 ) gdzie: F – czynnik skalujący (powinien przyjmowad wartości *0.5-0.9] ) ui – jest nowym zmutowanym wektorem osobnika pr1, pr2 , pr3 – losowo wybrane osobniki z obecnej populacji (w wersji DE/rand/1) EWOLUCJA RÓŻNICOWA – KRZYŻOWANIE • W ewolucji różnicowej wykorzystuje się krzyżowanie wymieniające ze względu na potrzebę zwiększenia różnorodności populacji. • Potomek yi tworzony jest poprzez wymianę elementów wektora rodzica pit oraz mutanta ui • Najczęściej wykorzystywany jest wariant krzyżowania dwumianowego oznaczonego DE/X/Y/bin gdzie dla każdego elementu wektora potomka losuje się czy ma pochodzid od rodzica czy od mutanta 𝒚i =ui jeżeli rand(0,1) ≤ Cr gdzie: Cr - jednostka intensywności krzyżowania pit w przeciwnym przypadku EWOLUCJA RÓŻNICOWA – SUKCESJA • Sukcesja polega na porównaniu osobnika potomnego yi z rodzicem pit i wybraniu lepszego z nich • Ma charakter elitarny, zachłanny, a także lokalny w zbiorze osobników co pozwala na utrzymanie różnorodności populacji. if f(yi)≤f(pit) then pit ← yi end if