path-simulator

path-simulator preview image

1 collaborator

Default-person Chris Reudenbach (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.2 • Viewed 254 times • Downloaded 23 times • Run 0 times
Download the 'path-simulator' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Wanderer, es gibt keine Straße, man macht seinen Weg zu Fuß* - Selbstorganisation von Trampelpfaden im Raum

Rieke Ammoneit und Chris Reudenbach 2020

Einleitung

Räumlich agiernde Akteure müssen eben diese Räume nutzen und erschließen. Geschieht diese Nutzung regelmäßig entstehen Wege. Diese erleichtern und optimieren, sei es operationalisiert in Form von Strassen und befestigten Wegen oder ungeregelt als Trampelpfade, Steige o.ä., die Nutzung des erdgebundenen Raumes. Wo es keine regelhafte Infrastruktur gibt, geschieht dies durch gemeinschaftliche Nutzung oder um es mit dem spanischen Dichter Antonio Machado auszudrücken: "Wanderer, es gibt keine Straße, man macht seinen Weg zu Fuß" [Machado 1917].

Folgt man Helbig (Helbing 1997) gibt es über die verschiedensten Disziplinen etwa der Stadtplanung, Verkehrsplanung, Archäologie, Geographie und Systemforschung ein breites Interesse an einem vertieften Verständis dieses Prozesses. Die Abstraktion solcher Systeme und die daraus abgeleitete Modellbildung kann theoretisch in der Selbstorganisation von Systemen und den daraus enstehenden ermergenten Strukturen begründet werden (Luhmann 1984). Einfach ausgedrückt enstehen Wege (wie Senor Machado sagt) durch die Wechselwirkung des Akteurs und seinen Bewegungsabsichten mit einem gegebenen Raum.

Gerade im planerischen Umfeld so z.B. bei Neu- oder Umplanunge von Stadtteilen, Parks etc. stellt sich häufig die Frage nach guten oder organischen Wegen [Molnar 1995, Schenk 1999 Schaber 2006]. Als gute Wege sollen in diesem Kontext Wege bezeichnet werden, die von den Fussgängern und anderen Nutzern des Raumes angenommen und aktiv genutzt werden. Sind regulär solche Wege nicht verfügbar oder werden als nicht nützlich empfunden, enstehen häufig wilde Wege also Trampelpfade, da Akteure diese Wege nutzen und durch eine unabgesprochene gemeinsame Bevorzugung häufig begangener Strecken diese zu einem Weg stabilisieren.

In der vorliegenden Studie soll die spontane Entstehung von Trampelpfaden in einem einfachen isomorphen Raum untersucht werden. Insbsondere ob und inwieweit die Anazhl und die Wahrnehmungsfähigkeit der Akteure eine Auswirkung auf die entstehenden Wegemuster haben. Hierzu sind insbesondere Modellsysteme wie NetLogo geeignet, da sie einen einfachen softwarebasierten Zugang zur Programmierung Und Validierung agentenbasierter Prozesse im Raum bieten (Uhrmacher & Weyns 2009, Gilbert & Bankes 2002, Wilensky 1999).

Fragestellung und Hypothese

Die einleitend dagestellte, grundlegende Beobachtung, dass Trampelpfade entlang gemeinsam zurückgelegter Routen selbstorganisert entstehen wird durch die Neigung begründet, Wege zwischen einem Hier und Dort zu optimieren. Es wird zudem beobachtet, dass weitere Akteure, sobald solche Spuren sichtbar sind, dazu neigen diese zu nutzen, was wierderum die Sichtbarkeit der Trittspuren erhöht (vgl. Molnar 1997, Helbing 1997). Aus den den einzelnen Trittspuren werden dann Trampelpfade die scheinbar spezifischen Regeln folgen. Die konkrete Frage dieser Untersuchung lautet also: Entstehen Wege aus der Neigung der Nutzer bereits sichtbare Trittmuster zu nutzen und inwieweit ist es von der Wahrnehmung der Nutzer abhängig wie die Struktur der Wege ist?

Zur Untersuchung werden folgende Hypothesen aufgestellt:

  1. Orientieren sich die Akteure an der Höhe der Popularität eines Trampelpfadpatches, dann (1) sind die Verbindungen zwischen Zielen kürzer, (2) es entstehen mehr direkte Punkt zu Punkt Wege und es entstehen weniger Trampelpfadpatches als bei der Orientierung an beliebigen Trampelpfadpatches.

  2. Je weitreichender die Wahrnehmung der Akteure ist, desto (1) stärker konvergieren Wege zu gemeinsam genutzten Pfaden mit (2) insgesamt mehr Nebenpfaden und (3) mehr Trampelpfadpatches als unter (1)

Methoden

Zur Abstraktion und Modellbildung wird aus obiger Fragestellung folgendes Wortmodell aufgestellt (Bossel 2004):

"Bei zufällig gegebenen festen Zielen in einem isomorphen Raum wird auf einer
 approximativ linearen (direkten) Verbindung zwischen diesen Zielen durch wiederholte
 Benutzung der gleichen Trittpatches ein Trampelpfad enstehen. Dieser direkte Weg
 wird modifiziert, falls die Neigung der Akteure bereits existierende Wegstücke auf
 dem Weg zum Ziel zu nutzen zunimmt. Je mehr dieser Wegstücke verfügbar sind und
 eingesehen werden können, desto stäker wird eine Veränderung der geraden Wege zu
 eher bogenförmig oder gekrümmten Wegen stattfinden."

Rahmenbedingungen des Modelllaufs

Die Hypothesenüberprüfung soll mit Hilfe einer iterativen Veränderung der relevanten Parameter Sichtweite und Poularitätsgewichtung erfolgen. Hierfür ist grundsätzlich der Ansatz einer Sensitivitätsstudie geeignet (Thiele et al. 2014). Bei Anwendung einer systematischen Untersuchung werden reproduzierbare Raumbedingnen (siehe Abbildung 1) mit einer vollständigen Kombinationen verschiedener Akteurseinstellungen in definierter Anzahl wiederholt. Erwartet wird, dass zu den jeweiligen Paramterkombinationen spezifische und vegleichbare Raumstrukturen entstehen.

Ziele und Raum

Der Akteursraum wird durch die Positioniereung der Scheitelpunkte eines auf einer isomorphen Fläche (grün) leicht rotierten gleichseitigen Dreiecks (vgl. a. Helbing (1997)) gebildet (siehe Abbildung 1).

Räumliche Positionen des Experiments Dreieck. Abbildung 1: Räumliche Positionen des Experiments. Die orangen Scheitelpunkte des Dreiecks (rot eingekreist) sind die wechselseitig zugelosten Ziele. Grüne Flächen sind Grünland. Trittspuren und Agenten sind nicht gezeigt. Simply Easy Learning

Regeln aus dem Wortmodell

Aus dem obigen Wortmodell werden die folgenden Regeln abgeleitet:

Die Akteure (walkers) agieren nach den folgenden Regeln:

  • haben immer ein bekanntes Ziel
  • versuchen dieses Ziel auf direktem Weg zu erreichen
  • identifizieren, je Schritt, ob eine Trittspur in Richtung zum Ziel erkennbar ist
  • falls ja und so der Weg zum Ziel verkürzt wird, wählen sie die Richtung auf eine dieser Trittspuren

Die Raumeinheiten (patches) haben die folgenden Eigenschaften:

  • Nutzung (Grünland [grün], Trittspur [grau je nach popularity], Ziel [orange])

Folgende Interaktion (Prozesse) finden statt:

  • Die Anziehungskraft (popularity) einer Trittspur wird bei jedem Betreten durch einen Akteur um einen Punkt aufgewertet. Ab einem definierten Schwellwert der popularity wird aus Grünland eine sichtbare Trittspur.

Das Netlogo Modell

Das entwickelte NetLogo Modell "paths-simulater-2019" ist eine Weiterentwicklung des NetLogo-Library-Modells "paths" (Grider & Wilensky 2015). Die dort implementierte Optimierungsfunktion zur Wegfindung (best-way-to) wurde um die Funktionalität nach maximaler Popularität zu selektieren erweitert. Der Algorithmus analysiert die Distanz zum Ziel und innerhalb eines definierten Sichtradius die Distanz zu einem Trittpach das den Weg zum Ziel verkürzt (falls vorhanden). Im Falle eines vorhandnen Trittpatchs wird dieses angesteuert. Für die vorliegende Untersuchung wurden darüberhinaus das in Abbildung 1 gezeigte Ziel-Szenario Y in Anlehnung an Helbing (1997) Raumsetting implementiert und verwendet (vgl. Abbildung 1).

Zur praktischen Umsetzung wird das Behaviour-Space-Werkzeug der NetLogo Programmierumgebung verwendet. Die in diese Modelldatei integrierten Behaviour-Space Skripte "run12Y", _"run34Y"_ und "run5-7Y" starten insgesamt 35 Modelläufe, die die Grundlage der Untersuchung darstellen. (vgl. Tabelle 1).

Die Simulationen werden je Szenario in 5-facher Wiederholung mit je zehn zufällig in der Modellwelt eingesetzten Akteuren durchgeführt. Die Akteure streben den ebenfalls jeweils zufällig zugelosten Zielpunkten zu. Bei Erreichen erfolgt eine Neulosung des nächsten Zieles. Für die genauen Einstellung je Simulation sei auf den Behaviour Space verwiesen.

Tabelle 1: Matrix der Modellaufparameter. Jeder Modellauf (run) wurde 5-fach wiederholt. Siehe auch Abbildungspanel 2, 3 und 4.

run_1 run_2 run_3 run_4 run_5 run_6 run_7
n-walkers 10 50 10 10 10 10 10
walker-vis-dist 1 1 25 50 1 25 50
max-pop false false false false true true true

Ergebnisse

Die Simulationsläufe wurden über 2500 Zeitschritte iteriert und dann abgebrochen. In allen Modelläufen enstanden zu dieser Laufzeit keine neuen Wegstrukturen.

Da in run_1 und _run_2 gut erkennbar ist, dass die grundsätzlichen Muster der patches mit einer Popularity > min-poplimit qualitativ übereinstimmend sind, werden exemplarisch die in Tabelle 1 gelisteten Läufe (runs) gezeigt. Dies vernachlässigt die Beobachtung, dass bei wenigen Akteuren und einer eingeschränkten Sicht (siehe run_3) zwar qualitativ ähnliche und vergleichbare Muster enstehen, diese jedoch in der endgültigen Ausprägung und vor allem räumlichen Lage sehr varierend sind. Dieser räumliche Effekt ist der initialen Verteilung der Akteure geschuldet und es darf angenommen werden, dass bei einer gleichmässigen Verteilung im Raum die Muster auch für Läufe mit eingeschränkterer Wahrnehmung räumlich stabil bleiben.

Modelläufe 1 und 2 - Fokussierte Orientierung

In Abbildungspanel 2 sind run_1 und run_2 (vgl. Tabelle 1) dargestellt. Beide Läufe sind mit einer minimalen walker-vis-dist mit dem Wert 1 durchgeführt worden. Gut zu erkennen sind die zwischen den Zielpunkten faktisch linearen und identischen Pfadmuster für Betretungshäufigkeiten größer des min-poplimit-Schwellenwertes. Auch gut zu erkennen ist die Verteilung der popularity, die einen massiven Peak im ersten Dezil aufweist und dann im 7 bis 9 Dezil einen leichten zweiten Peak produziert. Der erste Peak wird von den selten betretenen Patches erzeugt während der zweite Peak durch die Patches mit hohen (die Wege selber) aber nicht den höchsten (vor den Umkehrpunkten und "Eckentrittpatches" auf den Wegen) popularity-Werten der Patches gebildet wird.

Modellläufe 1 und 2

Abbildung 2: Modelllauf 1 und 2 mit : walker-vision-dist = 1, n-walkers = 10/50, max-pop = false, Wiederholungsläufe 1-5. Schwarze Patches sind = min-poplimit häufig betreten worden. Größer min-poplimit wird die Farbe Magenta bis weiss je nach Wertebereich von maximum-popularity skaliert.

Die schwarz visualisierten Patches weisen eine Betretunghäufigkeit gleich des min-poplimit-Schwellenwertes aus. Sie markieren vor allem den Weg des walkers zum ersten Ziel. Es kann (eine Wiederholung >> 5 vorausgesetzt) erwartet werden, dass dieser Anteil im Verhältnis zu den patches mit einer popularity größer des min-poplimit-Schwellenwertes sich über viele Simulationen stabilisiert und ähnlich ist. Allerdings ist auch hier die Abhängigkeit von der initialen räumlichen Verteilung der Akteure ersichtlich. Diese Ahnahme bestätigen eingeschränkt die Quotienten des Verhältnis von popularity = min-poplimit / popularity > min-poplimit

Tabelle 2: Matrix der Quotienten von popularity = min-poplimit / popularity > min-poplimit (pop-ratio)

run_1_1 run_1_2 run_1_3 run_1_4 run_1_5 run_2_1 run_2_2 run_2_3 run_2_4 run_2_5
pop-ratio 0.965 0.796 0.958 1.027 1.033 0.429 0.450 0.579 0.600 0.578

Modelläufe 3 und 4 - Flexible Orientierung

In Abbildungspanel 3 sind run_3 und run_4 (vgl. Tabelle 1) dargestellt. Die Läufe unterscheiden sich durch die erweiterte Wahrnehmung der walker (siehe Tabelle 1). Gut zu erkennen sind die für Betretungshäufigkeiten größer des min-poplimit-Schwellenwertes zwischen den Zielpunkten deutlich gekrümmten und aufgespreizten Trampelpfade. Vor allem im run_3 fällt die Variabilität des Hauptmusters auf. Hier ist die Reichweite der walker-vis-dist mit 25 deutlich eingeschränkter als im run_4 (50). Daher sind die resultierenden Muster abhängiger von der initialen Verteilung der Akteure. Im run_4 ist dieses Muster dank der größeren Reichweite der walker-vis-dist sichtbar stabiler und unabhängiger von der Erstverteilung der Akteure im Raum. Auch gut zu erkennen ist die Verteilung der popularity-Werte, die anders als zuvor in den ersten 3 Dezilen eine Häufung von Patches aufweist und dann quasi exponentiell abfällt. Die starke linksschiefe Verteilung wird durch das Aufspreizen der Wege und die hierdurch bedingte langsame Zunahme der Patches mit höherer Popularität erzeugt.

Modellläufe 3 und 4

Abbildung 3: Modelllauf 3 und 4 für die Einstellungen siehe Tabelle 1. Schwarze Patches sind gleich min-poplimit häufig betreten worden. Größer min-poplimit wird die Farbe Magenta bis weiss je nach Wertebereich von maximum-popularity skaliert.

Modelläufe 5 - 7 - Fokussierte Orientierung auf maximale Popularität

In Abbildungspanel 4 sind run_5 bis _run_7 (vgl. Tabelle 1) dargestellt. Die Läufe unterscheiden sich durch die schrittweise erweiterte Wahrnehmung der walkers und ihrer Orientierung an Patches mit einer maximalen Popularität (siehe Tabelle 1). Die Läufe unterscheiden sich recht deutlich von den zuvor gezeigten Simulationen. Während _run_5 erwartungsgemäß und bedingt durch die Bedingung _walker-vis-dist = 1 als prinzipiell identisch mit run_1 betrachtet werden kann, weichen die Läufe run_5 und run_7 erheblich von den vergleichbaren walker-vis-dist-Simulationen mit nicht optimierter Fokussierung auf maximale Popularität ab. Zunächst zeigen sich wie bei run_1 und run_6 als Hauptmuster eindeutig die linearen Optimierungspfade zwischen den Zielen die entsprechend hohe Popularitätswerte aufweisen. Betrachtet man aber vor allem den run_6 zeigt sich, dass wenig oder nur einmalig benutzte Parallel-Pfade zu den optimierten Hauptpfaden entstanden sind. Sehr stark tritt dies in run_6 #1-3 und run_7 #2/#4 hervor.

Modellläufe 5 - 7

Abbildung 4: Modelllauf 5 -7 für die Einstellungen siehe Tabelle 1. Schwarze Patches sind = min-poplimit häufig betreten worden. Größer min-poplimit wird die Farbe Magenta bis weiss je nach Wertebereich von maximum-popularity skaliert.

Diskussion

Betrachtet man die Ergebnisse vor dem Hintergrund der gestellten Hypothesen so können folgende Schlüsse gezogen werden:

Hypothese 1 wurde mit den Modellläufen run_1, run_5, run_6, run_7 untersucht. In run_1 und run_5 war die Wahrnehmung maximaler Popularität nicht eingestellt, allerdings wirkt die Wahrnehmungreichweite von 1 der walker, im Zusammenhang mit der zu jedem Zeitschritt aktiven Zielausrichtung, in vergleichbarer Weise. Die Läufe run_6 und run_7 hingegen zeigen eindeutig lineare Optimierungsmuster, die bei mittlerer Wahrnehmungsreichweite deutlicher sichtbar werden als bei höherer Reichweite. Alle Varianten führen zu linearen und, falls für das Optimierungsverhalten notwendig, parallelen Wegstrukturen, die hinsichtlich der Entfernung optimiert kurz sind. Folglich kann Hypothese 1 sowohl hinsichtlich der Kürze der Wegstrecke als auch der Häufung von direkten Punkt-zu-Punkt Wegen bestätigt werden

Mit den Läufen run_3 und run_4 kann gezeigt werden, dass abhängig von der Anzahl der für die Akteure sichtbaren Trittpatches, gekrümmte und breitere Wege entstehen. Diese Wege sind nicht hinsichtlich ihrer Distanz zwischen den Zielpunkten optimiert. Ihre Lage im Raum ist offensichtlich von der zufälligen Erstverteilung der Akteure abhängig (run_3) und wird mit zunehmender Wahrnehmungsreichweite bzw. Anzahl der Akteure stabiler reproduzierbar (run_4). Aufgrund dieser Beobachtung kann auch Hypothese 2 bestätigt werden, da mit zunehmender Wahrnehmung die Trampelpfade stärker konvergieren und zu gemeinsam genutzten Pfaden, zusätzlichen Nebenpfaden und weiteren Pfadstrukturen ausgebaut werden.

Auf Grundlage dieser Beobachtungen kann geschlossen werden, dass das vorliegende Modell in der Lage ist, die, auch von anderen Autoren (vgl. Molnar 1997, Helbing 1997) beobachteten, Strukturen zuverlässig wiederzugeben und als Grundlage für weitere Fragestellungen wie etwa Barrieren oder komplexere Raumstrukturen geeignet erscheint.

Referenzen

  1. Bossel, H, (2004), Systeme, Dynamik, Simulation : Modellbildung, Analyse und Simulation komplexer Systeme. Norderstedt, Books on Demand GmbH.
  2. Feistel,R. & Ebeling, W. (1989), Evolution of Complex Systems. Self-Organization, Entropy and Development. Kluwer, Dordrecht,1989.
  3. Gilbert N. & S. Bankes (2002), Platforms and methods for agent-based modeling. Proc. Natl. Acad.Sci. USA 99. Suppl 3.
  4. Grider, R. and U. Wilensky, U. (2015). NetLogo Paths model. (http://ccl.northwestern.edu/netlogo/models/Paths). Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
  5. Helbing D., Keltsch & P. Molnar (1997), Modelling the evolution of human trail systems Nature Vol. 388.
  6. Henderson L.F. /1974), On the fluid mechanics of human crowd motion, Transportation Research, Volume 8, Issue 6, 1974, Pages 509-515 DOI.
  7. * Machado A.: "Campos de Castilla", 1917, zit nach URL, Zugriff: 28.01.2020
  8. Luhmann, N., (1984), Soziale Systeme: Grundriß einer allgemeinen Theorie, Frankfurt, Suhrkamp
  9. Molnar P. (1995), Modellierung und Simulation der Dynamik von Fußgängerströmen (Diss.), URL
  10. Schaber C. (2006), Space Syntax als Werkzeug zur Analyse des Stadtraums und menschlicher Fortbewegung im öffentlichen Raum unter besonderer Berücksichtigung schienengebundener Verkehrssysteme. Das Beispiel des Leipziger City-Tunnels. Masterarbeit. URL, Zugriff: 28.01.2020
  11. Schenk M. (1999), Optimierungsprinzipien der menschlichen Fortbewegung. URLZugriff: 28.01.2020
  12. Teahan T. (2010a), Artificial Intelligence: Exercises – Agents and Environments, Ventus Publishing ApS, ISSBN 978-87-7681-591-2, URL, Zugriff: 28.01.2020
  13. Teahan T. (2010b), Artificial Intelligence: Exercises – Agent Behaviour I, Ventus Publishing ApS, ISBN 978-87-7681-592-9, URL, Zugriff: 28.01.2020
  14. Thiele J. C., Kurtha W. & V. Grimm (2014), Facilitating Parameter Estimation and Sensitivity Analysis of Agent-Based Models: A Cookbook Using NetLogo and R, Journal of Artificial Societies and Social Simulation 17 (3) 11, URL, DOI, Zugriff: 28.01.2020
  15. Uhrmacher A. M. & D. Weyns (2009), Multi-Agent Systems: Simulation and Applications. (CRC Press, Inc., Boca Raton, FL, USA, 7.
  16. Wilensky, U. (1999). NetLogo. (http://ccl.northwestern.edu/netlogo/), Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

; define turtles
breed [ walkers walker ]

; define turtles and patches specific variables
walkers-own [ goal ]
patches-own [ popularity streets obstacle ]

; define global (observer) variables
globals [
  roads
  visible-routes
  gini-index-reserve
  lorenz-points
]

; setup procedure carried out once

to setup
  clear-all
  set vis-pop false
  ask patches [ set pcolor green
    set obstacle 0
    set popularity 0
  ]

  ; call the experiment setup procedure
  make-experiment

 ; if no experiment is choosen stop
  if selected-experiment = "none" [
    if message [user-message (word "Es wurde kein Szenario gewählt?!\n Zähle jetzt Schafe...")]
      ask  n-of n-walker patches [sprout-walkers 1 [
        set color white
        set size random 10
        set shape "sheep"
      ]
    ]
  ]

  ; finsihed so reset ticks
  ; if you want to calculate a lorenz curve you need to uncomment this call
  ;update-lorenz-and-gini
  reset-ticks
end 

; procedure that controls the model run
; adapted from the original paths model

to go
  ; for runtime scaling and graying the popularity patches
  ifelse not vis-pop [ask patches with [popularity >= pop-lowlimit and pcolor != orange and pcolor != red] [set pcolor gray]]
  [scale-p]

  ; main procedure that rules the movement
  move-walkers

  ; if you want to calculate a lorenz curve you need to uncomment this call
  ;update-lorenz-and-gini
  tick

  ; if you do not want to use the Behavoiur Space you may use the next to calls to dump out result files
  ;if ticks = 4000 [
  ;  export-world (word "results/results " behaviorspace-experiment-name behaviorspace-run-number ".csv")
  ;  export-plot "number of patches per percentile"  (word "results/results " behaviorspace-experiment-name behaviorspace-run-number "_number-of-patches-per-percentile.csv")
  ;]
end 

; procedure that calculate the attraction of a patch
; adapted from the original paths model

to become-more-popular
  set popularity popularity + 1
  ; if the increase in popularity takes us above the threshold, become a route
  ; current threshold is 1 times by a turtle
  if pcolor != orange [
    if obstacle != 1 [
      if popularity >= pop-lowlimit [ set pcolor gray ]]
  ]
end 

; procedure to control the movement of walkers
; adapted from the original paths model

to move-walkers
  ask walkers [
    if patch-here = goal [
      if selected-experiment = "s-goal" [set goal one-of patches with [streets = 1]
      if show-goal [   ask goal [set pcolor yellow] ]
      ]
      if selected-experiment ="o-goal"
      or selected-experiment ="Y"
       or selected-experiment ="square"
       or selected-experiment ="houseOfSantaClaus" [set goal one-of patches with [pcolor = orange]]
      ]
      walk-towards-goal
  ]
end 

; procedure to control the popularity of patches,
; the destination of the next walkes step and the avoidance of obstacles
; adapted from the original paths model

to walk-towards-goal
    ask patch-here [ become-more-popular ]
 face best-way-to goal
 avoid-patches
end 

; procedure that calculate and perfom the decison  of the best direction
; adapted from the original paths model

to-report best-way-to [ destination ]
  ; of all the visible route patches (=gray), select the ones
  ; that would take me closer to my destination

  let visible-patches patches in-radius walker-vision-dist
  ;let visible-routes visible-patches with [popularity >= pop-lowlimit]
  ifelse not max-pop [set visible-routes visible-patches with [
     popularity >= pop-lowlimit]
   ;print "1"
  ]
   [set visible-routes visible-patches with-max [ popularity]

  ]
  ;print [popularity] of visible-routes
  let routes-that-take-me-closer visible-routes with [
    distance destination < [ distance destination - 1] of myself
  ]
  ; decision
  ifelse any? routes-that-take-me-closer [
    ; from those route patches, choose the one that is the closest to me
    report min-one-of routes-that-take-me-closer [ distance self ]
  ] [
    ; if there are no nearby routes to my destination
    report destination
  ]
end 

; this procedure adapts the forward looking example of obstacles avoidance as presented by
; Vision Cone example of the Netlogo Lib in addition some ideas are taken from
; Thomas Christy at Bangor University 2009 and modified by William John Teahan
; http://files.bookboon.com/ai/index.html
; https://files.bookboon.com/ai/Obstacle-Avoidance-1.html
; found by google search "netlogo obstacle avoidance" page 3

to avoid-patches
 ; visualisation of cone of sight
 ; recolor all cone patches to the original colors
 ; we have to do so because otherwise the last cone will remain
 ask patches with [pcolor = sky]
  [ set pcolor green ]
 ask patches with [pcolor = pink]
  [ set pcolor red ]
  ask patches with [pcolor = cyan]
  [ set pcolor gray ]
 ; if visualisation of cones ist true
 ; color the cone depending on the underlying patch classes
 if vis-vision [
  ask patches in-cone walker-vision-dist walker-v-angle [
    if pcolor = green
    [ set pcolor sky ]
    if pcolor = gray
    [ set pcolor cyan]
    if pcolor = red
    [ set pcolor pink ]
  ]
]

; start of obstacle avoidance
; count patches in cone that are obstacles if there is at least one obstacle
; turn 12.5 degrees
; do this until there is no obstacle in cone
while [count patches in-cone walker-vision-dist walker-v-angle with [obstacle = 1] > 0]
 [ rt 12.5 ]

 ;  error workaround for touching the boundary of world that produces the "nobody" error
 ; we just check the patch in front and only if it is not nobody we head on
 let try  one-of patches in-cone walker-vision-dist walker-v-angle with [obstacle != 1]
 if try != nobody

 ; turn to one of the patches in the cone WITHOUT (!=1) an obstacle
  [face one-of patches in-cone walker-vision-dist walker-v-angle with [obstacle != 1]]

  ; last check if there is no obstacle step 1 forward
  ; otherwise step 1 backwards and turn 90 deg
  ifelse [obstacle] of patch-ahead 1 != 1
  [fd 1 ]
  [bk 1 lt 90]
end 

; #####################################################
; create experiments

; this procedure creates some static road systems
; road width and geometry typ is defined by the GUI

to create-roads
   if preset-roads = "triangle" [
   set roads patches with
     [pxcor = -20 or pycor = 20 or pycor = pxcor - 2 ]
  ]
   if preset-roads = "square" [
   set roads patches with
     [pxcor = -20 or pycor = 20 or pxcor = 20 or pycor = -20]
  ]
   if preset-roads = "X" [
   set roads patches with
     [pxcor = pycor  or (-1 * pxcor) =  pycor ]
  ]
    ask roads
    [ paint-p patches in-radius road-width
             set pcolor gray
             ]

  set roads patches with [pcolor = gray]
  ask roads[ set popularity roads-pop
             set streets 1
  ]
  display
end 

; this procedure creates some static road systems
; geometry is defined by the GUI

to make-experiment

    ; triangle
    if selected-experiment = "Y" [
    ; not rotated
    ;https://www.triangle-calculator.com/de/?what=vc&a=-40&a1=-40&3dd=3D&a2=0&b=0&b1=29.2825&b2=0&c=40&c1=-40&c2=0&submit=Berechnen&3d=0
    ;[-40 -40] [0 29.2825]  [40 -40]
    ;slightly rotated
    ;https://www.triangle-calculator.com/de/?what=vc&a=-40&a1=-40&3dd=3D&a2=0&b=4&b1=29&b2=0&c=35&c1=-43&c2=0&submit=Berechnen&3d=0

    ;recolorize remaining orange patches back to green
    ask patches with [pcolor = orange] [set pcolor  green]
    ;define goal patches and make them orange
    ask patches at-points [ [-40 -36] [4 27] [35 -43]] [ set pcolor orange]
    ; create walkers according to the settings
    ask  n-of n-walker patches [sprout-walkers 1 [
    if selected-experiment ="Y" [set goal one-of patches with [pcolor = orange]]
      set size 5
      set color black
      set shape "stud_tri"]
    ]

  ]

  ; pentagle
  if selected-experiment = "houseOfSantaClaus" [
    ask patches with [pcolor = orange] [set pcolor  green]
    ask patches at-points [[-35 10] [-35 -40] [0 40]  [35 10] [35 -40]] [ set pcolor orange]

    ask  n-of n-walker patches [sprout-walkers 1 [
    if selected-experiment ="houseOfSantaClaus" [set goal one-of patches with [pcolor = orange]]
      set size 4
      set color 45
      set shape "person student"]
    ]

  ]

  ; square
  if selected-experiment = "square" [
    ask patches with [pcolor = orange] [set pcolor  green]
    ask patches at-points [[-35 40] [-35 -40]  [35 40] [35 -40]] [ set pcolor orange]
        ask  n-of n-walker patches [sprout-walkers 1 [
    if selected-experiment ="square" [set goal one-of patches with [pcolor = orange]]
      set size 4
      set color 45
      set shape "person student"]
    ]
  ]

  ; a street szenario is choosen and strets are the only places for goals and turles to be born
  if selected-experiment = "s-goal" [
    if preset-roads != "none" [create-roads
      ; create walker and goals on structures (roads)
      ask  n-of n-walker roads [
        sprout-walkers 1 [ if selected-experiment = "s-goal" [set goal one-of patches with [streets = 1]]
          if show-goal [ask goal [set pcolor yellow]]
        set size 4
        set color 45
        set shape "person student"
        ]
      ]
    ]
    if preset-roads = "none" [
        ask  n-of n-walker patches [
      sprout-walkers 1 [ set goal one-of patches
      if show-goal [ask goal [set pcolor yellow]]
        set size 4
        set color 45
        set shape "person student"
      ]
    ]
     if message [user-message (word "Es wurden keine vordefinierten Strassen gewählt.\n Bitte JETZT Strassen zeichnen!")]
    ]
  ]

  ; a free goal szenario is choosen (goals MUST be orange)
  if selected-experiment ="o-goal" [
    if preset-roads != "none" [create-roads]
    ask n-of 4 patches with [pcolor = green][set pcolor orange]
    ask  n-of n-walker patches [sprout-walkers 1 [
    if selected-experiment ="o-goal" [set goal one-of patches with [pcolor = orange]]
      set size 4
      set color 45
      set shape "person student"]
    ]
    if message [user-message (word "Es wurden vier zufällige Ziele erzeugt. \nMit dem draw-world-items Button und der Farbauswahl orange können Weitere Ziele gesetzt werden.\n die Farbauswahl gray bzw. green erzeugt Strassen und Wiesen. ")  ]
  ]
end 

;#########################################################
; reporter for analysis

; reports number of gray patches

to-report trampling
  report  count patches  with [popularity >= pop-lowlimit]
end 

; reports number of patches with the pop-lowlimit value

to-report popularity-minimum
  report  count patches  with [popularity = pop-lowlimit  ]
end 

; reports teh average popularity value of all patches

to-report popularity-average
let psum sum [popularity] of patches with [popularity >= pop-lowlimit]
let pcount count patches with [popularity >= pop-lowlimit]
report psum / pcount
end 

;reports the maximum value of popularity

to-report popularity-maximum
let psum sum [popularity] of patches with-max [popularity]
let pcount count patches with-max [popularity]
  report psum / pcount
end 

; reports the Gini Coefficient

to-report gini-05
  report  gini-index-reserve / trampling
end 

; calls the help text not implemented yet

to help
 clear-all
  import-drawing "images/help.png"
if user-yes-or-no? "OK?"
  [ clear-all ]
end 

;; this procedure recomputes the value of gini-index-reserve
;; and the points in lorenz-points for the Lorenz and Gini-Index plots

to update-lorenz-and-gini
  let sorted-popularity sort [popularity] of patches with [popularity >=  pop-lowlimit]
  let total-popularity sum sorted-popularity
  let popularity-sum-so-far 0
  let index 0
  set gini-index-reserve 0
  set lorenz-points []

  ;; now actually plot the Lorenz curve -- along the way, we also
  ;; calculate the Gini index.
  ;; (see the Info tab for a description of the curve and measure)
  repeat count patches with [popularity >=  pop-lowlimit] [
       set popularity-sum-so-far (popularity-sum-so-far + item index sorted-popularity)
    set lorenz-points lput ((popularity-sum-so-far / total-popularity) * 100) lorenz-points
    ;print lorenz-points
    set index (index + 1)
    set gini-index-reserve
      gini-index-reserve +
      (index / count patches with [popularity >=  pop-lowlimit]) -
      (popularity-sum-so-far / total-popularity)
  ]
end 

; function reports a list of the popuklarity values of all patches >= pop-lowlimit

to-report spop
  report sort [popularity] of patches with [popularity >=  pop-lowlimit]
end 


;; procedure to colorize the popularity
;; a linear approach from lowliomit to current max value is applied

to   scale-p
  if ticks > 10 [
  let pmax max [popularity] of patches
  ;if pmax < pop-lowlimit [set pmax pop-lowlimit + pop-lowlimit]
  ;print pmax
  ask patches with [pcolor != orange and pcolor != green and pcolor != red]
  [ set pcolor scale-color magenta popularity pop-lowlimit pmax ]
  ]
end 


;#########################################################

to paint-p [p]
  ask p [ set pcolor gray]
end 

; provides an simple way to draw new facilities

to draw-world-items
  while [mouse-down?] [
    create-turtles 1 [
      setxy mouse-xcor mouse-ycor
      ask patches in-radius line-width [ set pcolor read-from-string p_color
        if pcolor = red [set obstacle 1
                         set streets 0]
        if pcolor = gray [set obstacle 0
                         set streets  1
                         set popularity roads-pop
        set popularity roads-pop]
        if pcolor = green [set obstacle 0
                         set streets  0
                         set popularity 0]
      ]
      die
    ]
    display
  ]
end 



; Copyright 2015 Uri Wilensky.
; See Info tab for full copyright and license.

There is only one version of this model, created over 5 years ago by Chris Reudenbach.

Attached files

File Type Description Last updated
path-simulator.png preview Preview for 'path-simulator' over 5 years ago, by Chris Reudenbach Download

This model does not have any ancestors.

This model does not have any descendants.