Exemplo n.º 1
0
    def test_two_environment_tasks_first_environment_is_empty(self):

        src1   = LinearSyntheticSimulation(n_interactions=0)
        src2   = LinearSyntheticSimulation(n_interactions=5)

        task1 = ObserveTask()
        task2 = ObserveTask()

        items = [ WorkItem(0, None, src1, None, task1), WorkItem(1, None, src2, None, task2) ]

        transactions = list(ProcessWorkItems().filter(items))

        self.assertEqual(len(task1.observed), 0)
        self.assertEqual(len(task2.observed[1]), 5)
Exemplo n.º 2
0
    def test_linear_synthetic(self):

        time = timeit.timeit(
            lambda: list(LinearSyntheticSimulation(100).read()), number=1)

        #.22 was my final time
        self.assertLess(time, 2.2)
    def test_simple_no_context_action_features(self):

        simulation = LinearSyntheticSimulation(500,
                                               n_actions=2,
                                               n_context_features=0,
                                               n_action_features=4,
                                               reward_features=["a", "xa"])
        interactions = list(simulation.read())

        self.assertEqual(500, len(interactions))
        self.assertEqual(2, len(interactions[0].actions))
        self.assertEqual(None, interactions[0].context)
        self.assertEqual(4, len(interactions[0].actions[0]))

        rewards = [r for i in interactions for r in i.kwargs['rewards']]
        self.assertLess(max(rewards), 1.2)
        self.assertGreater(max(rewards), .75)
        self.assertLess(min(rewards), .25)
        self.assertGreater(min(rewards), -.2)
        self.assertGreater(.05, abs(.5 - sum(rewards) / len(rewards)))
Exemplo n.º 4
0
    def test_empty_environment_tasks(self):

        src1  = LinearSyntheticSimulation(0)
        task1 = ObserveTask()

        items = [ WorkItem(0, None, src1, None, task1) ]

        transactions = list(ProcessWorkItems().filter(items))

        self.assertEqual(len(task1.observed), 0)
        self.assertEqual(len(transactions)  , 0)
    def test_pickle(self):
        simulation = LinearSyntheticSimulation(500,
                                               n_actions=2,
                                               n_context_features=3,
                                               n_action_features=4,
                                               reward_features=["a", "xa"],
                                               seed=2)
        simulation = pickle.loads(pickle.dumps(simulation))

        interactions = list(simulation.read())

        self.assertEqual(500, len(interactions))
        self.assertEqual(2, len(interactions[0].actions))
        self.assertEqual(3, len(interactions[0].context))
        self.assertEqual(4, len(interactions[0].actions[0]))

        self.assertEqual(['a', 'xa'], simulation.params['reward_features'])
        self.assertEqual(2, simulation.params['seed'])

        self.assertEqual("LinearSynth(A=2,c=3,a=4,R=['a', 'xa'],seed=2)",
                         str(simulation))
Exemplo n.º 6
0
    def test_pipe_four_groups(self):
        sim1 = Environments(LinearSyntheticSimulation(500)).shuffle([1,2])._environments
        sim2 = LambdaSimulation(5, lambda i: i, lambda i,c: [0,1,2], lambda i,c,a: cast(float,a))

        tasks = [
            WorkItem(None, 0, None, None, None),
            WorkItem(None, 1, None, None, None),
            WorkItem(1, None, sim2, None, None),
            WorkItem(0, None, sim1[0], None, None),
            WorkItem(0, 0, sim1[0], None, None),
            WorkItem(2, 0, sim1[1], None, None),
            WorkItem(0, 1, sim1[0], None, None),
            WorkItem(1, 1, sim2, None, None)
        ]

        groups = list(ChunkBySource().filter(tasks))

        self.assertEqual(len(groups), 4)
        self.assertEqual(groups[0], tasks[0:1])
        self.assertEqual(groups[1], tasks[1:2])
        self.assertEqual(groups[2], [tasks[3],tasks[4],tasks[6],tasks[5]])
        self.assertEqual(groups[3], [tasks[2],tasks[7]])
 def test_str(self):
     self.assertEqual(
         "LinearSynth(A=2,c=3,a=4,R=['xa'],seed=2)",
         str(LinearSyntheticSimulation(100, 2, 3, 4, ["xa"], 2)))
 def test_params(self):
     env = LinearSyntheticSimulation(100, reward_features=["xa"], seed=2)
     self.assertEqual(['xa'], env.params['reward_features'])
     self.assertEqual(2, env.params['seed'])