Last year, AlexMennen ran a prisoner's dilemma tournament with bots that could see each other's source code, which was dubbed a "program equilibrium" tournament. This year, I will be running a similar tournament. Here's how it's going to work: Anyone can submit a bot that plays the iterated PD against other bots. Bots can not only remember previous rounds, as in the standard iterated PD, but also run perfect simulations of their opponent before making a move. Please see the github repo for the full list of rules and a brief tutorial.
There are a few key differences this year:
1) The tournament is in Haskell rather than Scheme.
2) The time limit for each round is shorter (5 seconds rather than 10) but the penalty for not outputting Cooperate or Defect within the time limit has been reduced.
3) Bots cannot directly see each other's source code, but they can run their opponent, specifying the initial conditions of the simulation, and then observe the output.
All submissions should be emailed to pdtournament@gmail.com or PM'd to me here on LessWrong by September 15th, 2014. LW users with 50+ karma who want to participate but do not know Haskell can PM me with an algorithm/psuedocode, and I will translate it into a bot for them. (If there is a flood of such requests, I would appreciate some volunteers to help me out.)
Not so fast.
Once a prisoner condemned to death was brought before the king to set the date of the execution. But the king was in a good mood, having just had a tasty breakfast, and so he said: "You will be executed next week, but to spare you the agony of counting down the hours of your life, I promise you that you will not know the day of your execution until the jailers come to take you to the gallows".
The prisoner was brought back to his cell where he thought for a while and then exclaimed: "But I cannot be executed if the king is to keep his word! I cannot be executed on Sunday because if I'm alive on Saturday I'll know the day of my execution and that breaks the king's promise. And I cannot be executed on Saturday because I know I cannot be executed on Sunday so if Friday comes around and I'm still alive, I'll know I have to be executed on Saturday. Etc., etc. This perfect reasoning by backwards induction says I cannot be executed during any day. And since the king always keeps his word, I'm safe!". Much relieved, he lay down on his cot whistling merrily.
And so, when on Tuesday the guards came for him, he was very surprised. The king kept his word.
Sorry; I meant to say the "optimal" strategy is to defect. I don't agree with the backwards induction; my point was that that argument is precisely what makes the problem interesting.
EDIT: By the way, I'm pretty sure I've come up with a strategy that is a Nash equilibrium (in IPD + simulations) and always cooperates with itself, so I very strongly agree that always defecting is not optimal.