EDIT: As I recieved fewer than 8 entries for both tournaments, I will not be running them. My apologies to those who did enter.

After the success of prase's Iterated Prisoner's Dilemma tournament, a number of people expressed interest in some variations on the initial tournament, including one with a reputation system from one match to the next. I've been trying to teach myself to program over the past few months, so I thought I'd have a go at implementing it.

As well as the vanilla p.d. competition, I thought I'd run a second tournament based on the game of chicken, which is similar to p.d. but reverses the last two pay-offs, making it better (at least in the short term) to co-operate with a defector. This obviously creates a greater potential for bully strategies (although you can also bully in p.d.), so I thought it might have some interesting consequences with a reputation system.

Exact rules are as follows:

  1. Anybody who wants may enter up to one strategy in each competition (you needn't enter the same strategy in both). You may also enter only one contest if you don't want to enter both. Strategies should be entered by private message to me, and should have names. I will accept duplicates.
  2. Strategies should be described in English, I may need to ask for clarification. A strategy should be able to tell me whether your program co-operates or defects in any situation, and should be computable.
  3. There will be two tournaments, Prisoner's Dilemma and Chicken. Each tournament will divide up into matches, and each match into rounds.
  4. In a round each strategy chooses which to co-operate or defect. The pay-offs for Prisoner's Dilemma are the same as the previous tournament, 4 each if both co-operate, 1 each if both defect otherwise 7 for the defector and 0 for the co-operator. In Chicken the mutual defection pay-off is replaced with a 7 point penalty, the other pay-offs are unchanged.
  5. In order to make its decision, each strategy is allowed to know the entire history of this match, as well as any prior matches which included either it or its opponent. It does not have access to any other matches, to its opponents identity or to its opponents source code.
  6. Each match has its length determined by an exponential distribution with each round having a 1% chance of being the last. At the end of the tournament, scores will be adjusted to make up for some programs playing more rounds than others (specifically, your score will be multiplied by the average number of rounds played and divided by the number of rounds you played)
  7. The tournament will be done as a Round Robin, with matches performed serially so there will usually be previous results to judge by. If I have time I will also try an evolutionary variation.
  8. In addition to the strategies submitted by players, I will add an automatic co-operator, an automatic defector and a random strategy (with equal chance of co-operating or defecting on any round).
  9. Names of authors will be revealed by default, if you don't want yours revealed then ask.
  10. I have created a poll in the comments about where people want the results posted.

Deadline for entry is 21st September. If I get fewer than 8 I won't run it, if I get more than 30 I'll run it with the first 30, so don't delay.

EDIT: To clarify for any who were confused, each strategy has access to all of its own matches and all of its opponents matches, not just matches between itself and its opponent.

10

New Comment
13 comments, sorted by Click to highlight new comments since: Today at 8:13 PM

Each match has its length determined by an exponential distribution with each round having a 1% chance of being the last. At the end of the tournament, scores will be adjusted to make up for some programs playing more rounds than others (specifically, your score will be multiplied by the average number of rounds played and divided by the number of rounds you played)

Won't this make the tournament pretty boring? Why make things easier for Tit4tat?

In order to make its decision, each strategy is allowed to know the entire history of this match, as well as all previous matches by itself and its opponent

Only the matches between itself and its opponent or all its matches and all its opponent's matches?

Thanks for doing this!

I'd imagine this gives a huge advantage to clique bots, as it makes it that much easier for them to identify each other.

Only the matches between itself and its opponent or all its matches and all its opponent's matches?

Definitely the second. I will edit the article to make this clearer.

Won't this make the tournament pretty boring? Why make things easier for Tit4tat?

Maybe, we've already had a fixed length contest though so I thought I'd change it a bit. The existence of a cooperatebot ought to shake things up a little for the nicey-nicey crowd.

In order to make its decision, each strategy is allowed to know the entire history of this match, as well as all previous matches by itself and its opponent

Only the matches between itself and its opponent or all its matches and all its opponent's matches?

Second the question. The default meaning seems to be the first but the latter is the only one that would make sense as a rule to have if the game is to be at all interesting.

Why not have separate tournaments for chicken and PD? It's obvious the same strategies won't work for both.

I could see the potential for someone to design a chicken strategy that parasites a strategy which is designed to win the PD tournament. Sort of breaks the spirit of a competitive tournament when you include strategies that are not designed to compete.

[This comment is no longer endorsed by its author]Reply

I fail at reading comprehension. Sorry.

As well as the vanilla p.d. competition, I thought I'd run a second tournament based on the game of chicken,

Vote this up if you would like me to post the results in the Discussion section

Vote this up if you would like me to post the results in the Main section

Vote this up if you would rather I didn't post the results at all

Flowchart of my chicken strategy.

Feel free to steal, improve, or plan against this design.

New to LessWrong?