\ Entwurfsforschung \\ Räumliche Prozesse \\ Zelluläre Automaten
 
 

 

Grundlagen Zellulärer Automaten

Ein zellulärer Automat stellt ein Computermodell dar, welches meistens aus einer regelmäßigen Anordnung identischer Zellen besteht. Jede Zelle kann bestimmte Zustände annehmen und steht mit einer definierten Anzahl von Nachbarzellen in Wechselwirkung. Die Grundbestandteile eines solchen Systems, die Zellen und Regeln zur Berechnung des nächsten Zustandes einer Zelle, sind sehr einfach strukturiert, können in ihrem Zusammenwirken jedoch komplexe Systeme hervorbringen. Dabei sind vier Merkmale zu unterscheiden:

Das erste ist die Geometrie der Zellenanordnung. Meist verwendet man ein rechtwinkliges Kästchen-Gitter aus identischen Quadraten. Auch drei- oder vierdimensionale Anordnungen lassen sich ohne weiteres konstruieren, allerdings nicht mehr so ohne weiteres veranschaulichen.

Als zweites muss festgelegt werden, welche Plätze in einer bestimmten Anordnung als benachbart zu einer beliebigen Zelle gelten. Zwei häufig auftretende Nachbarschaften sind in Abb. 01 dargestellt. Bei der von Neumann-

Abb. 01. links von Neumann- und

rechts Moore-Nachbarschaft

Nachbarschaft werden die vier unmittelbar benachbarten Zellen oben, unten, links und rechts betrachtet. Rechnen neben diesen vier Zellen auch noch die vier diagonal benachbarten mit, so spricht man Edward F. Moor zu Ehren von Moore-Nachbarschaft. 

Die dritte Kenngröße eines zellulären Automaten ist die Zahl der Zustände pro Zelle.

Das vierte und letzte Merkmal, welches vor allen anderen für die Vielfalt im Universum der zellulären Automaten sorgt, ist die Regel, nach welcher der künftige Zustand einer Zelle aus der momentanen Nachbarschafts-Konstellation ermittelt wird (Transition Rule).

 

Zelluläre Automaten finden in der Architektur, im Städtebau und der Geografie zahlreiche Anwendungsmöglichkeiten. Wir konzentrieren uns in den nachfolgenden Darstellungen auf den städtischen Kontext. Hier werden wir insbesondere Wachstums- und Verkehrssimulationen, ökonomisches Handeln und die Dynamik der Veränderungsvorgänge untersuchen. Nachdem die zugrunde liegenden Prinzipien einmal aufgezeigt sind, wird es möglich, urbane Strukturen zu generieren, die bestimmte Vorgaben erfüllen.

 

Algorithmen

Bei dem im folgenden betrachteten Zellulären Automaten werden für jede Zelle in Spalte X und Reihe Y des Rasters die Zustände (z.B. 0 oder 1) der Moore Nachbarschaft (ohne die Zelle [X, Y] selbst) überprüft und das Ergebnis in einer Zwischenablage (limboWorld) gespeichert.

for I := -1 to 1 do

begin

  for K := -1 to 1 do

  begin

    summe := summe + Zelle[X+K, Y+I].status;

  end;

end;

limboWorld[X, I] := summe - Zelle[X, Y].status;

 

Anschließend werden aufgrund der Transition Rule (limboWorld[X, I] >= 1) die jeweiligen status-Werte der Zellen auf 0 oder 1 gesetzt:

for I := -1 to 1 do

begin

  for K := -1 to 1 do

  begin

    If limboWorld[X, I] >= 1 Then

    begin

      Zelle[X, Y].status := 1;

    end else begin

      Zelle[X, Y].status := 0;

    end;

  end;

end;

 

Durch die Zwischenspeicherung in der limboWorld erzeugen wir ein so genanntes pseudoparalleles Verfahren. Die sequentielle Abarbeitung der Nachbarschaftsüberprüfung im ersten Durchgang verändert nicht die status-Werte der Zellen, sondern speichert lediglich die Summen der Nachbar-status-Werte. Auf der Grundlage dieser Summenwerte wird in der zweiten Schleife mittels der transition rule entschieden, welchen Zustand die Zellen im nächsten Zeitschritt annehmen.

 

Formale Konventionen

Die formale Notation des oben angegebenen Algorithmus wird folgendermaßen definiert:

Die einzelnen Zellen werden mit dem fortlaufenden Index i bezeichnet {i, i = 1,2,3, …, N}. N gibt die Gesamtzahl der im System vorhandenen Zellen an. Alternativ können für eine exakte Positionsangabe die Zellen auch mit ihren x und y Koordinaten notiert werden. Die Eigenschaft Di(t)  einer Zelle gibt zu einem Zeitschritt (t) an, ob die Zelle developed (Entwickelt) Di(t) = 1 ist, oder nicht Di(t) = 0. In anderen Zusammenhängen wird oft auch von lebend/tot, an/aus oder ähnlichem gesprochen. Die Gesamtsumme der Entwicklung zu einer bestimmten Zeit t, N(t), wird durch die Summierung der Entwicklungsindexes ermittelt: . Die Nachbarschaft um eine Zelle i ist definiert durch , wobei die Anzahl der Zellen in jeder Nachbarschaft mit K angegeben wird und die Summe der Entwicklung in jeder Nachbarschaft zum Zeitpunkt t entsprechend durch . Die Anzahl der Zustände, die eine Zelle annehmen kann, wird durch D definiert. In dem vorliegenden Beispiel D = 2 für entwickelt und unentwickelt.

Jetzt kann der oben dargestellte Algorithmus formal ausgedrückt werden. Die Zählregel basiert auf einer Moore-Nachbarschaft  um die jeweils betrachtete Zelle i. Die Transition Rule wird dann folgendermaßen dargestellt:
           

 

Programmierumgebung

Für die Programmierung der hier vorgestellten Simulationen haben wir die Sprache Delphi (ehemals Object Pascal) und die gleichnamige integrierte Entwicklungsumgebung (IDE) von Borland verwendet. Für Neulinge auf dem Gebiet der Simulation paralleler Prozesse empfehlen wir Netlogo. Dieses verfügt sowohl über vorgefertigte Elemente wie Agenten (Turtles) und einer Zellenstruktur, auf welche mittels einfacher Befehle zugegriffen werden kann. Weitere Simulationsumgebungen sind z.B. Processing, Repast, Swarm, Brahms und VBA (z.B. für AutoCAD).

 

Literaturempfehlung

Für die Einführung in die Simulationskonzepte haben wir auf die Bücher Cities and Complexity von Michael Batty und Geosimulation von Itzhak Benenson und Paul M. Torrens zurückgegriffen, aus denen teilweise Ideen für die Beispiele übernommen wurden. Für eine tiefergreifende Einführung Zellulärer Automaten empfehlen wir die Recherche bei wikipedia.

 

 WEITER >