Feedback Loop Example: Forest Resource Transport
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model illustrates a positive 'transport' feedback loop described in Millington (2013). In this type of feedback a line of reduced or increased resistance to flows of information and/or material results in increased or decreased rates of change in linked entities. This particular example represents the role of roads in tropical deforestation in the Amazon basin (e.g., Malanson et al. 2006), facilitating the flow of people and material from settled (core) regions to frontier (periphery) regions, and vice versa. A positive feedback loop is formed as greater flows of people and materials improve economic returns on activities at the periphery, which in turn stimulate improved and greater flows of materials and people along the roads to core markets and elsewhere. Large green circles indicate resources (e.g., forest), smaller dots indicate resource harvesters, grey lines are roads (darker, lower transport cost).
HOW IT WORKS
At initialization, the model environment contains four resources at the periphery each linked by a road to the core area at the centre of the model environment. Harvesters originate from the core area. Initially there are only four harvesters, one for each of the resources.
In each timestep harvesters move along roads towards either resource or core. Their speed of movement is restricted by the friction of the road (reflecting road quality and/or length). On arriving at a resource harvesters collect material from the resource, reducing its resource-level. Harvesters then return to the core area to deposit their harvest before returning again to the same resource for further harvest.
While at the core area, if a harvester meets another harvester who has not yet begun to harvest, the second harvester follows the first harvester to the resource. In this way a feedback is created, as roads with lower friction result in more harvesters using them because those using these roads visit the core (collecting new harvesters) more frequently.
HOW TO USE IT
First, decide what road friction levels you want to examine by selecting a road-friction choice:
- None: no difference between vertical and horizontal roads (both have friction = 0)
- Small-Diffc: a small difference between vertical and horizontal roads (i.e., vertical have friction = 0 and horizontal have friction = 1)
- Med-Diffc: an intermediate difference between vertical and horizontal roads (i.e., vertical have friction = 0 and horizontal have friction = 2)
- Large-Diffc: a large difference between vertical and horizontal roads (i.e, vertical have friction = 0 and horizontal have friction = 3)
Next, decide how many harvesters should be simulated (by moving the number-of-harvesters slider) and how much resource they can harvest in each visit to a resource (by moving the harvest-capacity slider).
To change the randomization of the simulation you can move the number-seed slider.
The simulation automatically speeds up once all harvesters have decided which resource they will harvest from. To slow subsequent simulation increase pause-duration.
THINGS TO NOTICE
Notice how roads with lower friction end up with more harvesters using them and consequently how resources connected by those roads to the core are depleted faster. The upper plot shows the number of harvesters in each of the colours through time and the lower plot shows the resources remaining in each resource (by colour).
THINGS TO TRY
Experiment with how different combinations of number of harvesters, harvest capacity and road friction result in different rates of depletion between resources.
CREDITS AND REFERENCES
Malanson, G. P., Zeng, Y., & Walsh, S. J. (2006). Landscape frontiers, geography frontiers: lessons to be learned. The Professional Geographer, 58(4), 383-396
Millington, J.D.A. (2013) Three types of spatial feedback loop in coupled human and natural systems. Ecology and Society [URL HERE]
Code licenced by James D.A. Millington (http://www.landscapemodelling.net) under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License (see http://creativecommons.org/licenses/by-nc-sa/3.0/)
Model and documentation available from http://openabm.org
Comments and Questions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; Feedback Loop Example: Forest Resource Transport December 2012 ;; ;; ;; ;; Code licenced by James D.A. Millington (http://www.landscapemodelling.net) ;; ;; under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 ;; ;; Unported License (see http://creativecommons.org/licenses/by-nc-sa/3.0/) ;; ;; ;; ;; Model and documentation available from http://openabm.org ;; ;; ;; ;; Model used in: ;; ;; Millington, J.D.A. (2013) Three types of spatial feedback loop in coupled ;; ;; human and natural systems. Ecology and Society [URL HERE] ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; breed [ resources resource ] ;the resources being harvested breed [ leaders leader ] ;initial harvesters breed [ followers follower ] ;harvesters that follow leaders globals [ core-x core-y ] patches-own [ friction ] resources-own [ resource-level ] turtles-own [ last-harvest ;location of where last harvest was made harvest-yield ;yield of resources harvested led-by ;leader being followed (for followers) ] to setup ca random-seed number-seed ask patches [ set pcolor 59 ] ;all patches, will be background if not changed below set-default-shape turtles "circle" set core-x 0 set core-y 0 ask patches with [pxcor = 0 ] ; vertical roads always have no friction [ set friction 0 set pcolor 8 ] ask patches with [pycor = 0 ] ; horizontal roads potentially have higher friction [ if(road-friction = "None") [ set friction 0 ] if(road-friction = "Small-Diffc") [ set friction 1 ] if(road-friction = "Med-Diffc") [ set friction 2 ] if(road-friction = "Large-Diffc") [ set friction 3 ] set pcolor 8 - (friction * 2) ] ;create resources at top and sides of model environment ask patches with [(pycor = 0 or pxcor = 0) and (pycor = min-pycor or pycor = max-pycor or pxcor = max-pxcor or pxcor = min-pxcor)] [ sprout-resources 1 [ set resource-level 100 set shape "circle" set size (resource-level / 10) ] ] let current-colour 62 ask resources [ set color current-colour set current-colour current-colour + 2 ] ;create harvesters at the centre of the model environment ask patch core-x core-y [ set pcolor grey set friction 2 sprout-leaders 4 [ set size 1 set harvest-yield 0 set last-harvest nobody set led-by self ] let current-heading 0 set current-colour 85 ask leaders [ set heading current-heading set color current-colour set current-heading current-heading + 90 set current-colour current-colour + 10 set size size * 2 ] sprout-followers number-of-harvesters [set color blue set size 1 set harvest-yield 0 set last-harvest nobody set size size * 2] ] setup-plots reset-ticks end to go if(not any? resources) [ stop ] ;once all resources have been harvestedm, stop simulation ask leaders [ if(harvest-yield = 0 and last-harvest != nobody) [ face last-harvest ] ;all resource gone move harvest deposit-harvest ] ask followers [ if(last-harvest != nobody) [ move harvest deposit-harvest ] ] if(any? followers with [ last-harvest = nobody]) [ wait 0.1 ] ;pause while followers choosing leaders to observe feedback easier if(pause-duration > 0) [ wait pause-duration ] ;pause to view transport easier if desired ask resources [ set size resource-level / 10 ] tick end to move ;movement of harvesters is modified by the friction of the patch they travel across ;if at the core, add a random delay so that harvesters separate out (so we can see them) ifelse([pxcor] of patch-here = core-x and [pycor] of patch-here = core-y) [ let f random 2 if(f = 1) [ fd 5 - [friction] of patch-here ] ] [ fd 5 - [friction] of patch-here ] end to harvest ;collect material from resource and turn around if(any? resources-here) [ set harvest-yield harvest-capacity ask resources-here [ set resource-level resource-level - harvest-capacity ] set last-harvest patch-here face patch core-x core-y ask resources-here [ if(resource-level <= 0) [ die ] ] ] end to deposit-harvest ;if harvester holds material and is back at the core area, release this material and turn to face last harvest location if(harvest-yield > 0 and [pxcor] of patch-here = core-x and [pycor] of patch-here = core-y) [ set harvest-yield 0 face last-harvest ;if there are harvesters at the core not currently following another harvester, tell one of them to harvest from the location I am harvesting at if(any? followers-here with [last-harvest = nobody]) [ ask one-of followers-here with [last-harvest = nobody] [ set last-harvest [last-harvest] of myself set led-by myself set color [color] of myself face last-harvest ] ] ] end
There is only one version of this model, created almost 12 years ago by James Millington.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Feedback Loop Example: Forest Resource Transport.png | preview | Preview for 'Feedback Loop Example: Forest Resource Transport' | over 11 years ago, by James Millington | Download |
This model does not have any ancestors.
This model does not have any descendants.