Game Theory v1

Game Theory v1 preview image

1 collaborator

Default-person Peter Jourgensen (Author)

Tags

game theory 

Tagged by Qian li about 10 years ago

Model group MAM-2013 | Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.4 • Viewed 923 times • Downloaded 103 times • Run 0 times
Download the 'Game Theory v1' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

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

Click to Run Model

turtles-own [
  prob-s1                ;probability of choosing strategy 1
  prob-s2                ;probability of choosing strategy 2
  strategy1?             ;boolean, "true" if strategy 1 is chosen
  utility                ;payoff received at that round
  potential-utility      ;payoff of choosing other strategy in the same round
  partnered?             ;boolean, "true" if turtle is partnered with another turtle
  partner                ;the opposing turtle in a game
  partner-strategy1?     ;boolean, "true" if partner chose strategy 1
  strategy               ;the learning strategy used by each turtle
]

to setup
  clear-all
  crt number-utility-max [
    set strategy "utility-max"
    set label 1                      ;labels used to identify what strategy a turtle is using
  ]
  crt number-seek-fair [
    set strategy "seek-fair"
    set label 2
  ]
  crt number-predictors [
    set strategy "predict"
    set label 3
  ]
  ask turtles [
    set shape "person"
    set size 2                       ;size used to make turtles easier to see
    set color one-of [red blue]      ;determines if turtles are player 1s (blue) or player 2s (red)
    set partnered? false             ;turtles are initially unpaired
    set partner nobody
    prob-initial                     ;sets turtles indifferent to their strategies
    setxy random-xcor random-ycor
  ]
  reset-ticks
end 

;turtle procedure
;sets initial probabilities

to prob-initial
  set prob-s1 0.5
  set prob-s2 0.5
end 

to go
end -round                          ;releases partners to allow them to look for new ones
  ask turtles [
    partner-up                       ;turtles partner-up if they are next to an opposing player
  ]
  let partnered-turtles turtles with [partnered? = true] 
  ask partnered-turtles [play-a-round]
  ask turtles [
    if prob-s1 > 1 [                 ;probabilites can't exceed 1 or go below 0
      set prob-s1 1
      set prob-s2 0
    ]
    if prob-s1 < 0 [
      set prob-s1 0
      set prob-s2 1
    ]
  ]
  tick
end 

;releases partners

to end-round
  let partnered-turtles turtles with [ partnered? = true]
  ask partnered-turtles [
    release-partner
    ]
end 

;partnered-turtle procedure

to release-partner
  set partnered? false
  set partner nobody
  rt 180
end 

;turtle procedure
;opposing turtles pair up if they're spatially located right next to each other

to partner-up
  if (not partnered?) [              
    rt (random-float 90 - random-float 90) fd 1     
    set partner one-of (turtles-at -1 0) with [ (not partnered?) and (color != [color] of myself) ]
    if partner != nobody [              
      set partnered? true
      set heading 270                   
      ask partner [
        set partnered? true
        set partner myself
        set heading 90
      ]
    ]
  ]
end 

;partnered-turtle procedure

to play-a-round
  let partnered-turtles turtles with [partnered? = true]
  pick-a-strategy                                           ;turtles probabilistically make a decision
  set partner-strategy1? [strategy1?] of partner
  ask partnered-turtles with [color = blue] [
    set-utilities
  ]
  ask partnered-turtles with [strategy = "utility-max"] [
    utility-max
  ]
  ask partnered-turtles with [strategy = "seek-fair"] [
    seek-fair
  ]
  ask partnered-turtles with [(color = blue) and (strategy = "predict")] [
    predict-blue
  ]
  ask partnered-turtles with [(color = red) and (strategy = "predict")] [
    predict-red
  ]
end 
   
;partnered-turtle procedure
;turtles probabilistically select a strategy

to pick-a-strategy
  ifelse random-float 1 < prob-s1 [
    set strategy1? true
  ][
  set strategy1? false
  ]
