390 likes | 577 Views
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.
E N D
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 • Introduction • Observation of Corridors • Analazing the Model • Time Series Resutls: Adding Plots and File Output • A Real Landscape • 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 start-patch] 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 corridor-width 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 / mean-distance 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 max-elevation 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