Wa-Tor Simulation

Die Anfänge

Wa-Tor ist eine von Alexander Keewatin Dewdney entwickelte Populationsdynamik-Simulation, die in der Dezember-Ausgabe 1984 von Scientific American in einem 5-seitigen Artikel mit dem Titel „Computer Recreations“ vorgestellt wurde: Haie und Fische führen auf dem Ringplaneten Wa-Tor“ den Kampf ums überleben.

Wa-Tor Simulation – by Jochen Müller (2018)

Schon während meines Studiums stöberte ich mit Begeisterung in den Artikelreihen im „Computer Kurzweil, Spektrum der Wissenschaft: Verständliche Forschung“[1] von 1988. Dort lass ich das erste Mal von „Wa-Tor“ und programmierte damals die Simulation in der Programmiersprache Turbo Pascal 5.

Heute nach vielen Jahren fasziniert mich die Simulation Wa-Tor noch immer. Grund genug diese in C# noch einmal zu programmieren.

Der Planet Wa-Tor

„The planet Wa-Tor … is shaped like a torus, or doughnut, and is entirely covered with water. The two dominant denizens of Wa-Tor are sharks and fish …“ heißt es im Original Artikel. Der Planet Wa-Tor …. ist wie ein Torus oder Donut geformt und vollständig mit Wasser bedeckt. Die beiden dominierenden Bewohner von Wa-Tor sind Haie und Fische….“

Wa-Tor ist in der Regel als zweidimensionales Gitter mit drei Farben ausgeführt, eine für Fische, eine für Haie und eine für leeres Wasser. Bewegt sich eine Kreatur am Rand des Gitters vorbei, erscheint sie wieder auf der gegenüberliegenden Seite. Die Haie sind räuberisch und fressen die Fische. Sowohl Haie als auch Fische leben, bewegen, vermehren und sterben in Wa-Tor nach definierten einfachen Regeln. Aus diesen einfachen Regeln ergibt sich ein komplexes emergentes Verhalten.

Aufgezeichneter Simulationsausschnitt.

Regeln

Die Zeit auf Wa-Tor vergeht in diskreten Sprüngen, die Chrononen genannt werden. Ein Fisch oder Hai kann sich während jeder Zeitspanne nach Norden, Osten, Süden oder Westen zu einem benachbarten Punkt bewegen, sofern dieser Punkt nicht bereits von einem Mitglied seiner eigenen Art besetzt ist. Ein Zufallszahlengenerator trifft die Wahl. Für einen Fisch ist die Wahl einfach: Wählen Sie einen unbesetzten Nachbarpunkt nach dem Zufallsprinzip und bewegen Sie sich dorthin. Wenn alle vier benachbarten Punkte besetzt sind, bewegt sich der Fisch nicht. Da die Jagd auf Fische Vorrang vor der bloßen Bewegung hat, sind die Regeln für einen Hai komplizierter: Von den benachbarten Punkten, die von Fischen besetzt sind, einen nach dem Zufallsprinzip auswählen, dorthin ziehen und den Fisch fressen. Wenn keine Fische in der Nähe sind, bewegt sich der Hai wie ein Fisch und vermeidet seine Mithaie.

Langfristig gibt es drei mögliche Szenarien in Wa-Tor:

  • Ein perfektes Gleichgewicht zwischen Fischen und Haien, die zunehmen und abnehmen, aber nie aussterben.
    (Diesen Fall hatte ich in meinen Simulationen noch nie. Einmal schaffte die Simulation über 80000 Chrononen, aber dann starben die Haie aus. Die Optimale Spielfeldgröße sowie die optimalen Parameter fand ich bisher noch nicht)
  • Verschwinden von Haien.
  • Aussterben beider Arten.

Regeln für die Fische

Bei jedem Takt (Chronon) bewegt sich ein Fisch zufällig auf eines der angrenzenden unbesetzten Felder. Wenn es keine freien Quadrate gibt, findet keine Bewegung statt.
Sobald ein Fisch eine bestimmte Anzahl von Chrononen überlebt hat, kann er sich vermehren. Dies geschieht auf dem Weg zu einem benachbarten Platz und hinterlässt einen neuen Fisch in seiner alten Position. Die Reproduktionszeit (Shark Breed Time“) wird ebenfalls auf Null zurückgesetzt.

