/
Axelrod exploring the iterated prisoner’s dilemma Axelrod exploring the iterated prisoner’s dilemma

Axelrod exploring the iterated prisoner’s dilemma - PowerPoint Presentation

lucy
lucy . @lucy
Follow
344 views
Uploaded On 2022-02-16

Axelrod exploring the iterated prisoner’s dilemma - PPT Presentation

AxelrodPython httpsgithubcomAxelrodPython Explore strategies for the Prisoners dilemma game Over 100 strategies from literature and original ones Run round robin tournaments with options Population dynamics ie evolution ID: 909472

false player source opponent player false opponent source axelrod history tit return strategy manipulates subclass titfor2tats interactions remembers class

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Axelrod exploring the iterated prisoner..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Axelrod

exploring the iterated prisoner’s dilemma

Slide2

Axelrod-Python

https://github.com/Axelrod-PythonExplore strategies for the Prisoners dilemma gameOver 100 strategies from literature and original onesRun round robin tournaments with optionsPopulation dynamics (i.e., evolution)Easy to install pip install

axelrod

Also includes notebooks

Documentation

Slide3

https://github.com/Axelrod-Python

Slide4

Axelrod PlayersA player like

TitForTat is a subclass of a Player classEvery player subclass has a set of fixed properties (e.g., how many interactions it remembers)A subclass has instances with unique IDsInstances interact with “opponents”, who are instances of a player subtypeEach instance maintains a history of its interactions with each opponent it encountersIts strategy for an encounter may depend on this

Slide5

TitForTat

class TitForTat(Player): name = "Tit For Tat" classifier = { "memory_depth": 1, "stochastic": False,

"

inspects_source

": False,

"

manipulates_source

": False,

…}

def strategy(self, opponent: Player) -> Action:

# First move if not self.history: return C # React to the opponent's last move if opponent.history[-1] == D: return D return C

Note use of type hints, added in 3.5

Remembers only last interaction with a given player

Slide6

TitFor2Tats

class TitFor2Tats(Player): """player starts by cooperating and then defects only after 2defects by opponent””” name = "Tit For 2 Tats" classifier = { "memory_depth

": 2,

"stochastic": False,

"

inspects_source

": False,

"

manipulates_source

": False,

…} @staticmethod def strategy(opponent: Player) -> Action: return D if opponent.history[-2:] == [D, D] else C

Remembers last2 interactions with a given player

Cooperates unless this opponent defected last two times

Slide7

Bulley

class TitFor2Tats(Player): """ player that behaves opposite to Tit For Tat, including first move””” name = "Tit For 2 Tats" classifier = { "memory_depth": 2,

"stochastic": False,

"

inspects_source

": False,

"

manipulates_source

": False,

…}

@staticmethod def strategy(opponent: Player) -> Action: return C if opponent.history[-1:] == [D] else D

Slide8

Predefined Player StrategiesThere are 24 variations on the basic Tit For Tat

strategyAnd more than 100 other player strategiesSee an index here with brief descriptions and links to the Python source code