1 / 86

An Introduction to NetLogo

Anthropologische Gesellschaft Wien. An Introduction to NetLogo. Gabriel Wurzer, Vienna University of Technology www.iemar.tuwien.ac.at. Netlogo. free* agent-based simulation environment by Uri Wilensky, Northwestern University, which is based on programming language

ian-willis
Download Presentation

An Introduction to NetLogo

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. AnthropologischeGesellschaftWien An IntroductiontoNetLogo Gabriel Wurzer, Vienna University of Technology www.iemar.tuwien.ac.at

  2. Netlogo free* agent-based simulation environment by Uri Wilensky, Northwestern University, which is based on programming language „Logo“ by Seymour Papert, MIT which is based on programming language „Lisp“ by John McCarthy, Stanford __ * http://ccl.northwestern.edu/netlogo/ Wilensky 1999 Papert 1968 McCarthy 1958

  3. Netlogois a discretesimulation Simulation environment with discretized world („patches“), on which agents („turtles“) perform actions in discrete time steps („ticks“)

  4. WhatNetLogoisusedfor…

  5. And in archeology? Janssen 2010: Population aggregation in ancient arid environments Adaptation of prehistoric societies to changing conditions of landscape Janssen 2009: Understanding Artificial Anasazi population simulation for the Long House Vallay, AZ, 800-1350) Kowarik et al. 2008: Mining with Agents  agent-based modeling of the bronze age salt mine of Hallstatt, 1458-1245 BC Kowarik et al. 2008 Janssen 2010 Janssen 2009

  6. The NetLogo Environment

  7. Main screenof a model forsimulation fordocumentation forcode • simulation performedin interface area • documentation area lists what to do with the model • programming is done in the procedures area world discretized into grid, visible in center of screen Model world (grid)

  8. Co-ordinatespace • origin (0,0) in middle ofgrid • X+ right, Y+ up • world composed of grid cells („patches“) • each patch is identified by the coordinate at its center,

  9. Co-ordinatespace • origin (0,0) in middleofgrid • X+ right, Y+ up • worldcomposedofgridcells („patches“) • eachpatchisidentifiedbythecoordinateatitscenter, e.g. patch 0 0 atorigin

  10. Co-ordinatespace • origin (0,0) in middleofgrid • X+ right, Y+ up • worldcomposedofgridcells („patches“) • eachpatchisidentifiedbythecoordinateatitscenter, e.g. patch 0 0 atoriginpatch 1 1 elsewhere

  11. Properties andabilitiesofturtles

  12. Turtlesare... • movable entities within the netlogo world heading • 0..360 degrees • 0 is north, 90 east, etc. xcor ycor • in grid coordinates • e.g. 0, 0

  13. Turtlesare... • movableentitieswithinthenetlogoworld heading • 0..360 degrees • 0 isnorth, 90 east, etc. xcor ycor • in gridcoordinates • e.g. 0, 0 or 0.5, 0.5

  14. Turtlesare... • taking form (they represent an active, animated entity) shape • e.g. „default“ size color

  15. Turtlesare... • taking form (theyrepresent an active, animatedentity) shape • e.g. „default“ or „person“ size • relative to patch size • 1 is the default color

  16. Turtlesare... • taking form (theyrepresent an active, animatedentity) shape • e.g. „default“ or „person“ size • relative topatchsize • 1 isthedefault • but canbe 2 as well color • e.g. RED, GREEN, BLUE

  17. Turtlesare... • taking form (theyrepresent an active, animatedentity) shape • e.g. „default“ or „person“ size • relative topatchsize • 1 isthedefault • but canbe 2 as well color • e.g. RED, GREEN, BLUE • or MAGENTA

  18. Turtlesare... • by default visible, but can be hidden as well hidden? • true or false

  19. Properties • unique id for each turtle in • NetLogo who heading xcor turtle 0 ycor shape size color hidden?

  20. Commands observer create-turtles 1

  21. Commands turtle 0 observer inspect turtle 0

  22. Commands who heading xcor turtle 0 ycor shape observer size color hidden?

  23. Your turn... • Start NetLogo • In the observer>input box, entercreate-turtles 1 • in the same location, enter inspect turtle 0 • enter RED as color,0 as heading1 as xcor1 as ycor„person“ as shape create-turtles 1 inspect turtle 0

  24. A closerlookattheinspectedproperties... who heading xcor numbers (e.g. 0) turtle 0 ycor shape size color Booleans (true or false) hidden? strings (e.g. „person“) note the parantheses !

  25. Data types In detail… numbers… ordinal type (1,2,3) comparison: (1<2) operators: +,-,*,/ Booleans… truth type (true, false) comparison: (true != false) operators: and, or, not strings… character chains („abra“) comparison „test“ != „abra“ operators: concatenation („abra“ + „cadabra“ = „abracadabra“) slicing („abracadabra“[4:6] = „cad“) … • Numbers, Booleans and strings are data types • Each data type has its own syntax (e.g. „xyz“ for strings) • Each data type has its own benefits • numbers are made for calculations (+, -, /, *, sin, cos, etc.) • Booleans are made for conditions (if hidden? ...) • strings are made for supplying names (e.g. use the „default“ shape)

  26. The askcommand who Observercalled, askingmeto... heading xcor turtle 0 ycor ask turtle 0 [ ] shape observer size color hidden?

  27. The setcommand who heading xcor turtle 0 ycor ask turtle 0 [ ] shape set color blue observer size color hidden?

  28. The setcommand who heading xcor turtle 0 ycor shape observer size color hidden?

  29. Askexplained • The askcommandcalls a setofturtlesorpatches, passingcommandstothem • These commandsaresupplied in brackes, i.e. asksomebody[do thisdo that ] • The commandsareexecutedbythecalled turtle orpatch, andinfluenceitsproperties

  30. Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued who heading xcor ask turtle 0 [ ] turtle 0 create-turtles 1 ycor shape size color hidden?

  31. Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued YOU KNOW PRETTY WELL THAT ONLY OBSERVER CAN CREATE TURTLES #*! who heading xcor ask turtle 0 [ ] create-turtles 1 ycor shape size color hidden?

  32. Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued who heading xcor ycor shape size color hidden?

  33. Commandsforturtles set property value sets a property to a specified value forwardpatch-units,backpatch-unitsmoves a turtle in the current direction leftdegrees, right degrees alters the heading of a turtle ...and every other command listed in the Netlogo Dictionary under „Turtle-related“ (see: Menu - Help – NetLogo Dictionary)

  34. Haveyouseenit? The NetLogo Dictionary is NetLogo‘s central source for help.

  35. Hands on ! • letobserverask turtle 0 - tosetitsproperty „color“ toyellow - toissuethefollowingcommands: forward 1 left 45 forward 1 • seeforyourselfwhathappenswhenyourun:ask turtle 0 [create-turtles 1] • look inside the NetLogo Dictionary and find the meaning ofthe following commands: - pen-up, pen-down then, experimentwiththeseusingforward, leftandrightas additional commands!

  36. Results (Probably) • pen-down and pen-up change the state of a property named „pen-mode“ • color of track equals color of turtle • thickness of track can be set using the property „pen-size“ (also found in a turtle) • observer may erase the tracks by using the command „clear-drawing“ or everythingincluding turtles with „clear-all“ pen-up pen-down „up“ or „down“ a number (default is 1) pen-mode clear-drawing pen-size clear-all

  37. Summingup

  38. Writing Programs

  39. General NetLogoprogramlayout Example from Models Library • set up the program (once), e.g. • clear everything, • set the environment • create agents • simulation loop (called repeatedly) • simulate worlde.g. grain growth on patches • simulate agent behaviour e.g. movement, interaction • update charts & plots 1. open the„Models Library“ 1. type „histogram“ andchooseHistogramExample

  40. Exploringthe „HistogramExample“ • the two buttons „setup“ and „go“ are used to interact with the model • setup clears and fills the world, • go simulates and generates the histogram (repeatedly, in time steps – “ticks”) • click setup, then go buttons plot world

  41. Foreveror not forever 0. (Unpress the „go“ button) • Right-click on the go button • Select Edit... 3. A dialogappears 4. Unclick „Forever“ 5. Choose „OK“  click on „setup“, then „go“ • Buttons areusedtocallsetupandsimulationroutine • Choosing „Forever“ on a button will repeatedlycallit,thereforeestablishing a loop

  42. Behind thescenes • Go to the procedures tab • observe the two routines„to setup“ and „to go“,that contain the actual codethat is performed for settingup and performing a sim step • note how these routines are called from the buttons: (clear) (createturtles) (moveturtles) ...

  43. Procedures • A setofcommandsisstructured • intologicalunitscalled • Procedures • thatalwayshavethesyntax • Note thatthecommands in a • arethe same aswereentered • in commandcenter (observer>) to setup ...commands... end to go ...commands... end tonameofprocedure commands end

  44. Writing thefirstprogram • Choose File – New • Go to Procedures tab • Type the following code: • These arecomments, • startingwith ’ • Comments areignored • byNetLogo, but may • help in understanding • yourcode • A commonapproachis„commentbeforecode“ to setup ;start of „setup“ clear-all ;clear world create-turtles 1 ;create turtle end ;end of „setup“ to go ;start of „go“ ask turtle 0 [ ;ask the turtle forward 1 ;move fwd 1 unit ] ;end of ask end ;end of „go“

  45. Connectingtheprogramtotheuserinterface • On the Interface tab, choose Add („Button“ must be selected in the neighboring dropdown) • Click anywhere within the white space to insert a button • A dialog appears • Enter „setup“ in the Commands textfield and hit the „OK“ button • Insert another button (using the same steps), enter „go“ in Commands and enable „Forever“, then choose „OK“.  press the „setup“ button, then „go“

  46. Introducingmanyturtles (battle plan) The presentedprogramisnowextended in order tocreate a wholepopulationofturtles: • introduce a slidernamed „num-turtles“ whichsetsthenumberofturtlestocreate • usethisvalue in setup • get hold of all turtlesandtellthemtosettheirheading, colorandshapeto a definedvalue • furthermore, distribute all turtlesovertheavailableworld

  47. Adding a slider • In the Interface tab, click on the dropdown where „Button“ is shown, in order to expose all available interface components. • Choose „Slider“ • Click Add and click within the white space in order to add the slider • In the appearing dialog, add „num-turtles“ in the „Global variable“ textfield:

  48. Creatingnum-turtles • changesetupasgivenbelow • runthechangedprocedureusingthe „setup“ button • takenoteofthedozensofturtlescreatedusinginspect(rightmouseclick on theturtles) to setup clear-all create-turtles num-turtles end

  49. Global variables • The value of the slider „num-turtles“ is available within the code by giving its name. We call this a global variable. • There a four options for defining global variables which are controllable via the user interface:

  50. Asking all turtles • If all turtles should be asked, the term ask turtles is used: • The contained commands are in line with the battle plan for extending the program, i.e. to give the turtles common form tosetup clear-all create-turtlesnum-turtles askturtles [ setcolor RED setshape “person“ setheading 0 ] end

More Related