botorch.test_functions

Synthetic Test Functions

Synthetic functions for optimization benchmarks. Reference: https://www.sfu.ca/~ssurjano/optimization.html

class botorch.test_functions.synthetic.SyntheticTestFunction(noise_std=None, negate=False)[source]

Bases: torch.nn.modules.module.Module, abc.ABC

Base class for synthetic test functions.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

property optimal_value

The global minimum (maximum if negate=True) of the function.

Return type

float

forward(X, noise=True)[source]

Evaluate the function on a set of points.

Parameters
  • X (Tensor) – The point(s) at which to evaluate the function.

  • noise (bool) – If True, add observation noise as specified by noise_std.

Return type

Tensor

abstract evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Ackley(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Ackley test function.

d-dimensional function (usually evaluated on [-32.768, 32.768]^d):

f(x) = -A exp(-B sqrt(1/d sum_{i=1}^d x_i^2)) -

exp(1/d sum_{i=1}^d cos(c x_i)) + A + exp(1)

f has one minimizer for its global minimum at z_1 = (0, 0, …, 0) with f(z_1) = 0.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Beale(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Branin(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Branin test function.

Two-dimensional function (usually evaluated on [-5, 10] x [0, 15]):

B(x) = (x_2 - b x_1^2 + c x_1 - r)^2 + 10 (1-t) cos(x_1) + 10

Here b, c, r and t are constants where b = 5.1 / (4 * math.pi ** 2) c = 5 / math.pi, r = 6, t = 1 / (8 * math.pi) B has 3 minimizers for its global minimum at z_1 = (-pi, 12.275), z_2 = (pi, 2.275), z_3 = (9.42478, 2.475) with B(z_i) = 0.397887.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Bukin(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Cosine8(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Cosine Mixture test function.

8-dimensional function (usually evaluated on [-1, 1]^8):

f(x) = 0.1 sum_{i=1}^8 cos(5 pi x_i) - sum_{i=1}^8 x_i^2

f has one maximizer for its global maximum at z_1 = (0, 0, …, 0) with f(z_1) = 0.8

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 8
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.DropWave(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.DixonPrice(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.EggHolder(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Eggholder test function.

Two-dimensional function (usually evaluated on [-512, 512]^2):

E(x) = (x_2 + 47) sin(R1(x)) - x_1 * sin(R2(x))

where R1(x) = sqrt(|x_2 + x_1 / 2 + 47|), R2(x) = sqrt|x_1 - (x_2 + 47)|).

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Griewank(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Hartmann(dim=6, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Hartmann synthetic test function.

Most commonly used is the six-dimensional version (typically evaluated on [0, 1]^6):

H(x) = - sum_{i=1}^4 ALPHA_i exp( - sum_{j=1}^6 A_ij (x_j - P_ij)**2 )

H has a 6 local minima and a global minimum at

z = (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573)

with H(z) = -3.32237.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

property optimal_value

The global minimum (maximum if negate=True) of the function.

Return type

float

property optimizers
Return type

Tensor

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.HolderTable(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Holder Table synthetic test function.

Two-dimensional function (typically evaluated on [0, 10] x [0, 10]):

H(x) = - | sin(x_1) * cos(x_2) * exp(| 1 - ||x|| / pi | ) |

H has 4 global minima with H(z_i) = -19.2085 at

z_1 = ( 8.05502, 9.66459) z_2 = (-8.05502, -9.66459) z_3 = (-8.05502, 9.66459) z_4 = ( 8.05502, -9.66459)

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Levy(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Levy synthetic test function.

d-dimensional function (usually evaluated on [-10, 10]^d):

f(x) = sin^2(pi w_1) +

sum_{i=1}^{d-1} (w_i-1)^2 (1 + 10 sin^2(pi w_i + 1)) + (w_d - 1)^2 (1 + sin^2(2 pi w_d))

where w_i = 1 + (x_i - 1) / 4 for all i.

f has one minimizer for its global minimum at z_1 = (1, 1, …, 1) with f(z_1) = 0.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Michalewicz(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Michalewicz synthetic test function.

d-dim function (usually evaluated on hypercube [0, pi]^d):

M(x) = sum_{i=1}^d sin(x_i) (sin(i x_i^2 / pi)^20)

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

property optimizers
Return type

Tensor

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Powell(dim=4, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Rastrigin(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Rosenbrock(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Rosenbrock synthetic test function.

d-dimensional function (usually evaluated on [-5, 10]^d):

f(x) = sum_{i=1}^{d-1} (100 (x_{i+1} - x_i^2)^2 + (x_i - 1)^2)

f has one minimizer for its global minimum at z_1 = (1, 1, …, 1) with f(z_i) = 0.0.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.Shekel(m=10, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Shekel synthtetic test function.

4-dimensional function (usually evaluated on [0, 10]^4):

f(x) = -sum_{i=1}^10 (sum_{j=1}^4 (x_j - A_{ji})^2 + C_i)^{-1}

f has one minimizer for its global minimum at z_1 = (4, 4, 4, 4) with f(z_1) = -10.5363.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 4
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.SixHumpCamel(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.StyblinskiTang(dim=2, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Styblinski-Tang synthtetic test function.

d-dimensional function (usually evaluated on the hypercube [-5, 5]^d):

H(x) = 0.5 * sum_{i=1}^d (x_i^4 - 16 * x_i^2 + 5 * x_i)

H has a single global mininimum H(z) = -39.166166 * d at z = [-2.903534]^d

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.synthetic.ThreeHumpCamel(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 2
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

Multi-Fidelity Synthetic Test Functions

Synthetic functions for multi-fidelity optimization benchmarks.

class botorch.test_functions.multi_fidelity.AugmentedBranin(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Augmented Branin test function for multi-fidelity optimization.

3-dimensional function with domain [-5, 10] x [0, 15] * [0,1], where the last dimension of is the fidelity parameter:

B(x) = (x_2 - (b - 0.1 * (1 - x_3))x_1^2 + c x_1 - r)^2 +

10 (1-t) cos(x_1) + 10

Here b, c, r and t are constants where b = 5.1 / (4 * math.pi ** 2) c = 5 / math.pi, r = 6, t = 1 / (8 * math.pi). B has infinitely many minimizers with x_1 = -pi, pi, 3pi and B_min = 0.397887

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 3
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.multi_fidelity.AugmentedHartmann(noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Augmented Hartmann synthetic test function.

7-dimensional function (typically evaluated on [0, 1]^7), where the last dimension is the fidelity parameter.

H(x) = -(ALPHA_1 - 0.1 * (1-x_7)) * exp(- sum_{j=1}^6 A_1j (x_j - P_1j) ** 2) -

sum_{i=2}^4 ALPHA_i exp( - sum_{j=1}^6 A_ij (x_j - P_ij) ** 2)

H has a unique global minimizer x = [0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573, 1.0]

with H_min = -3.32237

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

dim = 7
evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor

class botorch.test_functions.multi_fidelity.AugmentedRosenbrock(dim=3, noise_std=None, negate=False)[source]

Bases: botorch.test_functions.synthetic.SyntheticTestFunction

Augmented Rosenbrock synthetic test function for multi-fidelity optimization.

d-dimensional function (usually evaluated on [-5, 10]^(d-2) * [0, 1]^2), where the last two dimensions are the fidelity parameters:

f(x) = sum_{i=1}^{d-1} (100 (x_{i+1} - x_i^2 + 0.1 * (1-x_{d-1}))^2 +

(x_i - 1 + 0.1 * (1 - x_d)^2)^2)

f has one minimizer for its global minimum at z_1 = (1, 1, …, 1) with f(z_i) = 0.0.

Base constructor for synthetic test functions.

Parameters
  • noise_std (Optional[float]) – Standard deviation of the observation noise.

  • negate (bool) – If True, negate the function.

evaluate_true(X)[source]

Evaluate the function (w/o observation noise) on a set of points.

Return type

Tensor