1 / 173

Einführung

Internetseite zum Download von NetLogo: http://ccl.northwestern.edu/netlogo. Einführung. Zur Zeit ist die Version 4.1 aktuell (Stand: 01.02.2010). Größe: ca. 65 MB. Achtung: Die verschiedenen Versionen sind zum Teil untereinander nicht kompatibel. Der Ausgabebildschirm. Einführung.

makana
Télécharger la présentation

Einführung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Internetseite zum Download von NetLogo: http://ccl.northwestern.edu/netlogo Einführung Zur Zeit ist die Version 4.1 aktuell (Stand: 01.02.2010). Größe: ca. 65 MB Achtung: Die verschiedenen Versionen sind zum Teil untereinander nicht kompatibel.

  2. Der Ausgabebildschirm Einführung Der Ausgabebildschirm ist in sog. Patches eingeteilt. Die Größe des Bildschirms und die der Patches kann verändert werden. Dazu geht man auf das Feld MORE, rechte Maustaste drücken und dann EDIT anklicken. Hier kann man die Größen von Screen Edge X, Screen Edge Y und Patch Size verändern.

  3. Vielecke zeichnen Einführung to setup ca ;;Löscht den Bildschirm crt 4 ;; erzeugt 4 neue Turtles ask turtle 0[set color yellow set heading 0] ask turtle 1[set color blue set hedaing 90 ask turtle 2[set color red set heading 180] ask turtle 3[set color green set heading 270] end

  4. Vielecke zeichnen Einführung Für den Aufruf eines Programms muss ein Button erzeugt werden. Hier soll polygon aufgerufen werden. to draw-polygon pd repeat num-sides [ fd laenge rt (360 / num-sides)] end to polygon ask turtles[draw-polygon ] end

  5. Vielecke zeichnen Einführung Mit der Erzeugung des Buttons erhält man obiges Bild. Einzustellen sind dabei 1. der Agent (Observer, Turtles, Patches), 2. der Name des Programms, der den Code beinhaltet und 3. der Text, der auf dem Button erscheinen soll.

  6. Vielecke zeichnen Einführung Variable werden meistens über einen sog. Slider mit einem Wert belegt. Es geht dann dieses Fenster auf.

  7. Vielecke zeichnen Einführung Hier muss jetzt der Name der Variablen eingetragen werden (hier: laenge). Zusätzlich sind noch einzutragen: 1. Minimum (hier: 0) 2. Maximum (hier:100) 3. um wieviel erhöht wird (increment) und 4. der derzeitige Wert (hier 42)- ist auto-matisch eingestellt

  8. Epidemie – Ausbreitung einer Krankheit Einführung

  9. Epidemie – Ausbreitung einer Krankheit Einführung to setup ca crt 100 ask turtles[ fd random 100 set color lime set heading random 360 if who = 1 [set color red] ] end ca – ist die Abkürzung für clear-all. Damit werden der Bildschirm und alle Turtles gelöscht und es werden alle Variablen auf 0 gesetzt. crt 100 – damit werden 100 Turtles erzeugt ask turtles – dieser Befehl ordnet allen Turtles die in eckigen Klammern angegebenen Befehle zu. Diese sind: 1. vorwärts um 0 bis 99 Einheiten, 2. die Farbe lime, 3. die Richtung zwischen 0 und 359 Grad, 4. eine Turtle erhält die Farbe rot (das soll die infizierte Turtle sein).

  10. Epidemie – Ausbreitung einer Krankheit Einführung to go ask turtles[ right random 40 left random 40 forward 1] wait 0.05 end Diese Prozedur bewirkt, dass alle Turtles sich um einen Winkel zwischen 0 und 40 Grad sowohl links als auch rechts herum drehen und dann einen Schritt nach vorn machen. Danach gibt es eine kleine Verzögerung (wait).

  11. Epidemie – Ausbreitung einer Krankheit Einführung Jetzt müssen für die beiden Prozeduren setup und go jeweils ein Button eingerichtet werden. Die Namen der beiden Prozeduren könnten auch anders sein. Beim go-Button wird das Kästchen für FOREVER angeklickt, so dass diese Prozedur wiederholt ausgeführt wird. Beim nochmaligen Drücken dieses Buttons hört der wiederholte Aufruf der Prozedur auf.

  12. Epidemie - Ausbreitung einer Krankheit Einführung In der Setup-Prozedur erhält die Turtle mit der Nummer 1 die Farbe rot. Dies soll die infizierte Turtle sein. Wenn eine gesunde Turtle den Weg dieser roten Turtle kreuzt, soll diese angesteckt werden, d.h. diese Turtle ändert ihre Farbe in rot. to setup ca crt 100 ask turtles[ fd random 100 set color lime set heading random 360 if who = 1 [set color red] ] end In der Prozedur go wird folgende Zeile eingefügt, um dies zu realisieren. if color = red [set color-of one-of turtles-here red]

  13. Epidemie – Ausbreitung einer Krankheit Einführung Jetzt soll in einem Diagramm die Anzahl der infizierten Turtles dargestellt werden. Dies geschieht mit: plot (count turtles with[color = red]) Hierzu muss ein Plot-Button erzeugt werden.

  14. Epidemie – Ausbreitung einer Krankheit Einführung Hier müssen einige Dinge eingestellt, bzw. angegeben werden. 1. Der Name des Plots 2. Die Beschriftung der x-Achse mit Angabe des Mini-mums und des Maximums 3. Die Beschriftung der y-Ach-se mit Angabe des Minimums und des Maximums 4. Der Plot Pen wird mit einem Namen versehen 5. Die Stiftfarbe, der PlotMode und das Intervall können noch speziell angegeben werden.

  15. Epidemie – Ausbreitung einer Krankheit Einführung Die Skalierung der x- und y-Achse erfolgt nor-malerweise automatisch. Das führt zu perma-nenten Skalierungsänderungen. Darum sollte man diese in der Setup-Prozedur von Hand einstellen (zumindest die y-Skalierung). Mit Hilfe dieses Befehls wird die Skalierung der y-Achse von 0 bis 100 festgelegt set-plot-y-range 0 100

  16. Epidemie – Ausbreitung einer Krankheit Einführung Der ganze Vorgang soll abgebrochen werden, wenn die An-zahl der infizierten Turtles gleich der Anzahl der gesamten Turtles ist (hier: 100). Mit Hilfe dieses Befehls wird gestoppt, wenn die Anzahlung der infizierten Turtles 100 erreicht hat: if (count turtles with [color = red]) = 100 [stop] Achtung: Bei Gleichheitsabfragen muss vor dem Gleich-heitszeichen und danach eine Leerstelle eingefügt werden.

  17. Epidemie – Ausbreitung einer Krankheit Einführung In einem Ausgabefeld, dem sog. Monitor, soll die Anzahl der Aufrufe der Prozedur go gezählt werden. Diese Variable nennen wir CLOCK. Sie ist global zu definieren. Dies geschieht durch globals[CLOCK] (vor allen Prozeduren) Hier werden eingetragen: 1.Der Variablenname 2.Der Text auf dem Monitor und 3.die Anzahl der Dezimalstellen.

  18. Epidemie – Ausbreitung einer Krankheit Einführung In der go-Prozedur muss natürlich nach jedem Aufruf der Wert der CLOCK-Variablen um 1 erhöht werden. Dies geschieht durch: set CLOCK CLOCK + 1 Zusätzlich müssen alle Variable, die nicht durch einen Slider verändert werden, ein Wert zugewiesen werden. Dies geschieht in der Setup-Prozedur mit: set CLOCK 0 to go set CLOCK CLOCK + 1 ask turtles[ right random 40 left random 40 forward 1 if color = red [set color-of random-one-of turtles-here red] ] wait 0.05 plot (count turtles with[color = red]) if (count turtles with [color = red]) = 100 [stop] end

  19. Epidemie – Ausbreitung einer Krankheit Einführung Die Anzahl der Nichtinfizierten soll über eine Variable mit Hilfe eines Schiebers veränderbar sein. Die Variable ist POPULATION. to setup  crt POPULATION set-plot-y-range 0 POPULATION  if who < INITIAL-SICK [set color red] end Damit kann auch der maximale y-Wert durch POPULATION eingestellt werden. Auch die Anzahl der Infizierten soll über ei-ne Variable mit Hilfe eines Schiebers verän-derbar sein. Die Variable ist INITIAL-SICK

  20. Epidemie – Ausbreitung einer Krankheit Einführung

  21. Epidemie – Ausbreitung einer Krankheit Einführung to go set CLOCK CLOCK + 1 ask turtles[ right random 40 left random 40 ifelse color = red[forward SICK-MOBILITY][forward 1]  end Wenn die Individuen krank sind, ist ihre Bewegungs-fähigkeit eingeschränkt. Dies wird durch die Variable SICK-MOBILITY ausgedrückt. Wenn das Individuum krank ist (also red), bewegt es sich nur um den Wert von SICK-MOBILITY vorwärts, andernfalls um 1 Pixel. Diese Variable wird ebenfalls über einen Schieber verändert.

  22. Epidemie – Ausbreitung einer Krankheit Einführung to go set CLOCK CLOCK + 1 ask turtles[ right random 40 left random 40  if color = red[set color-of random-one-of turtles in-radius ANSTECKUNGS-RADIUS red]  end Kranke Individuen infizieren Gesunde nur dann, wenn sie mit den Gesunden in Kontakt kommen. Die Entfernung, ab der eine Infizierung erfolgt, wird mit Hilfe der Variablen ANSTECKUNGS-RADIUS eingestellt. Dieses geschieht wiederum mit Hilfe eines Sliders.

  23. Epidemie – Ausbreitung einer Krankheit Einführung

  24. Einführung Ausgedacht hat sich dieses "Spiel" der amerikanische Mathematiker Conway. Bekannt wurde das Game of Life, als es im Jahr 1970 im Wissenschaftsmagazin Scientific American (dessen deutsche Ausgabe heute Spektrum der Wissenschaft heißt) vorgestellt wurde. Die Regeln sind einfach: Gespielt wird auf einem Feld, das wie ein Schachbrett in lauter quadratische Zellen eingeteilt ist. Eine Zelle ist entweder besetzt oder unbesetzt. Eine Konfiguration von besetzten und unbesetzten Zellen kann man sich als Generation von Lebewesen vorstellen, aus der sich die nächste Generation nach folgenden Regeln entwickelt. Game of Life

  25. Einführung Game of Life Die Regeln 1. Eine leere Zelle wird in der nächsten Generation besetzt, wenn sie genau drei besetzte Nachbarzellen hat. 2. Eine besetzte Zelle bleibt auch in der nächsten Generation besetzt, wenn sie zwei oder drei besetzte Nachbarzellen hat. 3. Alle Zellen, bei denen die Voraussetzungen der Regeln 1 und 2 nicht zutreffen, sind in der nächsten Generation unbesetzt.

  26. Einführung Game of Life patches-own [ living? ;; zeigt an, ob eine Zelle lebt live-neighbors ;; zählt wieviele Nachbarzellen leben ] to setup-blank ask patches [ cell-death ] end to setup-random ask patches [ ifelse random-float 1.0 < initial-density [ cell-birth ] [ cell-death ] ] end to cell-death set living? false set pcolor bgcolor end to cell-birth set living? true set pcolor fgcolor end

  27. Einführung Game of Life to go if mouse-down? [ stop ] ;; wartet auf den Benutzer, um das Zeichnen anzuhalten ask patches [set live-neighbors count neighbors with [living?] ] ask patches [ ifelse live-neighbors = 3 [ cell-birth ] [ if live-neighbors != 2 [ cell-death ] ] ] end

  28. Einführung Game of Life to add-cells if mouse-down? [ ask patch-at mouse-xcor mouse-ycor [ cell-birth ] ] end to remove-cells if mouse-down? [ ask patch-at mouse-xcor mouse-ycor [ cell-death ] ] end

  29. Einführung Game of Life

  30. Einführung Der Gleiter – Glider Game of Life

  31. Einführung Der Gleiter – Glider Game of Life

  32. Einführung Stabile Populationen – Lebewesen mit 2 oder 3 Nachbarn – heißen nach Conway Stillleben (still lifes) Game of Life

  33. Einführung Blinker - Lebewesen, die nach 2 Generationen wieder in der Ausgangsformation vorliegen (p2-Populationen) Game of Life

  34. Einführung Weitere Populationen Game of Life

  35. Einführung Aufgaben Suche einige Objekte, die leben, aber sich nicht bewegen. Gibt es andere sich reproduzierende Figuren außer Gleiter (Glider) und Blinker? Bilde einige Objekte, die nicht sterben. Wieviel Leben kann die Fläche aufnehmen und bewegungslos und unverändert lassen (benutze: add-cells)? Die Glider-Gun ist eine große Anhäufung von Zellen, die wiederholt aus dem Gleiter “Patronen” schießt. Finde eine solche Glider-Gun. Weitere Modelle Erfinde andere Regeln für das Spiel Game of Life und überprüfe anhand von eigenständiger Programmierung, was dabei passiert. Dokumentiere die Regeln und die Ergebnisse in deinem Heft Game of Life

  36. Einführung Die Von-Neumann-Nachbarschaft ist eine Nachbarschaftsbeziehung in einem quadratischen Raster. Lediglich die Flächen, welche eine Kante mit der Basisfläche gemeinsam haben, gelten als Nachbarn Game of Life

  37. Einführung Game of Life Aufgaben Experimentiere mit dem Befehl neighbors4 statt neighbors. Der neighbors-Befehl überprüft die Agentenpatches von Nord, Süd, Ost, West, Nordost, Nordwest, Südost, Ssüdwest. So zählt die Abfrage count neighbors with [living?] wie viele von den 8 Patches das living? Patch mit dem Wert true haben. neighbors4 ist im Prinzip wie neighbors, aber es benutzt nur die Patches in Nord-, Süd-, Ost- und Westrichtung. Einige zellulare Automaten sind mit der 8-Zellennachbarschaft, andere mit der 4-Zellennachbarschaft programmiert.

  38. Einführung Game of Life Noch einige spektakuläre Populationen Gleiter Uhr

  39. Einführung Game of Life Noch einige spektakuläre Populationen Gleiter Kaninchen

  40. Einführung Game of Life Noch einige spektakuläre Populationen Gun 8 Patches 6 Patches 6 Patches

  41. Einführung Game of Life Noch einige spektakuläre Populationen 3 Patches Gun 9 Patches 4 Patches 4 Patches

  42. Einführung Game of Life Andere Regeln Um sich beim Vergleich unterschiedlichster Regelwerke eine umständliche Umschreibung der Regeln zu ersparen, existiert eine Kurzschreibweise für die Regeln von Game of Life: Man zählt zunächst die Anzahl von Nachbarn auf, bei der eine Zelle nicht stirbt, und später, durch einen Schrägstrich abgetrennt, die Anzahl der Nachbarn, bei der eine Zelle geboren wird. Diese werden einfach aufgezählt und als Zahl behandelt. Die klassische Conway-Welt ist in der Kurzschreibweise 23/3 – nämlich bei 2 oder 3 Nachbarzellen stirbt die Zelle nicht, bei genau 3 Nachbarzellen wird eine neue Zelle erzeugt.

  43. Einführung Game of Life Die 35/3 Welt 35/3 bedeutet – bei 3 oder 5 Nachbarzellen stirbt die Zelle nicht, bei genau 3 Nachbarzellen wird eine neue Zelle erzeugt. Realisierung in NETLOGO ask patches [ ifelse live-neighbors = 3 [ cell-birth ] [ if live-neighbors != 5 [ cell-death ] ] ]

  44. Einführung Die Kopierwelt Todesregel: Eine Zelle mit genau 0,2,4,6 oder 8 Nachbarn stirbt Geburtsregel: 1,3,5 oder 7 Nachbarn erzeugen eine lebende Zelle. 1357/1357 Realisierung in NETLOGO to go ask patches [ set live-neighbors count neighbors with [living?] ] ask patches [ ifelse (live-neighbors = 1 or live-neighbors = 3 or live-neighbors = 5 or live-neighbors = 7) [ cell-birth ] [ cell-death ] ] end

  45. Einführung 1357/1357 Die Kopierwelt Todesregel: Eine Zelle mit genau 0,2,4,6 oder 8 Nachbarn stirbt Geburtsregel: 1,3,5 oder 7 Nachbarn erzeugen eine lebende Zelle.

  46. Einführung Definition: Ein Zellulärer Automat (ZA) besteht aus einem System von Gitterzellen, die verschiedene Werte als Zustand annehmen können. In diskreten Zeitschritten berechnet sich der Zustand jeder einzelnen Zelle in Abhängigkeit seines ursprünglichen Zustands und der Zustände gewisser Nachbarzellen. Zelluläre Automaten Nächste Nachbarn Einer der wichtigsten Begriffe ist der des nächsten Nachbarns. In der Regel werden die Gitterzellen der ZA durch ein rechteckiges Gitter realisiert.

  47. Einführung Bei den ZA beschränken wir uns auf eindimensionale (lineare) und auf binäre, d.h. die nur die Zustände 0 und 1 annehmen können. Zelluläre Automaten Für drei Nachbarn gibt es(bei Mitzählung der betroffenen Zelle) 23 = 8 Möglichkeiten Somit könnte man prinzipiell 28 = 256 mögliche Regeln aufstellen. Nach Wolfram aber sind nur solche Regeln zugelassen, die weder links noch rechts bevorzugen, d.h. zu symmetrischen Eigenschaften führen. Damit bleiben nur noch 32 solcher Regeln übrig.

  48. Einführung Zelluläre Automaten Diese können beschrieben werden durch die Zahlenreihe a b c d b e d 0 Fasst man diese Zahlen alsStellen einer Binärzahl auf, so lässt sich jede Regel durch die so gewonnene Codierung C ausdrücken: C = 128 a + 64 b +32 c + 16 d + 8 b + 4 e + 2 d

  49. Einführung Zelluläre Automaten C = 128 a + 64 b +32 c + 16 d + 8 b + 4 e + 2 d Hieraus ergibt sich die Zahlenfolge 0 1 0 1 1 0 1 0 = 64+16+8+2 = 90

  50. Einführung Zelluläre Automaten Das NetLogo-Programm Regel 90 globals [row] patches-own [left-pcolor center-pcolor right-pcolor] to setup ca set row 40 ;;screen-edge-y set (pcolor-of patch-at 0 40) yellow end

More Related