geometric#

Generic simulator functions based on simple geometric surfaces.

Functions

ackley(X)

Evaluates the N-dimensional Ackley function.

branin_currin(X)

Synthetic BraninCurrin function from BoTorch test_functions

cornered_parab(X)

Evaluates a simple n-dimensional parabaloid at the location specified.

paraboloid(X)

Evaluates a simple n-dimensional paraboloid at the specified location.

perm(X)

Evaluates the perm function in N-dimensions Negative transform, to get max Max exists at X = (1,1/2,...,1/d) Max is 10

rosenbrock(X)

Evaluates the Rosenbrock function in log10 scale, and negative transform (for max).

shifted_parab(X)

Evaluates a simple n-dimensional parabaloid at the location specified.

sixhump_camel(X)

Evaluates the 6-hump camel function in 2D Transformed to get a max of 10 at X = (0.0898,-0.7126) and (-0.0898, 0.7126)

threehump_camel(X)

Evaluates the 3-hump camel function in 2D Negative transform, to get max Two global max exist at X = (0,0) Max is 1

two_leaves(X)

Simulates the two-leaf multi-output function

obsidian.experiment.benchmark.geometric.ackley(X)[source]#

Evaluates the N-dimensional Ackley function.

The Ackley function is a benchmark optimization problem that is commonly used to test optimization algorithms. It is a multimodal function with multiple local maxima and a global minimum at (0.8, 0.8, …, 0.8). This implementation of the Ackley function has been transformed to have a maximum value of 10 at the global minimum.

Parameters:

X (ndarray or DataFrame) – An (m x d) array or DataFrame of m observations with d features to be evaluated.

Returns:

An (m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.branin_currin(X)[source]#

Synthetic BraninCurrin function from BoTorch test_functions

Two objective problem composed of the Branin and Currin functions:

Branin (rescaled):

f_1(x) = ( 15*x_1 - 5.1 * (15 * x_0 - 5) ** 2 / (4 * pi ** 2) + 5 * (15 * x_0 - 5) / pi - 5 ) ** 2 + (10 - 10 / (8 * pi)) * cos(15 * x_0 - 5))

Currin:

f_2(x) = (1 - exp(-1 / (2 * x_1))) * ( 2300 * x_0 ** 3 + 1900 * x_0 ** 2 + 2092 * x_0 + 60 ) / 100 * x_0 ** 3 + 500 * x_0 ** 2 + 4 * x_0 + 20

Parameters:

X (ndarray) – (m)-observations by (d=2)-features array of data to be evaluated.

Returns:

(k=2)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.cornered_parab(X)[source]#

Evaluates a simple n-dimensional parabaloid at the location specified.

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated

Returns:

(m)-sized array of responses

Return type:

ndarray

obsidian.experiment.benchmark.geometric.paraboloid(X)[source]#

Evaluates a simple n-dimensional paraboloid at the specified location.

Parameters:

X (ndarray) – An (m)-observations by (d)-features array of data to be evaluated.

Returns:

An (m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.perm(X)[source]#

Evaluates the perm function in N-dimensions Negative transform, to get max Max exists at X = (1,1/2,…,1/d) Max is 10

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated.

Returns:

(m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.rosenbrock(X)[source]#

Evaluates the Rosenbrock function in log10 scale, and negative transform (for max).

The global maximum of the Rosenbrock function is at X = (1, 1, …, 1). The maximum value is 10, based on the standard function minimum of 0. We have -log10(0+1e-10).

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated.

Returns:

(m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.shifted_parab(X)[source]#

Evaluates a simple n-dimensional parabaloid at the location specified. Target paraboloid contains a maximum of 100 at all x=0.2

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated

Returns:

(m)-sized array of responses

Return type:

ndarray

obsidian.experiment.benchmark.geometric.sixhump_camel(X)[source]#

Evaluates the 6-hump camel function in 2D Transformed to get a max of 10 at X = (0.0898,-0.7126) and (-0.0898, 0.7126)

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated.

Returns:

(m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.threehump_camel(X)[source]#

Evaluates the 3-hump camel function in 2D Negative transform, to get max Two global max exist at X = (0,0) Max is 1

Parameters:

X (ndarray) – (m)-observations by (d)-features array of data to be evaluated.

Returns:

(m)-sized array of responses.

Return type:

ndarray

obsidian.experiment.benchmark.geometric.two_leaves(X)[source]#

Simulates the two-leaf multi-output function

Parameters:

X (ndarray) – (m)-observations by (d=2)-features array of data to be evaluated.

Returns:

(m=2)-sized array of responses.

Return type:

ndarray