Prisoner's Dilemma Tournament
No preview image
Model was written in NetLogo 4.0pre8
•
Viewed 628 times
•
Downloaded 47 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
VERSION
$Id: Prisoner's Dilemma Tournament.nlogo 37529 2008-01-03 20:38:02Z craig $
add model documentation here
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
; add model procedures here globals [ status STRATEGIES PAYOFFS COOPERATE DEFECT ] turtles-own [ user-id turtle-color strategy ready? total-assets plays ] to startup setup hubnet-set-client-interface "COMPUTER" [] hubnet-reset set status "Click GO to begin" end to setup ca set COOPERATE 1 set DEFECT 0 set PAYOFFS [ [ [ 0 0 ] [ 2 2 ] ] [ [ 0 1 ] [ 10 0 ] ] [ [ 1 0 ] [ 0 10 ] ] [ [ 1 1 ] [ 6 6 ] ] ] end to play [ p1 p2 ] let d1 0 let d2 0 let po 0 let game-number 0 let moves1 0 let moves2 0 if (p1 != p2) [ hubnet-send [user-id] of p1 "current-opponent" [user-id] of p2 hubnet-send [user-id] of p2 "current-opponent" [user-id] of p1 set game-number 1 set moves1 (list ) set moves2 (list ) repeat 1000 [ set d1 [ make-decision game-number moves1 moves2 ] of p1 set d2 [ make-decision game-number moves2 moves1 ] of p2 set po lookup-table PAYOFFS (list d1 d2) ask p1 [ collect-payoff item 0 po set plays plays + 1] ask p2 [ collect-payoff item 1 po set plays plays + 1] set game-number game-number + 1 set moves1 lput d1 moves1 set moves2 lput d2 moves2 ] hubnet-send [user-id] of p1 "current-opponent" "" hubnet-send [user-id] of p2 "current-opponent" "" ] end ;; players to-report make-decision [ game-number my-moves opponent-moves ] report runresult strategy end to collect-payoff [ amount ] set total-assets total-assets + amount set plabel total-assets hubnet-send user-id "total-assets" total-assets end ;;;; to-report lookup-table [ table entry ] if empty? table [ report "-1" ]; if item 0 item 0 table = entry [ report item 1 item 0 table; ] report lookup-table but-first table entry; end ;;;; to go if hubnet-message-waiting? [ hubnet-fetch-message ifelse hubnet-enter-message? [ ask turtles with [ user-id = hubnet-message-source ] [ die ] crt 1 [ setxy random-float world-width random-float world-width set user-id hubnet-message-source hubnet-send hubnet-message-source "rank" 0 set ready? false ;;hubnet-send hubnet-message-source "Your turtle's color is:" (color-string color) set label-color black set label user-id set status (word "" count turtles " clients logged in, " count turtles with [ ready? ] " ready.") ] ] [ ifelse hubnet-exit-message? [ ask turtles with [ user-id = hubnet-message-source ] [ die ] ] [ exe-cmd ] ] ] end to exe-cmd show hubnet-message-tag if hubnet-message-tag = "strategy" [ check-strategy hubnet-message ] end to check-strategy [ the-strategy ] let strategy-status-message 0 let opponent-moves 0 let my-moves 0 carefully [ set opponent-moves (list ) set my-moves (list ) __ignore runresult the-strategy set opponent-moves (list COOPERATE DEFECT COOPERATE) set my-moves (list COOPERATE DEFECT COOPERATE ) __ignore runresult the-strategy ask turtles with [ user-id = hubnet-message-source ] [ set strategy the-strategy set ready? true] set strategy-status-message "OK" ] [ ask turtles with [ user-id = hubnet-message-source ] [ set ready? false] set strategy-status-message error-message ] hubnet-send hubnet-message-source "strategy-status" strategy-status-message set status (word "" count turtles " clients logged in, " count turtles with [ ready? ] " ready.") if count turtles with [ ready?] = count turtles [ set status "Ready to go. Click START to begin tournament" ] end
There are 2 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.