Exemple #1
0
    def test_against_MUX(self):
        scenario = MUXProblem(training_cycles=10000, address_size=3)

        algorithm = xcs.XCSAlgorithm()
        algorithm.exploration_probability = .1
        algorithm.discount_factor = 0
        algorithm.do_ga_subsumption = True
        algorithm.do_action_set_subsumption = True

        best = None
        expected = .6

        for _ in range(2):
            logging.disable(logging.CRITICAL)
            try:
                scenario.reset()
                steps, total_reward, time_passed, population = xcs.test(
                    algorithm, scenario)
            finally:
                logging.disable(logging.NOTSET)

            average_reward = total_reward / steps
            self.assertGreater(average_reward, .49)
            self.assertLess(time_passed, 40)
            if average_reward >= expected:
                break
            elif best is None or best < average_reward:
                best = average_reward
        else:
            self.fail("Failed to achieve expected average reward level. "
                      "(Missed by %f.)" % (expected - best))
Exemple #2
0
    def test_against_MUX(self):
        scenario = MUXProblem(training_cycles=10000, address_size=3)

        algorithm = xcs.XCSAlgorithm()
        algorithm.exploration_probability = .1
        algorithm.discount_factor = 0
        algorithm.do_ga_subsumption = True
        algorithm.do_action_set_subsumption = True

        best = None
        expected = .6

        for _ in range(2):
            logging.disable(logging.CRITICAL)
            try:
                scenario.reset()
                steps, total_reward, time_passed, population = xcs.test(
                    algorithm,
                    scenario
                )
            finally:
                logging.disable(logging.NOTSET)

            average_reward = total_reward / steps
            self.assertGreater(average_reward, .49)
            self.assertLess(time_passed, 40)
            if average_reward >= expected:
                break
            elif best is None or best < average_reward:
                best = average_reward
        else:
            self.fail("Failed to achieve expected average reward level. "
                      "(Missed by %f.)" % (expected - best))
Exemple #3
0
class TestMUXProblem(unittest.TestCase):

    def setUp(self):
        self.scenario = MUXProblem(10)

    def test_get_possible_actions(self):
        actions = self.scenario.get_possible_actions()
        self.assertTrue(len(actions) == 2)
        self.assertTrue(True in actions)
        self.assertTrue(False in actions)

    def test_sense(self):
        situation_size = (self.scenario.address_size +
                          (1 << self.scenario.address_size))
        previous = self.scenario.sense()
        self.assertIsInstance(previous, BitString)
        self.assertTrue(len(previous) == situation_size)
        while self.scenario.more():
            current = self.scenario.sense()
            self.assertIsInstance(current, BitString)
            self.assertTrue(len(current) == situation_size)
            if current != previous:
                break
        else:
            self.fail("All situations are the same.")

    def test_execute(self):
        situation = self.scenario.sense()
        index = int(situation[:self.scenario.address_size])
        value = situation[self.scenario.address_size + index]
        self.assertEqual(1, self.scenario.execute(value))
        self.assertEqual(0, self.scenario.execute(not value))

    def test_more(self):
        self.scenario.reset()
        for _ in range(self.scenario.initial_training_cycles):
            self.scenario.sense()
            self.assertTrue(self.scenario.more())
            self.scenario.execute(False)
        self.assertFalse(self.scenario.more())
Exemple #4
0
 def setUp(self):
     self.scenario = MUXProblem(10)
Exemple #5
0
 def setUp(self):
     self.scenario = MUXProblem(10)
Exemple #6
0
class TestMUXProblem(unittest.TestCase):
    def setUp(self):
        self.scenario = MUXProblem(10)

    def test_get_possible_actions(self):
        actions = self.scenario.get_possible_actions()
        self.assertTrue(len(actions) == 2)
        self.assertTrue(True in actions)
        self.assertTrue(False in actions)

    def test_sense(self):
        situation_size = (self.scenario.address_size +
                          (1 << self.scenario.address_size))
        previous = self.scenario.sense()
        self.assertIsInstance(previous, BitString)
        self.assertTrue(len(previous) == situation_size)
        while self.scenario.more():
            current = self.scenario.sense()
            self.assertIsInstance(current, BitString)
            self.assertTrue(len(current) == situation_size)
            if current != previous:
                break
        else:
            self.fail("All situations are the same.")

    def test_execute(self):
        situation = self.scenario.sense()
        index = int(situation[:self.scenario.address_size])
        value = situation[self.scenario.address_size + index]
        self.assertEqual(1, self.scenario.execute(value))
        self.assertEqual(0, self.scenario.execute(not value))

    def test_more(self):
        self.scenario.reset()
        for _ in range(self.scenario.initial_training_cycles):
            self.scenario.sense()
            self.assertTrue(self.scenario.more())
            self.scenario.execute(False)
        self.assertFalse(self.scenario.more())