Ejemplo n.º 1
0
    def test_repr(self):
        num_states = 2
        rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        fsm_params = FSMParams(num_states=num_states, rows=rows)

        self.assertEqual(fsm_params.__repr__(),
                         '0:C:0_C_1_D:0_D_0_D:1_C_1_C:1_D_1_D')
Ejemplo n.º 2
0
    def test_repr_rows(self):
        num_states = 2
        fsm_params = FSMParams(num_states=num_states)

        rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        string_repr = fsm_params.repr_rows(rows)
        self.assertEqual(string_repr, '0_C_1_D:0_D_0_D:1_C_1_C:1_D_1_D')
Ejemplo n.º 3
0
    def test_randomize(self):
        num_states = 2
        rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        fsm_params = FSMParams(num_states=num_states, rows=rows)

        axl.seed(5)
        fsm_params.randomize()
        self.assertNotEqual(rows, fsm_params.rows)
        self.assertNotEqual(C, fsm_params.initial_action)
        self.assertNotEqual(0, fsm_params.initial_state)
Ejemplo n.º 4
0
    def test_create_vector_bounds(self):

        num_states = 4
        fsm_params = FSMParams(num_states=num_states)
        lb, ub = fsm_params.create_vector_bounds()

        self.assertIsInstance(lb, list)
        self.assertEqual(len(lb), len(fsm_params.rows) * 2 + 1)
        self.assertIsInstance(ub, list)
        self.assertEqual(len(ub), len(fsm_params.rows) * 2 + 1)
Ejemplo n.º 5
0
    def test_vector_to_instance(self):

        num_states = 4
        vector = [random.random() for _ in range(num_states * 4 + 1)]
        fsm_params = FSMParams(num_states=4)
        fsm_params.receive_vector(vector=vector)

        instance = fsm_params.player()

        self.assertIsInstance(instance, axl.FSMPlayer)
Ejemplo n.º 6
0
    def test_parse_repr(self):
        rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        string_repr = '0:C:0_C_1_D:0_D_0_D:1_C_1_C:1_D_1_D'
        parameters = FSMParams.parse_repr(string_repr)
        self.assertEqual(parameters.initial_state, 0)
        self.assertEqual(parameters.initial_action, C)
        self.assertEqual(parameters.rows, rows)

        string_repr = '1:D:0_C_1_D:0_D_0_D:1_C_1_C:1_D_1_D'
        parameters = FSMParams.parse_repr(string_repr)
        self.assertEqual(parameters.initial_state, 1)
        self.assertEqual(parameters.initial_action, D)
        self.assertEqual(parameters.rows, rows)
Ejemplo n.º 7
0
    def test_crossover_rows(self):
        num_states = 2
        fsm_params = FSMParams(num_states=num_states)

        rows1 = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        rows2 = [[0, D, 1, C], [0, C, 0, C], [1, D, 1, D], [1, C, 1, C]]

        axl.seed(0)
        rows = fsm_params.crossover_rows(rows1, rows2)
        self.assertEqual(rows, rows1[:2] + rows2[2:])

        axl.seed(1)
        rows = fsm_params.crossover_rows(rows1, rows2)
        self.assertEqual(rows, rows1[:0] + rows2[0:])
Ejemplo n.º 8
0
    def test_random_params(self):
        num_states = 2
        fsm_params = FSMParams(num_states=num_states)
        rows, initial_state, initial_action = fsm_params.random_params(num_states)

        self.assertEqual(len(rows), num_states * 2)
        self.assertIn(initial_state, range(num_states))
        self.assertIn(initial_action, (C, D))
        for row in rows:
            self.assertEqual(len(row), 4)
            self.assertIn(row[0], range(num_states))
            self.assertIn(row[2], range(num_states))
            self.assertIn(row[1], (C, D))
            self.assertIn(row[3], (C, D))
Ejemplo n.º 9
0
    def test_copy(self):
        num_states = 2
        fsm_params = FSMParams(num_states=num_states)
        copy_fsm_params = fsm_params.copy()
        # Not the same
        self.assertIsNot(fsm_params, copy_fsm_params)

        # Have same attributes
        self.assertEqual(fsm_params.PlayerClass, copy_fsm_params.PlayerClass)
        self.assertEqual(fsm_params.num_states, copy_fsm_params.num_states)
        self.assertEqual(fsm_params.rows, copy_fsm_params.rows)
        self.assertEqual(fsm_params.initial_action,
                         copy_fsm_params.initial_action)
        self.assertEqual(fsm_params.initial_state,
                         copy_fsm_params.initial_state)
Ejemplo n.º 10
0
 def test_init(self):
     num_states = 2
     rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
     fsm_params = FSMParams(num_states=num_states, rows=rows)
     self.assertEqual(fsm_params.PlayerClass, axl.FSMPlayer)
     self.assertEqual(fsm_params.num_states, num_states)
     self.assertEqual(fsm_params.rows, rows)
     self.assertEqual(fsm_params.initial_action, C)
     self.assertEqual(fsm_params.initial_state, 0)
Ejemplo n.º 11
0
    def test_crossover(self):
        num_states = 2

        rows1 = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        fsm_params1 = FSMParams(num_states=num_states, rows=rows1)

        rows2 = [[0, D, 1, C], [0, C, 0, C], [1, D, 1, D], [1, C, 1, C]]
        fsm_params2 = FSMParams(num_states=num_states, rows=rows2)

        axl.seed(0)
        fsm_params = fsm_params1.crossover(fsm_params2)
        self.assertEqual(fsm_params.rows,
                         fsm_params1.rows[:2] + fsm_params2.rows[2:])

        self.assertEqual(fsm_params.PlayerClass, fsm_params1.PlayerClass)
        self.assertEqual(fsm_params.num_states, fsm_params1.num_states)
        self.assertEqual(fsm_params.initial_action, fsm_params1.initial_action)
        self.assertEqual(fsm_params.initial_state, fsm_params1.initial_state)
Ejemplo n.º 12
0
    def test_crossover(self):
        num_states = 2

        rows1 = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        fsm_params1 = FSMParams(num_states=num_states, rows=rows1)

        rows2 = [[0, D, 1, C], [0, C, 0, C], [1, D, 1, D], [1, C, 1, C]]
        fsm_params2 = FSMParams(num_states=num_states, rows=rows2)

        axl.seed(0)
        fsm_params = fsm_params1.crossover(fsm_params2)
        self.assertEqual(fsm_params.rows,
                         fsm_params1.rows[:2] + fsm_params2.rows[2:])

        self.assertEqual(fsm_params.PlayerClass, fsm_params1.PlayerClass)
        self.assertEqual(fsm_params.num_states, fsm_params1.num_states)
        self.assertEqual(fsm_params.initial_action,
                         fsm_params1.initial_action)
        self.assertEqual(fsm_params.initial_state,
                         fsm_params1.initial_state)
Ejemplo n.º 13
0
 def test_init_without_default_rows(self):
     """
     Check that by default have random rows.
     """
     num_states = 2
     rows = []
     for seed in range(2):
         axl.seed(seed)
         fsm_params = FSMParams(num_states=num_states)
         rows.append(fsm_params.rows)
     self.assertNotEqual(*rows)
Ejemplo n.º 14
0
 def test_player(self):
     num_states = 2
     rows = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
     fsm_params = FSMParams(num_states=num_states, rows=rows)
     self.assertEqual(fsm_params.player(),
                      axl.FSMPlayer(rows, initial_state=0))