NetLogo II

advertisement
Agent-Based Modeling
and Simulation
(ABMS)
Bertan Badur
badur@boun.edu.tr
Department of
Management Information Systems
Boğaziçi University
Outline
Virtual Corridors of Butterflies
From ODD to NetLogo Implementation
Virtual Corridors of Butterflies
• virtual corridores – Peer et al. (2005)
• mate-finding by butterflies (bf)
• “hilltoping” strategy - males and females
– uphills for meet and mate
• Simple model
• formulation by ODD protocol
Purpose
• questions about virtual corridores (VC)
• interractions of butterflies hilltopping behavior
and topograhpy
• emergence of virtusl corridores
– nerrow paths butterflies move
• variabiity in butterfly strategy affects formation of
VCs
Entities, State Variables and Scales
• Entities:
– butterflies
– square patches of land –
• State Variables:
– elevation – land
– positions of butterflies on patches – x,y coordinates
• Scales:
– time and patch not impotant but
– time length – time fo fly 25-35 meters
– patch size 25 x25 meters
• 1000 time steps with a 150x150 square lanscape
Process Overwiew and Schedulling
•
•
•
•
Process – movement of the butterflies
at each time butterflies move one step
order of movements – not impotant
no interraction among butterflies
Design Concepts
• basic principle - virtual corridores
• emergence – how corridores emerge from
– 1 - adaptive movement behavior of butterflies
– 2 – topograhy of landscape
• adaptive behavior – moving behavior of butterflies based
on an emprical law
• objective, learning, prediction – not included
• sensing – how bfs percive higher elevation
• interraction – not included
• stocasticity –
– each butterfly at each step move uphill its neighbors with
probability q and
– move random to its neighbors with probability 1-q
Initilization
• topography of the lanscape
• 1- artificial
• 2- real values from a file
• 500 butterflies set to a patch
Input Data
• Environment is not chaning
• not needed
Submodels
• movement submodel:
– how bfs decide to move
• uphill: highest neigboring patch
• random: randomly on of the eight naighboring
pathces
• For each butterfly at each time step
• whether move uphill or random is by a contol
parameter q
• q: random variable from a uiform distribution
From ODD to NetLogo Implementation
• Purpose – information tab model description
• Entities, State variables and Scales
• tutles-own [ ]
•
patches-own [ ]
•
globals [ ]
• Process and Schedule – go
• Design concepts
• Initilization - setup
• Input data – from file input
• Submodels - processes called from go
Entities State Variables Scales
globals []
turtles-own []
patches-own [elevation]
For a 150x150 lanscape
from settings – corner – buttom left
max-pxcor 149,max-pycor 149
Square landscape – turn off world wrapper s
Initialization
to setup
ca
ask patches
[
]
reset-ticks
end
Templeate for initialization
Initialization – set elevations
ask patches
[
let elev1 100 - distancexy 30 30
let elev2 50 - distancexy 120 100
ifelse elev1 > elev2
[ set elevation elev1]
[ set elevation elev2]
set pcolor scale-color green
elevation 0 100
]
Initialization – set elevations
elev1 elev2
local variables for creating two hills
hill1 at 30 30 at a height of 100
hill2 at 120 100 at a height of 50
distancexy
set pcolor scale-color green
elevation 0 100
Scales color
scale-color
Initialization - turtles
crt 1
[
set sıze 2
setxy 85 95
]
create one turtle at 85 95
Process Schedule
to go
ask turtles [move]
tick
if ticks >= 1000 [stop]
end
to move
end
in go procedure
primitives
tick, ticks
stop
Submodels - move
to move
ifelse random-float 1 < q
[uphill elevation]
[move-to one-of neighbors]
end
probability q uphill with 1-q to random neighbor
uphill
move-to
one-of
define and initilize q
Chapter 5 of IABM
1.
2.
3.
4.
Introduction
Observation of Corridors
Analazing the Model
Time Series Resutls: Adding Plots and File
Output
5. A Real Landscape
6. Summary and Conclusions
5.1 Introduction
• modeling – not formulating and implementing
• iterative process – modifying refining model
• Problem:
– where and how corridors are formed?
– quantitative outputs to be analized
– replace artificial lanscape with a real topography
• Learning objectives:
–
–
–
–
–
version control
quantitative outputs and simulation experiments
slider or switchs for global variables, reportgers
output window, time series plot,exporting to files
importing data from a file
5.2 Observation of Corridors
• How to caracterize a corridore?
• if all bfs have the same path:
– start from same posstion and q = 1.0
– corridor - very nerrow
• if movement – completely random
– q = 0.0
– no corridore like feature
• How width of paths cahnge as q or topography
varies
quantifying width
• bfs can start and end – different places
• Assume:
– bfs stop – rich a local hilltop –
– a patch higher then all its neighboringpatches
• quantify width of the corridor – all bfs
– #pathces visited – any bf divided by
– mean distance – starting and edning locations – all bfs
• lower bound 1.0 when all bfs follow a streigth line
• increases as bfs diverge
• Analysis:
– plot q v.s. corridor width
First modifications
• slider for q
– from 0.0 to 1.0 with increments 0.01
• modify setup
– creatre 50 bfs starting from same position
• experiment with different q values
• Programming Notes: moving variables to the
interface
– remove globals
– remove initialization in setup procedure
modifying move
• bfs stop when they rich a local hill
– a patch with an elevation higher then its neighbors
– stop rest of the move procedure
• code – start of the move
if elevation >=
[elevation] of max-one-of neighbors
[elevation]
[stop]
if condition ; turtle context
[stop]
move - in turtle context
turtles get patch veriable - elevation
right side of condition
• of and max-one-of commands:
• of:
[reporter or agent variable] of agent or agentset
• agent variable: elevation
• agent: agent in the neighborhood of the current
turtle with maximum elevation
max-one-of agentset [reporter or agent variable]
• report an agent from the agentset based on the
reporters value
width of the bf population
• a - # of patches visited
• b- mean distanc between bfs starting andending
positions
• two new state variables
– for each patch – keep track of whether a turtle visited
– for each turtle – store its starting patch
• Add a boolean variable to pathces – used?
patchs-own [used?]
– turn to true is the patch is ever visited
• Add a variable to turtles – start-patch
turtles-own [start-patch]
– set to the start patch when inilizing bfs
initilize in setup
ask patches [
...
set used? false
]
create-turtles [
...
set start-patch patch-here
]
• patch-here reports the patch the turtle is currently on
• Programming note: initializing variables
– all variables has an initial value of 0
move and go procedure
• When a bf moves to a patch
– set the patch variable to true
– add end of move
• in the go procedure before the program stops
let final-corridor-width corridor-width
• a laocal variable is assigned the value of the corridor width
computed by another procedure (reporter)
to-report corridor-width
let patchs-visited count patches with
[used?]
let mean-distance mean [distance startpatch] of turtles
report patches-visited / mean-distance
end
• print the value of final-corridor-width to an output
go procedure
to go
ask turtles [move]
tick
if ticks >= 1000
[
let final-corridor-width corridorwidth
output-print word "corridor width "
final-corridor-width
stop
]
end
corridor-width
to-report corridor-width
let patches-visited count patches
with [used?]
let mean-distance mean [distance
start-patch] of turtles
report patches-visited / meandistance
end
move
to move
if elevation >=
[elevation] of max-one-of neighbors
[elevation]
[stop]
ifelse random-float 1 < q
[uphill elevation]
[move-to one-of neighbors]
set used? true
end
5.3 Analazing the Model
•
•
•
•
•
How corridor width output is affected from q
plot corridor width v.s. q
as q increases – corridor width falls as expected
but when q=1.0 corridor widthis <1.0
How can this be?
5.4 Time Series Resutls: Adding Plots and
File Output
to go
ask turtles [move]
plot corridor-width
if ticks >= 1000 [
...
stop]
end
add a ploter to tthe interface
give plot name “corridor width”
write the results of plots to a file
export-plot “corridor width”
word “corridor-output-for-q ” q
exporting plots to a file
• add the command to the end of go before the
program stops
export-plot “corridor width” word
“corridor-output-for-q” q
export-plot ploter_name filr_name
5.5 A Real Landscape
• real data from “ElevationData.txt”
• from books web side
• Programming Note:
– grid-based: x-coordinate, y-coordinate and a value
– one data line for each grid point
add to setup
file-open “ElevationData.txt”
while [not file-at-end?]
[
let next-x file-read
let next-y file-read
let next-elevation file-read
ask patch next-x next-y [set
elevation next-elevation]
]
file-close
next do
• determine dimensions of the world examining the
data file
• adjust the scale of the color for the new nax and
min values of the elevations
• initial positions of bfs in a 10x10 area
– randomly asign xcor and ycor of bfs
setxy (80 + radnom 10) (90 + radnom
10)
scaling color
let min-elevation min [elevation]
of patches
let max-elevation max [elevation]
of patches
ask patches [
set pcolor scale-color green
elevation min-elevation maxelevation
set used? false
]
5.6 Summary and Conclusions
• NetLogo for agent-based science
• Modeling a system of multiple agents
–
–
–
–
quantitative variables
analyzing ouputs
simulation experiments
real spatial data
• butterfly model – simple but...
• other environments
– movement of ideas people
– social networks
– economic or political lanscapes
Download