Regeln für die Haie

Bei jedem Takt (Chronon) bewegt sich ein Hai zufällig auf ein angrenzendes Feld, das von einem Fisch besetzt ist und frisst diesen. Wenn es keine gibt, bewegt sich der Hai auf ein zufälliges, unbesetztes Feld. Wenn es keine freien Quadrate gibt, findet keine Bewegung statt.

Findet ein Hai für eine bestimmte Anzahl Zyklen, der „Shark Starve Time“, keinen Fisch, so stirbt der Hai. Die Haie pflanzen sich genau so fort wie Fische, d. h. nach der „Shark Breed Time“ wird ein neuer Hai auf einem Nachbarfeld geboren.

Abwandlungen

Jedem Hai wird bei jedem Takt eine Energieeinheit entzogen. Bei Erreichen der Null-Energie stirbt ein Hai. Bewegt sich ein Hai auf ein von einem Fisch besetztes Feld, frisst er den Fisch und verdient eine bestimmte Menge an Energie. Sobald ein Hai eine bestimmte Anzahl von Chrononen überlebt hat, kann er sich genauso vermehren wie die Fische.

8 Moves – Abwandlung

Fische und Haie können sich in 8 Richtungen bewegen. Also auch nach Süd-Osten, Süd-Westen, Nord-Westen und Nord-Osten. Diese Implementierung bevorzuge ich.

Die Simulationen und Ungereimtheiten

Es macht richtig Spaß die Paramater der Simulation zu ändern. Die Größe der Wa-Tor Welt  (Höhe und Breite), die Startmenge der Haie und Fische sowie die Shark Starve Time und die „Breed“ Zeiten minimal zu variieren, erzielt oft komplett andere Ergebnisse.

Während ich die Simulationen beobachtete konnte ich feststellen, dass irgendetwas nicht stimmte. Nach einer Zeit „n“ wanderten die Fische immer von rechts unten nach links oben, gefolgt von den Haien. Warum nur?

Nach der Beobachtung ich eine Vermutung. Der implementierte Algorithmus der Simulation verursachte diese Effekte. Die Fische und Haie hielt ich in einem 2-dimensionalem Array. Die Bewegungen der Fische und Haie wurden durch zwei For-Schleifen realisiert. Dies führte dazu, dass die Position rechts und unter dem Fisch nach etlichen meist besetzt war, der darüber oder links jedoch frei war. Somit bewegten sich die Fische und Haie von rechts unten nach links oben. Durch Änderung der For-Schleifen als Dekrement bewegten sich die Haie und Fische nach vielen Zyklen von links oben nach rechts unten. Bei Mischung in Inkrement (y) und Dekrement (x) wieder in einer andere Richtung. Die Ursache war somit gefunden.

Je nach For – Schleife entstehenden Muster

Jetzt wurde die Implementierung in C# so geändert, dass sie als zwei Varianten lauffähig ist. Erstens mit abwechselnden For-Schleifen (Dekrement und Inkrement). In der zweiten Variante werden die Fisch- und Haidaten in einer Liste gehalten, was aber zu einer Verlangsamung der Simulation führt, da die Überprüfung der Nachbarfelder aufwändiger ist.

Fazit

Auch heute noch fasziniert die Wa-Tor Welt. Welche Startparameter sind perfekt für eine stabile Welt? Mit den heutigen Rechenleistungen schafft die Simulation sehr viel mehr Zyklen pro Minute als noch 1993. Somit können die langfristigen Auswirkungen von Parametereinstellungen schneller erkannt und ausprobiert werden.

Ich kann jedem nur nahe legen sich die Simulation einmal anzuschauen. Sourcecode oder Software kann ich gerne bereitstellen.

Autor: Jochen Müller, Siedlerstraße 17, 72459 Lautlingen

[1] Computer-Kurzweil – Spektrum der Wissenschaft, Akademie Verlag, Heidelberg, 1988 ISBN: 3-922508-50-2

Schreibe einen Kommentar