sam raport uzyskanych wyników
Transkrypt
sam raport uzyskanych wyników
Wstęp do obliczeń ewolucyjnych i neuronowych – zadanie 3 Juliusz Sompolski 2009-03-30 Streszczenie W zadaniu tym poszukuje minimum funkcji Ackleya przy użyciu algorytmu symulowanego wyżarzania. Otrzymane wyniki porównujemy z wynikami heurystyki lokalnych ulepszeń. Używamy mutacji jednopunktowej i naturalnego kodowania argumentów. Spis treści 1 Zadanie 2 2 Opis algorytmów zastosowanego do rozwiązania problemu 2.1 Algorytm symulowanego wyżarzania . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Algorytm heurystyki lokalnych ulepszeń . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 Opis i dyskusja eksperymentów 3.1 Eksperyment pilotażowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Eksperyment właściwy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 Wyniki 4.1 Eksperyment pilotażowy . . . . . . . . . . . . . 4.2 Eksperyment właściwy . . . . . . . . . . . . . . 4.2.1 Wykresy eksperymentu właściwego . . . 4.2.2 Wykresy heurystyki lokalnych ulepszeń 4.2.3 Wykresy porównawcze . . . . . . . . . . 4.2.4 Wyniki liczbowe . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 10 10 13 13 14 1 Zadanie Zadanie polega na znalezieniu globalnego minimum funkcji Ackleya danej wzorem v u M M u 1 X 1 X t 2 F (~x) = −20 · exp(−0.2 · · xi ) − exp( cos(2πxi )) + 20 + exp(1) M M i=1 (1) i=1 na hiperkostce ~x = {x1 , x2 , . . . , xM }, gdzie xi ∈ (−32.768, 32.768). W naszym przypadku rozważamy przypadek M = 50 wymiarowy. Do znajdowania minimum użyjemy algorytmu symulowanego wyżarzania opisanego w następnej sekcji oraz porównując uzyskane wyniki z wynikami zrandomizowanej heurystyki lokalnych ulepszeń. W obu algorytmach stosujemy mutację jedopunktową i naturalne kodowanie argumentów. Funkcja ta wygląda następująco (dla wariantu dwuwymiarowego): Jak widać ma ona globalne minimum w punkcie 0, wokół tego punktu ma dużo minimów lokalnych, natomiast w oddaleniu od 0 jest bardzo równinna. Mutacja jednopunktowa ma charakter bardzo lokalny. Heurystyce lokalnych ulepszeń może być trudno wydostać się z minimów lokalnych. Dlatego właśnie pożytek może przynieść zastosowanie algorytmu symulowanego wyżarzania – aby dzięki wysokiej „temperaturze” w początkowej fazie algorytmu łatwo wyskakiwać z lokalnych minimów, w drodze do minimum globalnego. 2 2 Opis algorytmów zastosowanego do rozwiązania problemu 2.1 Algorytm symulowanego wyżarzania Zastosowany algorytm symulowanego wyżarzania działa według pseudokodu: 1: T ← 1.0 2: X ← losowy zakodowany element przestrzeni przeszukiwania. 3: f ← F (DECODE(X)) 4: for k = 1 to N do 5: Y ← M U T AT E(X) 6: g ← F (DECODE(Y )) 7: if R(f, g, T ) then {zmiana rozwiązania bieżącego} 8: X←Y 9: f ←g 10: end if 11: if kmodN 2 = 0 then {co N 2 iteracji zmiana temperatury} 12: T ←a·T 13: end if 14: end for Funkcja R(f, g, T ) decyduje, czy należy zamienić rozwiązanie bieżące, zamieniając zawsze gdy nowe rozwiązanie jest lepsze, lub z pewnym prawdopodobieństwem wykładniczo zależnym od różnicy jakości rozwiązań oraz temperatury T gdy jest gorsze: |f −g| 1: if g < f or random[0, 1] ¬ exp(− T ) then 2: T rue 3: else 4: F alse 5: end if Pozostałe funkcje działają następująco: • funkcja F jest funkcją której minimum szukamy, w tym wypadku funkcją Ackleya. • funkcja DECODE dekoduje zakodowane elementy przestrzeni do argumentów funkcji, w tym wypadku z kodowania naturalnego. • funkcja M U T AT E mutuje zakodowane elementy przestrzeni, w tym wypadku mutując jeden losowy spośród 30 · 50 = 1500 bitów. Algorytm ten ma następujące parametry: • T jest temperaturą początkową. W zadaniu jest dane T = 1.0. • N 1 jest łączną liczbą iteracji. W zadaniu jest dane N 1 = 150 000. • N 2 określa co którą iterację następuje zmiana temperatury T w postępie geometrycznym. W eksperymentach wypróbowane zostaną różne wartości a. • a jest to współczynnik postępu geometrycznego. W eksperymentach wartość a dobrana zostanie do wartości N 2 2.2 Algorytm heurystyki lokalnych ulepszeń Jest to algorytm używany i opisany w poprzednim zadaniu, tym razem wykorzystany w celach porównawczych dla takiego samego kodowania oraz mutacji jakie zastosowano w algorytmie symulowanego wyżarzania. 3 3 Opis i dyskusja eksperymentów 3.1 Eksperyment pilotażowy W zadaniu tym mieliśmy wybrać pewien zbiór N 2 i dla nich w eksperymencie pilotażowym wyznaczyć najlepszy parametr a. Arbitralnie więc wybrałem na początek zbiór N 2 obejmujący szeroki zakres wartości: N 2 ∈ {1, 10, 100, 1 000, 10 000, 30 000, 50 000} Dla N 2 z tego zbioru poszukiwałem a dla którego najlepszy uzyskany wynik wśród K = 20 przebiegów algorytmu o N 1 = 150 000 iteracjach (wartości takie jak w eksperymencie głównym) będzie minimalny. Brałem pod uwagę wartość najlepszą, a nie średnią, bo w algorytmie symulowanego wyżarzania często stosuje się wielostart jako „wzmacniacz prawdopodobieństwa”. Okazuje się, że algorytm ten ma tendencje do „zatykania” się – jeżeli za długo utknie w jakimś optimum lokalnym, to temperatura spada i ma coraz mniejsze szanse wydostania się z niego. Powstają w ten sposób „złe przebiegi”, które sztucznie zawyżają średnią i których występowanie nie jest powtarzalne, zaburzają więc wyniki. Gdy biore minimum z przebiegów problem ten nie występuje, gdyż prawdopodobieństwo, że wszystkie przebiegi utkną jest znikome, znikome też jest prawdopodobieństwo, że któryś przebieg będzie zdecydowanie lepszy od pozostałych. Prawdopodobieństwo a dla danego N 2 wyznaczałem stopniowo z coraz większą dokładnością, najpierw szukając najlepszego a z dokładnością 10−3 , potem w otoczeniu wyznaczonego tak a z dokładnością 10−4 etc. Dla małych N 2, gdzie a było bliskie 1 oraz dla dużych N 2, gdzie a było bliskie 0 i małe zmiany a wprowadzały duże wahania zastosowałem dodatkową dokładność. Eksperymenty pokazały, że dla wszystkich N 2 oprócz N 2 = 50 000 przy odpowiednim a da się uzyskać wyniki rzędu 10−7 , przy N 2 = 50 000 zmiana temperatury zaś była zbyt sko1 kowa. Zaobserwowano też, że wartość a N 2 pozostaje mniej więcej stała i wynosi około 0.9998. Intuicyjnie wartość ta jest to średni krok geometryczny na jedną iterację algorytmu. Dla wszystkich wartości N 2 można zaobserwować pewną wartość a, dla której skokowo wyniki stają się o kilka rzędów lepsze, następnie dla rosnącego a pogarszają się łagodniej. Widać to wyraźnie na wykresach w skali logarytmicznej. Oznacza to, że jeśli a jest za małe, czyli temperatura zbyt szybko spada, algorytm traci siłę do wyjścia z lokalnych minimów i zatyka się. Wyniki eksperymentu pilotażowego przedstawiono w sekcji 4.1. Do eksperymentu głównego zakwalifikowano wszystkie N 2 oprócz 50 000, czyli N 2 ∈ {1, 10, 100, 1 000, 10 000, 30 000} 3.2 Eksperyment właściwy W eksperymencie właściwym sprawdzono działanie algorytmu symulowanego wyżarzania dla: • N 2 = 1 i a = 0.999860 • N 2 = 10 i a = 0.998000 • N 2 = 100 i a = 0.983600 • N 2 = 1 000 i a = 0.831600 • N 2 = 10 000 i a = 0.152000 4 • N 2 = 30 000 i a = 0.006700 Dla każdej z tych par przeprowadzono K = 20 przebiegów po 150 000 iteracji, co 100 iteracje zbierając statystyki. Wyniki porównano z wynikami działania heurystyki lokalnych ulepszeń. Heurystyka lokalnych ulepszeń nie ma szans osiągnąć minimum globalnego – mutacja jednopunktowa ma zasięg zbyt lokalny i algorytm zawsze utyka w jakimś minimum lokalnym. Algorytm symulowanego wyżarzania osiąga minimum rzędu 10−7 i także się tam zatrzymuje. Dla wszystkich wybranych N 2 zostały osiągnięte takie minimalne wyniki przed 150 000 iteracjami, choć w różnym tempie. Najsłabiej zachowują się skrajne N 2, 1 i 30 000. Dla N 2 ze zbioru 10, 100, 1 000, 10 000 algorytm zachowuje się w podobny sposób. Dla dużego N 2 = 30 000 widać zdecydowaną schodkowość wyników – dla danej temperatury osiągana jest równowaga termodynamiczna, a poprawa wyników następuje dopiero po obniżeniu temperatury. Średnia na wykresach zawyżona jest przez „złe przebiegi”, w których temperatura spadła za bardzo, podczas gdy algorytm utknął w minimum lokalnym. Dlatego dla algorytmu symulowanego wyżarzania stosuje się wielostart. Jak widać, algorytm ten czasami utyka w minimach lokalnych, ale z drugiej strony heurystyka lokalnych ulepszeń utyka zawsze. 5 4 4.1 Wyniki Eksperyment pilotażowy W eksperymentach pilotażowych wyznaczono następujące optymalne wartości a: 1 N 2 Najlepsze a a N 2 Najlepsze minimum 1 0.999860 0.999860 1.381069e − 07 10 0.998000 0.999800 1.337214e − 07 100 0.983600 0.999835 1.291871e − 07 1000 0.831600 0.999816 1.145121e − 07 10000 0.152000 0.999812 1.291871e − 07 30000 0.006700 0.999833 1.464844e − 07 50000 0.004840 0.999893 8.699638e − 04 Poszukiwania najlepszego a wyglądały następująco: 6 7 8 9 4.2 4.2.1 Eksperyment właściwy Wykresy eksperymentu właściwego 10 11 12 4.2.2 Wykresy heurystyki lokalnych ulepszeń 4.2.3 Wykresy porównawcze 13 4.2.4 Wyniki liczbowe Tabelka osiągniętych wyników dla różnych N 2 co 30000 iteracji: N2 30 000 60 000 90 000 Heur.lok.ul. 2.429949e + 00 2.429949e + 00 2.429949e + 00 1 1.819073e + 00 1.034716e − 02 1.845469e − 04 10 1.476914e − 01 4.027523e − 04 1.061384e − 06 100 3.986595e − 01 2.642690e − 03 1.789856e − 05 1000 2.356780e − 01 1.111964e − 03 3.690851e − 06 10000 2.205543e + 00 3.125160e − 03 1.127343e − 05 30000 2.086164e + 01 3.692963e − 01 2.313999e − 03 14 120 000 2.429949e + 00 2.833531e − 06 1.691457e − 07 1.983409e − 07 1.544082e − 07 1.504985e − 07 1.558218e − 05 150 000 2.429949e + 00 1.582213e − 07 1.691457e − 07 1.381069e − 07 1.544082e − 07 1.504985e − 07 1.922366e − 07