Evolution of sustainability through monitoring and punishment
Model was written in NetLogo 6.1.1
•
Viewed 361 times
•
Downloaded 15 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 3 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 3 years ago, by Susan Hanisch | Download |
This model does not have any ancestors.
This model does not have any descendants.