Tragedy of Commons

Tragedy of Commons preview image

1 collaborator

Young_joon_oh Young Joon Oh (Author)

Tags

collective action 

Tagged by Marzieh Jahanbazi over 9 years ago

commons 

Tagged by Marzieh Jahanbazi over 9 years ago

selfishness 

Tagged by Marzieh Jahanbazi over 9 years ago

tragedy of commons 

Tagged by Marzieh Jahanbazi over 9 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.4 • Viewed 574 times • Downloaded 34 times • Run 0 times
Download the 'Tragedy of Commons' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


TRAGEDY OF COMMONS MODEL By Young Joon Oh

This model is made in Nov. 2 . 2010 by Young Joon Oh at UT Dallas

INFORMATION

Definition :

When actors >= 2 and they should share the resource, they abuse the resource because of actors' selfishness. In the end, the resource gets exhausted.

Once the common has begun to be destroyed, it gets worse not only in the collective level, but in the individual level.
Reducing the common causes to decrease the Grass (in this model). As a result, sheep's health also become worse.

To solve this problem, collective action is needed.

EXPLANATION

Assumption :
1 tick = 1 day, 1 year = 360 ticks, a sheep's survival needs 360 energy for 1 year.
A sheep's initial energy = 35. 35 is basic energy for sheep.
A sheep's gestation period = about 5 months. So, if a sheep has 150 energy, it is regarded the sheep is well health conditin. So, a criterion for ideal health condition will be 150.

For simulation of Tragedy of Commons(ToC), it is very important to depict some factors as follows ;

(1) Re-growing grass

(2) Generating and Consuming Energy of Sheep and Grass

(3) Selfish Shepherds

For (1),
Dr. Manske's paper indicates it takes about 4 months for full-grown grass on average. I assume there is a common with full-grown grass. So, in this model, Green Grass has 120 green-rate(energy) initially. If the green-rate is exhausted, it re-grows after 240 ticks(i.e. 120+240 = 360). Thus, even though the energy is not exhausted, the grass begins to re-grow after 240 ticks.

For (2),
If a sheep gets to a grass, the sheep can get 3 units of energy, and the grass lose 1 unit of green-rate. However, the cumulative energy of sheep is 2, because it should consume 1 unit of energy to get to that grass.

So, if a sheep's cumulative energy = 360, it means the sheep already has enough energy to live for 1 year. From 360 to the basic energy,35, the sheep do not need to get more energy from grass. This is called 'Full'.

For (3),
Shepherds want to bring more sheep to the common, when some conditions are met.

First, all sheep's energy in the common > sheep's health criterion (like 150). It means all sheep he brought become very healthy. So, it is an incentive for a shepherd to bring more sheep for their health.

Second, energy of grass (green-rate) > sheep's health criterion. It means there is sufficient grass in the common to feed extra sheep, without worsening health of the current sheep in the common.

When 'regulation' is operated, the whole common will be divided by 4 parts.
Each kind of sheep can have own part of the common. After that, shepherds have just considered amount of grass in his own part of the common, not in the whole common.

HOW TO USE

  • Input - number : the initial number of each sheep

  • Slider - criterion : the criterion of healthy sheep

  • Switch - bring-new : if on, the shepherds can bring new sheep

  • Switch - sheep-y, sheep-b, sheep-r : if on, yellow, blue, and red sheep will appear

  • Switch - regulation : if on, each kind of sheep can be fed on its own grasses For white, north-west For yellow, south-west For blue, north-east For red, south-east.

REFERENCES

Llewellyn L. Manske, Grass Growth in Height, http://www.chaps2000.com/bin/ch2r3.pdf

http://www.sheep101.info

Comments and Questions

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

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;Tragedy of Commons ver. 4.2 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;  By  Young Joon Oh at UT Dallas

;;  11. 2 . 2010 


;; Focusing on "tick -> day" and "tick -> energy"


globals 
[dead new-sheep  ] 


breed [sheeps sheep ]
breed [sheep1s sheep1]
breed [sheep2s sheep2]
breed [sheep3s sheep3]


turtles-own [energy full ]
     
patches-own [green-rate grass-clock grass-clock1]



;;;;;;;;;;;;;;
;;; setup ;;;;
;;;;;;;;;;;;;;

