Exemple #1
0
def test_noncontextual_behavior_search():
    opt = CMAESOptimizer(initial_params=np.zeros(1))
    assert_raises_regexp(TypeError,
                         "requires contextual behavior search",
                         ContextualController,
                         environment=ContextualObjectiveFunction(),
                         behavior_search=JustOptimizer(opt))
Exemple #2
0
def test_set_context():
    env = ObjectiveFunction(name="Sphere", n_params=2, random_state=0)
    env.init()

    cenv = ContextualObjectiveFunction(name="LinearContextualSphere",
                                       n_params=2,
                                       n_context_dims=1,
                                       random_state=0)
    env2 = SetContext(cenv, context=np.array([0.0]))
    env2.init()

    assert_equal(env.get_num_inputs(), env2.get_num_inputs())
    assert_equal(env.get_num_outputs(), env2.get_num_outputs())

    assert_almost_equal(env.get_maximum_feedback(),
                        env2.get_maximum_feedback())

    params = np.zeros(2)
    f = np.empty(2)
    for i, e in enumerate([env, env2]):
        e.reset()
        e.set_inputs(params)
        e.step_action()
        out = np.empty(1)
        e.get_outputs(out)
        assert_true(e.is_evaluation_done())
        f[i] = e.get_feedback()[:]
        assert_false(e.is_behavior_learning_done())
    assert_almost_equal(f[0], f[1])
Exemple #3
0
def test_record_feedbacks():
    opt = CREPSOptimizer(initial_params=np.zeros(1))
    ctrl = ContextualController(environment=ContextualObjectiveFunction(),
                                behavior_search=JustContextualOptimizer(opt),
                                accumulate_feedbacks=False,
                                record_feedbacks=True)
    returns = ctrl.learn()
    assert_array_equal(returns, ctrl.feedbacks_)
Exemple #4
0
def test_record_outputs():
    opt = CREPSOptimizer(initial_params=np.zeros(1))
    ctrl = ContextualController(environment=ContextualObjectiveFunction(),
                                behavior_search=JustContextualOptimizer(opt),
                                record_outputs=True)
    returns = ctrl.learn()
    assert_equal(len(returns), 10)
    assert_equal(np.array(ctrl.outputs_).shape, (10, 1, 0))
Exemple #5
0
def test_missing_behavior_search():
    ctrl = ContextualController(environment=ContextualObjectiveFunction())
    beh = DummyBehavior(initial_params=np.array([0.0]))
    beh.init(0, 1)
    feedback = ctrl.episode_with(beh)
    assert_equal(len(feedback), 1)
    assert_less(
        feedback[0],
        ctrl.environment.get_maximum_feedback(ctrl.environment.context))
Exemple #6
0
def test_learn_controller_cmaes_sphere():
    test_contexts = np.linspace(-5, 5, 11)[:, np.newaxis]

    opt = CREPSOptimizer(initial_params=np.zeros(1), random_state=0)
    ctrl = ContextualController(environment=ContextualObjectiveFunction(),
                                behavior_search=JustContextualOptimizer(opt),
                                n_episodes=200,
                                n_episodes_before_test=200,
                                test_contexts=test_contexts)
    ctrl.learn()
    for d in ctrl.test_results_[-1]:
        assert_greater(d, -1e-5)
Exemple #7
0
def test_record_contexts():
    contexts = np.linspace(-5, 5, 11)[:, np.newaxis]

    class CREPSFixedContextOrder(CREPSOptimizer):
        def get_desired_context(self):
            return contexts[self.it]

    opt = CREPSFixedContextOrder()
    ctrl = ContextualController(environment=ContextualObjectiveFunction(),
                                behavior_search=JustContextualOptimizer(opt),
                                n_episodes=11,
                                record_contexts=True)
    ctrl.learn()
    assert_array_equal(contexts, ctrl.contexts_)
Exemple #8
0
def test_controller_creps_objective():
    opt = CREPSOptimizer(initial_params=np.zeros(1))
    ctrl = ContextualController(environment=ContextualObjectiveFunction(),
                                behavior_search=JustContextualOptimizer(opt))
    returns = ctrl.learn()
    assert_equal(len(returns), 10)
Exemple #9
0
def test_learning_fails_with_missing_behavior_search():
    controller = ContextualController(
        environment=ContextualObjectiveFunction())
    assert_raises_regexp(ValueError, "BehaviorSearch is required",
                         controller.learn)