Hinweise
- Dieses interaktive Notebook enthält statische Inhalte und Code Snippets die direkt im Notebook ausgeführt werden können
- In Code Snippets: Linker Play Knopf startet die Ausführung des Codes. Der rechte Knopf ermöglicht das Löschen der Ausgabe!
- Bei Animationen gibt es es noch einen Stop Knopf der zur unmittelbaren Terminierung der Animation führt.
- Der Code kann verändert werden!
- Alle editierbaren Inhalte können gespeichert werden: Rechts oben (Save Notebook) Knopf
- Alle editierbaren Inhalte können wieder geladen werden und überschreiben Inhalte: Links oben (Load Notebook) Knopf
- Es können Notizen in Markdown Syntax gemacht werden, die auch gespeichert werden (Oben, Stift Knopf)
- Der Code ist in JavaScript - eine Einführung gibt es hier tutorial6.html
Zelluläre Automaten
Einführung
Ein zellulärer Automat besteht aus einer Menge von zustandsbasierten Zellen ZA={z1,z2,..,zn}.
Eine Zelle besitzt eine Anzahl von Zellenvariablen die den veränderlichen (Daten) Zustand S bestimmen: S(zi)={x1,..,xk}
Der nächste Zustand der Zellen wird über eine activity Funktion berechnet.
Der Zustandsübergang einer Zelle erfolgt i.A. in der before oder after Funktion.
Ein Scheduler führt die einzelnen Berechnungsfunktionen einer Zelle sequenziell in drei Phasen aus (obwohl ein ZA ein parelleles System ist!):
- before
- activity
- after
Architektur und Grundprinzip
- Der Zelluläre Automat ist hier ein Simulationswerkzeug der ein künstliche zweidimensionale Welt aus Entitäten repräsentiert!
- Zur Visualisierung bekommt jede Zelle eine Farbe aus einer definierten Farbpalette
Zellulärer Automat als Netzwerk aus einfachen kommunizierenden Berechnungseinheiten
Nachbarschaft
- Nachbarschaftsrelationen sind auch bei Agenten wichtige Eigenschaft
Verschiedene Nachbarschaftsrelationen
- Im nachfolgenden Codebeispielen werden die Nachbarn einer Zelle (x,y) automatisch berechnet und als Array gegeben:
neighbors(x,y) = [
{ x:x-1,y:y-1, ... },
{ x:x ,y:y-1, ... },
{ x:x+1,y:y-1, ... },
{ x:x-1,y:y, ... },
{ x:x+1,y:y, ... },
{ x:x-1,y:y+1, ... },
{ x:x ,y:y+1, ... },
{ x:x+1,y:y+1, ... },
]
+-----> (x)
|
|
v
(y)
0 1 2
3 X 4
5 6 7 (index in array)
Zellen
- Jede Zelle des Zellulären Automaten (unserer künstlichen Welt!) repräserntiert eine Entität:
- Baum
- Mensch
- Fahrzeug
- Leerraum!
- Mauer
- Haus
- Ameise
- Wasser
- Hohlraum (mit Wasser)
- ..
Mobilität
- Die Zellen besitzen einen unveränderlichen räumlichen Ort und auch ihre Nachbarschaft ist unveränderlich
- Mobile Zellen müssen durch Wanderung des Zustandes einer Zelle zu einer benachbarten Zelle realisiert werden
Experimente
Beispiel: Strukturbildung
Hier werden binäre Zellen verwendet, d.h. sie können nur den Zustand 0 oder 1 annehmen
Der Zellenzustand repräsentiert die Modelierung einer Höhlenstruktur (0: offen, 1: geschlossen)
Durch die Nachbarschaftsrelation (surrounding count) ändert sich der Zustand 0 → 1 oder 1 → 0
- Es findet eine Gruppenbildung statt (es bilden sich Hohlräume)
Beispiel Cave [ca1]
▸
◼
|
|
✗
|
Aufgabe. A
Frage. A1 Wie hängt die Hohlraumentstehung (Höhlenbildung) von dem Parameter DENSITY={0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] ab?
Frage. A2 Wie hängt die Hohlraumentstehung (Höhlenbildung) von den Parametern OPEN0 und OPEN1 bei DENSITY=0.5 ab?
Beispiel: Ausbreitungsdynamik
Hier kommt ein Beispiel eines mehrwertigen Zellensystems (ins. 12 Zustände)
Eine Zelle repräsentiert:
- Freie Fläche (weiß);
- Belegung durch einen wachsenden Baum;
- Feuer (des Baumes)
Erste räumliche Dynamik durhc Feuerausbreitung
Beispiel Forest Fire [ca2]
▸
◼
|
|
✗
|
Aufgabe. B
Frage. B1 Wie hängt die Wahrscheinlichkeit der Feuerentstehung von den Parametern CHANCE_TO_GROW und CHANCE_TO_IGNITE ab?
Frage. B2 Verändere das Modell so dass ein Feuer erst bei älteren Bäumen auftreten kann. D.h. fügre einen Lebenszeitzähler age zum Zustand hinzu. Dieser wird in der activity Funktion jeweils um eins erhöht. Erst wenn age > CANBURN kann ein Feuer entstehen. Wie ändert sich das dynamische Verhalten?
Beispiel: Mobilität
Hier wird die räumliche Mobilität von Entitäten durch eine Zustandswanderung durch das Netz gezeigt
Der Zustand einer Zelle inklusive einer indivduellen Identität (Nummer!) kann zu einer Nachbarzelle migrieren wenn diese frei ist
Beispiel Wanderung [ca3]