Round Four Results
Round Three Results
Round Two Results
Round One Results
Simple algorithms included:
- ALTERNATE: Swaps between cooperating and defecting.
- COOPn: Randomly cooperates each play with probability n (so COOP0 always defects, COOP100 always cooperates, COOP50 is a coinflip).
- GLOBAL: Randomly cooperates each play with probability equal to the proportion of cooperations by opponents seen in all rounds so far.
- GRIM: Never defects first, but if the opponent ever defects, will defect on every remaining game in that round.
- NOISYTFT: Plays Tit-for-Tat, but changes its mind 10 percent of the time.
- PAVLOV: If it scored 3 or 5 points last round (before multiplying by the factor), make the same play; otherwise, make the opposite play.
- TITFORTAT: Starts by cooperating, then does whatever the opponent did last time.
- TITFORTWOTAT: Cooperates unless the previous two moves by opponent were both defection.
Selected content of the original email:
The iterated prisoners dilemma is interesting because it allows for notions of trust and reputation to be built up – adding an extra dimension to the standard PD, whereby mutual cooperation can arise instead of mutual defection as a best strategy.
The tournament we will be taking part in goes a step further – with five ’rounds’, each comprised of a 200 ‘game’ iterated prisoners dilemma. An iterated iterated prisoners dilemma, if you will. Now it’s possible to learn IPD strategies – given your behaviour in round one, I might approach you differently in round two. But you’re still going in facing an unknown field of opponents.
So; I am proposing an iterated iterated iterated prisoner’s dilemma. That is, I am willing to run a series of IIPD tournaments; once a week until the submission deadline. In this way, we can investigate the metagame – whilst strategy A might be the best response to A and B, if everyone seems to be playing C and D, maybe A isn’t the right thing to do any more.
Here’s how it will work. Each Monday evening1 I will run a tournament (5 round, 200 games, as usual) with the latest version of code sent to me by each participant. I will make the overall leaderboard available to everyone here; and for each participant, I will send them the full history of all the plays they were involved in. That is, for every other player in the tournament, you will receive 1000 data lines in csv format: your identity, their identity, the game (n), their play, your play, and the factor that applied for that game.
But wait, I hear you cry – won’t that mean that Graeme gets to see everyone’s code, and how everyone is doing against everyone else?
Absolutely. In a fair world, I would of course give everyone all of the data. Instead, I am offering a new game Your choices are to play – and get as payoff O(n) information about your possible competitors, whilst I get O(n^2) information; or not to play, in which case we both get nothing. You may find the ultimatum game2 instructive. I claim your optimal strategy is to play.
As additional incentive, I will include various standard programs – TitFor(Two)Tat, Grim, assorted random strategies etc. so you can see how you perform against those. Since I am running a 96% average for CORF, I am at this stage more interested in an entertaining game than scoring highly, so you may consider me a relatively neutral gamesmaster3 . I expect and encourage rival leagues to form instead.
I should probably come up with some rules, and reserve the right to modify these as I see fit. For starters:
- I will require your source code, as a java file (not a compiled class). This is because I can’t be bothered to set up a bulletproof virtual server to run arbitrary code, so this will work somewhat on the honour system. If I suspect that your program is trying to erase my holiday photos, cause an international diplomatic incident, or solve the halting problem, then I won’t run it. Consider this an exercise in good code documentation – although I don’t need to understand your prisoner’s dilemma algorithm, I need be confident it’s not going anywhere near the filesystem / a comms device / the pentagon, and will err on the side of caution here.
- You should probably change the string your program uses to something other than your matriculation number. One, I’m not sure if I should really be harvesting those; Two, it’ll mean that if someone figures out your algorithm, they still have to spot you in the real competition before they can use their clever counterattacks. Keep it clean4, and no more than, say, ten characters long. Using someone else‘s matriculation number would be particularly sneaky, so is definitely banned.
- Standard algorithms will be entered with reasonably descriptive names; you are of course welcome to enter one of those, since the relative popularity of an algorithm can alter how well it does.
- You don’t have to use the algorithm you’re going to use in the real thing, and can change every week – in fact, that’s half the fun! But you should encourage others to be consistent, so that you’re chasing the right target. Tricky. I leave this to you.
- Only one entrant per person per IIPD. If you’re playing, I’ll use the latest code you supplied by email prior to 5pm on the monday. If you decide later on not to play, that must also be communicated to me by 5pm of the appropriate week (but will persist into following weeks).
- First tournament will be a week today (Monday January 20th); then Jan 27th, Feb 3rd, Feb 10th, with results in time for hand-in Feb 14th.
- Above all, remember that the point is to have fun; if deliberate griefing makes this not-fun from my perspective, I’ll stop (but keep all your code).
That covers it for now. To prevent continual spam of the mailing list, I will be maintaining this page for further rule changes as I see fit, plus the tournament rankings as they arise. Individual logs will be distributed by email, so send me your code from the account you want the results to go to.
1 Or thereabouts, depending on unexpectedly good social life or unhelpfully punishing coursework deadlines.
3 If you believe this for one second, you are not yet ready for the cutthroat world of the IIIPD.
4 At least, not offensive in any languages I know how to be offensive in.