Advertisement

Simulierte Evolution

Simulieren von Evolutionsprinzipien mit Javascript im Webbrowser

Eine einfache Evolutionssimulation

Evolution ist die Veränderung erblicher Phänotypeneigenschaften von biologischen Populationen in aufeinanderfolgenden Generationen. Evolutionäre Prozesse führen zu einer Vielfalt auf allen Ebenen der biologischen Organisation, einschließlich der Arten, einzelner Organismen sowie auf Molekularebene.

Dieser Artikel beschäftigt sich mit der Simulation von künstlichem Leben durch Anwendung von Grundprinzipien der Evolution. Die hier präsentierte Simulation ist die modifizierte Versionen eines Programms, das ursprünglich Michael Palmiter, Ph.D. beschrieben wurde [1] und später durch eine Artikelserie von A. K. Dewdney, Ph.D. in der Zeitschrift Scientific American bekannt gemacht wurde [2]. Die Simulation zeigt die Entwicklung im Jagdverhalten in einer Räuber / Beute Situation. Gedanklich kann man es sich so vorstellen, das ein kleiner Bereich des Meeresbodens simuliert wird. Mikroorganismen bewegen sich über das Simulationsgebiet und ernähren sich dabei von Bakterien. Die Bakterien sind ihre einzige Energiequelle. Die Bewegung jeder einzelnen Mikrobe wird durch einen Satz von Genen bestimmt. Diese Gene steuern die Wahrscheinlichkeit mit der eine Mikrobe ihre Bewegungsrichtung in einem Zeitschritt ändern wird.

Simulationsregeln

Um Evolution zu simulieren benötigen wir eine Spezies mit leicht zu beobachtendem Verhaltensmuster, das idealerweise nur von einer kleinen Gruppe an Genen bestimmt wird. Die in dieser Simulation verwendeten Gene bestimmen die bevorzugte Bewegung einer Mikrobe. Die Individuen konkurrieren mit anderen Mitgliedern der Art um die Nahrungsmittelversorgung. Wenn ein Individuum genügend Nahrung aufgenommen hat, kann es nach gewisser Zeit Nachkommen in einer Nachbarzelle erzeugen. Jeder der Nachkommen wird mit einem leicht modifiziertem Satz an Genen ausgestattet, der auf den Genen des Vorfahren basiert. Das bedeutet, dass Organismen, die bei der Nahrungssuche erfolgreich sind eine höhere Chance auf Nachkommenschaft haben und somit ihre Gene erfolgreicher weitergeben können.

Gitter und Simulationszeit

Die Simulation befasst sich mit Mikroben, die von unbegrenzt verfügbaren aber zufällig verteilten Nahrungsresourcen leben. Ihr Lebensraum in der Simulation ist ein zweidimensionales Gitter. Sie können sich frei in jede der acht benachbarten Zellen bewegen. Die Ränder des Simulationsgebietes sind miteinander verbunden. Wenn sich eine Mikrobe über den Rand des Gitters bewegt, tritt sie sofort auf der gegenüberliegenden Seite wieder in das Simulationsgebiet ein.

In dieser Simulation werden Mikroben blau dargestellt, während die Nahrung grün gefärbt ist. Aus Gründen der Klarheit werden sie ein wenig größer gezeichnet. Die Anzahl der Mikroben, die sich in einer Gitterzelle befinden ist nicht begrenzt. Befinden sich mehrere Mikroben in einer Zellen, wird nur eine gezeichnet.

Bild 1: Mikroben "leben" auf einem Gitter mit zufällig verteilten Nahrungsresourcen.

Die Simulation erfolgt in diskreten Zeitschritten. Die Mikroben bewegen sich in einer geraden Linie ihrer aktuellen Bewegungsrichtung folgend. Trifft eine Mikrobe auf eine Gitterzelle, in der sich Nahrung befindet, so wird diese konsumiert und die Mikrobe erhält einen Energiebonus. Wenn im gleichen Zeitschritt mehrere Mikroben in eine mit Nahrung belegte Zelle eintreten, so erhält nur die zuerst eingetretenen den Energiebonus.

Mikroben

Mikroben stellen den aktiven Teil der Simulation dar. Sie bewegen sich über das Gitter und sind den Regeln der Evolution unterworfen.

Die Bewegung

Mikroben können sich frei in ihre Nachbarzellen bewegen. Sie folgen dabei einer von acht möglichen Raumrichtungen. Ihre Bewegungsrichtung wird als Integerwert gespeichert. Dieser Wert dient als Index, um in einer vorgefertigten statischen Tabelle die spezifischen ΔX und ΔY Schrittweiten für jede der acht Raumrichtungen nachzuschlagen. Die Bewegung erfolgt durch aufaddieren der Delta-Werte zur aktuellen Gitterposition der Mikrobe. Die Bewegungstabelle ist so definiert das nur Bewegungen auf Nachbarzellen möglich sind.

Cost of change in direction.
Richtungsindex Gitterschritte
Δx Δy
0 -1 1
1 0 1
2 1 1
3 -1 0
4 1 0
5 -1 -1
6 0 -1
7 1 -1
Bild 2 Links: Die acht möglichen Bewegungsrichtungen der Mikroben
Tabelle 1 Rechts: Bewegungstabelle mit den möglichen Bewegungsrichtungen der Mikrobe und den dazugehörigen Gitterschrittweiten.

Das Genom

