Public Goods Game
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Implementation if Public Goods Game on a square lattice. Details of the game can be found in the Wikipedia article https://en.wikipedia.org/wiki/Publicgoodsgame
HOW IT WORKS
Turtles play Public Goods Game. The
HOW TO USE IT
The model has the follwoing parametres:
world-size
- size of the lattice used in the simulationneighborhood-type
- the neighbourhood used to play an elementay game (von Neumann or Moore)noise-factor
- thermal noise in the system, used in the Fermi-Dirac function for the imitationsynergy-factor
- multipicatice constant in the Public Goods Game, used to calculate a payoff of a single game
THINGS TO TRY
Try to observe how the noise-factor
and synergy-factor
influence the fraction of players with free-rider strategy.
EXTENDING THE MODEL
Only fixed types of neighborhood are implemented. This cane be extended to the neighbourhoods with random number of neighbours.
Als, one can include movement of the turtles.
NETLOGO FEATURES
This implementation is based on turtles, and as such it can be extended to include te movement of the agents.
RELATED MODELS
(models in the NetLogo Models Library and elsewhere which are of related interest)
CREDITS AND REFERENCES
- Public goods game, https://en.wikipedia.org/wiki/Publicgoodsgame
- Axelrod, Robert, The Evolution of Cooperation, Basic Books, 1984.
Comments and Questions
;; ;; turtles atributes ;; turtles-own [ contribution ;; player's contribution: 1 - contributor, green, 0 - free-rider, black income ;; income from the last round neighborhood ;; group of players used for playng the game ] ;; ;; setup the world ;; to setup clear-all setup-world setup-turtles reset-ticks end ;; ;; main subroutine ;; to go ;; play the public goods game for all turtles ask turtles [ play-pgg ] ;; udate the strategy using the cumulative income from the round ask turtles [ ;; calculate new strategy imitate-strategy ;; update visual representation update-colors ;; reset the income for the next round set income 0 ] tick end ;; ;; world initialization ;; to setup-world ;; make the world with custom size resize-world 0 (world-size - 1) 0 (world-size - 1) ;; heuristic scaling of the patch size set-patch-size floor ( 64 / (sqrt world-size) ) ask patches [ ;; make all patches white set pcolor white ;; add one turtle to each patch sprout 1 ] end ;; ;; setup routine ;; contains selection of the initial strategies ;; to setup-turtles ask turtles [ ;; initializa the income set income 0 ;; randomle assign initial strategies ifelse random-float 1.0 < 0.5 [ set contribution 1 ;; cooperator ] [ set contribution 0 ;; no contribution, free-rider ] update-colors ] end ;; ;; helper function to update visual aspects of turtles ;; to update-colors ifelse contribution = 1 [ set color green ] [ set color black ] end ;; ;; evolution routine ;; to play-pgg ;; choose which neighborhood to use (ifelse neighborhood-type = "von Neumann" [ set neighborhood neighbors4 ] neighborhood-type = "Moore" [ set neighborhood neighbors ] ) ;; calculate the payoff let game-payoff synergy-factor * (contribution + sum [ contribution ] of turtles-on neighborhood) / (1 + count turtles-on neighborhood) set income income + game-payoff - contribution ask turtles-on neighborhood [ set income income + game-payoff - contribution ] end to imitate-strategy ;; select one of the neighbors let my-neighbor one-of turtles-on neighborhood let my-neighbor-income [ income ] of my-neighbor ;; select new strategy using Fermi-Dirac function if random-float 1.0 < 1 / (1 + exp ( ( income - my-neighbor-income ) / noise-factor ) ) [ set contribution [ contribution ] of my-neighbor ] end ;; ;; reporters ;; to-report cooperators-fraction report count turtles with [ contribution = 1 ] / count turtles end
There is only one version of this model, created about 2 years ago by Jaroslaw Miszczak.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Public Goods Game.png | preview | Preview for 'Public Goods Game' | about 2 years ago, by Jaroslaw Miszczak | Download |
This model does not have any ancestors.
This model does not have any descendants.