1. Giovanni Squillero
  2. Tages




This repository contains Tages, yet another adaptive EC-based player for the iterated prisoners' dilemma.

The iterated prisoner's dilemma is a famous model of cooperation and conflict in game theory. Its origin can be traced back to the Cold War, and countless strategies for playing it have been proposed so far, either designed by hand or automatically generated by computers. In the 2000s, scholars started focusing on adaptive players, that is, players able to classify their opponent's behavior and adopt an effective counter-strategy.

Tages pushes the idea of adaptation one step further: it builds a model of the current adversary from scratch, without relying on any pre-defined archetypes, and tweaks it as the game develops using an evolutionary algorithm; at the same time, it exploits the model to lead the game into the most favorable continuation. Models are compact non-deterministic finite state machines; they are extremely efficient in predicting opponents' replies, without being completely correct by necessity. Experimental results show that such player is able to win several one-to-one games against strong opponents taken from the literature, and that it consistently prevails in round-robin tournaments of different sizes. See the article Exploiting Evolutionary Modeling to Prevail in Iterated Prisoner's Dilemma Tournaments (DOI 10.1109/TCIAIG.2015.2439061) for more details.

This project marks Squillero's first attempt to learn Go, and the overall quality of the code reflects it. If you have comments or criticisms please write directly to giovanni.squillero@polito.it.


Tages is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.