Skip to content

GSoC 2017 Ideas List

Vince Knight edited this page Feb 5, 2017 · 9 revisions

This is the Axelrod Project ideas page for Google Summer of Code 2017.

Additional Strategies, Tournaments, and Population Dynamics

One ongoing and continuing project is the writing of new and old strategies (from the literature). This is has proven to be a good starting point for newcomers to open source. As a Google Summer of Code project this would involve writing a significant number of strategies that would further the value of the Axelrod Project. Note that a list of strategies from the literature are available at #379 and there are many more.

There are many outstanding research questions that can be addressed by using the library, and some additional advanced features that can be further extended. For example, expanding the capabilities of the population dynamics by adding Wright-Fisher processes, enhanced spatial games, games other than the prisoner's dilemma, and many others.

Desirable prerequisite: Python, git.

Mentors: @drvinceknight, @marcharper

Code/test refactoring

There are a number of tests, for strategies in particular that can be refactored since a re-write of the testing suite. In particular this would require re-writing test matches between strategies that currently make impossible assumptions about a match history: a match history that could not actually happen between the two suggested players. This Google Summer of Code project would involve refactoring some of the tests to make use of the responses_test method.

Further avenues for this project idea would be the strengthening of the test suite. While the current test quite already has high coverage, a very robust test suite is necessary to advance the project's goal of validity and reproducibility.

Desirable prerequisite: Python, git.

Level: Beginner-moderate

Mentors: @drvinceknight, @marcharper

REST API

An ongoing project involves the writing of a REST API that would allow for the use of the Axelrod library without Python. There has been some work already undertaken on this https://github.com/Axelrod-Python/axelrod-api

This project would involve making the relevant enhancements to the Axelrod library itself, writing of the API and relevant tests.

Desirable prerequisite: Python, git, REST API frameworks: Django Rest Framework ideally.

Level: Advanced

Mentors: @drvinceknight, @meatballs

GUI

  • The development of a graphical user interface to allow use of the library via the RESTful API.
  • Secondarily, a Python-Based GUI

Desirable prerequisite: Python, git, RESTtul API frameworks: Django Rest Framework ideally, UI Frameworks such as d3.js

Level: Advanced

Mentors: @meatballs, @marcharper

Machine Learning and Data Science

The project contains a subproject to use the Axelrod library to train machine-learning based strategies to win tournaments. Currently we use evolutionary algorithms and a number of generic strategies based on neural networks, finite state machines, etc. There are some additional strategy archetypes and training strategies that would make useful additions to the library, including deep Q-learning neural networks (for which the iterated prisoner's dilemma is a very natural fit), function stacks, binary decision automata, and others. Currently the library implements neural networks directly; tensorflow is a natural choice for expanding the current capabilities.

The Axelrod library also includes some techniques for fingerprinting or otherwise visualizing a strategy's behavior, and there are a number of machine learning / data science related opportunities for extending and exploiting the library's capabilities.

Mentors: @marcharper, @drvinceknight