Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss19:exkurs_genetische_algorithmen [2019/08/11 12:34] feuerhahn |
ss19:exkurs_genetische_algorithmen [2019/08/11 15:58] (aktuell) feuerhahn [Zweites Modell: Bipedal Walker] |
||
---|---|---|---|
Zeile 123: | Zeile 123: | ||
c)\\ | c)\\ | ||
- | Ändern Sie ebenfalls den Parameter k. Er bestimmt wieviele Wesen einer Generation auf die nächste Übergehen und mutiert werden.\\ | + | Ändern Sie ebenfalls den Parameter k. Er bestimmt wieviele Wesen einer Generation auf die nächste übergehen und mutiert werden.\\ |
**Lösung:** \\ | **Lösung:** \\ | ||
Zeile 137: | Zeile 137: | ||
^ Minimum |{{:ss19:model_k50_6.png?200|}}| {{:ss19:model2_k50_6.png?200|}}| | ^ Minimum |{{:ss19:model_k50_6.png?200|}}| {{:ss19:model2_k50_6.png?200|}}| | ||
- | Hier scheint die Funktion der make_model besser mit den 50 Wesen umgehen zu können, welche pro Generation weiter Mutiert werden. Make_model_2 hingegen funktioniert deutlich Schlechter.\\ | + | Hier scheint die Funktion der make_model besser mit den 50 Wesen umgehen zu können, welche pro Generation weiter mutiert werden. Make_model_2 hingegen funktioniert deutlich schlechter.\\ |
- | Ein weiteres Beispiel mit k = 5 findet sich in den jweiligen DokuStats der ipython-Notebooks. \\ | + | Ein weiteres Beispiel mit k = 5 findet sich in den jeweiligen DokuStats der ipython-Notebooks. \\ |
d)\\ | d)\\ | ||
Zeile 156: | Zeile 156: | ||
^ Maximum |{{:ss19:model_k3_5.png?300|}}| | ^ Maximum |{{:ss19:model_k3_5.png?300|}}| | ||
^ Minimum |{{:ss19:model_k3_6.png?300|}}| | ^ Minimum |{{:ss19:model_k3_6.png?300|}}| | ||
- | ^ Mittelwert u. Stdabw. |{{:ss19:model_k3_7.png?300|}}| | + | ^ Mittelwert & Standardabweichung |{{:ss19:model_k3_7.png?300|}}| |
- | Viele Durchläufe zu Mitteln schafft ein klareres Bild darüber, wie gut der Algorithmus tatsächlich ist.\\ | + | |
+ | Viele Durchläufe zu mitteln schafft ein klareres Bild darüber, wie gut der Algorithmus tatsächlich ist.\\ | ||
Wichtig ist hier besonders die generelle Standardabweichung vom Mittelwert.\\ | Wichtig ist hier besonders die generelle Standardabweichung vom Mittelwert.\\ | ||
- | Desto geringer die Abweichung, desto zuverlässiger ist auch, dass er Algorithmus in allen Durchläufen ca. Ähnlich funktioniert.\\ | + | Je geringer die Abweichung, desto zuverlässiger ist auch, dass er Algorithmus in allen Durchläufen ca. ähnlich funktioniert.\\ |
+ | |||
+ | {{:ss19:c_users_veve_anaconda3_lib_site-packages_ipykernel_launcher.py_2019-08-11_13-13-33.mp4|}} | ||
==== Zweites Modell: Bipedal Walker ==== | ==== Zweites Modell: Bipedal Walker ==== | ||
Bei diesem Modell arbeiten wir mit der openAI-gym "BipedalWalker-v2/.".\\ | Bei diesem Modell arbeiten wir mit der openAI-gym "BipedalWalker-v2/.".\\ | ||
- | Hierfür müssen wir das Paket box2d installieren. --> Bei mir hat das auf einem win64 System nicht Funktioniert per pip install box2d --> daher werde ich das win64 Paket auch in die .zip packen. Genaures in der readMe.\\ | + | Hierfür müssen wir das Paket box2d installieren. --> Bei mir hat das auf einem Windows 64-Bit System per "pip install box2d" nicht funktioniert --> daher werde ich das win64 Paket auch in die .zip packen. Genaueres ist in der readMe.txt zu finden.\\ |
Das Modell des Bipedal Walker besitzt einen 24-dimensionalen Zustandsraum.\\ | Das Modell des Bipedal Walker besitzt einen 24-dimensionalen Zustandsraum.\\ | ||
Zeile 193: | Zeile 196: | ||
Als erstes habe ich mir den Simulierten Ablauf des Walkers angesehen und Referenzwerte erfasst.\\ | Als erstes habe ich mir den Simulierten Ablauf des Walkers angesehen und Referenzwerte erfasst.\\ | ||
Die Bewertung des Walkers geschieht hier durch einen reward. Je besser der Walker die Schritte tätigt und dabei vorwärts kommt, desto höher wird der reward.\\ | Die Bewertung des Walkers geschieht hier durch einen reward. Je besser der Walker die Schritte tätigt und dabei vorwärts kommt, desto höher wird der reward.\\ | ||
- | Wenn der Walker fällt ist er gescheitert und sein durchlauf beendet.\\ | + | Wenn der Walker fällt ist er gescheitert und sein Durchlauf beendet.\\ |
{{:ss19:bipesimu.png?300|}} | {{:ss19:bipesimu.png?300|}} | ||
- | In der Grafik erkennt man, dass der zu erreichende Wert gegen 300 reward punkte streben sollte.\\ | + | In der Grafik erkennt man, dass der zu erreichende Wert gegen 300 reward-Punkte streben sollte.\\ |
Jetzt können wir das iphython-Notebook beliebig bearbeiten. Es wird sich auch in der .zip befinden.\\ | Jetzt können wir das iphython-Notebook beliebig bearbeiten. Es wird sich auch in der .zip befinden.\\ | ||
Zeile 206: | Zeile 209: | ||
Der erste Versuch war wie zu erwarten nicht der beste.\\ | Der erste Versuch war wie zu erwarten nicht der beste.\\ | ||
- | Der Mittelwert ging nicht über -30 hinaus und der Maximal erreichte Wert ging zum Ende der 100 Generationen gerade mal auf 30 zu. | + | Der Mittelwert ging nicht über -30 hinaus und der maximal erreichte Wert ging zum Ende der 100 Generationen gerade einmal auf 30 zu. |
{{:ss19:bipe01_1.png?300|}} | {{:ss19:bipe01_1.png?300|}} | ||
{{:ss19:bipe01_2.png?300|}} | {{:ss19:bipe01_2.png?300|}} | ||
- | **__ Mein zweiter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = je3, Generationen = 100, hidden = 16\\ | + | **__ Mein zweiter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = je 3, Generationen = 100, hidden = 16\\ |
Diesmal lag der Mittelwert zwar wieder nur im negativen Bereich, jedoch ist das Maximum deutlich angestiegen. Die Maximalen Werte erreichten zumindest zum Ende höhen Richtung 100 reward.\\ | Diesmal lag der Mittelwert zwar wieder nur im negativen Bereich, jedoch ist das Maximum deutlich angestiegen. Die Maximalen Werte erreichten zumindest zum Ende höhen Richtung 100 reward.\\ | ||
- | Da der Algorithmus vielversprechend aussah, habe ich zusätzlich noch einen Zweiten Durchlauf gestartet.\\ | + | Da der Algorithmus vielversprechend aussah, habe ich zusätzlich noch einen zweiten Durchlauf gestartet.\\ |
{{:ss19:bipe02_1.png?300|}} | {{:ss19:bipe02_1.png?300|}} | ||
Zeile 239: | Zeile 242: | ||
**__ Mein fünfter Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 3, Generationen = 100, hidden = 16\\ | **__ Mein fünfter Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 3, Generationen = 100, hidden = 16\\ | ||
- | Diesen Versuch habe ich auf Stefans Ratschlag hin ausprobiert. Interessant ist, dass der Algorithmus bei mir hier nicht Vielversprechend aussieht, da das Maximum gerade mal auf 8 reward steigt.\\ | + | Diesen Versuch habe ich auf Stefans Ratschlag hin ausprobiert. Interessant ist, dass der Algorithmus bei mir hier nicht vielversprechend aussieht, da das Maximum gerade mal auf 8 reward steigt.\\ |
Stefan meinte ,dass es bei ihm funktionierte, daher werde ich noch mehr Versuche machen.\\ | Stefan meinte ,dass es bei ihm funktionierte, daher werde ich noch mehr Versuche machen.\\ | ||
Zeile 248: | Zeile 251: | ||
**__ Mein sechster Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 1, Generationen = 1000, hidden = 16\\ | **__ Mein sechster Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 1, Generationen = 1000, hidden = 16\\ | ||
- | Bei diesem Versuch habe ich den vorherigen einfach nur um seine Generationen erweitert. Interessant zu beobachten ist, dass der Mittelwert sich der 0 nähert, aber die Maxima immernoch bei 9 stagnieren. Das Bedeutet im Umkehrschluss, dass nicht die Maxima höher werden, sondern die Minima ansteigen.\\ | + | Bei diesem Versuch habe ich den vorherigen einfach nur um seine Generationen erweitert. Interessant zu beobachten ist, dass der Mittelwert sich der 0 nähert, aber die Maxima immernoch bei 9 stagnieren. Das bedeutet im Umkehrschluss, dass nicht die Maxima höher werden, sondern die Minima ansteigen.\\ |
{{:ss19:bipe06_1.png?300|}} | {{:ss19:bipe06_1.png?300|}} | ||
Zeile 257: | Zeile 260: | ||
**__ Mein siebter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = 3, Generationen = 1000, hidden = 16\\ | **__ Mein siebter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = 3, Generationen = 1000, hidden = 16\\ | ||
- | Hier greife ich nochmal auf meinen zweiten Versuch zurück und erweitere wieder die Genrationsanzahl.\\ | + | Hier greife ich nochmal auf meinen zweiten Versuch zurück und erweitere wieder die Generationsanzahl.\\ |
- | Wieder sehr vielversprechende Ergebnisse. Zwar komme ich nicht annähernd an die 300 reward, jedoch haben meine Walker die Hälfte davon erreichen können.\\ | + | Wieder gab es sehr vielversprechende Ergebnisse. Zwar komme ich nicht annähernd an die 300 reward, jedoch haben meine Walker die Hälfte davon erreichen können.\\ |
Leider stagniert sich dieser Wert jedoch auch über die Generationen und mag nicht so recht weiter ansteigen.\\ | Leider stagniert sich dieser Wert jedoch auch über die Generationen und mag nicht so recht weiter ansteigen.\\ | ||
Zeile 267: | Zeile 270: | ||
**__ Mein achter Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 1, Generationen = 10000, hidden = 16\\ | **__ Mein achter Versuch:__** sigma = 1/(i+10), keep_best = 20, population = 200, Durchläufe = 1, Generationen = 10000, hidden = 16\\ | ||
- | Da mein Computer nach einem Tag Laufzeit den Algorithmus leider nichtmehr weitergeführt hat, sondern einfach abgebrochen ist, habe ich leider keine Aufzeichnungen davon.\\ | + | Da mein Computer nach einem Tag Laufzeit den Algorithmus leider nichtmehr weitergeführt hat, sondern einfach abgebrochen hat, habe ich leider keine Aufzeichnungen davon.\\ |
Zu sagen ist jedenfalls, dass der Algorithmus einen reward bis 100 erreicht hat und danach auf dem Wert stagnierte. | Zu sagen ist jedenfalls, dass der Algorithmus einen reward bis 100 erreicht hat und danach auf dem Wert stagnierte. | ||
**__ Mein neunter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = 1, Generationen = 10000, hidden = 16\\ | **__ Mein neunter Versuch:__** sigma = 0.07, keep_best = 18, population = 200, Durchläufe = 1, Generationen = 10000, hidden = 16\\ | ||
- | Auch hier hat mein Computer nach einem Tag Laufzeit den Algorithmus leider nichtmehr weitergeführt , sondern einfach abgebrochen, daher habe ich leider keine Aufzeichnungen davon. | + | Auch hier hat mein Computer nach einem Tag Laufzeit den Algorithmus leider nichtmehr weitergeführt, sondern ihn einfach abgebrochen, daher habe ich leider keine Aufzeichnungen davon. |
- | Dieses Modell ist in der Laufzeit zu einem reward von ca 190-200 gekommen und Sicherlich noch ausbaufähig.\\ | + | Dieses Modell ist in der Laufzeit zu einem reward von ca 190-200 gekommen und sicherlich noch ausbaufähig.\\ |
Vermutlich könnte man hier an den Voreinstellungen herumschrauben und somit ein besseres Ergebnis erzielen.\\ | Vermutlich könnte man hier an den Voreinstellungen herumschrauben und somit ein besseres Ergebnis erzielen.\\ | ||
- | ==== .zip Mit allen Informationen ==== | + | {{:ss19:bipedal_walker.gif?200|}} |
+ | (--> draufklicken zum Abspielen) | ||
+ | |||
+ | ==== .zip mit allen Informationen ==== | ||
{{:ss19:evoalgorithmus_miniprojekt.zip|}} | {{:ss19:evoalgorithmus_miniprojekt.zip|}} | ||