Home | Dokumentation | Anleitung | Galerie

Eprobots Anleitung

Durch den Button "Start/Stop" kann die Simulation gestartet und pausiert werden. Ist die Simulation gestoppt kann sie mit dem Button "Reset" zurückgesetzt werden. Nur wenn die Simulation pausiert ist, kann geladen oder gespeichert werden.

Export/Import-Datei

Über Export/Import-Dateien können alle Einstellungen und der aktuelle Simulationszustand gespeichert und geladen werden. Wird eine Exportdatei gespeichert, bevor die Simulation gestartet wurde, kann diese Datei als Basis für eigene Einstellungen verwendet werden.

Aufbau der Export/Import-Datei

In den Dateien werden zuerst die globalen Einstellungen gesichert. Darauf folgen die Hindernisobjekte (Objects), dann die Nahrungsobjekte (Energyobjects) und anschließend die eigentlichen Eprobots. Bei den Hindernisobjekten und Nahrungsobjekten werden nur die x- und y-Positionen gespeichert, bei den Eprobots kommen weitere Eigenschaften hinzu, zum Beispiel der Eprobot-Programmcode.
Setting_1
...
Setting_n

Objects

Object_1_xpos
Object_1_ypos

...

Object_n_xpos
Object_n_ypos

Energyobjects

Energyobject_1_xpos
Energyobject_1_ypos

...

Energyobject_n_xpos
Energyobject_n_ypos

Eprobots

Eprobot_1_xpos
Eprobot_1_ypos
Eprobot1_Setting_1
...
Eprobot1_Setting_n

...

Eprobot_n_xpos
Eprobot_n_ypos
Eprobotn_Setting_1
...
Eprobotn_Setting_n

Veränderung der Einstellungen über Export/Import-Datei

Möchte man die Einstellungen verändern geht man folgendermaßen vor. Nach dem Programmstart, bzw. bevor die Simulation gestartet wurde, sollte man den Button "Save" anklicken und den aktuellen Initialzustand in einer Datei speichern. Die Datei kann zum Beispiel "settings" genannt werden. In dieser Datei können dann leicht die globalen Simulationseinstellungen am Anfang der Datei angepasst werden (siehe Settings). Nach dem Speichern der Datei "settings" kann diese dann mit dem Button "Load" geladen werden. Dieses Vorgehen ermöglicht es auch gleichzeitig verschiedene Einstellungsdefinitionen in Dateien zu sichern.

Objects

Es können auch sogenannte "Objekte" angelegt werden, welche für die Eprobots ein unüberwindbares Hindernis darstellen. Dazu müssen dich entsprechenden x- und y-Positionen in der Sektion "Objects" angegeben werden. Beispiel:
Objects

x=38
y=179

x=39
y=180

Einstellungen

engine

Gibt an, wie die Eprobot-Programme zu interpretieren sind (Speicherlayout).

"0" bedeutet, dass die "alte" Engine verwendet wird. Sie hat Vorteile in der Performance, aber mit Größenänderungen des Speichers oder Änderungen der Sichtdistanz kommen Eprobots, welche mit dieser Engine betrieben werden weniger gut zurecht. Hierbei sollte die initiale Programgröße relativ hoch sein und programlengthmutationrate und sightmutationrate möglichst "0.0".

"1" bezeichnet die "neue" Engine, die durch Modulo-Operationen darauf ausgelegt ist, dass die Adressen auch bei Größenänderung einzelner Speicherbereiche (Programm/Daten und Sichtdistanz) konstant bleiben. So haben die Eprobots bessere Möglichkeiten in ihren Fähigkeiten dynamisch zu wachsen. Die Sichtdistanz kann am Anfang "0" (blind) sein und die Programmgröße kann relativ klein sein (Minimum "9") in der Hoffnung, dass sie dynamisch auf die optimalen Werte anwachsen.

number_of_xfields und number_of_yfields (Size)

Diese beiden Werte beschreiben die x- und y-Ausdehnung der simulierten Welt.

number_of_individuals (NOI)

Dieser Wert gibt an, wieviele (lebende) Individuen inklusive Nahrungsobjekten maximal in der simulierten Welt vorhanden sein sollen. Mit diesem Wert wird ermittelt, wieviele Nahrungsobjekte pro Simulationsschritt in die Welt neu eingefügt werden müssen.

