Evolution of sustainability through monitoring and punishment
Model was written in NetLogo 6.1.1
•
Viewed 745 times
•
Downloaded 37 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Model Information and Materials
Model Google Drive Link: https://drive.google.com/open?id=1hWnj2NiNJ6YGmRDYOAMDVXY61kF-MB1M
Model GUI overview: https://drive.google.com/open?id=1Ji6_MOWL6SRLqeuGGP7zGLzS8yfrnVKn
References and Citation
For this model:
- Hanisch, S. (2017). Evolution, resources, monitoring and punishment. GlobalESD NetLogo Models. http://NetLogo.GlobalESD.org,
For the NetLogo-Software:
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Licence

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
turtles-own [
harvestPref
harvest-amount
punisher?
aware-of-who
energy
harvest
punished?
rs
]
patches-own [ resource ]
globals [
commons
commonsResources
harvestTraits
]
to setup
clear-all
ask n-of Number-Agents patches [
sprout 1 [
set shape "circle"
set size 0.8
set punished? false
set aware-of-who []
set rs 0
ifelse random-float 100 < Percent-Sustainables
[set harvestPref "low"] ;; determine the harvest preference (high or low)
[set harvestPref "high"]
ifelse random-float 100 < Percent-Punishers
[set punisher? true] ;; determine the harvest preference (high or low)
[set punisher? false]
update-color ;; change the color of the agent on the basis of the strategy
set energy Living-costs + 1]
]
ask patches [
set resource Carrying-capacity
set pcolor scale-color brown resource 0 (Carrying-capacity + 30) ]
reset-ticks
end
;;;;;;; Main routine ;;;;;;
to go
if count turtles = 0 [stop]
ask turtles
[ifelse harvestPref = "low"
[set harvest-amount Harvest-sustainable]
[ set harvest-amount Harvest-greedy]
set aware-of-who []
harvesting
]
sense-cheaters
punish
ask turtles
[ set energy energy + harvest
expend-energy
reproduce
death]
ask patches [
regrow
recolor]
tick
end
to harvesting
ifelse Punishment = "suspend harvest once"
[ifelse punished? = false
[harvest-commons]
[set harvest 0]
]
[harvest-commons]
set punished? false
end
to harvest-commons ;; from Waring et al., 2017
set harvest 0
; define the patches withing the local Moore neighborhood on which the current agent may harvest.
set Commons (patch-set neighbors patch-here) ;; set list of patches to harvest from to include all neighboring patches
set commonsResources sum ([resource] of Commons) ;; sums all of the resources in my commons
let commonsList sort-on [resource] Commons ;; sort the list by the amount of resource on the patch
set commonsList reverse commonsList ;; reverse the sort list so it is largest to smallest
ifelse commonsResources < harvest-amount ;; if the total commons are less than what the agent wants to harvest
[ set harvest (commonsResources); - ( count myCommons * 0.1 ))
ask Commons [ set resource 0 ]
move-away
]
[
while [harvest < harvest-amount][ ;; while you are still in need
;; harvest some resource from the neighborhood
foreach commonsList [ ?1 ->
ifelse [resource] of ?1 <= (harvest-amount - harvest)
[set harvest (harvest + [resource] of ?1 )
ask ?1 [set resource 0]
]
[ask ?1 [
set resource (resource - ([harvest-amount] of myself - [harvest] of myself))
]
set harvest harvest-amount
]
] ;; end foreach
] ;; end while
] ;; end second part of ifelse commonsResources
end
to move-away
let next-patch max-one-of (neighbors with [not any? turtles-here]) [resource]
if next-patch != nobody
[move-to next-patch
set energy energy - 1
]
end
to sense-cheaters
ask turtles with [punisher? = true]
[ set harvest harvest - Costs-perception
let cheaters (turtles-on neighbors) with [harvestPref = "high"]
set aware-of-who n-of ( Perception-accuracy / 100 * count cheaters) cheaters
]
end
to punish
ask turtles with [ harvestPref = "high" and punished? = false]
[let punishers (turtles-on neighbors) with [ member? myself [aware-of-who] of self]
if any? punishers
[ set punished? true
if Punishment = "kill"[die]
if Punishment = "pay fine"
[set harvest harvest - Fine
set punished? false
ask turtles-on neighbors [set harvest harvest + (Fine / (count turtles-on neighbors) )]
]
ask punishers [
set harvest harvest - ( Costs-punishment / count punishers)
]
]
]
end
to expend-energy
set energy energy - Living-costs
end
to reproduce
let birthrate 0.001 * energy
if random-float 1 < birthrate [
let destination one-of neighbors with [not any? turtles-here]
if destination != nobody [
hatch 1 [
move-to destination
set punished? false
set aware-of-who []
mutate
set energy ([energy] of myself / 2)]
]
set energy (energy / 2)
]
end
;; modify the children of agents according to the mutation rate
to mutate ;; turtle procedure
if random-float 100 < Mutation-rate
[
ifelse harvestPref = "high"
[set harvestPref "low"]
[set harvestPref "high"]
]
if random-float 100 < Mutation-rate
[ ifelse punisher? = true
[set punisher? false]
[set punisher? true ]
]
update-color
end
to update-color
ifelse harvestPref = "low"
[ ifelse punisher? = true
[set color green ]
[set color turquoise]
]
[ ifelse punisher? = true
[set color orange ]
[set color red]
]
end
to death
if energy <= 0 [ die ]
if random-float 100 < Death-rate [ die ]
end
to regrow
ifelse resource > 0
[set resource ceiling (resource + ((Growth-rate * resource) * (1 - (resource / Carrying-capacity )))) ]
[set resource 0.1 ]
end
to recolor
set pcolor scale-color brown resource 0 (Carrying-capacity + 30)
end
There is only one version of this model, created over 4 years ago by Susan Hanisch.
Attached files
| File | Type | Description | Last updated | |
|---|---|---|---|---|
| Evolution of sustainability through monitoring and punishment.png | preview | Preview for 'Evolution of sustainability through monitoring and punishment' | over 4 years ago, by Susan Hanisch | Download |
This model does not have any ancestors.
This model does not have any descendants.
Download this model