Evolution of sustainability through monitoring and punishment GERMAN
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Modellinformationen
Alle Informationen und Zusatzmaterialien zum Modell können von diesem Google Drive Ordner heruntergeladen werden: https://drive.google.com/drive/folders/1OQ-llCmKvwZULosflYvLyvSxzj43rXlL?usp=sharing
Literaturangaben und Zitierweise
Für das Modell selbst:
- Hanisch, S. (2018). Evolution Ressourcen mit Wahrnehmung und Bestrafung. EvoLeipzig NetLogo Modelle. http://netlogo.evoleipzig.de
 
Für die NetLogo-Software:
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
 
Lizenz

Dieses Werk ist unter einer Creative Commons Lizenz vom Typ Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International zugänglich. Um eine Kopie dieser Lizenz einzusehen, konsultieren Sie https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
Comments and Questions
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 Anzahl-Agenten patches [
    sprout 1 [
    set shape "circle"
      set size 0.8
      set punished? false
      set aware-of-who []
      set rs 0
    ifelse random-float 100 < Prozent-Nachhaltige
     [set harvestPref "low"]  ;; determine the harvest preference (high or low)
     [set harvestPref "high"]
    ifelse random-float 100 < Prozent-Bestrafer
     [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 Lebenshaltungskosten + 1]
  ]
  ask patches [
    set resource Tragfähigkeit
    set pcolor scale-color brown resource  0 (Tragfähigkeit + 30) ]
  reset-ticks
end 
;;;;;;; Main routine ;;;;;;
to go
  if count turtles = 0 [stop]
  ask turtles
   [ifelse harvestPref = "low"
      [set harvest-amount Erntemenge-nachhaltig]
      [ set harvest-amount Erntemenge-gierig]
    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 Strafe = "Ernte einmal aussetzen"
  [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 - Kosten-Wahrnehmung
     let cheaters  (turtles-on neighbors) with [harvestPref = "high"]
     set aware-of-who n-of  ( Erkennungsgrad  / 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 Strafe = "töten"[die]
      if Strafe = "Strafgebühr zahlen"
       [set harvest harvest  - Strafgebühr
        set punished? false
        ask turtles-on neighbors [set harvest harvest  + (Strafgebühr / (count turtles-on neighbors) )]
       ]
       if Strafe = "verbannen"
        [move-to one-of patches with  [not any? turtles-here and distance myself > 10  ]]
      ask punishers [
        set harvest harvest  - ( Kosten-Bestrafung / count punishers)
      ]
     ]
  ]
end 
to expend-energy
  set energy energy - Lebenshaltungskosten
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 < Mutationsrate
    [
    ifelse harvestPref = "high"
    [set harvestPref "low"]
    [set harvestPref "high"]
    ]
    if random-float 100 < Mutationsrate
    [ 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 < Sterberate [ die ]
end 
to regrow
  ifelse resource > 0
  [set resource ceiling (resource + ((Wachstumsrate * resource) * (1 - (resource / Tragfähigkeit )))) ]
  [set resource 0.1 ]
end 
to recolor
  set pcolor scale-color brown resource  0 (Tragfähigkeit + 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 GERMAN.png | preview | Preview for 'Evolution of sustainability through monitoring and punishment GERMAN' | 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