Axelrod
Axelrod copied to clipboard
Desired New strategies
Some of these may be implemented under other names already, please ask if you are unsure! Feel free to add any new ones to the list. Note that we are happy to have original contributions as well!
- Binary decision strategies defined in "Varying Decision Inputs in Prisoner’s Dilemma", Barlow and Ashlock 2015
- Function stack based strategies from "Ashlock, Daniel. "Training function stacks to play the iterated prisoner's dilemma." Computational Intelligence and Games, 2006 IEEE Symposium on. IEEE, 2006."
- Pavlovian, Identifier strategies, Grudgian from n-Move Memory Evolutionarily Stable Strategies for the Iterated Prisoner’s Dilemma
The "invincible strategies" in this paper which can all be implemented as special cases of the MemoryOne or LRPlayer classes.
The two "most abundant" memory one and memory two strategies in this paper.
Adaptor from Simple Adaptive Strategy Wins the Prisoner’s Dilemma second_pdf
Specific strategies evolved in Evolutionary game theory using agent-based methods such as GCA.
Strategy MO and Strategy SO from this paper
Strategies implemented in PRISON (look in classics.str):
- soft_spiteful
- ~~slow_tft~~
- ~~better_and_better~~
- ~~worse_and_worse2~~, ~~worse_and_worse3~~
and see this paper
- spiteful_cc
- ~~winner12~~ ~~winner 21~~
- ~~mem2~~
- ~~gradual_killer [Already done on another name?]~~
- soft_tf2t [TF2T?]
- and many others such as the 12 ZD strategies
- Done: ~~c_then_per_dc~~, ~~doubler~~, ~~easy_go~~, ~~gradual~~, ~~per_ddc~~, ~~per_cccdcd~~, ~~prober4~~, ~~tft_spiteful~~, ~~worse_and_worse~~
From CoopSim:
- ~~ContriteTFT~~
- TwoTitsForTwoTats -- and the generalization to NTitsForMTats
- Others that you find interesting
Many strategies in this paper are not yet in the library:
From "Exploiting Evolutionary Modeling to Prevail in Iterated Prisoner’s Dilemma Tournaments":
- Laran
- Turan
- Tages
From this page (see also the bibliography) for the 20th anniversary tournament:
- ~~Soft Grudger~~
- ~~Adaptive Tit For Tat~~
- PavlovD: http://www.cs.nott.ac.uk/~pszjl/index_files/chapter4.pdf
- StarSN, StarS, StarN, mem1, PoorD, ltft, MooD, and others see here and here
- AITFT, GSTFT, Adept, emperor, PRobbary, HCO, etc. [See here, will require some sleuthing]http://www.cs.nott.ac.uk/~pszjl/index_files/IPDbook_chap01.pdf)
- ~~Adaptive~~
- ~~APavlov~~ : http://www.graham-kendall.com/papers/lhk2011.pdf
- ~~NEG: "NEG plays according to simple rules: if opponent plays COOPERATION, in next move NEG will play DEFECTION; if opponent plays DEFECTION NEG will play COOPERATION. First move will be random."~~
- ~~Omega Tit For Tat~~ (see also here)
From here:
- Free Rider
- Rover
From this paper and also here:
- ~~adaptive tft~~
- ~~contrite tft~~
- ~~handshake~~ ~~fortress3~~ ~~fortress4~~ ~~firm but fair~~ ~~gradual~~ ~~naive prober~~ ~~remorseful prober~~ ~~reverse pavlov~~ ~~soft grudger~~
Any of the interesting finite state machine strategies in the papers with fortress (and other papers authored by Wendy Ashlock and Daniel Ashlock, and collaborators)
- E.g. from the 2015 paper "Multiple Opponent Optimization of Prisoner’s Dilemma Playing Agents" including the unnamed sugar strategies and treasure hunt strategies in figures 2 and 3
- ~~Solution B1~~ and ~~Solution B5~~ Also from "Fingerprint Analysis of the Noisy Prisoner's Dilemma Using a Finite-State Representation"
- vengeful, PSY, PSY-TFT, TFT-PSY, UD, UC
Many from this paper. Note the several are already in the library, including ~~ALLC, ALLD, TFT, WSLS, willing, hopeless, and desperate~~ (and possibly others).
From these two papers:
- http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6633638&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6633638
- http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5593371&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5593371
From this page:
- forgiving
- nasty TFT (randomly plays DD)
From the mythical tournament preliminary to Axelrod #1:
- Analogy
- Look Up / Look Ahead (different from LookerUp in the library)
From this publication:
- ~~Gradual~~
- ~~Adaptive tit-for-tat~~
From this paper:
- Lenient Grim 3
- Exp. TFT
- False Cooperator
- TF3T
- Exp Grim 2
- Lenient Grim 2
- Exp TF3T
- T2
From this paper:
- ~~shortmem~~
- ~~selfsteem~~
- Boxer
- ~~VeryBad~~
- ANN Agents
- GADP1
- GADP2
- BM
- MC
- ~~Stalker~~
From this library (if the license is compatible):
- cautious
- copycat
- craby
- forgetful
- golden
- Hardy
- Mean
- Mensa
- Moron
- Observant
- Unforgiving
- Waffely
- killer
Others:
- Opponent Modeller see also
- ~~DBS, DesiredBeliefStrategy ref~~
- From the 20th anniversary tournament book | slides with some info Book
- MaRS: Mimicry and Relative Similarity
No-tricks Strategies described here
Theory of mind strategies discussed here.
Would be neat to have strategies based on:
- cellular automata / ~~finite state machines~~ e.g.
- bandit algorithms
- the memory-based strategies described here
- Markov chain Monte Carlo
- Neural networks See this paper for examples
- "Particle Swarm Optimization Approaches to Coevolve Strategies for the Iterated Prisoner’s Dilemma"
- Tree based strategies from "Crossover and Evolutionary Stability in the Prisoner’s Dilemma"
Translate Fortran strategies available in https://github.com/Axelrod-Python/axelrod-fortan to python.
This is a brilliant issue: :+1:
This strategy was mentioned on reddit (Random TitForTat and/or Grudger: defects with random probability):
https://www.reddit.com/r/GAMETHEORY/comments/480xb3/how_to_beat_this_strategy_of_prisoners_dilemma/
Would you mind if I started working on a few of these? I'm sure I'll be slow since I'm new to programming and I'm going to school while working full time, but it looks like they've been posted for awhile. If there are any strategies on the list that are particularly easy to implement I'd be happy to start with one of those.
Absolutely @Adam-Flammino: please do!
I suggest that when you decide on a strategy you run it past us just to make sure it hasn't been implemented yet (it's possible that they're on the list but have already been implemented).
It could also be worth checking here: http://axelrod.readthedocs.io/en/latest/reference/all_strategies.html
That's the list of the strategies that are definitely in the library :)
As far as a suggestion for an initial one to go for, perhaps pick "Nasty Tit For Tat" which is described as "tit-for-tat but attempts to exploit non-retaliatory strategies by playing a DD with some probability". If you think there's another one in the list that you like the look of please do go for that though :)
Also: if you need help you can always pop in to this chat room https://gitter.im/Axelrod-Python/Axelrod there are usually a few of us around that can help :)
That actually sounds a little similar to how I play risk. I've definitely got some more reading to do before I start, but I'd be happy to try. Thanks for the chat link too!
@Adam-Flammino We're happy to e.g. help write tests, just open a PR or ask us here (or on gitter).
@marcharper thanks! Haven't gotten to start yet, but I appreciate the help! Hopefully before too long I'll be able to actually help out with the project- it looks interesting
So I got to actually sit down and look at things today. I appreciate all the variations of tit for tat being in the same .py file- makes it easier for someone who's still learning like me to see the right format. Another quick newb question- should I submit a new .py file with my pull request or just add my code to the end of the existing file?
@Adam-Flammino Either way, really. We don't have a scheme for which strategies go in which files, we just group them as we go wherever they seem to fit.
@marcharper Cool. Thanks again.
If you're going to go with nasty tit for that as the strategy I'd suggest that you just add that to the bottom of the existing tit for tat file:)
I appreciate how welcoming you all have been and I do think this is a very interesting project I'd like to help with eventually, but some life changes just came up and I don't know when I'll have time to actually contribute to this. I plan on coming back (hopefully with enough experience to make real contributions), but I'm not sure when that will be so don't hold any of these for me.
@Adam-Flammino No problem - thanks for the contributions so far!
We'll still be here when you have time again. All the best.
I would like to help in writing some of the strategies.
@souravsingh Are you here at PyCon UK?
@meatballs I couldn't come to PyCon UK due to visa issues. But I can try and help remotely.
Welcome @souravsingh! Drop in to our gitter channel: gitter.im/Axelrod-Python/Axelrod
Otherwise, take a look at the contribution guidelines and don't hesitate to ask any questions :)
http://axelrod.readthedocs.io/en/latest/tutorials/contributing/strategy/index.html
Hi. Is soft_tf2t up for grabs? gradual_killer needs crossing out because it's already implemented.
@mturzanska I'm afraid that that's in already to under TitFor2Tats: http://axelrod.readthedocs.io/en/latest/_modules/axelrod/strategies/titfortat.html#TitFor2Tats
(Please correct me if you think I'm not quite right reading the two logics).
You're right. Then continuing from the top:
- c_then_per_dc exists (as GrudgerAlternator)
- per_cccdcd needs implementing (as a subclass of Cycler)
- prober4 needs implementing
- doubler needs implementing
Please let me know if I sorted it out right this time. Would you mind if I start working on those?
Would you mind if I start working on those?
That would be awesome! Let us know if we can assist in any way :) 👍
Are Resurrection and DoubleResurrection strategies implemented? If not, I would like to work on them.
I don't believe so, what reference are they from?
They are from CoopSim
These are not yet implemented, go for it!
Hi guys! I'm new to open source software, but would love to contribute to your project.
Is it okay if I try implementing better_and_better, worse_and_worse2 and worse_and_worse3, from the PRISON PROJECT?
Hi @varung97! Welcome to the project!
Those are up for grabs so it would be great to have them in.
If we can help please let us know. We have a gitter room here: https://gitter.im/Axelrod-Python/Axelrod feel free to drop by :)
Thanks @drvinceknight :D
@drvinceknight Apart from type-hinting, I think I would like to work on a strategy. Are these taken or already done?
cautious copycat craby forgetful golden
Hey @janga1997 sorry I saw this when I was busy and then it slipped my mind :)
I've taken a quick look through the matlab files that I seem able to read and to the best of my ability it looks like they're not done yet.
Probably best course of action is that once you identify a particular strategy if you can briefly say what it does we should be able to be a bit more confident in our ability to identify it :)
FYI here's the list of all the strategies currently in the library: http://axelrod.readthedocs.io/en/latest/reference/all_strategies.html We're slowly working towards including alternative names on there too (done for some of them).