Deinbac

Ein Simulationsframework, das aktuell zwei Typen von Simulationen unterstützt:

Deinbac – eine Evolutions-Simulation

Die Idee dazu habe ich aus einem Artikel in der Zeitschrift Spektrum der Wissenschaft. In den 1980ern hatten sie eine regelmäßige Rubrik für Programmier-Fingerübungen, und dies ist die Implementierung und Ausgestaltung einer dieser Übungen. Damals war die Umsetzung auf dem Atari ST in Pascal, die spätere Portierung nach Java war da nicht weiter schwierig.

Mein Freund und ich lieferten sich damals einen Wettstreit über die effizientere Implementierung. Sein Programm nannte er »Meinbac«, dann ist klar, wie mein Programm zu seinem Namen kam.
Fun fact: In den 80ern gab es ein Deo, dessen Werbespruch war: Mein bac, Dein bac - bac ist für alle da. Das hat unsere Namenswahl natürlich auch beeinflusst.

Conways Spiel des Lebens – ein zellulärer Automat
Auch diese Idee habe ich aus der gleichen Rubrik in der Zeitschrift Spektrum der Wissenschaft. Die Erstimplementierung war auf dem  8-bit Atari, aber das ist mit den Möglichkeiten eines heutigen Rechners natürlich nicht vergleichbar.

Wie starte ich das Programm?

  1. Installieren Sie ein Java Runtime Environment auf Ihrem Rechner. Am einfachsten bekommen Sie das von www.java.com. Dort können Sie auch prüfen, ob Sie es vielleicht schon haben.
  2. Laden Sie das Programm Deinbac herunter.
  3. Starten Sie es dann mit einem Doppelklick auf die heruntergeladene Datei.

Ein Wort an Programmierer

Wenn Sie wollen, können Sie das Projekt mit Quellcode herunterladen.

Sie dürfen die Dateien jederzeit in eigenen Projekten mitbenutzen, solange ich und alle, die bisher zum von mir übernommenen Code beigetragen haben, im Produkt genannt werden. (Ich denke, das ist ein Gebot der Höflichkeit.)
Falls Sie Änderungen an den Quelldateien vornehmen, informieren Sie mich bitte, vielleicht sind Ihre Verbesserungen ja von allgemeinem Interesse.


Und hier die Anleitung:

Deinbac

Ein Simulationsframework.

Inhalt

Einleitung

Dieses Programm kann verschiedene Simulationen - solange sie auf diskreten Zeitschritten aufbauen. Aktuell sind zwei Simulationstypen verfügbar.

Deinbac - eine Evolutions-Simulation

Es geht um die Prinzipien der Evolution. In dieser Welt leben Bakterien, die sich von Mana ernähren. Das Mana wächst in immer gleicher Menge. Die Bakterien sind blind, aber auch ein blindes Bakterium findet mal ein Mana und bekommt so Energie. Ein Bakterium, das lange nichts gefressen hat, verhungert.

Jedes Bakterium trägt Gene, die steuern, wie zappelig sich das Bakterium durch die Welt bewegt. Ein Bakterium, das alt genug ist und genug Energie hat, kann sich teilen. Bei der Teilung kann sich ein Gen des Kindes ändern – eine Mutation.

Wenn sich zwei Bakterien begegnen, die alt genug sind und genug Energie haben, so können sie Sex miteinander haben. (Unsere Bakterien sind Zwitter – es gibt keine Männchen oder Weibchen, jeder kann sich mit jedem paaren.) Das Kind bekommt dabei je die Hälfte der Gene von beiden Eltern.

Durch das Wechselspiel von Vermehrung, Mutation und Selektion (durch Verhungern) entwickeln sich so Bakterien, die gut an ihre Umgebung angepasst sind.

Zum Spielfeld: Mana ist grau. Neu geborene Bakterien, frisch geteilte Bakterien oder frische Eltern sind gelb. Alle anderen sind magentafarben, wobei helle Bakterien mehr Energie haben.

Conways Spiel des Lebens - ein zellulärer Automat

Ein zellulärer Automat nach den Regeln von John Horton Conway.

Die Welt besteht aus Zellen (Feldern) in einem quadratischen Gitter, die entweder lebend oder tot sein können. Nach einfachen Regeln wird der zukünftige Inhalt jeder Zelle aus dem jetzigen Inhalt der Zelle und seiner 8 Nachbarn berechnet. Selbst in einer so einfachen Welt lassen sich erstaunlich komplexe Phänomene beobachten.

Das Menü

Spiel