In jedem Zeitschritt ändert die Mikrobe ihre Bewegungsrichtung mit einer bestimmten Wahrscheinlichkeit p in eine der 7 anderen möglichen Richtungen. Die acht Wahrscheinlichkeiten für die möglichen Richtungswechsel bilden das Genom der Mikrobe. Die Gene werden hier mit dem Buchstaben p und einem Index gekennzeichnet. Die Summe aller Wahrscheinlichkeiten ist eins: \[\sum_{n=0}^7 p_n = 1\]

Jedes der Gene steht für ein Segment im Intervall [0,1], dessen Länge proportional zum Wert des Gens ist. Folgende Grafik zeigt ein zufällig ausgewähltes Genom. Jedes Gen repräsentiert die Wahrscheinlichkeit für einen bestimmten Richtungswechsel:

Cost of change in direction.
Um nun die neue Richtung der Mikrobe unter Bereücksichtigung der im Genom festgelegten Wahrscheinlichkeiten zu berechnen, muss man lediglich eine Zufallszahl \(r\) zwischen 0 und 1 berechnen: \[r = rnd(1)\] Danach ermittelt man den Index \(i\) des Genes, in dessen Bereich die Zufallszahl fällt. Dieser Index ist die kleinstmögliche Zahl, für welche folgende Ungleichung erfüllt ist: \[r \lt \sum_{n=0}^i p_{n}\] In obigem Beispiel ist i=3. Dies ist der Index des Genes, das den Richtungswechsel bestimmen wird. Die Richtung \(d\) der Mikrobe ist ein Zahlenwert zwischen 0 und 7 der gemäß Tabelle 1 interpretiert wird. Die Richtung im nächsten Zeitschritt \(d_{t+1}\) ergibt sich durch Addition von i zur aktuellen Richtung \(d_t\) und anschliessender Bildung des Divisionsrests bei Division mit 8 (der Gesamtzahl der möglichen Richtungen): \[d_{t+1} = (d_{t} + i)\mod 8\] Mit dieser Gleichung können wir nun auch die Bedeutung der Gene interpretieren:
Gen Bedeutung
Index i Genbezeichner
0 p0 Keine Änderung
1 p1 Leicht Rechts drehen
2 p2 Rechts drehen
3 p3 Scharf Rechts drehen
4 p4 Richtung umkehren
5 p5 Hart Links drehen
6 p6 Nach Links drehen
7 p7 Leicht Links drehen
Tabelle 2: Liste aller Gene einer Mikrobe und ihr Einfluss auf die Bewegungsänderung.

Energiemanagement und Lebenszyklus der Mikroben

Jede Mikrobe verfügt über einen begrenzten Energievorrat, den sie nur durch Nahrungsaufnahme erhöhen kann. In Jedem Zeitschritt wird ein kleiner Teil davon abgezogen. Dies sind die "Grundgebühren" für Überleben und Bewegung. Zusätzlich dazu kostet auch eine Bewegungsänderung Energie. Je stärker die Bewegungsänderung, umso mehr Energie muss dafür aufgebracht werden. Nur eine kontinuierliche Nahrungsaufnahme gewährleistet ihr Überleben, denn die Mikrobe stirbt, wenn ihre Energie auf 0 fällt. Hat die Mikrobe genügend Energie aufgenommen, so stellt sie die weitere Nahrungsaufnahme ein.

Bild 3: Kosten für Richtungswechsel von Mikroben, die sich in verschiedenen Richtungen fortbewegen. Die benötigte Energie hängt vom Ausmaß der Richtungsänderung ab. Findet keine Richtungsänderung statt, so wird keine Energie abgezogen. Eine komplette Richtungsumkehr ist am Energieintensivsten (-8 Energiepunkte).

Sobald eine Mikrobe ein bestimmtes Alter erreicht hat kann sie, genügend Energie vorrausgesetzt Nachkommen erzeugen. Ihre Energie wird dann gleichmäßig zwichen ihr und ihrer Nachkommenschaft geteilt. Das Genom der Nachkommenschaft basiert auf dem Genom der Elterngeneration, enthält aber kleine zufällige Genvariationen.

Folgende Tabelle gibt einen Überblick über die Parameter des Energiemanagements einer Mikrobe in der Simulation:

Parameter Wert
Energiegewinn pro Nahrungsaufnehme 40
Maximalenergie 1500
Reproduktionsenergie 1000
Energieverlust pro Zeitschritt 1
Energieverlust für Richtungswechsel siehe Bild 3
Tabelle 3: Parameter des Mikrobenenergiemanagements.

Nahrungsvorkommen

Die Menge der in der Simulation entstehenden Nahrung ist nicht beschränkt. Jede Gitterzelle kann entweder leer sein, oder Nahrung enthalten. Es gibt keinen Lebenszyklus für die Nahrung, sie ist entweder da oder nicht. Wenn in einer Zelle Nahrung enthalten ist, so verbleibt diese dort bis eine Mikrobe sie aufnimmt. Verschiedene Nahrungsregenerationsmodi sorgen für evolutionären Stress in der Simulation:

Food spawns evenly distributed across the simulation domain. Food spawns primary alone horizontal and vertical lines. Food spawns primarily in a rectangle in the center.
Bild 4: Nahrung kann in der Simulation auf verschiedene Arten generiert werden. Links: Gleichverteilt; Mitte: Nahrung entsteht entlang horizontaler und vertikaler Linien; Rechts: Nahrung entsteht vorzugsweise in einem kleinen rechteckigen Bereich im Zentrum der Simulation.

Das könnte Sie auch interessieren: