예제 #1
0
    def test_branin(self):
        branin = Branin()

        # Check batch computation
        n_points = 10
        X = np.random.rand(n_points, branin.n_dims)
        X[:, 0] = X[:, 0].dot(branin.X_upper[0] - branin.X_lower[0]) + branin.X_lower[0]
        X[:, 1] = X[:, 1].dot(branin.X_upper[1] - branin.X_lower[1]) + branin.X_lower[1]

        y = branin.evaluate(X)

        assert y.shape[0] == n_points
        assert y.shape[1] == 1

        # Check single computation
        X = np.array([np.random.rand(branin.n_dims)])

        X[:, 0] = X[:, 0].dot(branin.X_upper[0] - branin.X_lower[0]) + branin.X_lower[0]
        X[:, 1] = X[:, 1].dot(branin.X_upper[1] - branin.X_lower[1]) + branin.X_lower[1]

        y = branin.evaluate(X)
        assert y.shape[0] == 1

        # Check optimas
        X = branin.opt
        y = branin.evaluate(X)

        assert np.all(np.round(y, 6) == np.array([branin.fopt]))
예제 #2
0
    def test_branin(self):
        task = Branin()

        # Check batch computation
        n_points = 10
        X = np.random.rand(n_points, task.n_dims)
        X[:, 0] = X[:, 0].dot(task.X_upper[0] - task.X_lower[0]) + task.X_lower[0]
        X[:, 1] = X[:, 1].dot(task.X_upper[1] - task.X_lower[1]) + task.X_lower[1]
        y = task.evaluate(X)
        assert y.shape[0] == n_points
        assert y.shape[1] == 1

        # Check single computation
        X = np.array([np.random.rand(task.n_dims)])

        X[:, 0] = X[:, 0].dot(task.X_upper[0] - task.X_lower[0]) + task.X_lower[0]
        X[:, 1] = X[:, 1].dot(task.X_upper[1] - task.X_lower[1]) + task.X_lower[1]

        y = task.evaluate(X)
        assert y.shape[0] == 1

        # Check optimas
        X = np.array([[-np.pi, 12.275], [np.pi, 2.275], [9.42478, 2.475]])
        y = task.evaluate(X)

        assert np.all(np.round(y, 6) == 0.397887) == True
예제 #3
0
파일: env_branin.py 프로젝트: sfalkner/RoBO
class EnvBranin(BaseTask):

    def __init__(self):
        self.branin = Branin()
        X_lower = np.concatenate((self.branin.original_X_lower, np.array([0])))
        X_upper = np.concatenate((self.branin.original_X_upper, np.array([1])))
        self.is_env = np.array([0, 0, 1])
        super(EnvBranin, self).__init__(X_lower, X_upper)

    def objective_function(self, x):
        y = self.branin.objective_function(x[:, :-1]) * np.exp(-(x[0, -1] - 1))

        return y

    def objective_function_test(self, x):
        return self.branin.objective_function(x[:, :-1])
