Tragedy of Commons
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
Comments and Questions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;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 almost 11 years ago by Young Joon Oh.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Tragedy of Commons.png | preview | Preview for 'Tragedy of Commons' | almost 11 years ago, by Young Joon Oh | Download |
This model does not have any ancestors.
This model does not have any descendants.