Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1718:evolutionssimulator

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1718:evolutionssimulator [2018/03/20 14:39]
lenarost [genAIRation]
ws1718:evolutionssimulator [2020/09/21 20:10] (aktuell)
sunnyrogers
Zeile 1: Zeile 1:
 +
 +
 ====== genAIRation ====== ====== genAIRation ======
 **Mitglieder**: ​ **Mitglieder**: ​
-Lorenz Müller +Lorenz MüllerDaphna BeljavskijLena Marie Rost
-Daphna Beljavskij +
-Lena Marie Rost +
- +
- +
-===== Projektidee ===== +
-Willkommen in unserem tollen Evolutionssimulations Projekt. +
-Wir wollen hier ein Programm realisieren,​ das zufällige Spezien eine Aufgabe bewältigen lässt. Natürlich wird der Zufall wenig überzeugende Ergebnisse liefern, aber die Besten der Spezien bilden die Grundlage für ihre jeweilige neue Tochtergeneration. Sehr oft durchgespielt sollen unsere Generationen immer bessser die Aufgabe bewältigen können und es soll visualisiert werden, wie sie sich verändern. +
- +
-===== Planung ===== +
-==== Schwerpunkte ==== +
-Als erstes haben wir uns Gedanken über die Schwerpunkte unseres Projektes gemacht. Dazu kamen wir auf folgende Bereiche:  +
- +
-  * **Spezien:​** ​  Die Spezien sind der Kern unserer Evolution und benötigen ganz unbedingt sinnvolle Attribute und Funktionen. Wir werden sie als Klasse realisieren. +
-  * **Umfeld:​** ​  Eine Spezies ohne Aufgabe entwickelt sich nicht. Aus diesem Grund muss in die zu bewältigende Aufgabe bzw. in das Umfeld, in dem sich die Spezies aufhält, genauso viel Gedanken hinein gesteckt werden. Nur eine sinnvolle Aufgabe gibt interessante Ergebnisse. +
-  * **Vererbung:​** ​  ​Vererbung bedeutet, dass unsere Spezien nicht nur lebendig sind, sondern auch nutzbare Informationen beeinhalten,​ die einer weiteren Generation übergeben werden können. Dabei ist Mutation für Veränderungen ebenfalls wichtig, was alles in allem eine genaue Überlegung benötigt. Schlussendlich ​ braucht man kluge Faktoren für eine Selektion, um die für uns Besten herauszusuchen. Hier bietet sich etwas wie ein Ranking an. +
-  * **Visualisierung:​** ​  Für ein zufriedenes,​ anschauliches Ergebnis ist es wichtig, die jeweiligen Generationen zu visualisieren,​ um deren Fortschritt bewundern zu können. Eng dazu angeschlossen sind die Spezien, wo bereits bei deren Attribut-Überlegung ein Nutzen für Visualität da sein muss. +
- +
-Hier findet sich unser Konzeptblatt:​ +
-[[ws1718:​evolutionssimulator:​Konzept]] +
- +
------ +
-===== Protokoll ===== +
-==== 30.11.2017 ==== +
-Es wurde umgehend mit der Erarbeitung eines [[ws1718:​evolutionssimulator:​Konzept|Konzeptblattes]] begonnen. Das Projekt braucht eine Menge genauer Überlegungen und Entscheidungen. Das Konzeptblatt soll uns dabei das gesamte Projekt lang begleiten und helfen vorran zu kommen. Zu dem Blatt zählten Punkte wie: +
- +
-  * Eigenschaften der Spezien +
-  * Kriterien um die Bewältigung der Aufgabe bewerten zu können +
-  * Fortbewegung der Spezien +
-  * Umfeld und Aufgabe für die Spezien +
-  * Optimierungs/​ Vererbungsproblem -> Lösungsansätze finden/ überlegen (verschoben,​ bis wir informierter sind) +
-  * Visualisierungs Ideen (verschoben,​ bis wir weitere Mittel kennen) +
- +
-Als letztes erstellten wir einen Zeitplan um die Termine und das Zeitlimit deutlich zu machen. Uns ist bewusst, dass es wenig Zeit ist, aber wir wollen bis 18.01 die Evolution fertig haben, um das Schwierigste erledigt zu haben. +
- +
-==== 07.12.2017 ==== +
-Heute haben wir uns hauptsächlich mit der Erstellung der Klasse für die Kreaturen und deren Fortbewegung beschäftigt. Dies haben wir durch die Erstellung einer Funktion für die **Bewegung am Einheitskreis in Polarkoordinaten** bewerkstelligt. +
-Zudem fiel die Entscheidung den Lernprozess der Kreaturen vereinfacht ohne Neuronale Netze, sondern nur mit Selektion zu modellieren. +
- +
-Zuletzt haben wir uns folgende Punkte zur Abarbeitung überlegt:​ +
-  *Zuerst muss jede **einzelne Kreatur** funktionieren in folgenden Punkten: +
-    * Bewegung (bereits erledigt) +
-    * Rating +
-    * Umfeldverhalten +
-    * Feinschliff +
-  * Wenn jede Kreatur funktioniert,​ werden wir sie in **Massen** je Generation simulieren. +
-  * Als nächstes simulieren wir **mehrere Generationen**,​ mit dem Schwerpunkt der **Vererbung**. +
-  * Zuletzt kommt der **Feinschliff** des gesamten Programms +
-==== 14.12.2017 ==== +
-  * Inzwischen wurde das Programm mit **//​Logging//​** versehen, um die Übersicht zu wahren und Fehler schneller zu finden. +
- +
-Im Tutorium gestern haben wir den Weg der Kreaturen //random// gemacht, sodass wir heute mit dem Rating beginnen konnten. Für das Rating haben wir schon im Konzept vier Kriterien definiert:​ +
-  * Überlebenszeit  +
-  * Zielstrebigkeit +
-  * Distanz zum Ziel +
-  * Standpunkt des Ausscheidens +
- +
-Für den Standpunkt des Ausscheidens und die Überlebenszeit benötigen wir in jedem Fall ein Umfeld. Dieses wollen wir jedoch sofort in Kombination mit der Visualisierung mit PyGame umsetzen, worüber wir uns noch belesen müssen. Darum haben wir uns entschieden,​ erst einmal die Zielstrebigkeit und die Distanz zum Ziel mit Probewerten zu programmieren. Für alles was zum Rating gehört, haben wir eine Funktion definiert. Um die Distanz zum Ziel zu definieren, haben den euklidischen Abstand zum Ziel modelliert.  +
-Für das nächste Mal haben wir uns vorgenommen die Zielstrebigkeit fertigzustellen. Hierbei ist es wichtig, die Abweichung von einem idealen Weg bestimmen zu können. Zum Ende der Stunde haben wir erst realisiert, dass numpy-arrays eine einfachere Möglichkeit bieten. Bis zum nächsten Mal müssen wir uns damit näher auseinandersetze und es dann für diesen Rating-Punkt anwenden. +
- +
-==== 21.12.2017 ==== +
- +
-  * Inzwischen wurde alternativ eine vorläufige Turtle-Visualisierung((Turtle-Visualisierung:​ {{https://​i.gyazo.com/​aeeb337f3540e3c092ef98dcf3f87b0b.png?​200}})) programmiert,​ was weitere Rating Überlegungen möglich machte. +
- +
-Das Rating für die Zielstrebigkeit und die Überlebenszeit wurden heute fertig gestellt. Jedes Rating wurde normiert, dabei steht **100 für das beste Rating, 0 für ein tolerantes Rating und eine negative Zahl für ein schlechtes Rating**.\\ Des weiteren wurde eine neue Funktion für den Tod einer Kreatur erstellt. Bisher stirbt die Kreatur nur, wenn sie das Ziel erreicht oder //​milkyway//​((Bewegungsblock der Kreatur)) komplett abgelaufen ist. +
-Die Visualisierung des Programmes mit PyGame steht als nächstes auf unserer Liste. So sollen die Ferien zum Vertraut machen mit dem neuen Programm dienen.  +
- +
-==== 11.01.2018 ==== +
-Heute haben wir uns mit der Visualisierung über PyGame beschäftigt und schon einmal einen Sceleton für ein funktionierendes "​Spiel"​ angelegt. Wir haben also die Gameloop initialisiert und den Input, Update und das Rendern eingesetzt. Die restliche Stunde haben wir versucht ein sich bewegendes Rechteck zu erstellen, dass nie das Fenster verlässt. ​  +
- +
-==== 18.01.2018 ==== +
-Diesmal haben wir mit der Ausarbeitung eines **Konzepts für das Herzstück** unseres Projekts begonnen -  der Vererbung und Selektion. Dabei konnten wir uns Anfangs nicht über die Art vom Algorithmus für unser Vorhaben einig werden. Zur Auswahl stand z.B. ein Neuronales Netzwerk oder ein eigenes Konzept zur Selektion. Am Ende fiel die Entscheidung auf das eignene Konzept. Dabei werden der Tochtergeneration mehrere Eigenschaften und ein "​Mutterweg"​ vererbt. Der Mutterweg gibt eine Strategie zum Ziel und die Eigenschaften geben den Kreaturen eine Eigenständigkeit und dadurch wollen wir den evolutionären Prozess simulieren. +
- +
-Später am Tag entschieden wir uns schnell für eine **Arbeitsteilung** für die nächsten Prozesse. Zwei von uns werden sich mit der Visualisierung beschäftigen,​ da es eher weniger Code, sondern mehr Diskussion für Design und Grafik erfordert. Die dritte Person befasst sich weiterhin mit den Kreaturen und soll das oben beschriebene Konzept für die Vererbung umsetzten. +
-==== 25.01.2018 ==== +
-In der heutigen Sitzung setzten wir die Arbeitsteilung um und befassten uns sowohl mit der Visualisierung,​ als auch mit der Vererbung zwischen den Kreaturen. +
- +
-**-** Bei der pygame-Visualisierung haben wir heute ein Bild als Kreatur eingefügt. Des Weiteren haben wir die Koordinaten aus CreatureR auf den pygame Screen an gepasst. Die nächsten Schritte sind mehrere Kreaturen im Screen dar zustellen und das Umfeld zu erschaffen. Dabei soll eine Skala im Screen erscheinen, die den Zwischenstand der Kreaturen darstellt. +
- +
-**-** Für die Vererbung mussten wir die Erstellung von milkyway grundlegend verändern! Das haben wir getan und konnten im Anschluss eben diesen Prozess abhängig von einer gewissen Liste abhängig machen. Später wird die Input-Liste die geerbte Wegbeschreibung der Mutter sein. +
-==== 01.02.2018 ==== +
- +
-Das Design des Programms wurde heute festgesetzt. Dabei fiel die Entscheidung auf eine pastel-aquarell Optik, wobei unsere Kreaturen durch eine Wolkenwelt ihren Weg finden müssen. Start und Ziel werden als Plattformen dargestellt. Der Idealweg bleibt dabei ein gerade Strecke zwischen beiden Plattformen. +
-Als Hindernis ins Spielfeld werden Wolken und Tropfen eingefügt, die sich tödlich auf die Kreatur auswirken. Zudem überlegten wir über die Anzahl der Spezien und finden 10 als angemessen. Jede Spezie unterscheidet sich dann durch eine andere Farbe. +
- +
-Bei der Vererbung ist es uns gelungen, dass jede Kreatur eine abstrakte Bewegungsliste von sich erstellen kann, um sie einer anderen Kreatur zu übergeben. Damit ist eine Vererbung von Eigenschaften und einem Mutterweg grundlegend möglich. Es müssen nurnoch beide Dinge übergeben werden, was allerdings schnell programmiert ist, da wir alles grundlegende fertig haben! +
- +
- +
-==== 08.02.2018 ==== +
- +
-Über die letzte Woche haben wir die pygame-Visualisierung ​ in den screen gesetzt. Dabei wurden bereits die Tropfen und die Wolke als Aquarell visualisiert.  +
-Des Weiteren ist es uns gelungen die Kollision der Kreaturen mit den Screengrenzen und den Hindernissen umzusetzen.  +
-Ein Problem war heute, mehrere Kreaturen aufzurufen und auch zu visualisieren. Nach vergeblichen Probieren, ​ haben wir erstmal die neuste pygame-Visualisierung mit dem neusten CreatureR-Programm verknüpft.  +
-Damit hatten wir auch das Problem mit der Visualisierung mehrerer Kreaturen gelöst. +
-Bei der Visualisierung trat darüber hinaus das Problem auf, dass die gemalten Bilder, die im voraus mit Gimp freigestellt wurden, in ihrer ursprünglichen Form, also mit weißen Rändern erschienen, auch wenn die .png Datei, wenn man sie betrachtet hat keine Ränder hatte. Nach langem Hin und Her haben wir dann verstanden, dass der Fehler im .convert() Befehl liegt. Dieser führt nämlich dazu, dass der Alpha-Kanal,​ durch den man überhaupt einen transparenten Hintergrund erzeugen kann, ignoriert wird. Ohne den convert() Befehl hinter der .png-Datei funktioniert die Visualisierung einwandfrei. +
- +
-==== 15.02.18==== +
-Heute sind wir auf mehrere Probleme gestoßen, die uns jeweils sehr viel Zeit gekostet hat.  +
-Zunächst war es nicht möglich mehrere Kreaturen zu erschaffen und auch zu visualisieren. Der Visualisierungsaspekt funktionierte dabei nicht. Bevor wir eine tiefere Umstrukturierung des Codes vorgenommen haben, haben wir zuerst eine Neu-Anpassung des Hauptcodes mit dem Visualisierungscodes gemacht. Dabei lief der Visualisierungscode bis heute noch mit einer sehr veralteten CreatureR-Version.  +
-Nach der Anpassung lief auch die Visualisierung mehrerer erstellter Kreaturen. Das Problem löste sich dabei von selbst.  +
-Der nächste Problem war dann einen neue Generation zu erschaffen. Dabei stießen wir dann auf mehrere kleine Bugs, aber haben es letztlich geschafft eine Evolution einer Spezie zu beobachten. +
-Des Weiteren haben wir uns mit einer pixelgenauen Kollision der Hindernisse mit den Kreaturen beschäftigt. Es gibt die Möglichkeit,​ die Sprites mit einer Maske zu umschreiben,​ anstatt mit einem Kreis oder einem Rechteck. Dafür gibt es nur zwei Befehle, die man in der PyGame Dokumentation nachlesen kann. Der eine sorgt dafür, dass für den Sprite eine Maske erstellt wird und der zweite ist für die Abfrage der Kollision von zwei Masken. Für die nächsten Termine ist es wichtig, dass wir Zwischenbildschirme mit dem Zwischenstand der überlebenden Kreaturen und eine Übersichtsleiste oben einbauen.+
  
  
-====06.03.2018==== 
  
-Tag 1 Blockseminar:​ +** Willkommen in unserem tollen Evolutionssimulations Projekt.**
-Zunächst haben wir unsere screensize auf HD angepasst. Dabei haben wir eine größere Map und Platz für eine Skala mehrerer Werte am Rand geschaffen.  +
-Die Skala soll vor allem folgende Werte anzeigen: aktuelle Generation, Rating, Anteil, der ins Ziel gekommenen Kreaturen, Anteil der Spezien und eventuell noch weitere...  +
-Für die Skala wurde heute viel recherchiert,​ sodass zum Ende schon eine Zahl im Bildschirm erschien.  +
-Weiter wurde für die Visualisierung mehrere Kreaturen gemalt, eingescannt und frei gestellt.  +
-Beim Hauptcode wurden schon mehrere Spezien erstellt. Die bildet dann die Vorarbeit für den morgigen Tag.  +
-Morgen soll sowohl die Skala, als auch die Visualisierung verschiedener Spezien stehen.  +
------ +
-=====Zwischenanschauungen===== +
-Eine Sammlung aus Zwischenständen,​ für das Veranschaulichen des Projektprozesses.+
  
-**17.12.2017 | Visualisierung mit Turtle:**\\ {{https://i.gyazo.com/​497aadba2eefe5cbc26429cbcd1f1f5b.gif}}+Wir wollen hier ein Programm realisieren,​ das zufällige Spezien eine Aufgabe bewältigen lässtNatürlich wird der Zufall wenig überzeugende Ergebnisse liefern, aber die Besten der Spezien bilden die Grundlage für ihre jeweilige neue TochtergenerationSehr oft durchgespielt sollen unsere Generationen immer bessser die Aufgabe bewältigen könnenDabei soll visualisiert werden, wie sie sich verändern.
  
-**04.01.2018 | Erweiterte Visualisierung:​**\\ {{https://​i.gyazo.com/​df4273612205a2263710f947a05681ac.gif}}+Im Bezug darauf haben wir eine Map kreiert, in der wir mehrere Spezien frei lassen - alle mit den unterschiedlichsten Eigenschaften,​ aber der gleichen Aufgabe ins Ziel zu kommen. 
 +Ein Wettrennen um Leben und Tod!
  
-**04.01.2018 | Die Kreatur bewegte ​sich verdammt gut!:**\\ {{https://​i.gyazo.com/​1c1043083e13cb824b3042ac4900793f.png?​320}} {{https://​i.gyazo.com/​009eb9d26f6da4731123dfd0bf0b9872.png?​320}}+**Seht selbst, welche Spezie ​sich durchsetzen wird!;-)** 
  
-**02.02.2018 | Ein Mutterweg zeigt Einfluss auf Kreaturen!:​**\\ {{https://​i.gyazo.com/​8cc1e2439c661b94b17306f73a6b4ef0.png}}\\ **Notiz:** Es sind drei unterschiedlich generierte Kreaturen der selben Spezies mit dem Mutterweg als Input!+[[Projektplanung]] ​
  
-**06.03.2018 | Weitere Spezien funktionieren:​**\\ {{https://​i.gyazo.com/​5de34850d7ccfc9a723c393cf2c710ed.png?​320}} {{https://​gyazo.com/​a5d045c822ad8cd027ba4a7313f85245.png?​320}}+[[Protokolle der Projektarbeit]]
  
-**07.03.2018 | Verspätete Bilder unserer Pygame-Visualisierung:​**\\ {{https://​gyazo.com/​10f8bee8e9765c39b1d67dcafd602c33.gif}}+[[Strukturierte Dokumentation]]
ws1718/evolutionssimulator.1521553154.txt.gz · Zuletzt geändert: 2018/03/20 14:39 von lenarost