Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1718:protokolle_der_projektarbeit

Protokolle

30.11.2017

Es wurde umgehend mit der Erarbeitung eines 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-Visualisierung1) 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 milkyway2) 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: 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.

07.03.2018

Tag 2 Blockseminar: Am heutigen Tag haben wir zwei wichtige Punkte unserer to-do-list abgearbeitet. Zum einen haben wir es geschafft mehrere Spezien zu visualisieren. Dabei tauschten ein paar erhebliche bugs auf, wie eine falsche Zuordnung von Bildern zu der jeweiligen Spezie. Diese wurden jedoch umgehend behoben. Des Weiteren schafften wir eine Skala ein zufügen. Diese erscheint nun am rechten Bildrand. Farblich hebt sich diese mit einem rosé-farbenden Kasten von der Map ab. Zusätzlich wurden ein schwarze Randlinien zur Abgrenzung zugefügt. Die Skala beinhaltet einen Generationscounter, das Rating der vorhergehenden Generation und ein Balkendiagramm. Am Balkendiagramm lässt sich gut erkennen, welche Spezie überwiegt und sich durchsetzt.

08.03.2018

Tag 3 Blockseminar: Am heutigen Morgen behoben wir noch einzelne Bugs. Mehr kümmerten wir uns um unsere Präsentation. Gegen Mittag starteten wir im Projekt unsere Präsentationsrunde aller Projekte. Es war interessant zu sehen, wie andere Gruppen ihre Projekte umsetzten.


Zwischenanschauungen

Eine Sammlung aus Zwischenständen, für das Veranschaulichen des Projektprozesses.

17.12.2017 | Visualisierung mit Turtle:

04.01.2018 | Erweiterte Visualisierung:

04.01.2018 | Die Kreatur bewegte sich verdammt gut!:

02.02.2018 | Ein Mutterweg zeigt Einfluss auf Kreaturen!:

Notiz: Es sind drei unterschiedlich generierte Kreaturen der selben Spezies mit dem Mutterweg als Input!

15.02.2018 | Erste Bilder unserer Pygame-Visualisierung:

06.03.2018 | Weitere Spezien funktionieren:

1) Turtle-Visualisierung:
2) Bewegungsblock der Kreatur
ws1718/protokolle_der_projektarbeit.txt · Zuletzt geändert: 2018/03/27 21:21 von lenarost