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 >
|