Newcomb's problem
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
To find how the accuracy of the Predictor will affect the outcome of the game. The payoffs are in this manner: Predicted choice Actual choice Payout A + B A + B $1,000 A + B B $0 B A + B $1,001,000 B B $1,000,000
Thus if the Predictor is correct 100% of the time, it is best to choose B. However, what is the payoff if the predictor is not accurate?
HOW IT WORKS
Agents (players) are created with different strategies either (A + B) or (B) They would encounter Predictors with different level of accuracy of predictions. The payoff they receive will depend on how accurate the Predictor has predicted. A Predictor with 100% accuracy will be able to know what the strategy of that player has. A Predictor wih X% accuracy will on the flip of a "die" see whether he will be allowed to know the strategy of the Player, and if it says he cannot, then there will be another flip of the "die" to decide what he has predicted.
HOW TO USE IT
The setup includes two drop-down menus: "average-accuracy" and "max-amount-in-B". The former allows you to set how accurate are the Predictor's predtiction, and the latter allows you to vary the amount of money the Predictor could put in Box B. Once those numbers are chosen drom the drop-down menu, press setup and then go. The results could be observed in the monitors and the plot.
THINGS TO NOTICE
As the level of accuracy drops, the advantge of choose Box B decreases. At one point, choosing A+B becomes better.
THINGS TO TRY
Try changing the accuracy of the Preditions and observe the results. Then try different amount of money being placed in Box B.
EXTENDING THE MODEL
How about changing the honesty of the Predictor? What if the Predictor could be naughty and though he can predict correly, but he doesn't follow the rules himself?
CREDITS AND REFERENCES
Ronald Paul Ng. ronaldpaul.ng@gmail.com
Comments and Questions
breed [ players player ]
breed [predictors predictor ]
players-own [
choice
score
linked?
]
predictors-own [ %correct
linked?
]
to setup
ca
reset-ticks
create-players 1000 [
setxy random-xcor random-ycor
set score 0
ifelse random 2 = 1 [ set choice "AB" ]
[ set choice "B"]
set shape "person"
set color white
set linked? false
]
create-predictors 1000 [
setxy random-xcor random-ycor
set shape "person"
set color red
set linked? false
set-%correct ;; set each predictor's chance of getting the prediction correct
]
end
to go
ask players [
link-up
choice-prediction-discovery
]
;; after one round, reset all links
ask links [die]
ask turtles [set linked? false]
tick
if ticks >= 20 [stop]
end
to link-up
if (not linked?)
[create-link-with one-of other predictors with [linked? != true]
set linked? true
ask link-neighbors [ set linked? true ]
]
end
to choice-prediction-discovery ;; to find out the choice and the prediction
let %predictive-power item 0 [%correct] of link-neighbors
let player-choice [choice] of self ; the variable player-choice is set to the choice of the turtle that calls this function
ifelse random-float 1 <= %predictive-power [ let predicted-choice choice ;; if predictive power is correct
if predicted-choice = "AB" and choice = "AB" [ set score score + 1000 ]
if predicted-choice = "AB" and choice = "B" [ set score score + 0 ]
if predicted-choice = "B" and choice = "AB" [ set score score + max-amount-in-B + 1000 ]
if predicted-choice = "B" and choice = "B" [ set score score + max-amount-in-B ]
]
;; if predictive power is wrong, then the predicted-choice would be the opposite of the choice
;; such that if the choice is "AB", the predicted-choice would be "B", and if the choice is "B", the predicted-choice would be "AB"
[ let predicted-choice choice ;; the calculation of the score will be flipped
if predicted-choice = "B" and choice = "AB" [ set score score + 1000 ]
if predicted-choice = "B" and choice = "B" [ set score score + 0 ]
if predicted-choice = "AB" and choice = "AB" [ set score score + max-amount-in-B + 1000 ]
if predicted-choice = "AB" and choice = "B" [ set score score + max-amount-in-B ]
]
end
to set-%correct
if average-accuracy = 0 [set %correct 0]
if average-accuracy = 0.25 [set %correct random-float 0.5]
if average-accuracy = 0.5 [set %correct random-float 1]
if average-accuracy = 0.6 [set %correct random-float 0.4 + 0.4]
if average-accuracy = 0.75 [set %correct random-float 0.5 + 0.5]
if average-accuracy = 0.9 [set %correct random-float 0.2 + 0.8]
if average-accuracy = 1 [set %correct 1]
end
There is only one version of this model, created about 5 years ago by Ronald Paul Ng.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.
Download this model