Simple Social Dynamic
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This is a simple model of emergence of social norms played on a grid.
HOW IT WORKS
Every period each player is randomly matched with one of their four neighbors in a cross pattern (above,below,left,right) and both have to pick A or B.
The payoffs from their choices are determined according to the Stag Hunt game:
A | B | |
A | 10,10 | 0,x |
B | x,0 | x,x |
x is the value of the slider payoff_B.
The players maximize the expected payoff - the average payoff from playing the chosen action against every one of the four neighbors.
The game captures a similar intuition as the famous Prisoner dilemma: a conflict between safety and cooperation. In particular, notice that A is payoff-dominant (it Pareto-dominates the other action, i.e. both players are strictly better off), while B is risk-dominant.
The model closely follows Durlauf and Young (2004).
HOW TO USE IT
Click setup to randomly populate the grid with players that take one of the two actions. You can manually change the action of any player using the two buttons. Adjust the slider to change the value of the maxmin payoff x. Then click Run. The model will stop once it reaches a stable configuration.
THINGS TO TRY
Try to change the risk-dominant action by setting the slider above and below 5.
References
Durlauf, Steven N., and H. Peyton Young, eds. Social dynamics. Vol. 4. Mit Press, 2004.
Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Comments and Questions
patches-own [ action ;; my action (0 or 1) total ;; sum of actions of 4 neighbor stable ;; is stable? ] to setup clear-all ask patches [ set action random 2 recolor-patch ] reset-ticks end to go let any-actions-changed? false ask patches [ set total (sum [action] of neighbors4) if total * 10 > payoff_B * 4 and action = 1 [ set stable 1 ] if total * 10 < payoff_B * 4 and action = 0 [ set stable 1 ] if total * 10 > payoff_B * 4 and action = 0 [ set stable 0 ] if total * 10 < payoff_B * 4 and action = 1 [ set stable 0 ] if total * 10 = payoff_B * 4 [ set stable 0 ] ] ifelse not all? patches [stable = 1] [ ask one-of patches with [stable = 0] [ let previous-action action if total * 10 > payoff_B * 4;;total * 2 + ( 4 - total ) * 2 [ set action 1 ] if total * 10 < payoff_B * 4 ;;total * 2 + ( 4 - total ) * 2 [ set action 0 ] if total * 10 = payoff_B * 4;;total * 4 + ( 4 - total ) * 0 = 2 ;;total * 2 + ( 4 - total ) * 2 [ set action (random 2) ] if action != previous-action [ set any-actions-changed? true ] recolor-patch ] ] [ if not any-actions-changed? [ stop] ] tick end to recolor-patch ;; patch procedure ifelse action = 0 [ set pcolor [35 95 164] ] [ set pcolor [255 147 79] ] end to set_action_one if mouse-down? [ ask patch mouse-xcor mouse-ycor [ set action 1 recolor-patch ] ] display end to set_action_zero if mouse-down? [ ask patch mouse-xcor mouse-ycor [ set action 0 recolor-patch ] ] display end
There are 4 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Simple Social Dynamic.png | preview | Preview for 'Simple Social Dynamic' | over 2 years ago, by Arthur Dolgopolov | Download |
This model does not have any ancestors.
This model does not have any descendants.