Name Game

No preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0 • Viewed 397 times • Downloaded 34 times • Run 0 times
Download the 'Name Game' modelDownload this modelEmbed this model

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

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; 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.