Ist der Wert z.B. auf 2000 gesetzt und existieren 500 Nahrungsobjekte und 1000 (lebende) Eprobots, werden 500 neue Nahrungsobjekte "ausgesäht".

foodupdaterate (FoodUR)

Gibt an, wie oft die Nahrungsobjekte verteilt werden sollen. Dabei wird aber immer auch number_of_individuals beachtet.

"1" bedeutet, dass in jedem Simulationschritt neue Nahrungsobjekte verteilt werden sollen. "1000" bedeutet, dass neue Nahrung nur alle 1000 Simulationsschritte verteilt werden soll.

mutationrate (Mrate)

Wird ein neuer Eprobot erstellt, wird der Programmcode vom Vorgänger kopiert und mutiert. Der Algorithmus wandert beim Mutieren über jede einzelne Speicherzelle. Dieser Wert gibt die Wahrscheinlichkeit für diese Speicherzellen an, mit der sie tatsächlich mutiert werden. Der Wertebereich ist 0 bis 1.

Bei einer 1 wird jede Zelle mutiert, bei einer 0 keine Zelle.

mutationpower (Mpower)

Dieser Wert gibt die "Stärke" der Mutation wieder, wenn eine Programmzelle mutiert (siehe mutationrate).

Bei einem Wert von 400 wird der Wert eine Zelle im Bereich +-200 verändert.

alimentationmutationrate (AMrate)

Wird ein neuer Eprobot erstellt, gibt dieser Wert die Wahrscheinlichkeit von 0 bis 1 an, mit der er eine Nahrungsstufe höher klettert, also sich von Eprobots ernähren muss, die seiner Elterngeneration angehören.

finalalimentationlevel (FAlevel)

Die maximale Nahrungsstufe, die erreicht werden kann.

program_size (PSize)

Die Anzahl der Speicherzellen für das Eprobot-interne OISC-Programm.

final_program_size (FPSize)

Die maximale Anzahl der Speicherzellen für das Eprobot-interne OISC-Programm.

programlengthmutationrate (PLMrate)

Wird ein neuer Eprobot erstellt gibt dieser Wert die Wahrscheinlichkeit von 0 bis 1 an, mit der das Eprobot-Programm um eine Stelle verkleinert oder vergrößert wird.

commemoration_size (CSize)

Gibt die Größe in Speicherzellen des "Gedächtnis" der Eprobots an. Dies stellt einen Speicherbereich dar, der nicht zu jedem Simulationsschritt im Leben eines Eprobots zurückgesetzt wird.

exist_energy (ExistE)

Anzahl der Simulationsschritte, die ein Eprobot in der Welt existiert.

life_energy (LifeE)

Anzahl der Simulationsschritte, die ein Eprobot aktiv, bzw. lebend in der Welt existiert. Jenseits dieser Zeit kann durch eine größere Wahl von exits_energy der Eprobot weiterhin als statisches Objekt in der Welt existieren. Er kann dann nicht mehr selbst aktiv werden oder als Nahrung verwendet werden.

initsightlevel (InitSight)

Gibt die "Sichtdistanz" der Eprobots bei der Initialisierung an.

"0" bedeutet, dass die Eprobots blind sind. "1" bedeutet, dass sie theoretisch die Welt von einer Zelle um sie herum wahrnehmen können, "2" bedeutet, dass die nächsten zwei Zellen um sie herum wahrnehmen können usw.

finalsightlevel (FSlevel)

Gibt die maximale Sichtdistanz eines Eprobots an. Dieser Wert sollte allein aus Performancegründen nicht zu hoch sein, weil pro Sichtlevel immer mehr Speicherzellen um den Eprobot herum als Input in seinen Speicher eingeblendet werden müssen.

sightmutationrate (SMrate)

Wird ein neuer Eprobot erstellt, gibt dieser Wert die Wahrscheinlichkeit von 0 bis 1 an, mit der die Sichtdistanz des Eprobots größer oder kleiner wird.

probability_crossingover (PropCO)

Mit diesem Wert zwischen 0 und 1 wird angegeben, wie hoch die Wahrscheinlichkeit ist, dass sich ein Eprobot nicht durch Mutation, sondern durch Crossing Over mit einem anderen Eprobot vermehrt. Als Fortpflanzungspartner wird ein Eprobot global nach einer speziellen Fitness-Funktion ausgewählt. Das Crossing Over findet einmalig an einer zufällig ausgewählten Stelle statt.

Copyright Christian Wehr 2015 / www.thewehr.de