Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss19:survival_of_the_fattest [2019/09/04 20:09] leanderh |
ss19:survival_of_the_fattest [2019/09/20 10:39] (aktuell) stefanborn |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | Salut, | ||
- | gleich vorweg, was ich gut finde: Die Dokumentation des Codes und | ||
- | die graphische Analyse der einzelnen Varianten. | ||
- | |||
- | Was zu den einzelnen Experimenten mit Polynomen / neuronalen Netzen | ||
- | passen würde, wäre ein kurzer Film, der das Verhalten | ||
- | zusammenfasst. Ist jetzt natürlich nachträglich ein bisschen viel | ||
- | Arbeit, aber nicht schwer (s.z. B. https://www.dreamincode.net/forums/topic/400620-video-sequences-from-your-pygame-display/). Alternativ wäre eine Beschreibung dessen, was man sieht (wie sich | ||
- | die Dinger anfangs und nach der Evolution bewegen...) gut. | ||
- | |||
- | Was aber noch fehlt ist eine systematische (also nicht direkt am Code orientierte | ||
- | Darstellung) eures Projekts. Wer etwa die Ergebnisse liest, versteht nicht unbedingt, | ||
- | was 'keine Verhaltensparameter.-- Polynome --- etc' heißen soll. | ||
- | |||
- | Es sollte also erklärt werden: | ||
- | Welche vererbbaren Eigenschaften haben die Dinger? | ||
- | Wie wird Verhalten beschrieben? | ||
- | |||
- | Die Aufteilung ist bisher nicht so geschickt. Die Struktur sollte so sein, | ||
- | dass jemand, der auf die Wurzelseite eures Projekt kommt, sozusagen an | ||
- | die Hand genommen wird. Nach Plan und Quellen käme etwa die systematische | ||
- | Darstellung, die dann auf den Code und auf die Ergebisanalyse verweisen könnte. | ||
- | |||
- | Wenn ihr noch Zeit findet, das zu verbessern, fände ich das gut. | ||
- | |||
- | Denkt daran: Es sollte jemand lesen können, der euer Projekt nicht schon | ||
- | kennt. | ||
- | |||
- | @ Verena: Der Teil über 'evolutionäre Algorithmen' gefällt mir gut. | ||
- | Es wäre allerdings schön, wenn es noch eine Unterseite gäbe, in der | ||
- | du deinen Analysecode erklärst. | ||
===== Survival of the fattest ===== | ===== Survival of the fattest ===== | ||
Zeile 41: | Zeile 10: | ||
\\ | \\ | ||
===Unser Projekt:=== | ===Unser Projekt:=== | ||
- | Ziel unseres Projektes war es, eine Evolution zu simulieren. Das heißt, wir wollten die Entwicklung einer Art von Kreaturen simulieren. \\ | + | Ziel unseres Projektes war es, eine Evolution zu simulieren. Das heißt, wir wollten die Entwicklung einer Art von Kreaturen simulieren. Unsere Quellen und Inspirationen zu diesem Thema findet ihr hier: [[Quellen und Inspirationen]]\\ |
- | Die Kreaturen sollten Eigenschaften haben. Zu diesen Eigenschaften zählen Geschwindigkeit, Größe, etc. der jeweiligen Kreatur. Eine Auflistung aller von uns eingefügten Eigenschaften findet man im [[Code]] in der Datei Player in der init-Funktion der Kreatur (Player ist bei uns ein anderes Wort für Kreatur). \\ | + | Jede lebende Kreatur führt jeden Zug einen Schritt durch. Ein Zug ist dabei im Grunde die kleinste Zeiteinheit der Simulation. Auf einen Zug folgt ein nächster, so lange bis alle Kreaturen Tot sind. Dann wird eine neue Generation Kreaturen erschaffen. Für die Kreaturen dieser Generation werden sich die Kreaturen der vorherigen Generation angesehen und nach bestimmten Regeln, welche im [[Code]] erläutert werden, werden einige davon eine ausgewählt, eine bestimmte Anzahl kopiert und die Eigenschaften sowie das Verhalten wird mutiert, also leicht verändert. \\ |
- | Darüber hinaus haben die Kreaturen noch ein Verhalten. Dieses bestimmt, wie sie auf den Input an Informationen reagieren. Dieser Input besteht aus der Abdeckung des Sichtfeldes sowie der Erinnerung der Kreatur. Die Abdeckung des Sichtfeldes beschreibt im Grunde, wie viel Nahrung die Kreatur sieht. Man stelle sich das Sichtfeld der Kreaturen als Linie vor, da die Kreaturen und ihre Umwelt ja zweidimensional sind. Der Wert von Abdeckung des Sichtfeldes entspricht dann dem Teil der Linie, in dem Futter innerhalb der Sichtweite der Kreaturen liegt. | + | Diese gerade genannten Eigenschaften können zum Beispiel Geschwindigkeit, Größe, etc. der jeweiligen Kreatur sein. Eine Auflistung aller von uns eingefügten Eigenschaften findet man im [[Code]] in der Datei Player in der init-Funktion der Kreatur (Player ist bei uns ein anderes Wort für Kreatur). \\ |
+ | Darüber hinaus haben die Kreaturen noch ein Verhalten. Dieses bestimmt, wie sie auf den Input an Informationen reagieren. Dieser Input besteht aus der Abdeckung des Sichtfeldes sowie der Erinnerung der Kreatur. Die Abdeckung des Sichtfeldes beschreibt im Grunde, wie viel Nahrung die Kreatur sieht. Man stelle sich das Sichtfeld der Kreaturen als Linie vor, da die Kreaturen und ihre Umwelt ja zweidimensional sind. Der Wert von Abdeckung des Sichtfeldes entspricht dann dem Teil der Linie, in dem Futter innerhalb der Sichtweite der Kreaturen liegt. Die Erinnerung der Kreatur besteht dann aus den Reaktionen und Sichtfeldern der vergangenen Schritte der Kreatur. \\ | ||
+ | {{ :ss19:sichtfeld.png?nolink&300 |}} | ||
+ | //Sichtfeld der Kreatur. Das rote ist Futter in Sichtweite der Kreatur. Anteil des Futters am Sichtfeld entspricht Abdeckung des Sichtfeldes. // \\ | ||
+ | Die Reaktion besteht dann aus einer Winkeländerung und einer Schrittweite, also der Entfernung, welche die Kreatur durch diesen Schritt zurücklegt. Diese Daten werden auch jeden Schritt zur Erinnerung hinzugefügt. \\ | ||
+ | Das Verhalten der Kreaturen kann entweder auf Basis von Polynomen oder auf Basis von Neuronalen Netzen geschehen. Auf Basis von Polynomen heißt, die Bestandteile des Inputs, welches ja alles Zahlen sind, werden durch ein Polynom zusammengerechnet. So ergeben sich dann die Ergebnisse für die Winkeländerung und die Schrittweite. Auf Basis von neuronalen Netzen heißt, die Daten werden in ein neuronales Netz eingegeben und dieses ergibt dann so die Ergebnisse für die Winkeländerung und die Schrittweite. | ||
+ | Am Ende eines Durchlaufs werden die Statistiken für die Veränderung der Werte einiger Eigenschaften angezeigt. \\ | ||
\\ | \\ | ||
- | [[Code]] | + | Der Verlauf unseres Projektes wird in [[Dokumentation]] umrissen.\\ |
\\ | \\ | ||
- | [[Dokumentation]] | + | Der dem Programm zugrundeliegende Code wird in [[Code]] erläutert.\\ |
\\ | \\ | ||
- | [[Exkurs Genetische Algorithmen]] | + | Einige Statistiken verschiedener Versionen des Codes findet man unter [[Ergebnisse]].\\ |
\\ | \\ | ||
+ | In dem durch Verena erstellten [[Exkurs Genetische Algorithmen]] wird noch tiefer in die Materie der auch diesem Projekt zugrundeliegenden genetischen Algorithmen eingegangen. | ||
+ | \\ | ||
+ | |||
+ | |||
[[Alte Startseite]] | [[Alte Startseite]] |