Feedback Loop Example: Forest Resource Transport

Feedback Loop Example: Forest Resource Transport preview image

1 collaborator

Jm1_vsm James Millington (Author)

Tags

e&s_chansfeedback 

Tagged by James Millington about 12 years ago

feedback loop 

Tagged by James Millington about 12 years ago

positive feedback 

Tagged by James Millington about 12 years ago

transport 

Tagged by James Millington about 12 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 5.0 • Viewed 1320 times • Downloaded 36 times • Run 0 times
Download the 'Feedback Loop Example: Forest Resource Transport' modelDownload this modelEmbed this model

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:

  1. None: no difference between vertical and horizontal roads (both have friction = 0)
  2. Small-Diffc: a small difference between vertical and horizontal roads (i.e., vertical have friction = 0 and horizontal have friction = 1)
  3. Med-Diffc: an intermediate difference between vertical and horizontal roads (i.e., vertical have friction = 0 and horizontal have friction = 2)
  4. 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

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                              ;;
;;       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 about 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.