This game-theory simulator can play a number of different games
- Pure Only pure strategies are only allowed. Worth varying:
- The biome sizes
- The probability of adoption and mutation
- The initial population proportions
- Pure and Perfect pure strategies and perfect mixed are in play here.
- Imperfect only the imperfect_mixed strategies are present. Vary:
- The strength of adoption
- The probability of mutation
- pure_rock always plays rock
- pure_scissors always plays scissors
- pure_paper always plays paper
- perfect_mixed chooses rock, paper or scissors with an equal probability
- imperfect_mixed chooses rock, paper or scissors with an unequal probability
The Prisoner's Dilemma demonstrates how simple rules can lead to the emergence of widespread cooperation, despite the Defection strategy dominating each individual interaction game. However, it is also interesting for another reason: it is known to be sensitive to the activation regime employed in it.
- All Strategies implements all the below strategies against each other, tit_for_tat will usually win, but consider varying:
- The initial population sizes
- all_c always cooperates
- all_d always defects
- tit_for_tat cooperates on the first move then plays what its opponent played the previous move (Rapoport & Chammah 1965).
- spiteful cooperates until the opponent defects and thereafter always defects (Axelrod 2006). Sometimes also called grim.
- random chooses cooperate or defect at random.
- biomes. Biomes are areas of homogenous strategies, they are squares on the grid and are dictated by the biome_size, an attribute of the model module.
run.py
is the entry point for the front-end simulations.agent.py
: contains the agent class which dictates how the agents play each other. Here the strategies of the agents are determined and the evolution of the agent's strategies is determinedmodel.py
: contains the model level data including the position of all the agents and the agentschedule
. Thedatacollector
collects data about the populations of each strategy.config.py
is the interpreter of the json config files.logger.py
provides the format for including logger statements as part of the codeserver.py
runs the visualisation element of the program. Agents are represented with a percentage of their RBG colour while as the probabilities that they will play Rock, Paper or Scissors. The datacollector info is outputted as a chart.
Epstein, J. Zones of Cooperation in Demographic Prisoner's Dilemma. 1998.
Optimal Strategies of the Iterated Prisoner’s Dilemma Problem for Multiple Conflicting Objectives
Non-linear dynamics of rock-paper-scissors with Mutations
Cyclic dominance in evolutionary games: a review
Oscillitory dynamics of Rock-Paper-Scissors
Effects of competition on pattern formation in the rock-paper-scissors game
Mobility promotes and jeopardises biodiversity in rock-paper scissors game
The Influence of Mobility Rate on Spiral Waves in Spatial Rock-Paper-Scissors Games
Nonlinear Aspects of Competition Between Three Species
Noise and Correlations in a Spatial Population Model with Cyclic Competition
A textbook like paper describing the fundementals of evolutionary games, cited as the founding paper of the field. Evolutionary games and population Dynamics
Mobility promotes and jeopardises biodiversity in rock-paper scissors game
1994, a fundemental paper that started the field off Vortices and Strings in Model ecosystems
Volunteering leads to rock–paper–scissors dynamics in a public goods game