The Axelrod library in Python is a research tool for the Iterated Prisoner's Dilemma. I've contributed in a few ways including:

Link