# Tragedy of Commons

### 1 collaborator

Young Joon Oh (Author)

### Tags

collective action

Tagged by Marzieh Jahanbazi about 10 years ago

commons

Tagged by Marzieh Jahanbazi about 10 years ago

selfishness

Tagged by Marzieh Jahanbazi about 10 years ago

tragedy of commons

Tagged by Marzieh Jahanbazi about 10 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.4 • Viewed 627 times • Downloaded 37 times • Run 0 times

## 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

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

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