1 / 55

MIS 643 Agent-Based Modeling and Simulation 2016/2017 Fall

Study the emergence of virtual corridors and the effects of butterfly's hilltopping behavior and topography. Implementing the model using NetLogo and ODD protocol.

bristol
Télécharger la présentation

MIS 643 Agent-Based Modeling and Simulation 2016/2017 Fall

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. MIS 643 Agent-Based Modeling and Simulation 2016/2017 Fall

  2. Outline Virtual Corridors of Butterflies From ODD to NetLogo Implementation

  3. Chapters 4,5 of RG-IABM

  4. Virtual Corridors of Butterflies • virtual corridores – Peer et al. (2005) • mate-finding by butterflies (bf) • “hilltopping” strategy - males and females • uphills for meet and mate • Simple model • formulation by ODD protocol

  5. Purpose • questions about virtual corridores (VC) • under what conditions • interactions of bfs hilltopping behavior and topograhpy • emergence of virtusl corridores • relatively nerrow paths bfs move • variabiity in bf. strategy affects formation of VCs

  6. 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 landscape

  7. Process Overview and Schedulling • Process – movement of the bfs. • at each time bfs. move one step • order of movements – not impotant • no interraction among bfs.

  8. Design Concepts • basic principle - virtual corridores • emergence – how corridores emerge from • 1 - adaptive movement behavior of bfs • 2 – topograhy of landscape • adaptive behavior – moving behavior of butterflies based on an emprical law • objective, learning, prediction – not included

  9. Design Concepts (cont.) • sensing – how bfs percive higher elevation • interraction – not included • stocasticity • – each bf. at each step move uphill its neighbors with probability q and • move random to its neighbors with probability 1-q

  10. Initilization • topography of the landscape • 1- artificial • 2- real values from a file • 500 bfs set to a patch

  11. Input Data • Environment is not chaning • not needed

  12. 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: global variable from a uiform distribution

  13. Submodels (cont.) • at each time step • each bf draws a random variable x • from a uniform distribution between 0.0 and 1.0 if x < q move uphill otherwise move randomly

  14. From ODD to NetLogo Implementation • Purpose – information tab model description • Entities, State variables and Scales • tutles-own [ ] • patches-own [ ] • globals [ ]

  15. From ODD to NetLogo Implementation • Process and Schedule – go • Design concepts • Initilization - setup • Input data – from file input • Submodels - processes called from go

  16. Entities State Variables Scales globals [] turtles-own [] patches-own [elevation] For a 150x150 landscape from settings – corner – buttom left max-pxcor: 149,max-pycor: 149 Square landscape – turn off world wrapper patch size 3 or so

  17. Initialization to setup ca ask patches [ ] reset-ticks end Templeate for initialization

  18. 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 ]

  19. 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 primitives:distancexy,scale-color set pcolor scale-color green elevation 0 100 Scales color

  20. Initialization - turtles crt 1 [ set sıze 2 setxy 85 95 ] create one turtle at 85 95 with a size of 2

  21. Process Schedule to go ask turtles [move] tick if ticks >= 1000 [stop] end to move end in go procedure primitives tick, ticks stop

  22. Submodels - move to move ifelse random-float 1 < q [uphill elevation] [move-to one-of neighbors] end

  23. Submodels - move probability q uphill with 1-q to random neighbor uphill move-to one-of define and initilize q

  24. 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

  25. 5.1 Introduction • modeling – not formulating and implementing • iterative process – modifying refining model

  26. The Problem • Problem: • where and how corridors are formed? • quantitative outputs to be analized • replace artificial landscape with a real topography

  27. Learning Objectives • version control • quantitative outputs and simulation experiments • slider or switchs for global variables, reporters • output window • time series plot • exporting to a file • importing data from a file

  28. 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 change as q or topography varies

  29. quantifying width • bfs can start and end – different places • Assume: • bfs stop – rich a local hilltop – • a patch higher than all its neighboringpatches • quantify width of the corridor – all bfs • #pathces visited – any bf divided by • mean distance – starting and edning locations – all bfs

  30. quantifying width • lower bound 1.0 when all bfs follow a streigth line • increases as bfs diverge • Analysis: • plot q v.s. corridor width

  31. First modifications • slider for q • from 0.0 to 1.0 with increments 0.01 • modify setup • create 50 bfs starting from same position • experiment with different q values • Programming Notes: moving variables to the interface • remove from globals • remove initialization in setup procedure • indicate with a comment

  32. modifying move • bfs stop when they rich a local hill • a patch with an elevation higher than 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

  33. right side of condition • of and max-one-of commands: • of: [reporter or agent variable] of agent or agentset

  34. right side of condition • 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

  35. width of the bf population • a - # of patches visited • b- mean distanc between bfs starting and ending positions • two new state variables • for each patch – keep track of whether a turtle ever visited it or not • for each turtle – store its starting patch

  36. width of the bf population • Add a boolean variable to pathces – used? patchs-own [used?] • turn to true is the patch is ever visited

  37. width of the bf population • Add a variable to turtles – start-patch turtles-own [start-patch] • set to the start patch when inilizing bfs

  38. 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

  39. move and go procedure • When a bf moves to a patch • set the patch variable to true • at the 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 • calculate and report corridor width • print the value of final-corridor-width to an output

  40. 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

  41. corridor-width reporter 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

  42. 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

  43. 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?

  44. 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 add an output to the interface

  45. add a ploter to tthe interface give plot name “corridor width” export-plot “corridor width” word “corridor-output-for-q ” q

  46. exporting plots to a file • write the results of 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

  47. write coridor width to output • print the final coridor width to an output widow in the interface • create and add an output to the interface • add the command to the end of go before the program stops output-print word "corridor width " final-corridor-width

  48. before program stops if ticks >= 1000 [ let final-corridor-width corridor-width output-print word "corridor width " final-corridor-width export-plot "corridor width" word "corridor-output-for-q" q stop ]

  49. go procedure to go ask turtles [move] plot corridor-width tick if ticks >= 1000 [ let final-corridor-width corridor-width output-print word "corridor width " final-corridor-width export-plot "corridor width" word "corridor-output-for-q" q stop ] end

  50. 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

More Related