Name Game
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model illustrates the Name Game, a model of social behavior inspired by linguistic conventions. This model consists of a population playing a series of 2-person interactions ("pairwise interaction") in which the two agents attempt to play the same strategy, represented by a random number. The set of possible pairs is determined by a social network that is either fully connected, a ring lattice, or a random graph.
HOW IT WORKS
In each round, an edge of the network (a pair of players) is randomly selected to play a 2-person coordination game. Each agent chooses a strategy by selecting uniformly from the set of strategies observed in previous interactions. If the agent has not observed any interactions previously, they invent a new strategy. When two agents successfully choose the same strategy, they forget all strategies except the succssful strategy.
The network initially displays no connections. As agents interact, network connections appear.
HOW TO USE IT
SETUP sets up the network and population.
GO runs the model one round at a time.
The TOPOLOGY selector chooses a network structure.
The DEGREE slider determines the number of network neighbors each agent has.
N determines the number of nodes.
THINGS TO NOTICE
No matter what network setting you use, agents will always converge on a shared convention if you let the model run long enough. However, the dynamics vary based on network properties. For example, random and fully connected networks converge much faster than lattice networks.
Tn the Name Game, the lattice exhibits a fairly long phase in which just a few or even 2 names circulate around the network. This doesn't appear in the full network, however - why not?
THINGS TO TRY
In both a ring lattice and a random network, agents have the same number of ties. Run the model in both types of networks, keeping DEGREE very small, so that agents interact with only a few neighbors. Compare the speed of coordination between the two networks. Now gradually increase the number of neighbors - what happens to the difference between the two networks?
EXTENDING THE MODEL
There are many different ways to model pairwise coordination. What if agents select strategy based on popularity? What if they prefer some solutions over others?
RELATED MODELS
See also "Complex Contagions" and "Distribution Game" in this package.
CREDITS AND REFERENCES
NAME GAME: Baronchelli, A., Dall’Asta, L., Barrat, A., & Loreto, V. (2006). Topology-induced coarsening in language games. Physical Review E, 73(1), 015102.
STAG HUNT: Ellison, G. (1993). Learning, local interaction, and coordination. Econometrica: Journal of the Econometric Society, 1047-1071.
Comments and Questions
;; creates a new lattice globals [ spoken value-ab value-aa value-ba value-bb k this-cluster my-palette ] turtles-own [ inventory memory cluster myword ] to setup clear-all ask patches [ set pcolor white ] set my-palette [ [255 127 39] [255 0 0] [255 255 0] [0 255 0] [0 64 128] [0 255 255] [128 128 255] [128 0 128] [255 0 128] [128 128 0] [0 0 0] [133 122 122] [255 127 39] [255 0 0] [255 255 0] [0 255 0] [0 64 128] [0 255 255] [128 128 255] [128 0 128] [255 0 128] [128 128 0] [0 0 0] [133 122 122] ] set k degree if topology = "Fully Connected" [ setup-fc ] if topology = "Ring Lattice" [ setup-ringlat ] if topology = "Random" [ setup-erdos-renyi ] ask links [ set color grey set hidden? true ] ask turtles [ construct-agent ] reset-ticks end to go let thislink one-of links let pair [who] of [both-ends] of thislink ask links [ set color [ 197 197 197] set thickness 0.1 ] ask thislink [ set hidden? false set color red set thickness 0.3 ] let switch random 2 let speaker item switch pair let hearer item (1 - switch) pair set speaker turtle speaker set hearer turtle hearer if length [inventory] of speaker = 0 [ ask speaker [ invent-word ] ] set spoken one-of [inventory] of speaker ; Success! ifelse length filter [ [?1] -> ?1 = spoken ] [ inventory ] of hearer > 0 [ ask hearer [ set inventory (list spoken) set-color-ng spoken ] ask speaker [ set inventory (list spoken) ] ] [ ask hearer [ set inventory lput spoken inventory ] ] ask speaker [ set-color-ng spoken ] tick end to construct-agent set inventory [] set memory n-values count link-neighbors [ 1 ] ; set memory n-values count link-neighbors [ 2 ] ; set memory n-values count link-neighbors [ (random 2) + 1 ] set color black set shape "circle" end to set-color-ng [ value ] ifelse N > 24 [ set color value ] [ let this-color item 0 [who] of turtles with [ myword = value ] set color item this-color my-palette if this-color < 12 [ set shape "circle" ] if this-color >= 12 [ set shape "circle" ] ] end to invent-word let new-word random 100000000000 set inventory lput new-word inventory set myword new-word end to setup-ringlat crt N [ set color black ] wire-ringlat end to wire-ringlat layout-circle (sort turtles) max-pxcor - 1 layout-circle (sort turtles with [ who mod 2 = 0] ) max-pxcor - 4 ;; iterate over the turtles let ni 0 while [ni < count turtles] [ ;; make edges with the next two neighbors ;; this makes a lattice with average degree of 4 let z 1 while [z <= floor (k / 2)] [ ask turtle ni [ create-link-with turtle ((ni + z) mod count turtles) ] set z z + 1 ] set ni ni + 1 ] end to setup-fc ;; Make a circle of turtles create-turtles N layout-circle turtles (max-pxcor - 1) ;; Now give each pair of turtles an equal chance ;; of creating a link ask turtles [ ;; we use "self > myself" here so that each pair of turtles ;; is only considered once create-links-with turtles with [self != myself ] ] end to setup-erdos-renyi ;; Make a circle of turtles let p (k / N) create-turtles N layout-circle turtles (max-pxcor - 1) let success? false let count-tries 0 while [ not success? ] [ ask links [ die ] ;; Now give each pair of turtles an equal chance ;; of creating a link ask turtles [ ;; we use "self > myself" here so that each pair of turtles ;; is only considered once create-links-with turtles with [self > myself and random-float 1.0 < p ] ] set success? ( item 0 identify-clusters = 1 ) set count-tries count-tries + 1 if ( count-tries > 1000 ) [ set success? true print "couldn't make connected network! try different parameters!" ] ] end ;; clusters code adapted from "Dissemination of Culture" by ??? ;; see info tab for full copyright info to-report identify-clusters let max-cluster 0 let num-clusters 0 let seed one-of turtles ask turtles [ set cluster nobody ] while [seed != nobody] [ ask seed [ set cluster self set num-clusters num-clusters + 1 set this-cluster 1 grow-cluster ] if this-cluster > max-cluster [ set max-cluster this-cluster] set seed one-of turtles with [cluster = nobody] ] report list num-clusters max-cluster end to grow-cluster ask link-neighbors with [cluster = nobody] [ if cluster = nobody [ set this-cluster this-cluster + 1 ] set cluster [cluster] of myself grow-cluster ] end
There is only one version of this model, created almost 8 years ago by Network Dynamics Group.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.