An Introduction to NetLogo Gabriel Wurzer, Vienna University of Technology www.iemar.tuwien.ac.at AnthropologischeGesellschaftWien.

Slides:



Advertisements
Similar presentations
Summer Computing Workshop. Introduction to Variables Variables are used in every aspect of programming. They are used to store data the programmer needs.
Advertisements

2-Day Introduction to Agent-Based Modelling Day 1: Session 2 NetLogo Style, Documentation, kinds of agents, reacting to other agents.
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
CS0004: Introduction to Programming Select Case Statements and Selection Input.
Netlogo and its Relatives Logo (Papert) –Language for teaching mathematics graphically –Tell turtle how to move Starlogo (Resnick) & StarlogoT (Wilensky)
RAPTOR Syntax and Semantics By Lt Col Schorsch
Wurzer, Lorenz, Popov: „NetLogo Workshop (Part 1)“, in eCAADe 2012 Prague, Slide 1 „Netlogo First Steps (Artif. Societies) “, in Social Simulation Conference.
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
Games and Simulations O-O Programming in Java The Walker School
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
New Mexico Computer Science For All Breeds and Shapes in NetLogo Maureen Psaila-Dombrowski.
Mrs. Chapman. Tabs (Block Categories) Commands Available to use Script Area where you type your code Sprite Stage All sprites in this project.
Automating Tasks With Macros
Automating Tasks With Macros. 2 Design a switchboard and dialog box for a graphical user interface Database developers interact directly with Access.
SUNY Morrisville-Norwich Campus-Week 12 CITA 130 Advanced Computer Applications II Spring 2005 Prof. Tom Smith.
Introduction to Excel 2007 Part 3: Bar Graphs and Histograms Psych 209.
2-Day Introduction to Agent-Based Modelling Day 2: Session 5 Variables and Debugging.
Mr. Wortzman. Tabs (Block Categories) Available Blocks Script Area Sprite Stage All sprites in this project.
Department of Computer Science What is NetLogo UH-DMML  Multi-agent programmable modeling environment  Well suited for modeling complex systems evolving.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
A lesson approach © 2011 The McGraw-Hill Companies, Inc. All rights reserved. a lesson approach Microsoft® PowerPoint 2010 © 2011 The McGraw-Hill Companies,
An Introduction to NetLogo given by Gabriel Wurzer. ,
A First Program Using C#
ABM Frameworks Dr Andy Evans With additions from Dr Nick Malleson.
1 iSee Player Tutorial Using the Forest Biomass Accumulation Model as an Example ( Tutorial Developed by: (
by Chris Brown under Prof. Susan Rodger Duke University June 2012
2-Day Introduction to Agent-Based Modelling Day 1: Session 4 Networks.
XP New Perspectives on Microsoft Office Access 2003 Tutorial 11 1 Microsoft Office Access 2003 Tutorial 11 – Using and Writing Visual Basic for Applications.
Making a Boat Racing Game in Alice By Jenna Hayes Under the direction of Professor Susan Rodger Duke University, July 2010.
CISC 1600 – Lecture 3.2 Simulations Complex Input & Output NetLogo.
2-Day Introduction to Agent-Based Modelling Day 2: Session 8 Exploring Model Collections, NetLogo Lists, Further Resources.
Week 11 DO NOW QUESTIONS. An ask turtles block is a set of instructions that is issued to every turtle. Even though computers can do things very quickly,
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
Independent Samples t-Test (or 2-Sample t-Test)
Introduction to Arrays. definitions and things to consider… This presentation is designed to give a simple demonstration of array and object visualizations.
A Look Inside Some NetLogo Simulations Bruce Edmonds Centre for Policy Modelling Manchester Metropolitan University.
In the next step you will enter some data records into the table. This can be done easily using the ‘Data Browser’. The data browser can be accessed via.
Chapter 1 - Getting to know Greenfoot
Teaching a character to walk in more than one world: Parameters and Inheritance. By Lana Dyck under the direction of Professor Susan Rodger Duke University.
ACTIVINSPIRE TRAINING Tips and tools for creating Flipcharts on ActivInspire.
Agent-Based Modeling and Simulation (ABMS) Bertan Badur Department of Management Information Systems Boğaziçi University.
New Mexico Computer Science For All Variables and Scope Maureen Psaila-Dombrowski.
PowerPoint Basics Tutorial 1: Objects These tutorials will introduce you to the most basic and useful functions of Microsoft PowerPoint We’re going.
Sanjay Johal. Introduction(1.1) In this PowerPoint I will be explaining :  The purpose of the code for each of the two given programs, e.g. to carry.
XP New Perspectives on Microsoft Office Access 2003 Tutorial 10 1 Microsoft Office Access 2003 Tutorial 10 – Automating Tasks With Macros.
Visual Basic for Application - Microsoft Access 2003 Programming applications using Objects.
Page Designer Storyboard J. A. Fitzpatrick December 2004.
Computer Programming Modeling a Passive Solar Home.
Introduction to Computer Programming - Project 2 Intro to Digital Technology.
M10 WS11:Krankenhausbedarfsplanung The World as We See It given by Gabriel Wurzer and Wolfgang E. Lorenz
1 Agenda  Unit 7: Introduction to Programming Using JavaScript T. Jumana Abu Shmais – AOU - Riyadh.
Part 1 Learning Objectives To understand that variables are a temporary named location to store data and that programmers work with different data types.
1 Agent-Based Tools: focus on NetLogo Ing. Cristina Ponsiglione University of Naples Federico II Laboratorio di Simulazione ad Agenti.
M10 WS11:Krankenhausbedarfsplanung More, More and Even-More More given by Gabriel Wurzer and Wolfgang E. Lorenz
An Introduction to NetLogo given by Gabriel Wurzer and Wolfgang E
AnthropologischeGesellschaftWien
Management Information Systems
Management Information Systems
Hands-On given by Gabriel Wurzer and Wolfgang E. Lorenz
Introduction to Events
Learning to program with Logo
Learning Java with Alice 3.0 Game Design Kathy Bierscheid
T. Jumana Abu Shmais – AOU - Riyadh
Using Logo and Logic This presentation uses a version of Logo called StarLogo available through MIT. It can be downloaded for free and installed on your.
Introducing JavaScript
creating a ecosystems model in net logo
Web Programming and Design
Presentation transcript:

An Introduction to NetLogo Gabriel Wurzer, Vienna University of Technology AnthropologischeGesellschaftWien

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 2, Vienna.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 __ * Wilensky 1999 Papert 1968 McCarthy 1958

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 3, Vienna. Netlogo is a discrete simulation Simulation environment with discretized world („patches“), on which agents („turtles“) perform actions in discrete time steps („ticks“)

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 4, Vienna. What NetLogo is used for…

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 5, Vienna. 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, ) Kowarik et al. 2008: Mining with Agents agent-based modeling of the bronze age salt mine of Hallstatt, BC Janssen 2010Janssen 2009 Kowarik et al. 2008

THE NETLOGO ENVIRONMENT

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 7, Vienna. Main screen of a model simulation performed in 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 world (grid) for code for documentation for simulation Model

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 8, Vienna. Co-ordinate space origin (0,0) in middle of grid X+ right, Y+ up world composed of grid cells („patches“) each patch is identified by the coordinate at its center,

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 9, Vienna. Co-ordinate space origin (0,0) in middle of grid X+ right, Y+ up world composed of grid cells („patches“) each patch is identified by the coordinate at its center, e.g. patch 0 0 at origin

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 10, Vienna. Co-ordinate space origin (0,0) in middle of grid X+ right, Y+ up world composed of grid cells („patches“) each patch is identified by the coordinate at its center, e.g. patch 0 0 at origin patch 1 1 elsewhere

PROPERTIES AND ABILITIES OF TURTLES

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 12, Vienna. Turtles are... movable entities within the netlogo world heading xcor ycor degrees - 0 is north, 90 east, etc. - in grid coordinates - e.g. 0, 0

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 13, Vienna. movable entities within the netlogo world Turtles are... heading xcor ycor degrees - 0 is north, 90 east, etc. - in grid coordinates - e.g. 0, 0 or 0.5, 0.5

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 14, Vienna. taking form (they represent an active, animated entity) Turtles are... shape color size - e.g. „default“

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 15, Vienna. taking form (they represent an active, animated entity) Turtles are... shape color size - relative to patch size - 1 is the default - e.g. „default“ or „person“

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 16, Vienna. taking form (they represent an active, animated entity) Turtles are... shape color size - relative to patch size - 1 is the default - but can be 2 as well - e.g. „default“ or „person“ - e.g. RED, GREEN, BLUE

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 17, Vienna. taking form (they represent an active, animated entity) Turtles are... shape color size - relative to patch size - 1 is the default - but can be 2 as well - e.g. „default“ or „person“ - e.g. RED, GREEN, BLUE or MAGENTA

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 18, Vienna. by default visible, but can be hidden as well Turtles are... hidden? - true or false

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 19, Vienna.Properties heading xcor ycor shape size color hidden? who turtle 0 - unique id for each turtle in NetLogo

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 20, Vienna.Commands observer create-turtles 1

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 21, Vienna.Commands observer turtle 0 inspect turtle 0

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 22, Vienna.Commands observer turtle 0 heading xcor ycor shape size color hidden? who

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 23, Vienna. Your turn... 1.Start NetLogo 2.In the observer> input box, enter create-turtles 1 3.in the same location, enter inspect turtle 0 4.enter RED as color, 0 as heading 1 as xcor 1 as ycor „person“ as shape create-turtles 1 inspect turtle 0

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 24, Vienna. A closer look at the inspected properties... heading xcor ycor shape size color hidden? who turtle 0 numbers (e.g. 0) Booleans (true or false) strings (e.g. „person“) note the parantheses !

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 25, Vienna. Data types 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) 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“) …

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 26, Vienna. The ask command observer heading xcor ycor shape size color hidden? who turtle 0 Observer called, asking me to... ask turtle 0 [ ]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 27, Vienna. The set command observer ask turtle 0 [ ] heading xcor ycor shape size color hidden? who turtle 0 set color blue

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 28, Vienna. The set command observer heading xcor ycor shape size color hidden? who turtle 0

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 29, Vienna. Ask explained The ask command calls a set of turtles or patches, passing commands to them These commands are supplied in brackes, i.e. ask somebody [ do this do that ] The commands are executed by the called turtle or patch, and influence its properties

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 30, Vienna.Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued heading xcor ycor shape size color hidden? who turtle 0 ask turtle 0 [ ] create-turtles 1

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 31, Vienna.Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued heading xcor ycor shape size color hidden? who ask turtle 0 [ ] create-turtles 1 YOU KNOW PRETTY WELL THAT ONLY OBSERVER CAN CREATE TURTLES #*!

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 32, Vienna.Context Because observer, turtles and patches are inherently different, only commands that the called entity understands can be issued heading xcor ycor shape size color hidden? who

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 33, Vienna. Commands for turtles set property value sets a property to a specified value forward patch-units, back patch-units moves a turtle in the current direction left degrees, 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)

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 34, Vienna. Have you seen it? The NetLogo Dictionary is NetLogo‘s central source for help.

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 35, Vienna. Hands on ! 1.let observer ask turtle 0 - to set its property „color“ to yellow - to issue the following commands: forward 1 left 45 forward 1 2.see for yourself what happens when you run: ask turtle 0 [create-turtles 1] 3.look inside the NetLogo Dictionary and find the meaning of the following commands: - pen-up, pen-down then, experiment with these using forward, left and right as additional commands!

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 36, Vienna. 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 everything including turtles with „clear-all“ „up“ or „down“ pen-modepen-size a number (default is 1) pen-up pen-down clear-drawing clear-all

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 37, Vienna. Summing up