to setup
  ;; (for this model to work with NetLogo's new plotting features,
  ;; __clear-all-and-reset-ticks should be replaced with clear-all at
  ;; the beginning of your setup procedure and reset-ticks at the end
  ;; of the procedure.)
  __clear-all-and-reset-ticks
  
 
 setup-patches
  


set-default-shape turtles "sheep"

create-sheeps number[
  set size 1.5
    set energy 35                                    
    set color white
  setxy random min-pxcor random max-pycor
  ]

ifelse sheep-y
[ create-sheep1s number [
    set size 1.5
  set energy 35
  set color yellow
  setxy random min-pxcor random min-pycor
  ] ][stop]

ifelse sheep-b
[   create-sheep2s number [
    set size 1.5
  set energy 35
  set color blue
  setxy random max-pxcor random max-pycor
   ]][stop]
 

ifelse sheep-r
[ create-sheep3s number [
    set size 1.5
  set energy 35
  set color red
  setxy random max-pxcor random min-pycor
   ]][stop]
end 

to setup-patches
  ask patches [ if pxcor <= 5 and pxcor >= -5 and pycor <= 5 and pycor >= -5 [set pcolor green set green-rate 120 ]  
  
    
                                                                                                 ; Assume : 1 patch is 1 acre, 1 acre can feed 1 sheep.
  ]
end 




;;;;;;;;;;;;
;;;;; go ;;;
;;;;;;;;;;;;

to go

 if ((sum [green-rate] of patches) / (121 * 120)) < 0.1 [type "No More Grass (Grass energy < 10 %)" stop ]
 if sum [energy] of turtles <= 0 [type "Sheep have No Energy" stop]
 
  move-sheeps
  eat-grass
  reproduce
  regrow-grass
  death
  regulations
  tick
  do-plots
end 

to move-sheeps
  
  if not regulation [
  ask turtles [fd 1 face max-one-of patches [green-rate] set energy energy - 1] 
 ; ask turtles-on patches [fd 1 face one-of patches with [pcolor = green] set energy energy - 1]   ; problem which is solved
 
  ]
end 

to eat-grass
 
 ask turtles with [full = 0] [if green-rate > 0    [
          set energy (energy + 3 )                    ; 1 grass can feed 1 sheep for 1 year(360 ticks), so the amount of energy 1 grass can give a sheep is 120*3
      set green-rate (green-rate - 1) ]]
 
 ask turtles with [energy >= 360] [set full 1]
 ask turtles with [full >= 1] [ ifelse energy > 35 [set full full + 1  ] [set full 0] ] 
   
  ask patches with [pxcor <= 5 and pxcor >= -5 and pycor <= 5 and pycor >= -5] [ if green-rate <= 0 [set pcolor black set grass-clock1 0 set grass-clock grass-clock + 1]]
    
  ask patches with [green-rate > 0 and green-rate <= 30 and grass-clock = 0] [set pcolor green - 4 set grass-clock1 grass-clock1 + 1]
  ask patches with [green-rate > 30 and green-rate <= 90 and grass-clock = 0] [set pcolor green - 2 set grass-clock1 grass-clock1 + 1]
  ask patches with [green-rate > 90 and grass-clock = 0] [set pcolor green set grass-clock1 grass-clock1 + 1]
end 

to regrow-grass
   
   ask patches with [grass-clock >= 1] [set grass-clock grass-clock + 1]
   
   ask patches with [grass-clock >= 1]  
   [if grass-clock >= 242 and grass-clock <= 362 and green-rate <= 120 [set grass-clock grass-clock + 1 set green-rate green-rate + 1]]
   
   ask patches [if grass-clock > 362 or green-rate > 120 [set grass-clock 0]]
   
   ask patches with [grass-clock1 >= 1 and grass-clock = 0] [if grass-clock1 >= 241 and green-rate < 120 [set green-rate green-rate + 1]]
   ask patches with [grass-clock1 >= 1 and grass-clock = 0] [if grass-clock1 >= 361 or green-rate >= 120 [set grass-clock1 0]]
end   

