Home Download Help Resources Extensions FAQ References Contact Us Donate Models: Library Community Modeling Commons User Manuals: Web Printable Chinese Czech Japanese 
NetLogo User Community Models(back to the NetLogo User Community Models) Prisoner's dilemma 3_0by Lasse Lindqvist (Submitted: 03/06/2012)
WHAT IS IT?
This model is a multiplayer version of the iterated prisoner's dilemma. It is intended to explore the strategic implications that emerge when the world consists entirely of prisoner's dilemma like interactions. If you are unfamiliar with the basic concepts of the prisoner's dilemma or the iterated prisoner's dilemma, please refer to the PD BASIC and PD TWO PERSON ITERATED models found in the PRISONER'S DILEMMA suite. HOW IT WORKS
The PD N PERSON ITERATED model demonstrates an interesting concept: When interacting with someone over time in a prisoner's dilemma scenario, it is possible to tune your strategy to do well with theirs. Each possible strategy has unique strengths and weaknesses that appear through the course of the game. For instance, always defect does best of any against the random strategy, but poorly against itself. Titfortat does poorly with the random strategy, but well with itself.
This makes it difficult to determine a single "best" strategy. One such approach to doing this is to create a world with multiple agents playing a variety of strategies in repeated prisoner's dilemma situations. This model does just that. The turtles with different strategies wander around randomly until they find another turtle to play with. (Note that each turtle remembers their last interaction with each other turtle. While some strategies don't make use of this information, other strategies do.)
Payoffs
Each turtle's payoff for each round will determined as follows:
 Partner's Action