end 

;player1 partnered-turtle procedure
;looks at the strategy choices and assigns the appropriate utility values

to set-utilities
  ifelse strategy1? = true [
    ifelse partner-strategy1? = true [
      set utility p1s1-utility
      set potential-utility p1s2-utility
      ask partner [
        set utility p2s1-utility
        set potential-utility p2s2-utility
      ]
    ][
    set utility p1s1-utility2
    set potential-utility p1s2-utility2
    ask partner [
      set utility p2s2-utility
      set potential-utility p2s1-utility
    ]
    ]
  ][
  ifelse partner-strategy1? = true [
    set utility p1s2-utility
    set potential-utility p1s1-utility
    ask partner [
      set utility p2s1-utility2
      set potential-utility p2s2-utility2
    ]
  ][
  set utility p1s2-utility2
  set potential-utility p1s1-utility2
  ask partner [
    set utility p2s2-utility2
    set potential-utility p2s1-utility2
  ]
  ]
  ]
end 

;partnered-turtle utility maximizer learning procedure
;if a turtle could've done better by choosing the other strategy, given their partner stays the same,
;then they become more likely to choose the other strategy.  If they're happy with their decision,
;they become more likely to make the same decision

to utility-max
  ifelse strategy1? = true [
    if utility < potential-utility [
      set prob-s1 prob-s1 - (.001 * (potential-utility - utility))
      set prob-s2 prob-s2 + (.001 * (potential-utility - utility))   
    ]
  ][
  if utility < potential-utility [
    set prob-s1 prob-s1 + (.001 * (potential-utility - utility))
    set prob-s2 prob-s2 - (.001 * (potential-utility - utility))
  ]
  ]
end 

;partnered-turtle competitive learning procedure
;If a turtle loses to their opponent, then they become less likely to make the same decision.  They're 
;indifferent to ties though

to seek-fair
  ifelse strategy1? = true [
    if utility < [utility] of partner [
      set prob-s1 prob-s1 - (.001 * (([utility] of partner) - utility))
      set prob-s2 prob-s2 + (.001 * (([utility] of partner) - utility))     
    ]
  ][
  if utility < [utility] of partner [
    set prob-s1 prob-s1 + (.001 * (([utility] of partner) - utility))
    set prob-s2 prob-s2 - (.001 * (([utility] of partner) - utility))
  ]
  ]
end 

;player1 partnered-turtle predictor learning procedure
;They look at whether or not their partner made their best decision.  The turtles assume that their partner will tend 
;towards making the best decision.  They then respond with their best decision.    

to predict-blue
  ifelse partner-strategy1? = true [
    ifelse [potential-utility] of partner > [utility] of partner [
      ifelse p1s1-utility2 > p1s2-utility2 [
        set prob-s1 prob-s1 + .001 * ([potential-utility] of partner - [utility] of partner)
        set prob-s2 prob-s2 - .001 * ([potential-utility] of partner - [utility] of partner)
      ][
      set prob-s1 prob-s1 - .001 * ([potential-utility] of partner - [utility] of partner)
      set prob-s2 prob-s2 + .001 * ([potential-utility] of partner - [utility] of partner)      
      ]
    ][
    ifelse p1s1-utility > p1s2-utility [
      set prob-s1 prob-s1 + .001 * ([utility] of partner - [potential-utility] of partner)
      set prob-s2 prob-s2 - .001 * ([utility] of partner - [potential-utility] of partner)
    ][
    set prob-s1 prob-s1 - .001 * ([utility] of partner - [potential-utility] of partner)
    set prob-s2 prob-s2 + .001 * ([utility] of partner - [potential-utility] of partner)
    ]
    ]
  ][
  ifelse [potential-utility] of partner > [utility] of partner [
    ifelse p1s1-utility > p1s2-utility [
      set prob-s1 prob-s1 + .001 * ([potential-utility] of partner - [utility] of partner)
      set prob-s2 prob-s2 - .001 * ([potential-utility] of partner - [utility] of partner)     
    ][
    set prob-s1 prob-s1 - .001 * ([potential-utility] of partner - [utility] of partner)
    set prob-s2 prob-s2 + .001 * ([potential-utility] of partner - [utility] of partner)
    ]
  ][
  ifelse p1s1-utility2 > p1s2-utility2 [
    set prob-s1 prob-s1 + .001 * ([utility] of partner - [potential-utility] of partner)
    set prob-s2 prob-s2 - .001 * ([utility] of partner - [potential-utility] of partner)
  ][
  set prob-s1 prob-s1 - .001 * ([utility] of partner - [potential-utility] of partner)
  set prob-s2 prob-s2 + .001 * ([utility] of partner - [potential-utility] of partner)
  ]
  ]
  ]