to reproduce
 
 if bring-new [ if not regulation [
   
   
    if sum [energy] of sheeps >= count sheeps * criterion and sum [green-rate] of patches > count sheeps * criterion [ create-sheeps 1 [set size 1.5 set color white setxy random min-pxcor random max-pycor set energy 35 set new-sheep new-sheep + 1]]
  
   if sum [energy] of sheep1s >= count sheep1s * criterion and sum [green-rate] of patches > count sheep1s * criterion and count sheep1s > 0 [ create-sheep1s 1 [set size 1.5 set color yellow setxy random min-pxcor random min-pycor set energy 35 set new-sheep new-sheep + 1]]
   
   if sum [energy] of sheep2s >= count sheep2s * criterion and sum [green-rate] of patches > count sheep2s * criterion and count sheep2s > 0 [ create-sheep2s 1 [set size 1.5 set color blue setxy random max-pxcor random max-pycor set energy 35 set new-sheep new-sheep + 1 ]]
   
   if sum [energy] of sheep3s >= count sheep3s * criterion and sum [green-rate] of patches > count sheep3s * criterion and count sheep3s > 0 [ create-sheep3s 1 [set size 1.5 set color red setxy random max-pxcor random min-pycor set energy 35 set new-sheep new-sheep + 1 ]]
   
 
   
]]
end 

to regulations
      
      if regulation [
   
   ask sheeps [fd 1 face max-one-of patches with [pxcor >= -5 and pxcor <= 0 and pycor <= 5 and pycor >= 0] [green-rate]  set energy energy - 1]
   
   
   ask sheep1s [fd 1 face max-one-of patches with [pxcor >= -5 and pxcor <= 0 and pycor >= -5 and pycor <= 0] [green-rate]  set energy energy - 1]
   
  ask sheep2s [fd 1 face max-one-of patches with [pxcor >= 0 and pxcor <= 5 and pycor <= 5 and pycor >= 0] [green-rate]  set energy energy - 1]
  
  ask sheep3s [fd 1 face max-one-of patches with [pxcor >= 0 and pxcor <= 5 and pycor >= -5 and pycor <= 0] [green-rate]  set energy energy - 1]

  

 if bring-new [

 if sum [energy] of sheeps > count sheeps * criterion and sum [green-rate] of patches with [pxcor >= -5 and pxcor < 0 and pycor <= 5 and pycor > 0 ] > count sheeps * criterion
  [ create-sheeps 1 [set size 1.5 set color white setxy random min-pxcor random max-pycor set energy 35 set new-sheep new-sheep + 1]]
  
   if sum [energy] of sheep1s > count sheep1s * criterion and sum [green-rate] of patches with [pxcor >= -5 and pxcor < 0 and pycor >= -5 and pycor < 0 ] > count sheep1s * criterion
    [ create-sheep1s 1 [set size 1.5 set color yellow setxy random min-pxcor random min-pycor set energy 35 set new-sheep new-sheep + 1]]
   
   if sum [energy] of sheep2s > count sheep2s * criterion and sum [green-rate] of patches with [pxcor > 0 and pxcor <= 5 and pycor <= 5 and pycor > 0 ] > count sheep2s * criterion
    [ create-sheep2s 1 [set size 1.5 set color blue setxy random max-pxcor random max-pycor set energy 35 set new-sheep new-sheep + 1 ]]
   
   if sum [energy] of sheep3s > count sheep3s * criterion and sum [green-rate] of patches with [pxcor > 0 and pxcor <= 5 and pycor >= -5 and pycor < 0 ] > count sheep3s * criterion
    [ create-sheep3s 1 [set size 1.5 set color red setxy random max-pxcor random min-pycor set energy 35 set new-sheep new-sheep + 1 ]]
    
   
      ]]
end  

to death
; ask turtles [if energy <= 0 [set dead dead + 1 die]]
end 
  



;;;;;;;;;;;;;;;;;;;;
;;;;;; plot ;;;;;;;;
;;;;;;;;;;;;;;;;;;;;

to do-plots
  set-current-plot-pen "sheep"
  plot count turtles
  
  
  set-current-plot-pen "grass"
  plot (count patches with [green-rate > 0]) 
  
  set-current-plot-pen "energy"
  plot sum [energy] of turtles / count turtles
end 

  
  

There is only one version of this model, created over 10 years ago by Young Joon Oh.

Attached files

File Type Description Last updated
Tragedy of Commons.png preview Preview for 'Tragedy of Commons' over 10 years ago, by Young Joon Oh Download

This model does not have any ancestors.

This model does not have any descendants.