Y = r.multivariate_normal(mean, cov[j % 2]) Y = np.reshape(Y, (6**d, 1)) aux_model.append( GPy.models.GPRegression(grid, Y, kernel[j % 2], noise_var=1e-10)) def f(X): X = np.atleast_2d(X) fX = np.empty((m, X.shape[0])) for j in range(m): fX[j, :] = aux_model[j].posterior_mean(X)[:, 0] return fX attributes = Attributes(f, as_list=False, output_dim=m) # Initial design initial_design = GPyOpt.experiment_design.initial_design( 'random', space, 2 * (d + 1), experiment_number) # True underlying utility true_underlying_utility_parameter = utility.sample_parameter_from_prior( 1, experiment_number) print('True underlying utility parameter: {}'.format( true_underlying_utility_parameter)) def true_underlying_utility_func(y): return utility_func(y, true_underlying_utility_parameter) # Run full optimization loop
np.sum(np.cos(2 * np.pi * (X[:, 1:] - 0.5)), axis=1)) return gX def f1(X): X = np.atleast_2d(X) f1X = np.empty((X.shape[0], 1)) f1X[:, 0] = 0.5 * X[:, 0] * (1 + g(X)[:, 0]) return -f1X def f2(X): X = np.atleast_2d(X) f2X = np.empty((X.shape[0], 1)) f2X[:, 0] = 0.5 * (1 - X[:, 0]) * (1 + g(X)[:, 0]) return -f2X attributes = Attributes([f1, f2], as_list=True, output_dim=m) # Utility function def utility_func(y, parameter): return np.dot(parameter, y) def utility_gradient(y, parameter): return parameter def prior_sample_generator(n_samples=1, seed=None): if seed is None: samples = np.random.dirichlet(np.ones((m, )), n_samples) else: random_state = np.random.RandomState(seed) samples = random_state.dirichlet(np.ones((m, )), n_samples) return samples
# --- Sampling policy sampling_policy_name = 'Random' if sampling_policy_name is 'uTS': sampling_policy = uTS(model, space, optimizer='CMA', utility=utility) elif sampling_policy_name is 'Random': sampling_policy = Random(model, space) # Attributes def f(X): X = np.atleast_2d(X) fX = -np.sin(10 * X[:, 0]) - np.square(X[:, 1]) fX = np.atleast_2d(fX) return fX attributes = Attributes(f, noise_var=[0.01], as_list=False, output_dim=m) # BO model max_iter = 100 experiment_name = 'test_sinequad' if len(sys.argv) > 1: experiment_number = int(sys.argv[1]) filename = [experiment_name, sampling_policy_name, str(experiment_number)] # Initial design initial_design = GPyOpt.experiment_design.initial_design('random', space, 2 * (d + 1), experiment_number) # Run full optimization loop bopl = BOPL(model, space, attributes, sampling_policy, utility, initial_design, dynamic_utility_parameter_distribution=dynamic_utility_parameter_distribution) bopl.run_optimization(max_iter=max_iter, filename=filename, report_evaluated_designs_only=False, utility_distribution_update_interval=1, compute_true_underlying_optimal_value=False,