end 

;player2 partnered-turtle predictor learning procedure

to predict-red
  ifelse partner-strategy1? = true [
    ifelse [potential-utility] of partner > [utility] of partner [
      ifelse p2s1-utility2 > p2s2-utility2 [
          set prob-s1 prob-s1 + .001 * ([potential-utility] of partner - [utility] of partner)
          set prob-s2 prob-s2 - .001 * ([potential-utility] of partner - [utility] of partner)
      ][
        set prob-s1 prob-s1 - .001 * ([potential-utility] of partner - [utility] of partner)
        set prob-s2 prob-s2 + .001 * ([potential-utility] of partner - [utility] of partner)
      ]
    ][
    ifelse p2s1-utility > p2s2-utility [
        set prob-s1 prob-s1 + .001 * ([utility] of partner - [potential-utility] of partner)
        set prob-s2 prob-s2 - .001 * ([utility] of partner - [potential-utility] of partner)
    ][
      set prob-s1 prob-s1 - .001 * ([utility] of partner - [potential-utility] of partner)
      set prob-s2 prob-s2 + .001 * ([utility] of partner - [potential-utility] of partner)
    ]
    ]
  ][
  ifelse [potential-utility] of partner > [utility] of partner [
    ifelse p2s1-utility > p2s2-utility [
        set prob-s1 prob-s1 + .001 * ([potential-utility] of partner - [utility] of partner)
        set prob-s2 prob-s2 - .001 * ([potential-utility] of partner - [utility] of partner)
    ][
      set prob-s1 prob-s1 - .001 * ([potential-utility] of partner - [utility] of partner)
      set prob-s2 prob-s2 + .001 * ([potential-utility] of partner - [utility] of partner)
    ]
  ][
  ifelse p2s1-utility2 > p2s2-utility2 [
      set prob-s1 prob-s1 + .001 * ([utility] of partner - [potential-utility] of partner)
      set prob-s2 prob-s2 - .001 * ([utility] of partner - [potential-utility] of partner)
  ][
    set prob-s1 prob-s1 - .001 * ([utility] of partner - [potential-utility] of partner)
    set prob-s2 prob-s2 + .001 * ([utility] of partner - [potential-utility] of partner)
  ]
  ]
  ]
end 
  
    
      
    

  

There are 4 versions of this model.

Uploaded by When Description Download
Peter Jourgensen over 11 years ago This is the final model. Download this version
Peter Jourgensen over 11 years ago N-Person Download this version
Peter Jourgensen over 11 years ago updated model Download this version
Peter Jourgensen over 11 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Game Theory v1.png preview Preview for 'Game Theory v1' over 11 years ago, by Peter Jourgensen Download
PeterJourgensen_June3.docx word Progress Report 3 over 11 years ago, by Peter Jourgensen Download
PeterJourgensen_May20.docx word Progress Report 1 over 11 years ago, by Peter Jourgensen Download
PeterJourgensen_May27.docx word Progress Report 2 over 11 years ago, by Peter Jourgensen Download

This model does not have any ancestors.

This model does not have any descendants.