WRITING PROGRAMS

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 39, Vienna. General NetLogo program layout 1.set up the program (once), e.g. –clear everything, –set the environment –create agents 2.simulation loop (called repeatedly) –simulate world e.g. grain growth on patches –simulate agent behaviour e.g. movement, interaction –update charts & plots Example from Models Library 1. open the „Models Library“ 1. type „histogram“ and choose Histogram Example

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 40, Vienna. Exploring the „Histogram Example“ 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 plotworld buttons

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 41, Vienna. Forever or not forever 0. (Unpress the „go“ button) 1.Right-click on the go button 2.Select Edit A dialog appears 4. Unclick „Forever“ 5. Choose „OK“  click on „setup“, then „go“ Buttons are used to call setup and simulation routine Choosing „Forever“ on a button will repeatedly call it, therefore establishing a loop

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 42, Vienna. Behind the scenes 1.Go to the procedures tab 2.observe the two routines „to setup“ and „to go“, that contain the actual code that is performed for setting up and performing a sim step 3.note how these routines are called from the buttons: (clear) (create turtles) (move turtles)...

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 43, Vienna.Procedures to setup...commands... end to go...commands... end A set of commands is structured into logical units called Procedures that always have the syntax Note that the commands in a are the same as were entered in command center (observer>) to name of procedure commands end

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 44, Vienna. Writing the first program 1.Choose File – New 2.Go to Procedures tab 3.Type the following code: 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“  These are comments, starting with ’  Comments are ignored by NetLogo, but may help in understanding your code  A common approach is „comment before code“

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 45, Vienna. Connecting the program to the user interface 1.On the Interface tab, choose Add („Button“ must be selected in the neighboring dropdown) 2.Click anywhere within the white space to insert a button 3.A dialog appears 4.Enter „setup“ in the Commands textfield and hit the „OK“ button 5.Insert another button (using the same steps), enter „go“ in Commands and enable „Forever“, then choose „OK“.  press the „setup“ button, then „go“

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 46, Vienna. Introducing many turtles (battle plan) The presented program is now extended in order to create a whole population of turtles: introduce a slider named „num-turtles“ which sets the number of turtles to create use this value in setup get hold of all turtles and tell them to set their heading, color and shape to a defined value furthermore, distribute all turtles over the available world

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 47, Vienna. Adding a slider 1.In the Interface tab, click on the dropdown where „Button“ is shown, in order to expose all available interface components. 2.Choose „Slider“ 3.Click Add and click within the white space in order to add the slider 4.In the appearing dialog, add „num-turtles“ in the „Global variable“ textfield:

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 48, Vienna. Creating num-turtles 1.change setup as given below 2.run the changed procedure using the „setup“ button 3.take note of the dozens of turtles created using inspect (right mouse click on the turtles) to setup clear-all create-turtles num-turtles end

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 49, Vienna. 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: Produces a number within the range set in the „Slider“ dialog Produces a Boolean (true or false) Can produce any data type, depending on the list of values entered in the „Chooser“ dialog Can produce a number, string or color, depending on the set data type given in the „Input“ dialog

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 50, Vienna. 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 to setup clear-all create-turtles num-turtles ask turtles [ set color RED set shape “person“ set heading 0 ] end

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 51, Vienna. Why we need reporters As can be seen, the turtles all stick to the origin (0, 0) What is needed is a piece of code that puts each turtle in a random location of the world, something like: There are two commands which are made for this purpose, which we will be dealing with in due course: and ask turtles [... set xcor to some random x-coordinate set ycor to some random y-coordinate... ] random-xcor random-ycor

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 52, Vienna. Introducing reporters The presented commands are called reporters. They compute a value (in this case: a number representing a random co-ordinate) and pass it to the caller: ask turtles [... set xcor set ycor... ] random-xcor random-ycor

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 53, Vienna. Another run Try out the new setup code: Hint: you can also execute a procedure by typing its name into the command center to setup clear-all create-turtles num-turtles ask turtles [ set color RED set shape “person“ set heading 0 set xcor random-xcor set ycor random-ycor ] end

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 54, Vienna. Comparing reporters to global variables reporter can be used as placeholder for a concrete value value is produced by computation (e.g. generate random position) may need to pass parameters needed for computation, e.g.: sin 30 global variable can be used as placeholder for a concrete value value is produced by the user (e.g. by adjusting a slider) or is predefined (see further down) is „just a value“ you can refer to, e.g.: num-turtles pi a parameter

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 55, Vienna. Asking immediately at creation time (Hint) Instead of creating and then asking the turtles.... to setup clear-all create-turtles num-turtles ask turtles [ set color RED set shape “person“ set heading 0 set xcor random-xcor set ycor random-ycor ] end You may also use the more convenient form.... to setup clear-all create-turtles num-turtles [ ; and tell them immediately to... set color RED set shape “person“ set heading 0 set xcor random-xcor set ycor random-ycor ] end

