def test_mutate(self):
     """Test to trigger random lines in mutate"""
     for seed in [18, 22]:
         player = axl.EvolvableFSMPlayer(num_states=4,
                                         mutation_probability=0.5,
                                         seed=seed)
         player.mutate()
Esempio n. 2
0
 def test_init(self):
     transitions = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
     player = axl.EvolvableFSMPlayer(transitions=transitions,
                                     initial_action=D,
                                     initial_state=1)
     self.assertEqual(player.num_states, 2)
     self.assertEqual(player.fsm.transitions(), transitions)
     self.assertEqual(player.initial_action, D)
     self.assertEqual(player.initial_state, 1)
    def test_vector_to_instance(self):
        num_states = 4
        vector = [random.random() for _ in range(num_states * 4 + 1)]
        player = axelrod.EvolvableFSMPlayer(num_states=num_states)
        player.receive_vector(vector)
        self.assertIsInstance(player, axelrod.EvolvableFSMPlayer)

        serialized = player.serialize_parameters()
        deserialized_player = player.__class__.deserialize_parameters(serialized)
        self.assertEqual(player, deserialized_player)
        self.assertEqual(deserialized_player, deserialized_player.clone())
Esempio n. 4
0
 def test_atomic_mutation_fsm(self):
     axelrod.seed(12)
     players = [axelrod.EvolvableFSMPlayer(num_states=2, initial_state=1, initial_action=C)
                for _ in range(5)]
     mp = MoranProcess(players, turns=10, mutation_method="atomic")
     population = mp.play()
     self.assertEqual(
         mp.winning_strategy_name,
         'EvolvableFSMPlayer: ((0, C, 1, D), (0, D, 1, C), (1, C, 0, D), (1, D, 1, C)), 1, C, 2, 0.1')
     self.assertEqual(len(mp.populations), 31)
     self.assertTrue(mp.fixated)
 def test_init(self):
     transitions = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
     player = axl.EvolvableFSMPlayer(
         transitions=transitions,
         initial_action=D,
         initial_state=1,
         seed=1,  # To prevent exception from unset seed.
     )
     self.assertEqual(player.num_states, 2)
     self.assertEqual(player.fsm.transitions(), transitions)
     self.assertEqual(player.initial_action, D)
     self.assertEqual(player.initial_state, 1)
Esempio n. 6
0
 def test_atomic_mutation_fsm(self):
     players = [
         axl.EvolvableFSMPlayer(num_states=2,
                                initial_state=1,
                                initial_action=C,
                                seed=4) for _ in range(5)
     ]
     mp = MoranProcess(players, turns=10, mutation_method="atomic", seed=12)
     rounds = 10
     for _ in range(rounds):
         next(mp)
     self.assertEqual(
         list(sorted(mp.populations[-1].items()))[0][0],
         'EvolvableFSMPlayer: ((0, C, 0, C), (0, D, 1, C), (1, C, 1, D), (1, D, 1, D)), 0, D, 2, 0.1, 2240802643'
     )
     self.assertEqual(len(mp.populations), 11)
     self.assertFalse(mp.fixated)
Esempio n. 7
0
 def test_create_vector_bounds(self):
     num_states = 4
     player = axl.EvolvableFSMPlayer(num_states=num_states)
     lb, ub = player.create_vector_bounds()
     self.assertEqual(lb, [0] * (4 * num_states + 1))
     self.assertEqual(ub, [1] * (4 * num_states + 1))