Struktur Einleitung Teil 1: Programmieren Teil 2: Räuber-Beute Systeme als Multi-Agenten Simulation
Zielsetzung des Vorlesungs-teils Vermittlung der Grundlagen zur Programmierung von Multi-Agenten Modellen mit mehreren Agenten-Typen am Beispiel von Räuber-Beute Modellen
Begleitende und weitergehende Literatur & Software Netlogo Handbuch & Help-Dateien Netlogo 3.1.5 Für Interessierte: Netlogo 4.1 (RC) von http://ccl.northwestern.edu/netlogo/
Einleitung & kurze Wiederholung 2 Arten des Modellierens: „Top down“ Differenzial-Gleichungs Modelle „Bottom up“ Multi-Agenten Modelle
Vor- und Nachteile des Multi-Agenten Simulation Vorteile bietet die Möglichkeit der Simulation von: Heterogenen Populationen Einflussnahme von individuellen Handlungen auf das Gesamt-Geschehen Individuelle Verhaltensänderungen die auf Erfahrung und/oder zeitlichen Veränderungen (= Alter) basieren Einfache Implementierung räumlicher Aspekte der Interaktion von Lebewesen
Vor- und Nachteile des Multi-Agenten Simulation Wesentlich höhere Rechenzeit Schlechte Möglichkeiten zur mathematische Analyse des erstellten Modells
Aufbau eines Multiagenten Modells Es gibt Agenten Umwelt Interaktionen zwischen Agent und Umwelt
Der Agent Klar definierte abgeschlossene Einheit die: In einer virtuellen Umwelt lebt über inneren Zustand verfügt („turtles-own“-variable) mit ihrer Umwelt in Kontakt steht (Sensoren, Aktuatoren) Möglichst über keine Globale Information verfügt. x,y Heading Speed Age Energy Genome ...
Die virtuelle Welt Die Welt besteht aus: Räumlich variablen Umweltparametern (diskret / kontinuierlich) Agenten
Die diskrete Welt Das „Patch“ Konzept: Jeder Patch hat einen klar definierte: Position (unbeweglich) Grenzen (fix) Interne Werte („patches-own“)
Räuber und Beute Systeme ( ) Parasit-Wirt Modelle unterscheiden größtenteils sich von R&B-Modellen durch die Anzahl der jeweiligen Akteure !
Räuber und Beute Systeme Hudson Bay Daten: (Gute Beschreibbarkeit durch Lotka–Volterra Gleichungen)
Räuber und Beute Systeme Feedbacks in einem 2 stufigen R&B-System: Mehr Pflanzen → Mehr Pflanzenfresser Mehr Pflanzenfresser → weniger Pflanzen Weniger Pflanzen → Weniger Pflanzenfresser Weniger Pflanzenfresser → mehr Pflanzen
Räuber und Beute Systeme Feedbacks in einem 3 stufigen R&B-System: Mehr Pflanzen → Mehr Beutetiere Mehr Beutetiere → Weniger Pflanzen Mehr Beutetiere → Mehr Räuber Mehr Räuber → Weniger Beutetiere Weniger Beutetiere → Mehr Pflanzen
Programmieren Allgemeine Einführung Grundlagen in Netlogo Imperative Programmiersprachen, was'n das? Grundlagen in Netlogo Codebeispiele & Erklärungen Agenten in Netlogo
Imperative Programmiersprachen Ein Befehl nach dem anderen wird ausgeführt. Schleifen steuern den Programmverlauf. Variablen beinhalten konkrete Werte und ermöglichen das Rechnen im Programm. Es gibt: Globale Variablen Lokale Variablen Unterprogramme strukturieren das Programm.
Syntax „Grammatik“ der Programmiere-Sprache: z.b.: if condition [ commands ] soll heissen: „WENN condition WAHR, DANN MACH commands Anwendungsbeispiel: if a > 5 [print „Die Variable A hat den Wert “ + a] (vergleiche mit „if“-beschreibung im Netlogo-Handbuch)
Einige Basisbefehle in Netlogo ; Der folgende Text ist nicht Teil des Programms. Print Der folgende Text wird ausgegeben. Set Setze eine Variable auf einen bestimmten Wert. If Wenn die folgende Bedingung erfüllt wird führe die danach folgende Anweisung aus. While Solange die folgende Bedingung erfüllt wird, führe die danach folgende Anweisung aus. Random Erstelle („erwürfle“) mir eine Zufallszahl. Global Erstelle eine Variable, die im ganzen Programm gültig ist. Local Erstelle eine Variable, die nur hier gültig ist („scope“). Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Anlegen von Buttons etc. („Die Basics“) Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Anlegen von Buttons etc. („Die Basics“) Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Unterprogramme Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Unterprogramme Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Netlogo-spezifische Befehle Create-custom-turtles Breed Create-custom-<breed> Turtles-own / <breed>-own Ask Fd Die Für Details bitte Netlogo 3.1.5 Handbuch oder Mitschrift zu verwenden
Implementierung von R&B in Netlogo Einfaches zweistufiges Modell mit immobilem Agenten (Beute): Schrittweiser Aufbau Beschreibung, nicht Code
Schritt 1: der „random walker“ Variablen erstellen Breed „rabbits“ erzeugen Zeit-variable Turtles own-variablen Setup-Prozedur Clear-all Erschaffung der Turtles (Breed: “rabbits“) Alle sollen gleich aussehen Alle sollen woanders sitzen Go-Prozedur “rabbits“ bitten zu: Auswürfeln ob sie sich drehen Falls ja, ob links oder rechts, und wie weit Schritt vorwärts machen! Zeit hoch zählen
Schritt 1: der „random walker“ Ergebnis: Turtles bewegen sich zielstrebig planlos über den Bildschirm.
Schritt 2: Erschaffung der „carrots“ In den „random walker“-code wird eingearbeitet: Variablen erstellen - Setup-Prozedur Patches bitten: Auszuwürfeln ob sie eine Karotten sind Wenn ja, Farbe auf grün setzen Go-Prozedur
Schritt 2: Erschaffung der „carrots“ Ergebnis: Einige der Patches werden grün (= „carrot)“ (während nach wie vor die „rabbits“ drüber hinweg laufen)
Schritt 3: Interaktion („Hase trifft Karotte“) Variablen erstellen - „rabbits“ bekommen Variable „energy“ Setup-Prozedur - Go-Prozedur “rabbits“ bitten: Wenn auf Patch trifft, der grün, Patch schwarz machen, und eigene Energie hoch zählen Patches bitten: Auswürfeln, ob Karotte nachwächst. Wenn ja, Patch grün färben.
Schritt 3: Interaktion („Hase trifft Karotte“) Ergebnis: Karotten kommen und gehen Energie der Hasen wird immer größer (nur bei individueller Beobachtung eines Hasen sichtbar!)
Schritt 4: Interaktion II („Hase trifft Hase“) Variablen erstellen - Setup-Prozedur - Hasen bekommen „Basis-Energie“ (Tip I: Hasenerschaffung in Unterprogramm auslagern, da später bei „Mach neuen Hase“ wieder gebraucht!) Go-Prozedur “rabbits“ bitten: Wenn auf Patch trifft, wo andere Hasen, UND genug Energie: Mach neuen Hasen! (Tip: mit „hatch“ Befehl, nicht „sprout“) Entziehe dir selbst Energie für Reproduktion. Entziehe dir selbst Energie für Energieverbrauch (incl. Bewegung etc.) Graphen zeichnen für : „rabbits“ und „carrots“
Schritt 4: Interaktion II („Hase trifft Hase“) Ergebnis: Bei richtiger Einstellung der Parameter (ev. noch zu finden!) entstehen Graphen die sich Hudson Bay Daten vergleichen lassen! Dies kann als Basismodelle für alle folgend beschriebenen Versuche/Untersuchungen benutzt werden!
Weiter Modelle (für Übungen) Einstufiges Modelle mit unterschiedlichen räumlichen Gebieten. Zweistufiges Modell mit 2 bewegten Agenten. Zweistufiges Modell mit 1 oder 2 bewegten Agenten mit Genetik.
Weiter Modelle (für Übungen / Diplomarbeiten / Projektanträge) Zweistufiges Modell mit 2 bewegten Agenten mit ANN & Genetik. Virtuelles Ökosystem.
Sie wissen nun: Was ist und was kann ein Multi-Agenten Modell Wie programmiert man in einer Imperativen Programmiersprache. Was ist Netlogo, wofür ist es ausgelegt. Wie programmiere ich eine Random-Walker. Wie programmiere ich ein einfaches Räuber- Beute Modell!