Пример #1
0
 def test_strategy(self):
     """Tests that it chooses the best strategy."""
     random.seed(9)
     p1 = axelrod.ArrogantQLearner()
     p1.state = 'CCDC'
     p1.Qs = {'': {C: 0, D: 0}, 'CCDC': {C: 2, D: 6}}
     p2 = axelrod.Cooperator()
     test_responses(self, p1, p2, [], [], [C, C, C, C, C, C, C])
Пример #2
0
 def test_prev_state_updates(self):
     """Test that the q and v values update."""
     random.seed(5)
     p1 = axelrod.ArrogantQLearner()
     p2 = axelrod.Cooperator()
     simulate_play(p1, p2)
     self.assertEqual(p1.prev_state, '0.0')
     simulate_play(p1, p2)
     self.assertEqual(p1.prev_state, 'C1.0')
Пример #3
0
 def test_vs_update(self):
     """Test that the q and v values update."""
     random.seed(5)
     p1 = axelrod.ArrogantQLearner()
     p2 = axelrod.Cooperator()
     simulate_play(p1, p2)
     self.assertEqual(p1.Vs, {'': 0.9, '0.0': 0})
     simulate_play(p1, p2)
     self.assertEqual(p1.Vs, {'': 0.9, '0.0': 2.7, 'C1.0': 0})
Пример #4
0
 def test_reset_method(self):
     """Tests the reset method."""
     P1 = axelrod.ArrogantQLearner()
     P1.Qs = {'': {C: 0, D: -0.9}, '0.0': {C: 0, D: 0}}
     P1.Vs = {'': 0, '0.0': 0}
     P1.history = [C, D, D, D]
     P1.prev_state = C
     P1.reset()
     self.assertEqual(P1.prev_state, '')
     self.assertEqual(P1.Vs, {'': 0})
     self.assertEqual(P1.Qs, {'': {C: 0, D: 0}})
Пример #5
0
 def test_reset_method(self):
     """Tests the reset method."""
     P1 = axelrod.ArrogantQLearner()
     P1.Qs = {'': {'C': 0, 'D': -0.9}, '0.0': {'C': 0, 'D': 0}}
     P1.Vs = {'': 0, '0.0': 0}
     P1.history = ['C', 'D', 'D', 'D']
     P1.prev_state = 'C'
     P1.reset()
     self.assertEqual(P1.prev_state, '')
     self.assertEqual(P1.history, [])
     self.assertEqual(P1.Vs, {'': 0})
     self.assertEqual(P1.Qs, {'': {'C': 0, 'D': 0}})
Пример #6
0
 def test_strategy(self):
     """Tests that it chooses the best strategy."""
     random.seed(9)
     p1 = axelrod.ArrogantQLearner()
     p1.state = 'CCDC'
     p1.Qs = {'': {'C': 0, 'D': 0}, 'CCDC': {'C': 2, 'D': 6}}
     p2 = axelrod.Cooperator()
     self.assertEqual(p1.strategy(p2), 'C')
     self.assertEqual(p1.strategy(p2), 'D')
     self.assertEqual(p1.strategy(p2), 'D')
     self.assertEqual(p1.strategy(p2), 'D')
     self.assertEqual(p1.strategy(p2), 'D')
     self.assertEqual(p1.strategy(p2), 'D')
Пример #7
0
 def test_prev_state_updates(self):
     """
     Test that the q and v values update
     """
     random.seed(5)
     p1 = axelrod.ArrogantQLearner()
     p2 = axelrod.Cooperator()
     play_1, play_2 = p1.strategy(p2), p2.strategy(p1)
     p1.history.append(play_1)
     p2.history.append(play_2)
     self.assertEqual(p1.prev_state, '0.0')
     play_1, play_2 = p1.strategy(p2), p2.strategy(p1)
     p1.history.append(play_1)
     p2.history.append(play_2)
     self.assertEqual(p1.prev_state, 'C1.0')
Пример #8
0
 def test_qs_update(self):
     """Test that the q and v values update."""
     random.seed(5)
     p1 = axelrod.ArrogantQLearner()
     p2 = axelrod.Cooperator()
     play_1, play_2 = simulate_play(p1, p2)
     self.assertEqual(p1.Qs, {'': {C: 0, D: 0.9}, '0.0': {C: 0, D: 0}})
     simulate_play(p1, p2)
     self.assertEqual(p1.Qs, {
         '': {
             C: 0,
             D: 0.9
         },
         '0.0': {
             C: 2.7,
             D: 0
         },
         'C1.0': {
             C: 0,
             D: 0
         }
     })
Пример #9
0
 def test_qs_update(self):
     """
     Test that the q and v values update
     """
     random.seed(5)
     p1 = axelrod.ArrogantQLearner()
     p2 = axelrod.Cooperator()
     play_1, play_2 = p1.strategy(p2), p2.strategy(p1)
     p1.history.append(play_1)
     p2.history.append(play_2)
     self.assertEqual(p1.Qs, {
         '': {
             'C': 0,
             'D': -0.9
         },
         '0.0': {
             'C': 0,
             'D': 0
         }
     })
     play_1, play_2 = p1.strategy(p2), p2.strategy(p1)
     p1.history.append(play_1)
     p2.history.append(play_2)
     self.assertEqual(
         p1.Qs, {
             '': {
                 'C': 0,
                 'D': -0.9
             },
             '0.0': {
                 'C': 0.9,
                 'D': 0
             },
             'C1.0': {
                 'C': 0,
                 'D': 0
             }
         })
Пример #10
0
 def test_stochastic(self):
     self.assertTrue(axelrod.ArrogantQLearner().stochastic)
Пример #11
0
 def test_representation(self):
     """
     Tests string representation of class
     """
     P1 = axelrod.ArrogantQLearner()
     self.assertEqual(str(P1), 'Arrogant QLearner')
Пример #12
0
                    (axl.Cooperator(), axl.PSOGambler2_2_2()),
                    (axl.Alternator(), axl.Random()),
                    (axl.Alternator(), axl.ZDExtort2()),
                    (axl.Alternator(), axl.GTFT()),
                    (axl.Alternator(), axl.ALLCorALLD()),
                    (axl.Alternator(), axl.PSOGambler2_2_2()),
                    (axl.ALLCorALLD(), axl.Cooperator()),
                    (axl.ALLCorALLD(), axl.Defector()),
                    (axl.ALLCorALLD(), axl.TitForTat()),
                    (axl.Alternator(), axl.Cooperator()),
                    (axl.Alternator(), axl.Defector()),
                    (axl.Alternator(), axl.TitForTat()),
                    (axl.Alternator(), axl.WinStayLoseShift()),
                    (axl.Defector(), axl.WinStayLoseShift()),
                    (axl.Calculator(), axl.ALLCorALLD()),
                    (axl.Calculator(), axl.ArrogantQLearner()),
                    (axl.Calculator(), axl.Random()),
                    (axl.Cooperator(), axl.TitForTat()),
                    (axl.Defector(), axl.Cooperator()),
                    (axl.Defector(), axl.TitForTat()),
                    (axl.Random(), axl.Cooperator()),
                    (axl.Random(), axl.Defector()),
                    (axl.Random(), axl.TitForTat()),
                    (axl.WinStayLoseShift(), axl.TitForTat())]

    max_N = 20
    repetitions = 1000

    df = pd.read_csv(
        outcomes_file,
        header=None,