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]))
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
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])
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])
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 __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)