Aktionen, die eine ganze Simulation oder das Programm betreffen.

  Neu...

Beendet die laufende Simulation und startet eine neue.

  Sprachen

Stellt die Sprache für dieses Programm ein.

  Deutsch (Deutschland)

  English (United States)

  Beenden

Beendet das Programm.

Lauf

  Pause

Hält die Simulation an.

  Einzelschritt

Führt einen einzelnen Simulationsschritt durch.

  langsam

Stellt die Simulationsgeschwindigkeit auf langsam.

  mittel

Stellt die Simulationsgeschwindigkeit auf mittel.

  schnell

Stellt die Simulationsgeschwindigkeit auf schnell.

Welt anzeigen

Schaltet die Anzeige der Welt ein oder aus. Auf sehr langsamen Rechnern läuft die Simulation schneller, wenn der Rechner die Welt nicht anzeigt.

  Lupe

Vergrößert oder verkleinert die Anzeige der Welt.

  Zoom level 1 (8x8, groß)

  Zoom level 2 (4x4, normal)

  Zoom level 3 (2x2, klein)

  Zoom level 4 (1x1, winzig)

  Entwicklungstrends anzeigen

Schaltet die Anzeige des Entwicklungstrends ein oder aus. Im Trend sieht man die Verläufe von Mana in der Welt (grau), Anzahl der Bakterien (magenta) und durchschnittliche Energie der Bakterien (gelb). (Nur in der Deinbac Simulation verfügbar.)

  Stammbaum anzeigen

Zeigt den aktuellen Stammbaum an. (Nur in der Deinbac Simulation verfügbar.)

?

Informationen und Hilfe über dieses Programm.

  Hilfe...

Zeigt die Hilfe für das Programm.

  Info zu DeinBac...

Zeigt Informationen über das Programm.

Eine neue Simulation starten

Wenn Du eine neue Simulation startest, kannst Du einige Parameter anpassen.

Art der Simulation

Welche Art von Simulation wollen Sie starten?

Deinbac - eine Evolutions-Simulation

Es geht um die Prinzipien der Evolution.

Conways Spiel des Lebens - ein zellulärer Automat

Ein zellulärer Automat nach den Regeln von John Horton Conway.

Deinbac - eine Evolutions-Simulation

Startparameter für die Evolutions-Simulation

Welt

Parameter zur Welt, in der die Bakterien leben

Breite der Welt

Die Größe der Welt hoizontal.

Höhe der Welt

Die Größe der Welt vertikal.

Welt mit Grenzen oder als Torus?

  Grenzen

Hat die Welt Grenzen, stoppen Bakterien dort, bis sie sich drehen.

  Torus

In einer Toruswelt kommen Bakterien links wieder herein, die rechts herausgehen, und unten wieder herein, die oben herausgehen, und umgekehrt.

Mana am Anfang (ppm)

Der Wert gibt die Anzahl auf 1 Million Felder an. Der Wert muss im Bereich von 0.0 bis 1000000.0 sein.

Neues Mana jede Runde (ppm)

Der Wert gibt die Anzahl auf 1 Million Felder an. Der Wert muss im Bereich von 0.0 bis 1000000.0 sein.

Neues Mana jede Runde im Schlaraffenland (ppm)

Schlaraffenland ist eine Region (1/64 der Welt), in der besonders viel Mana wächst. Das erzeugt zwei verschiedene Lebensumgebungen im selben Simulationslauf.

Der Wert, den Sie hier eingeben, ist zusätzliches Mana, das nur im Schlaraffenland wächst. Mit dem Wert 0 schalten Sie das Schlaraffenland aus.

Der Wert gibt die Anzahl auf 1 Million Felder an. Der Wert muss im Bereich von 0.0 bis 1000000.0 sein.

Anzahl der Bakterien am Anfang

Der Wert darf nicht negativ sein.

Bakterien

Parameter zu den Bakterien

Energie pro Mana

Wenn eine Bakterie 1 Mana isst, bekommt es Energie, um so viele Schritte zu überleben. Der Wert darf nicht negativ sein.

Maximalenergie einer Bakterie

Wenn eine Bakterie so viel Energie hat, wird es zwar weiter fressen, aber gewinnt daraus keine Energie mehr. Der Wert darf nicht negativ sein.

Energie der Bakterien am Anfang

Mit diesem Energievorrat starten alle Bakterien am Beginn der Simulation. Der Wert darf nicht negativ sein.

Minimale Energie zum Teilen

Der Wert darf nicht negativ sein.

