def test_ccmaes(): x = np.zeros(1) opt = CCMAESOptimizer(x, random_state=0) opt.init(1, 1) r = eval_loop(x, opt, n_evals=1000) assert_less(-1e-7, r.max()) return r
def test_cmaes_no_initial_params(): opt = CCMAESOptimizer() opt.init(10, 5) params = np.empty(10) opt.set_context(np.zeros(5)) opt.get_next_parameters(params)
def test_linear_contextual_sphere(): random_state = np.random.RandomState(0) n_params = 3 n_context_dims = 2 obj = LinearContextualSphere(random_state, n_params, n_context_dims) opt = CCMAESOptimizer(context_features="affine", random_state=random_state, log_to_stdout=False) opt.init(n_params, n_context_dims) params = np.empty(n_params) for i in range(1000): context = random_state.rand(n_context_dims) * 2.0 - 1.0 opt.set_context(context) opt.get_next_parameters(params) opt.set_evaluation_feedback([obj.feedback(params, context)]) policy = opt.best_policy() mean_reward = evaluate(policy, obj) assert_greater(mean_reward, -1e-4)
def test_cmaes_diagonal_cov(): opt = CCMAESOptimizer(covariance=np.zeros(10)) opt.init(10, 5) params = np.empty(10) opt.set_context(np.zeros(5)) opt.get_next_parameters(params)
def test_cmaes_dimensions_mismatch(): opt = CCMAESOptimizer(initial_params=np.zeros(5)) assert_raises_regexp(ValueError, "Number of dimensions", opt.init, 10, 5)
plt.contourf(params, contexts, rewards, cmap=plt.cm.Blues, levels=np.linspace(rewards.min(), rewards.max(), 50)) plt.setp(plt.gca(), xticks=(), yticks=(), xlim=(-5, 5), ylim=(-5, 5)) random_state = np.random.RandomState(0) initial_params = 4.0 * np.ones(1) n_samples_per_update = 30 variance = 0.03 context_features = "quadratic" ccmaes = CCMAESOptimizer(initial_params=initial_params, n_samples_per_update=n_samples_per_update, variance=variance, context_features=context_features, random_state=0) creps = CREPSOptimizer(initial_params=initial_params, n_samples_per_update=n_samples_per_update, train_freq=n_samples_per_update, variance=variance, epsilon=2.0, context_features=context_features, random_state=0) opts = {"C-CMA-ES": ccmaes, "C-REPS": creps} for opt in opts.values(): opt.init(1, 1) n_generations = 16 n_rows = 4