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