Minimales Alter zum Teilen

Der Wert darf nicht negativ sein.

Minimale Energie zum Sex

Der Wert darf nicht negativ sein.

Minimales Alter zum Sex

Der Wert darf nicht negativ sein.

Statistik

Parameter zur Erhebung von Statistiken

Frequenz des Entwicklungstrends

Der Entwicklungstrend zeichnet Mana, Anzahl der Bakterien und ihre durchschnittliche Energie auf über die Zeit auf. Hier kann man die zeitliche Auflösung der Trendgrafik einstellen. Der Wert darf nicht negativ sein.

Conways Spiel des Lebens - ein zellulärer Automat

Startparameter für den zellulärer Automaten

Breite der Welt

Die Größe der Welt hoizontal.

Höhe der Welt

Die Größe der Welt vertikal.

Welt mit Grenzen oder als Torus?

  Grenzen

Hat die Welt Grenzen, sind alle Zellen außerhalb des Spielfelds leer.

  Torus

In einer Toruswelt sind Zellen vom linken und rechten Rand benachbart, und ebenso Zellen vom oberen und unteren Rand.

Anfangsfigur

Das Muster, mit dem die Simulation startet.

Glider

Ein kleines diagonales Raumschiff mit Periode 4.

r-Pentomino

Ein Methuselah - eine Struktur, die sich lange interessant entwickelt; startet dabei ein paar Glider.

Acorn

Ein Methuselah

b-Heptomino

Ein Methuselah

Loafer

Ein kleines vertikales Raumschiff.

Copperhead

Ein kleines horizontales Raumschiff.

Wing Spaceship

Ein großes diagonales Raumschiff mit Periode 4.

Gosper Glider Gun

Eine Struktur, die regelmäßig Glider verschießt.

Methuselah 8x32 001

Ein Methuselah

Methuselah 16x16 001

Ein Methuselah

Methuselah zz_Replicator stdin 001

Ein Methuselah

Vom Figurdefinitionstext

Liest das Muster aus dem Textfeld in diesem Dialog.

Figurdefinitionstext

'o'=leere Zelle, 'b'=lebende Zelle, '$'=Zeilenende, '!'=Zeilen- und Figurende
Eine (optionale) Zahl vor einem Zelle-Zeichen bedeutet n mal dieses Zelle-Zeichen.

Auf https://catagolue.hatsya.com gibt es viele Figuren zum Kopieren und Einfügen.

Während der Simulation

Folgende Eingabemöglichkeiten hast Du (neben dem Menü) während der Simulation.

Maus

Ein Linksklick mit der Maus hat folgenden Einfluss:

In der Deinbac Simulation
Informationen über die angeklickte Position – ob dort Mana ist, und Informationen über Bakterien an dieser Position.
In der Spiel des Lebens Simulation
Die Zelle an dieser Position wechselt von tot zu lebendig oder umgekehrt.

Stammbaum

Der Stammbaum zeigt alle Bakterien, die in diesem Simulationslauf jemals existiert haben, mit ihren Werten und Verwandtschaftsbeziehungen an. (Nur in der Deinbac Simulation verfügbar.)

ID

Die ID des Bakteriums. Je jünger das Bakterium ist, desto höher ist seine ID.

Position

Die Position auf der Welt.

Energie

Das aktuelle Energielevel der Bakterie. Mit der Zeit wird ihre Energie weniger, Mana essen bringt es nach oben. Wenn die Bakterie keine Energie mehr hat, stirbt sie.

Geboren

Die Zeitscheibe, als dieses Bakterium geboren wurde.

Letztes Ereignis

Die Zeitscheibe des letzten Ereignisses (Geburt, Teilung, Sex oder Tod) dieses Bakteriums.

Mutter

Die ID der Mutterbakterie, egal, ob dieses Bakterium durch Teilung oder Sex entstand.

Vater

Die ID der Vaterbakterie, wenn dieses Bakterium durch Sex entstand.

Gene

Die Gene steuern, wie zappelig sich das Bakterium durch die Welt bewegt. Sie bestehen aus sechs Ziffern für die sechs möglichen Richtungswechsel (sortiert im Uhrzeigersinn, also: vorwärts, leicht rechts, hart rechts, umdrehen, hart links, leicht links). Hohe Ziffernwerte bedeuten höhere Wahrscheinlichkeit für diesen Richtungswechsel.

Kinder

Wenn dieses Bakterium sich fortpflanzen konnte, egal ob durch Teilung oder Sex, werden hier die IDs aller direkten Kinder aufgelistet.