ADRESSING SETS OF TURTLES

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 57, Vienna. So far... observer ask turtle 0 [ ]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 58, Vienna. So far... observer ask turtles [ ]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 59, Vienna. The „with“ query Can address turtles based on their properties using a “with” query: observer ask turtles with [ycor > 0] [ ]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 60, Vienna. With in a nutshell with takes arbitrary criteria as boolean conditions, e.g. with [ycor > 0] with [ycor > 0 and xcor < 0] with [ycor > 0 or xcor < 0]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 61, Vienna. Boolean conditions? You need to formulate a query which produces true or false, for numbers, use comparisons (>, =, <=, !=) for Booleans, also use comparisons (=, !=), i.e. turtles with [hidden? = true] turtles with [hidden? != true] strings can use string comparisons (=, !=), e.g. turtles with [shape = „person“]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 62, Vienna. Logical operators You can also use the logical operators and, or and not to tie multiple conditions together or negate their result: Note: it is sometimes necessary to use brackets for each condition (e.g. in not shape = “person“) Logical operator UsageExample condition 1 and condition 2 All conditions linked by and are required (shape = “person“) and (ycor > 0) and (xcor < 0) condition 1 or condition 2 One condition among those linked by or is required (ycor > 0) or (xcor < 0) not conditionThe opposite of the following condition is taken not (shape = “person“)

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 63, Vienna. Simplified Boolean conditions (Hint) Instead of writing „turtles with [hidden? = true] “ you can use the short form: turtles with [hidden?] Instead of writing „turtles with [hidden? = false]“ you can use the short form: turtles with [not hidden?]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 64, Vienna. Hands on... „setup“ changes turtles in two steps:  at creation, all turtles are set to color blue.  then, those turtles that have a positive y co- ordinate are set to color red and shape „person“ „go“ will only move the „person“ turtles to setup clear-all create-turtles num-turtles [ set xcor random-xcor set ycor random-ycor set color BLUE ] ask turtles with[ycor >= 0][ set shape "person" set color RED ] end to go ask turtles with[shape = "person"] [ forward 1 ] end

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 65, Vienna. Further thoughts on the program have visually introduced two distinct groups of turtles it would be more elegant to explicitly name the groups rather than changing shapes of turtles additional benefit: each group could have additional properties

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 66, Vienna. So we come to bree ds NetLogo predefines one „breed“ of agents called turtles As programmer, you are free to define more breeds using the „breed“ keyword: A breed has every property a turtle has. It can additionally define a set of properties specific to that group. breed [persons person] plural singular

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 67, Vienna. Defining additional properties Additional properties for each breed may be defined using the „breed name plural-own“ statement: To generate turtles belonging to a certain breed, use „create-breed name plural “ rather than „create-turtles“: breed [persons person] persons-own [ ] create-persons 1 [ set shape “person” set age 0 ] It is good coding practice to set the additional properties of a breed to sensible default values at creation time age

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 68, Vienna. Adressing members of a breed turtles breed ask turtles with [...] [... ] ask turtle 0 [... ] persons breed ask persons with [...] [... ] ask person 0 [... ] Similar to the case of turtles, a new breed can be adresses as a whole or by naming a specific agent:

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 69, Vienna. Putting it into practice (your turn)... The following code is a rewrite of the previous program Before procedures start, a new breed persons is declared and given the additional property „age“ Setup only clears the world breed [persons person] persons-own [ ] to setup clear-all end age

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 70, Vienna. Putting it into practice (your turn)... In every step, persons are born A simulation step represents a year. Therefore, the property „age“ of each person is incremented. Then, all persons older than 80 die (new command) to go create-persons num-turtles [ set xcor random-xcor set ycor random-ycor set color RED set age 0 ] ask persons [ set age (age + 1) ] ask persons with [age > 80][ ] end die Note: You need to set num-turtles to a fairly small value (e.g. 2) in order to avoid a too high number of active people

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 71, Vienna. Concluding notes The turtle breed is predefined but extensible:  You can add new properties using, however, remember that all properties are inherited to the other breeds as well turtles-own [... ]