(Note: This way of determining payoff is the opposite of how it was done in the PD BASIC model. In PD BASIC, you were awarded something bad jail time. In this model, something good is awarded money.) HOW TO USE IT
Buttons:
SETUP: Setup the world to begin playing the multiperson iterated prisoner's dilemma. The number of turtles and their strategies are determined by the slider values.
GO: Have the turtles walk around the world and interact.
GO ONCE: Same as GO except the turtles only take one step.
NEW ROUND: You can calculate new population sizes for each strategy according to how they have managed in the game. First, stop the simulation, then press "New Round" and this sets new population sizes according to simple evolutionary equations.
Inputs:
MAXTICKS  This is the maximux number of games that are to be played between turtles before the simulation stops. You can set this to any positive(!) integer. The only limit is the one set by NetLogo programming language (2^53, about 9 quadrillion).
DOPOPPLOT  This is just to help you plot population sizes if you need to do it right now and then.
RESET PLOT  Does what it says. Resets the population plot.
TEST POPULATION FOR DIFFERENT VALUES OF TREMBLINGHAND  Try this out, and model simulates the population with every possible value of trembling hand. It gives you nice output to export to Spreadsheet if you like.
TEST POPULATION FOR DIFFERENT VALUES OF MISTAKEHEARING  Try this out, and model simulates the population with every possible value of trembling hand. It gives you nice output to export to Spreadsheet if you like.
Sliders:
TREMBLINGHANDPROB  This is the probability that turtle makes a mistake when it tries to choose between coop and defect. Nota that unforgiving cannot make mistakes. You can change it in the code if you like.
MISTAKEHEARINGPROB  This is the probability that turtle makes a mistake in observing what its opponent chose last time. Turtle still gets the amount of points it should, but it thinks that the opponent defected when it really cooperated or the other way around. With mistakehearingprob unequale to zero, for example titfortatstrategies can get into vicious revengecycles when one of them mistakes opponents coop for defection.
NSTRATEGY: Multiple sliders exist with the prefix N then a strategy name (e.g., ncooperate). Each of these determines how many turtles will be created that use the STRATEGY. Strategy descriptions are found below:
Strategies:
RANDOM  randomly cooperate or defect
COOPERATE  always cooperate
DEFECT  always defect
TITFORTAT  If an opponent cooperates on this interaction cooperate on the next interaction with them. If an opponent defects on this interaction, defect on the next interaction with them. Initially cooperate.
UNFORGIVING  Cooperate until an opponent defects once, then always defect in each interaction with them.
UNKNOWN  This strategy is included to help you try your own strategies. It currently defaults to TitforTat.
TWOTITSFORTAT  Cooperates, unless opponent has defected in previous interaction or before that.
THREETITSFORTAT  Cooperates, unless opponent has defected in any of the three previous interactions.
TITFORTWOTATS  Cooperate if opponent has cooperated in at least one of previous two interactions. Start with cooperation.
TITFORTHREETATS  Cooperate if opponent has cooperated in at least one of previous three interactions. Start with cooperation.
MAJORITY  Cooperate if opponent has cooperated in majority of three previous interactions. Starts with cooperation.
Plots:
AVERAGEPAYOFF  The average payoff of each strategy in an interaction vs. the number of iterations. This is a good indicator of how well a strategy is doing relative to the maximum possible average of 5 points per interaction.
POPULATION SIZES  If you use Doevolution, this plots the population sizes after every round. THINGS TO NOTICE
Set all the number of player for each strategy to be equal in distribution. For which strategy does the averagepayoff seem to be highest? Do you think this strategy is always the best to use or will there be situations where other strategy will yield a higher averagepayoff?
Set the number of ncooperate to be high, ndefects to be equivalent to that of ncooperate, and all other players to be 0. Which strategy will yield the higher averagepayoff?
Set the number of ntitfortat to be high, ndefects to be equivalent to that of ntitfortat, and all other playerst to be 0. Which strategy will yield the higher averagepayoff? What do you notice about the averagepayoff for titfortat players and defect players as the iterations increase? Why do you suppose this change occurs?
Set the number ntitfortat to be equal to the number of ncooperate. Set all other players to be 0. Which strategy will yield the higher averagepayoff? Why do you suppose that one strategy will lead to higher or equal payoff?
THINGS TO TRY
1. Observe the results of running the model with a variety of populations and population sizes. For example, can you get cooperate's average payoff to be higher than defect's? Can you get TitforTat's average payoff higher than cooperate's? What do these experiments suggest about an optimal strategy?
2. Currently the UNKNOWN strategy defaults to TITFORTAT. Modify the UNKOWN and UNKNOWNHISTORYUPDATE procedures to execute a strategy of your own creation. Test it in a variety of populations. Analyze its strengths and weaknesses. Keep trying to improve it.
3. Relate your observations from this model to real life events. Where might you find yourself in a similar situation? How might the knowledge obtained from the model influence your actions in such a situation? Why?
4. Look at below the playground and you find tremblinghandprob, which is the probability of making the wrong move. Try changing this with tftstrategies and see what happens. See also the mistakehearingprob which is the probability of seeing what opponent did the wrong way. What is the difference between these two? EXTENDING THE MODEL
Relative payoff table  Create a table which displays the average payoff of each strategy when interacting with each of the other strategies.
Complex strategies using lists of lists  The strategies defined here are relatively simple, some would even say naive. Create a strategy that uses the PARTNERHISTORY variable to store a list of history information pertaining to past interactions with each turtle.
Spatial Relations  Allow turtles to choose not to interact with a partner. Allow turtles to choose to stay with a partner.
Environmental resources  include an environmental (patch) resource and incorporate it into the interactions.
NETLOGO FEATURES
Note the use of the TOREPORT primitive in the function CALCSCORE to return a number
Note the use of lists and turtle ID's to keep a running history of interactions in the PARTNERHISTORY turtle variable.
Note how agent sets that will be used repeatedly are stored when created and reused to increase speed.
RELATED MODELS
PD Basic
PD Two Person Iterated
PD Basic Evolutionary COPYRIGHT NOTICE
Copyright 2002 Uri Wilensky. All rights reserved.
Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed:
This model was created as part of the projects: PARTICIPATORY SIMULATIONS: NETWORKBASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs)  grant numbers REC #9814682 and REC0126227.
This model and this guide have been expanded by Lasse Lindqvist (lasse.lindqvist@hotmail.com) in 2012. I release all my edits and improvements to public domain. Note that the original copyright of Uri Wilensky still stands.
The original version can be found in Netlogo Models Library under Social Science  (unverified)  Prisoner's Dilemma and by choosing PDNPerson Iterated. It can also be found here: http://ccl.northwestern.edu/netlogo/models/PDNPersonIterated

(back to the NetLogo User Community Models)