예제 #1
0
            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
예제 #2
0
                          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
예제 #3
0
    # --- 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,