Description
I've been working on a number of separate branches and problems and would like some feedback on a proposal before I sink a lot of time into it.
For the namespace reorganization for Axelrod (#1175) we need an abstract player class. A lot of the core functionality of the class can move out (cloning for example); the IPD class just needs to additionally track cooperations, defections, and the state distribution (or perhaps on a History class). To use the dojo on the ultimatum game we need resetting, cloning, and such as well.
For the new style of mutation for the dojo and Moran class (see the mutation branch), I think it makes sense to introduce an intermediate ABC that defines mutation and crossover methods. IIRC we needed the params classes in the dojo because Players couldn't be picked, however I think that's no longer the case, so all that functionality can (and I think should) move into the main library.
So I'd like to do the following:
- introduce an ABC chain of Player --> MutablePlayer --> IPDPlayer (and soon UltimatumPlayer)
- enhance the Moran process to handle the new style of mutation and move the functionality of the Params classes in the dojo to the main library
- Release new versions of the main library and the dojo simultaneously
- Start on 5.0.0 by reorganizing the namespace and then merge in the Ultimatum player code
Thoughts?