Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss19:dokumentation [2019/08/21 00:52] leanderh |
ss19:dokumentation [2019/09/06 00:26] (aktuell) leanderh |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | Tag_1 23.05.2019 | + | ====Dokumentation==== |
+ | ===Tag_1 23.05.2019=== | ||
Als ersten Anlauf diente uns das Projekt aus dem WS 17/18 und der YT-Channel „Primer“, der Evolution aus Programmier-Sicht betrachtet und diese schön visualisiert. Daraus entwickelten wir ein Konzept mit der Struktur: | Als ersten Anlauf diente uns das Projekt aus dem WS 17/18 und der YT-Channel „Primer“, der Evolution aus Programmier-Sicht betrachtet und diese schön visualisiert. Daraus entwickelten wir ein Konzept mit der Struktur: | ||
Zeile 5: | Zeile 6: | ||
2. Essen in der Umgebung platzieren, wer essen findet überlebt, wer nicht stirbt | 2. Essen in der Umgebung platzieren, wer essen findet überlebt, wer nicht stirbt | ||
3. Den Kreaturen die Möglichkeit geben, sich zu entwickeln (Evolution) | 3. Den Kreaturen die Möglichkeit geben, sich zu entwickeln (Evolution) | ||
+ | |||
+ | Mehr zu unseren Quellen und Inspirationen findet ihr unter [[Quellen und Inspirationen]]. | ||
Wir fingen an, ein erstes Programm in Turtle zu erstellen. Wobei sich eine Anzahl von Tieren von einem Startpunkt aus zufällig in alle Richtungen bewegen bis sie auf ein Futterstück treffen. Die dabei veränderbaren Größen sind die Spieleranzahl, Futteranzahl und Mapgröße. Dabei zeigten sich die ersten Probleme. Einerseits war die Visualisierung langsam durch Turtle und andererseits ging die Anzahl der Berechnungen der Hitbox in absurde Höhen bei hohen Spieler- und Futteranzahlen. | Wir fingen an, ein erstes Programm in Turtle zu erstellen. Wobei sich eine Anzahl von Tieren von einem Startpunkt aus zufällig in alle Richtungen bewegen bis sie auf ein Futterstück treffen. Die dabei veränderbaren Größen sind die Spieleranzahl, Futteranzahl und Mapgröße. Dabei zeigten sich die ersten Probleme. Einerseits war die Visualisierung langsam durch Turtle und andererseits ging die Anzahl der Berechnungen der Hitbox in absurde Höhen bei hohen Spieler- und Futteranzahlen. | ||
Zeile 11: | Zeile 14: | ||
Code: (mutationen_kreaturen_begrenzteschritte_leander) | Code: (mutationen_kreaturen_begrenzteschritte_leander) | ||
- | Tag_2 28.05.2019 | + | ===Tag_2 28.05.2019 === |
Der Mutationscode wird um eine Eltern-Funktion erweitert, bei der die Nachkommen sich aus den Eigenschaften der beiden Vorgänger zusammensetzten. Zu einer Rate von 10% kommen Mutationen vor. Dieses Programm war auf die Maximierung eines Wertes ausgelegt und eher theoretisch. Es gab keine Visuelle Darstellung abgesehen von einigen Statistiken. | Der Mutationscode wird um eine Eltern-Funktion erweitert, bei der die Nachkommen sich aus den Eigenschaften der beiden Vorgänger zusammensetzten. Zu einer Rate von 10% kommen Mutationen vor. Dieses Programm war auf die Maximierung eines Wertes ausgelegt und eher theoretisch. Es gab keine Visuelle Darstellung abgesehen von einigen Statistiken. | ||
Zeile 23: | Zeile 26: | ||
Die Besprechung der weiteren Vorgehensweise und Aufgabenverteilung gestaltet sich schwierig. Ausgangspunkt ist die Beschäftigung in kleineren Gruppen mit verschiedenen Themen (Mutation, Darstellung, neuronale Netzwerke) | Die Besprechung der weiteren Vorgehensweise und Aufgabenverteilung gestaltet sich schwierig. Ausgangspunkt ist die Beschäftigung in kleineren Gruppen mit verschiedenen Themen (Mutation, Darstellung, neuronale Netzwerke) | ||
- | Tag_3 06.06.2019 | + | ===Tag_3 06.06.2019=== |
An Tag drei arbeiteten wir hauptsächlich an den bereits vorhandenen Codes weiter. In unser Programm zur Bewegung der Kreaturen implementierten wir nun, dass die Kreaturen einen Ausdauer-Wert hatten. Dieser fiel konstant mit jedem Schritt, den die Kreatur machte und stieg immer dann, wenn sie ein über ein Futterstück lief und es so einsammelte. Zudem implementierten wir, dass sich die Karte erweiterte, sobald die Kreaturen über ihren Rand liefen. Dies haben wir aber später wieder aus dem Code gelöscht, da wir es nicht hinbekamen diese Kartenerweiterung auch bildlich darstellbar zu machen. | An Tag drei arbeiteten wir hauptsächlich an den bereits vorhandenen Codes weiter. In unser Programm zur Bewegung der Kreaturen implementierten wir nun, dass die Kreaturen einen Ausdauer-Wert hatten. Dieser fiel konstant mit jedem Schritt, den die Kreatur machte und stieg immer dann, wenn sie ein über ein Futterstück lief und es so einsammelte. Zudem implementierten wir, dass sich die Karte erweiterte, sobald die Kreaturen über ihren Rand liefen. Dies haben wir aber später wieder aus dem Code gelöscht, da wir es nicht hinbekamen diese Kartenerweiterung auch bildlich darstellbar zu machen. | ||
Zeile 31: | Zeile 34: | ||
Zu guter Letzt recherchierten wir noch über neuronale Netze und überlegten, ob wir diese Sinnvoll in unser Projekt eingliedern könnten. | Zu guter Letzt recherchierten wir noch über neuronale Netze und überlegten, ob wir diese Sinnvoll in unser Projekt eingliedern könnten. | ||
- | Tag_4 13.06.2019 | + | ===Tag_4 13.06.2019=== |
Einfügen einer ersten Umgebungswahrnehmung in unser Programm zur Bewegung von Kreaturen. Diese funktionierte noch nicht wirklich. Zudem haben wir einige Detailsachen verbessert, wie die Bewegung der Kreaturen. | Einfügen einer ersten Umgebungswahrnehmung in unser Programm zur Bewegung von Kreaturen. Diese funktionierte noch nicht wirklich. Zudem haben wir einige Detailsachen verbessert, wie die Bewegung der Kreaturen. | ||
Zeile 37: | Zeile 40: | ||
Zu guter Letzt implementierten wir noch Statistiken in den Mutationscode, welche später Verwendung in unserem Hauptcode fanden. | Zu guter Letzt implementierten wir noch Statistiken in den Mutationscode, welche später Verwendung in unserem Hauptcode fanden. | ||
- | Tag_5 20.06.2019 | + | ===Tag_5 20.06.2019=== |
Stefan hat unser Programm umgestaltet. Es besteht nun aus drei seperaten Code-Teilen. Erstens die Map, welche das Futter für die Kreaturen generiert, Informationen an die Kreaturen übermittelt und diese zeichnet. Zweitens die Kreaturen, auch Player, welche auf die Informationen der Map reagieren und ihrerseits ihre Informationen an die Map übermitteln. Und drittens die Konstanten, ein Programmteil, in der die für die Kreaturen und Map wichtigen Informationen gespeichert werden. | Stefan hat unser Programm umgestaltet. Es besteht nun aus drei seperaten Code-Teilen. Erstens die Map, welche das Futter für die Kreaturen generiert, Informationen an die Kreaturen übermittelt und diese zeichnet. Zweitens die Kreaturen, auch Player, welche auf die Informationen der Map reagieren und ihrerseits ihre Informationen an die Map übermitteln. Und drittens die Konstanten, ein Programmteil, in der die für die Kreaturen und Map wichtigen Informationen gespeichert werden. | ||
Zeile 43: | Zeile 46: | ||
Wir fangen mit dem erstellen von Reaktionsprogrammen für die Kreaturen an. Dabei planen wir, eines auf Basis Neuronaler Netze und eines auf Basis von Polynomen zu erstellen. Einen anfänglichen Plan, den Kreaturen Teile der Bewegungsabläufe ihrer Eltern zu geben verwerfen wir wieder. | Wir fangen mit dem erstellen von Reaktionsprogrammen für die Kreaturen an. Dabei planen wir, eines auf Basis Neuronaler Netze und eines auf Basis von Polynomen zu erstellen. Einen anfänglichen Plan, den Kreaturen Teile der Bewegungsabläufe ihrer Eltern zu geben verwerfen wir wieder. | ||
- | Tag_6 27.06.2019 | + | ===Tag_6 27.06.2019=== |
Wir versuchten, eine Sichtfeldfunktion zu entwickeln, welche die Abdeckung des Sichtfeldes der Kreatur mit Futter misst und an die Kreatur gibt. | Wir versuchten, eine Sichtfeldfunktion zu entwickeln, welche die Abdeckung des Sichtfeldes der Kreatur mit Futter misst und an die Kreatur gibt. | ||
- | Zudem bauten wir Statistiken in unser Programm ein. Hierfür wurde als Vorbild die Statistiken aus den Versuchen mit den Mutationen verwendet, allerdings wurden diese an den Code angepasst. Die ersten Statistiken zeigten noch relativ gestreute Ergebnisse, in der Tendenz gingen allerdings hier schon häufiger Geschwindigkeit, Größe und Sichtweite runter. Dies lag an der unpassenden Energieverbrauchsfunktion. (Siehe ausgewählte Statistiken Abbildung 1 und 2) | + | Zudem bauten wir Statistiken in unser Programm ein. Hierfür wurde als Vorbild die Statistiken aus den Versuchen mit den Mutationen verwendet, allerdings wurden diese an den Code angepasst. Die ersten Statistiken zeigten noch relativ gestreute Ergebnisse, in der Tendenz gingen allerdings hier schon häufiger Geschwindigkeit, Größe und Sichtweite runter. Dies lag an der unpassenden Energieverbrauchsfunktion. (Siehe ausgewählte Statistiken Abbildung 1 und 2)\\ |
- | Tag_7 11.07.2019 | + | ===Tag_7 11.07.2019=== |
Das Programm zur Futterabdeckung wurde nun in unseren Hauptcode implementiert. Leider scheinen die Kreaturen bis in die Endversion hinein quasi nicht darauf zurückzugreifen, zumindest konnten wir keine Sichtbare Veränderung der Bewegung der Kreaturen durch Futter im Sichtfeld feststellen. | Das Programm zur Futterabdeckung wurde nun in unseren Hauptcode implementiert. Leider scheinen die Kreaturen bis in die Endversion hinein quasi nicht darauf zurückzugreifen, zumindest konnten wir keine Sichtbare Veränderung der Bewegung der Kreaturen durch Futter im Sichtfeld feststellen. | ||
Zeile 53: | Zeile 56: | ||
Unser Neuronales Netz machte darüber hinaus noch Probleme aufgrund verschiedener kleinerer Fehler, die Stefan schlussendlich für uns fand. Wir programmierten für dieses eine Testumgebung, in der es nur ein Futterstück mit über alle Generationen feste Koordinaten gab und die Kreaturen belohnt wurden, je näher sie diesem kamen. Die Kreaturen schafften es aber nicht, dem Futterstück in irgendeiner Weise näher zu kommen. | Unser Neuronales Netz machte darüber hinaus noch Probleme aufgrund verschiedener kleinerer Fehler, die Stefan schlussendlich für uns fand. Wir programmierten für dieses eine Testumgebung, in der es nur ein Futterstück mit über alle Generationen feste Koordinaten gab und die Kreaturen belohnt wurden, je näher sie diesem kamen. Die Kreaturen schafften es aber nicht, dem Futterstück in irgendeiner Weise näher zu kommen. | ||
- | Blocktermin 29.07. - 31.07.2019 | + | ===Blocktermin 29.07. - 31.07.2019=== |
Dank Stefan funktionierte unser neuronales Netz nun, und wir konnten es in unser Programm einbauen. | Dank Stefan funktionierte unser neuronales Netz nun, und wir konnten es in unser Programm einbauen. | ||
Zeile 60: | Zeile 63: | ||
Zu guter Letzt formten wir noch die Statistiken in eine Klasse um, wodurch es einfacher wurde, neue Statistiken einzubauen. | Zu guter Letzt formten wir noch die Statistiken in eine Klasse um, wodurch es einfacher wurde, neue Statistiken einzubauen. | ||
- | (vorläufig) Finale Version | + | ===(vorläufig) Finale Version=== |
Wir haben nun vier verschiedene Versionen des Codes, je zwei mit unbegrenzter Map, bei welcher Kreaturen, die die Mapgrenzen überqueren, auf der anderen Seite der Map auftauchen, zwei mit limitierter Map, bei welcher die Kreaturen sterben, wenn sie die Mapgrenzen überqueren sowie zwei mit Neuronalem Netz und zwei mit Polynomen. Außerdem noch einbau einiger kleinerer Sachen. So sterben die Kreaturen nun nach spätestens 5000 Schritten automatisch. Zudem sollte die Temperatur nun funktionieren. Die Statistiken umfassen nun Geschwindigkeit, Größe, Sichtweite, Fettanteil, Überlebte Schritte, Kreaturen Anzahl, Futteranzahl, sowie bei den Polynomen die Länge der Polynome. Alle einstellbaren Konstanten für die Map sollten unter constants zu finden sein. | Wir haben nun vier verschiedene Versionen des Codes, je zwei mit unbegrenzter Map, bei welcher Kreaturen, die die Mapgrenzen überqueren, auf der anderen Seite der Map auftauchen, zwei mit limitierter Map, bei welcher die Kreaturen sterben, wenn sie die Mapgrenzen überqueren sowie zwei mit Neuronalem Netz und zwei mit Polynomen. Außerdem noch einbau einiger kleinerer Sachen. So sterben die Kreaturen nun nach spätestens 5000 Schritten automatisch. Zudem sollte die Temperatur nun funktionieren. Die Statistiken umfassen nun Geschwindigkeit, Größe, Sichtweite, Fettanteil, Überlebte Schritte, Kreaturen Anzahl, Futteranzahl, sowie bei den Polynomen die Länge der Polynome. Alle einstellbaren Konstanten für die Map sollten unter constants zu finden sein. |