From 54a5c6d71e45a4cf4740f46930a7eeb725519a4d Mon Sep 17 00:00:00 2001 From: gaffneytj Date: Wed, 15 Apr 2020 21:11:29 -0700 Subject: [PATCH] Fix oddities in memory strat tests. --- axelrod/data/all_classifiers.yml | 8 +++ axelrod/strategies/memoryone.py | 3 -- axelrod/strategies/memorytwo.py | 10 ++-- axelrod/tests/strategies/test_memoryone.py | 29 ---------- axelrod/tests/strategies/test_memorytwo.py | 63 +--------------------- 5 files changed, 14 insertions(+), 99 deletions(-) diff --git a/axelrod/data/all_classifiers.yml b/axelrod/data/all_classifiers.yml index 32d004187..325c5daa1 100644 --- a/axelrod/data/all_classifiers.yml +++ b/axelrod/data/all_classifiers.yml @@ -1220,6 +1220,14 @@ Opposite Grudger: manipulates_state: false memory_depth: .inf stochastic: false +Original Gradual: + inspects_source: false + long_run_time: false + makes_use_of: !!set {} + manipulates_source: false + manipulates_state: false + memory_depth: .inf + stochastic: false PSO Gambler 1_1_1: inspects_source: false long_run_time: false diff --git a/axelrod/strategies/memoryone.py b/axelrod/strategies/memoryone.py index 8fa4aeae6..b07b04b54 100644 --- a/axelrod/strategies/memoryone.py +++ b/axelrod/strategies/memoryone.py @@ -73,8 +73,6 @@ def set_initial_four_vector(self, four_vector): warnings.warn("Memory one player is set to default (1, 0, 0, 1).") self.set_four_vector(four_vector) - if self.name == "Generic Memory One Player": - self.name = "%s: %s" % (self.name, four_vector) def set_four_vector(self, four_vector: Tuple[float, float, float, float]): if not all(0 <= p <= 1 for p in four_vector): @@ -340,4 +338,3 @@ class ReactivePlayer(MemoryOnePlayer): def __init__(self, probabilities: Tuple[float, float]) -> None: four_vector = (*probabilities, *probabilities) super().__init__(four_vector) - self.name = "%s: %s" % (self.name, probabilities) diff --git a/axelrod/strategies/memorytwo.py b/axelrod/strategies/memorytwo.py index 3466256b3..ac4846004 100644 --- a/axelrod/strategies/memorytwo.py +++ b/axelrod/strategies/memorytwo.py @@ -2,7 +2,7 @@ import itertools import warnings -from typing import Dict, Tuple +from typing import Dict, Optional, Tuple from axelrod.action import Action from axelrod.player import Player @@ -55,7 +55,7 @@ class MemoryTwoPlayer(Player): } def __init__( - self, sixteen_vector: Tuple[float, ...] = None, initial: Action = C + self, sixteen_vector: Tuple[float, ...] = None, initial: Optional[Action] = None ) -> None: """ Parameters @@ -67,6 +67,8 @@ def __init__( The initial 2 moves """ super().__init__() + if initial is None: + initial = C self._initial = initial self.set_initial_sixteen_vector(sixteen_vector) @@ -76,8 +78,6 @@ def set_initial_sixteen_vector(self, sixteen_vector): warnings.warn("Memory two player is set to default, Cooperator.") self.set_sixteen_vector(sixteen_vector) - if self.name == "Generic Memory Two Player": - self.name = "%s: %s" % (self.name, sixteen_vector) def set_sixteen_vector(self, sixteen_vector: Tuple): if not all(0 <= p <= 1 for p in sixteen_vector): @@ -127,7 +127,7 @@ class AON2(MemoryTwoPlayer): In [Hilbe2017]_ the following vectors are reported as "equivalent" to AON2 with their respective self-cooperation rate (note that these are not the same): - + 1. [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], self-cooperation rate: 0.952 2. [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], self-cooperation diff --git a/axelrod/tests/strategies/test_memoryone.py b/axelrod/tests/strategies/test_memoryone.py index 784baadf4..5b8c5f05c 100644 --- a/axelrod/tests/strategies/test_memoryone.py +++ b/axelrod/tests/strategies/test_memoryone.py @@ -10,25 +10,6 @@ C, D = axl.Action.C, axl.Action.D -class TestGenericPlayerOne(unittest.TestCase): - """A class to test the naming and classification of generic memory one - players.""" - - p1 = axl.MemoryOnePlayer(four_vector=(0, 0, 0, 0)) - p2 = axl.MemoryOnePlayer(four_vector=(1, 0, 1, 0)) - p3 = axl.MemoryOnePlayer(four_vector=(1, 0.5, 1, 0.5)) - - def test_name(self): - self.assertEqual(self.p1.name, "Generic Memory One Player: (0, 0, 0, 0)") - self.assertEqual(self.p2.name, "Generic Memory One Player: (1, 0, 1, 0)") - self.assertEqual(self.p3.name, "Generic Memory One Player: (1, 0.5, 1, 0.5)") - - def test_stochastic_classification(self): - self.assertFalse(axl.Classifiers["stochastic"](self.p1)) - self.assertFalse(axl.Classifiers["stochastic"](self.p2)) - self.assertTrue(axl.Classifiers["stochastic"](self.p3)) - - class TestWinStayLoseShift(TestPlayer): name = "Win-Stay Lose-Shift: C" @@ -292,11 +273,6 @@ class TestGenericReactiveStrategy(unittest.TestCase): p2 = axl.ReactivePlayer(probabilities=(1, 0)) p3 = axl.ReactivePlayer(probabilities=(1, 0.5)) - def test_name(self): - self.assertEqual(self.p1.name, "Reactive Player: (0, 0)") - self.assertEqual(self.p2.name, "Reactive Player: (1, 0)") - self.assertEqual(self.p3.name, "Reactive Player: (1, 0.5)") - def test_four_vector(self): self.assertEqual( self.p1._four_vector, {(C, D): 0.0, (D, C): 0.0, (C, C): 0.0, (D, D): 0.0} @@ -308,11 +284,6 @@ def test_four_vector(self): self.p3._four_vector, {(C, D): 0.5, (D, C): 1.0, (C, C): 1.0, (D, D): 0.5} ) - def test_stochastic_classification(self): - self.assertFalse(axl.Classifiers["stochastic"](self.p1)) - self.assertFalse(axl.Classifiers["stochastic"](self.p2)) - self.assertTrue(axl.Classifiers["stochastic"](self.p3)) - def test_subclass(self): self.assertIsInstance(self.p1, MemoryOnePlayer) self.assertIsInstance(self.p2, MemoryOnePlayer) diff --git a/axelrod/tests/strategies/test_memorytwo.py b/axelrod/tests/strategies/test_memorytwo.py index 3318c6983..d6aec4494 100644 --- a/axelrod/tests/strategies/test_memorytwo.py +++ b/axelrod/tests/strategies/test_memorytwo.py @@ -14,67 +14,6 @@ C, D = axl.Action.C, axl.Action.D -class TestGenericPlayerTwo(unittest.TestCase): - """A class to test the naming and classification of generic memory two - players.""" - - p1 = MemoryTwoPlayer( - sixteen_vector=(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ) - p2 = MemoryTwoPlayer( - sixteen_vector=(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0) - ) - p3 = MemoryTwoPlayer( - sixteen_vector=( - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - ) - ) - p4 = MemoryTwoPlayer( - sixteen_vector=(0.1, 0, 0.2, 0, 0.3, 0, 0.4, 0, 0.5, 0, 0.6, 0, 0.7, 0, 0.8, 0) - ) - - def test_name(self): - self.assertEqual( - self.p1.name, - "Generic Memory Two Player: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", - ) - self.assertEqual( - self.p2.name, - "Generic Memory Two Player: (1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0)", - ) - self.assertEqual( - self.p3.name, - "Generic Memory Two Player: (0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)", - ) - self.assertEqual( - self.p4.name, - "Generic Memory Two Player: (0.1, 0, 0.2, 0, 0.3, 0, 0.4, 0, 0.5, 0, 0.6, 0, 0.7, 0, 0.8, 0)", - ) - - def test_deterministic_classification(self): - self.assertFalse(axl.Classifiers["stochastic"](self.p1)) - self.assertFalse(axl.Classifiers["stochastic"](self.p2)) - - def test_stochastic_classification(self): - self.assertTrue(axl.Classifiers["stochastic"](self.p3)) - self.assertTrue(axl.Classifiers["stochastic"](self.p4)) - - class TestMemoryTwoPlayer(unittest.TestCase): def test_default_if_four_vector_not_set(self): player = MemoryTwoPlayer() @@ -142,7 +81,7 @@ def test_exception_if_probability_vector_outside_valid_values(self): class TestMemoryStochastic(TestPlayer): name = ( - "Generic Memory Two Player: (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1): C" + "Generic Memory Two Player" ) player = axl.MemoryTwoPlayer expected_classifier = {