Axelrod
Axelrod copied to clipboard
Potential `5.0.0` release
This issue is to capture a body of work that would change the scope of the library to become:
the de facto library for agent-based game theory computation and research
This is mainly motivated by the potential to add the ultimatum game as another type of game to the library but as it would require an api change we are thinking of taking advantage and making other modifications:
Tasks
- [ ] Generalize various components to allow for additional game types, like the ultimatum game, three player games, etc
- [ ] Improve history handling / make more flexible to e.g. allow players that access their entire history of play with all players in a tournament
- [ ] Generalize scoring functions beyond game matrices to be more flexible for other game types and scoring schemes
- For example the ultimatum game doesn’t have a game matrix
- Often variations with “strength of selection” parameters are used: f(x) = (1-w) + w * A*x
- This would allow us to very easily have asymetric games/games that change payoffs over time etc (users could create their own easily)
- [ ] General cleanup of internals
- [ ] Change how the tournaments play matches: use dask fully which in turns opens up the possibility of distributed computation. In practice this would mean creating one temporary file for each matchup.
- [ ] Reorganization of namespace as appropriate
- [ ] Potential rethink of the plotting? (simplify/remove/extend? )
- [ ] Documentation for any given piece of work/change we would have to make sure the docs follow and remain high quality.
- [ ] Remember to tweak the tournament (potentially just renaming the tournament repo to be the IPD tournament repo or something like that).
Approach
- Create a
5.0branch and all PRs for this body of work would be to that branch (there would potentially be other PRs at the same time going in to themasterbranch so there would be regular rebases?). - Once that is ready we will PR
5.0in to master.
Any thoughts/comments welcome.
Other possible changes:
- [ ] Move to a
src/axelroddir structure. - [ ] Move to pytest as a test runner.
I'd like to help with this.
Let's make sure to maintain a "5.0" changelog as we go. Just something simple that explains, for each 5.0 PR, the changes made.