Comments (4)
@gaffney2010 worked on this for the ultimatum game, see this branch for some ideas and implementation details.
from axelrod.
This is all awesome @alexhroom, I think #1413 really unblocks a bunch of stuff going forwards towards 5.0.0
.
- a 'games' directory in the package, which contains a sort of 'mini-package' for a specific game. For example, the import path
axelrod.games.rockpaperscissors
would contain aGame
,Action
s andStrategy
objects for rock-paper-scissors.
So this would imply moving a lot of the "current" functionality of the library to axelrod.games.ipd
right?
- Maybe for convenience, the
axelrod.games
directory could contain a function where a user enters a game name and it returns a dict with the various components of the game, e.g.:>>> from axelrod.games import get_game >>> get_game("rock_paper_scissors") {"game": axl.AsymmetricGame([RPS MATRICES HERE]), "actions": [R, P, S], "strategies": [[RPS STRATEGIES HERE]] }
Not sure if we need something like this (for example the strategies
for axelrod.gams.ipd
would be huge). It feels like get_game
would be trying to do the job of good documentation. So I think π€ I'd prefer us to ensure the documentation structures evolves/improves with the changes.
- Strategies themselves should have classifications for what action set size they're for, and raise an error or warning if used on an inappropriate game size.
π
- If we're worried about the package getting too big with more games/strategies it may be a good idea to use namespace packages so that other games can be installed separately but used from the axelrod namespace - particularly if a few games are added before the release of 5.0.0 this would be a good way to "generalise" the library completely.
I suggest not worrying about this until it becomes a problem (but I like the suggestion of namespace packages as a solution).
from axelrod.
if we're thinking towards 5.0.0 (i.e. being willing to make breaking changes) then yeah axelrod.games.ipd
would contain a lot of the specific IPD functionality. in general I was trying to point towards the idea of having Axelrod "main" be the library classes and algorithms, and then each game as a "game box" with an easy way for users to load that game into their Python session - you're right that for IPD a strategy list would get huge
from axelrod.
if we're thinking towards 5.0.0 (i.e. being willing to make breaking changes) then yeah
axelrod.games.ipd
would contain a lot of the specific IPD functionality.
Yeah I feel like we're certainly going towards 5.0.0 here with breaking changes.
from axelrod.
Related Issues (20)
- Reorganisation of documentation. HOT 3
- Reorganisation ? of cheating strategies
- Add a citation.cff file HOT 6
- Links to contributing guide broken by docs restructure
- CI failing due to typing issues HOT 3
- Implement asymmetric games HOT 6
- Implement abstract games more fully (5.0.0)
- Restructure strategies folder HOT 4
- Documentation for 5.0.0
- Simplify/move the `ResultSet` HOT 1
- Expressing in a formal logical language HOT 2
- You may have missed some details in your code HOT 1
- I couldn't find the strategy submitted by Mauk in the competition for 19th place HOT 2
- If I want to test the first tournament, what should I do based on your codeοΌ HOT 2
- Do you know the source code of the first tournament? HOT 2
- axelrod.plot.Plot may be incompatible with recent Pandas udpates HOT 2
- Change the TFT in the first tournament HOT 3
- High-noise Tournament for comparison HOT 1
- Supporting Python 3.12 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from axelrod.