예제 #4
0
class TestMaximizers2D(unittest.TestCase):
    def setUp(self):

        self.branin = Branin()

        n_points = 5
        self.X = np.random.rand(n_points, self.branin.n_dims)

        self.X[:, 0] = self.X[:, 0].dot(self.branin.X_upper[0] - self.branin.X_lower[0]) + self.branin.X_lower[0]
        self.X[:, 1] = self.X[:, 1].dot(self.branin.X_upper[1] - self.branin.X_lower[1]) + self.branin.X_lower[1]

        self.Y = self.branin.evaluate(self.X)

        kernel = GPy.kern.Matern52(input_dim=self.branin.n_dims)
        self.model = GPyModel(kernel, optimize=True, noise_variance=1e-4, num_restarts=10)

        self.model.train(self.X, self.Y)
        self.acquisition_func = EI(
            self.model,
            X_upper=self.branin.X_upper,
            X_lower=self.branin.X_lower,
            compute_incumbent=compute_incumbent,
            par=0.1,
        )

    def test_direct(self):
        maximizer = Direct(self.acquisition_func, self.branin.X_lower, self.branin.X_upper)
        x = maximizer.maximize()

        assert x.shape[0] == 1
        assert x.shape[1] == self.branin.n_dims
        assert np.all(x[:, 0] >= self.branin.X_lower[0])
        assert np.all(x[:, 1] >= self.branin.X_lower[1])
        assert np.all(x[:, 0] <= self.branin.X_upper[0])
        assert np.all(x[:, 1] <= self.branin.X_upper[1])
        assert np.all(x < self.branin.X_upper)

    def test_stochastic_local_search(self):
        maximizer = StochasticLocalSearch(self.acquisition_func, self.branin.X_lower, self.branin.X_upper)
        x = maximizer.maximize()

        assert x.shape[0] == 1
        assert x.shape[1] == self.branin.n_dims
        assert np.all(x[:, 0] >= self.branin.X_lower[0])
        assert np.all(x[:, 1] >= self.branin.X_lower[1])
        assert np.all(x[:, 0] <= self.branin.X_upper[0])
        assert np.all(x[:, 1] <= self.branin.X_upper[1])
        assert np.all(x < self.branin.X_upper)

    def test_cmaes(self):
        maximizer = CMAES(self.acquisition_func, self.branin.X_lower, self.branin.X_upper)
        x = maximizer.maximize(verbose=False)

        assert x.shape[0] == 1
        assert x.shape[1] == self.branin.n_dims
        assert np.all(x[:, 0] >= self.branin.X_lower[0])
        assert np.all(x[:, 1] >= self.branin.X_lower[1])
        assert np.all(x[:, 0] <= self.branin.X_upper[0])
        assert np.all(x[:, 1] <= self.branin.X_upper[1])
        assert np.all(x < self.branin.X_upper)
class BraninInBillionDims(REMBO):
    def __init__(self):
        self.b = Branin()
        X_lower = np.concatenate((self.b.X_lower, np.zeros([999998])))
        X_upper = np.concatenate((self.b.X_upper, np.ones([999998])))
        super(BraninInBillionDims, self).__init__(X_lower, X_upper, d=2)

    def objective_function(self, x):
        return self.b.objective_function(x[:, :2])
예제 #6
0
    def setUp(self):

        self.branin = Branin()

        n_points = 5
        self.X = np.random.rand(n_points, self.branin.n_dims)

        self.X[:, 0] = self.X[:, 0].dot(self.branin.X_upper[0] - self.branin.X_lower[0]) + self.branin.X_lower[0]
        self.X[:, 1] = self.X[:, 1].dot(self.branin.X_upper[1] - self.branin.X_lower[1]) + self.branin.X_lower[1]

        self.Y = self.branin.evaluate(self.X)

        kernel = GPy.kern.Matern52(input_dim=self.branin.n_dims)
        self.model = GPyModel(kernel, optimize=True, noise_variance=1e-4, num_restarts=10)

        self.model.train(self.X, self.Y)
        self.acquisition_func = EI(
            self.model,
            X_upper=self.branin.X_upper,
            X_lower=self.branin.X_lower,
            compute_incumbent=compute_incumbent,
            par=0.1,
        )
예제 #7
0
파일: env_branin.py 프로젝트: sfalkner/RoBO
 def __init__(self):
     self.branin = Branin()
     X_lower = np.concatenate((self.branin.original_X_lower, np.array([0])))
     X_upper = np.concatenate((self.branin.original_X_upper, np.array([1])))
     self.is_env = np.array([0, 0, 1])
     super(EnvBranin, self).__init__(X_lower, X_upper)
 def __init__(self):
     self.b = Branin()
     X_lower = np.concatenate((self.b.X_lower, np.zeros([999998])))
     X_upper = np.concatenate((self.b.X_upper, np.ones([999998])))
     super(BraninInBillionDims, self).__init__(X_lower, X_upper, d=2)