PATCHES

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 73, Vienna. Introducing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch Patches are an own (predefined) breed with the following properties:

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 74, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch All patches can be adressed using the breed-name patches ask patches [ ] set pcolor RED

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 75, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch All patches can be adressed using the breed-name patches ask patches [ ] set pcolor RED

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 76, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch All patches can be adressed using the breed-name patches

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 77, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch In contrast to turtles, individual patches are adressed using their coordinates ask patch 0 0 [ ] set pcolor SKY

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 78, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch In contrast to turtles, individual patches are adressed using their coordinates ask patch 0 0 [ ] set pcolor SKY

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 79, Vienna. Adressing patches pycor pcolor pxcor patch 0 0 patch 1 0 patch 1 1patch 0 1patch -1 1 patch -1 0 patch 0 -1 patch 1 -1 patch In contrast to turtles, individual patches are adressed using their coordinates

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 80, Vienna. Extending patches Additional properties can be specified via patches-own: However, there is no possibility of declaring additional patch breeds that inherit from patches. Furthermore, patches are not created using code (e.g. via create-patches 1) but by using the settings window of NetLogo patches-own [ ] soil-type

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 81, Vienna. Hands on ! 1.Start a new program by entering the code visible to the left in the Procedures tab 2.Notice the new reporter random, and look up help for it in the NetLogo Dictionary. What does it do? Why „random 2“ ? 3.After having finished the code, call „setup“ using the Command Center patches-own [ ] to setup clear-all ask patches [ set soil-type 2 ] ask patches with [soil-type = 1][ set pcolor YELLOW ] end soil-type random

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 82, Vienna. Code improvements If the color of each patch could be set in the following fashion:, the second ask could be eliminated The question is: how do we assign either yellow or black? ask patches [ set soil-type random 2 set pcolor to either yellow or black, depending on soil-type ]

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 83, Vienna. Enter the if statement The if statement is used to test for a Boolean condition. If this yields true, NetLogo will run a series of commands: ask patches [ set soil-type random 2 if soil-type = 1 [ set pcolor YELLOW ] in all other cases, the patch color remains as it is (black) if condition [ commands to execute if the condition applies ] General syntax for ifs:

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 84, Vienna. The ifelse statement Should the patch color be either yellow (when soil-type is 1) or sky (in all other cases), an ifelse statement can be used: ask patches [ set soil-type random 2 ifelse soil-type = 1 [ set pcolor YELLOW ][ set pcolor SKY ] this happens when the condition is not true ifelse condition [ commands to execute if condition applies ][ commands to execute if condition does not apply ] General syntax for ifelse:

Gabriel Wurzer: „An Introduction to NetLogo“, in Agents in Archeology Workshop 2011, Netlogo Lecture, Slide 85, Vienna. Program using ifelse... patches-own [ ] to setup clear-all ask patches [ set soil-type 2 ifelse soil-type = 1 [ set pcolor YELLOW ][ set pcolor SKY ] end soil-type random

THANK YOU ! END OF TUTORIAL - BEGIN OF PRACTICAL WORK