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