def test_goldstein_price(self): task = GoldsteinPrice() # 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([[0, -1]]) y = task.evaluate(X) assert np.all(np.round(y) == 3) == True
class EnvGoldsteinPrice(BaseTask): def __init__(self): self.goldstein_price = GoldsteinPrice() X_lower = np.concatenate((self.goldstein_price.original_X_lower, np.array([0]))) X_upper = np.concatenate((self.goldstein_price.original_X_upper, np.array([1]))) self.is_env = np.array([0, 0, 1]) super(EnvGoldsteinPrice, self).__init__(X_lower, X_upper) def objective_function(self, x): y = self.goldstein_price.objective_function(x[:, :-1]) * np.exp(-(x[0, -1] - 1)) return y def objective_function_test(self, x): return self.goldstein_price.objective_function(x[:, :-1])
def __init__(self): self.goldstein_price = GoldsteinPrice() X_lower = np.concatenate((self.goldstein_price.original_X_lower, np.array([0]))) X_upper = np.concatenate((self.goldstein_price.original_X_upper, np.array([1]))) self.is_env = np.array([0, 0, 1]) super(EnvGoldsteinPrice, self).__init__(X_lower, X_upper)