emukit.test_functions.multi_fidelity package

Submodules

emukit.test_functions.multi_fidelity.borehole.multi_fidelity_borehole_function(high_noise_std_deviation=0, low_noise_std_deviation=0)

Two level borehole function.

The Borehole function models water flow through a borehole. Its simplicity and quick evaluation makes it a commonly used function for testing a wide variety of methods in computer experiments.

See reference for equations: https://www.sfu.ca/~ssurjano/borehole.html

Parameters:
  • high_noise_std_deviation (float) – Standard deviation of Gaussian observation noise on high fidelity observations. Defaults to zero.

  • low_noise_std_deviation (float) – Standard deviation of Gaussian observation noise on low fidelity observations. Defaults to zero.

Return type:

Tuple[MultiSourceFunctionWrapper, ParameterSpace]

Returns:

Tuple of user function object and parameter space

emukit.test_functions.multi_fidelity.branin.multi_fidelity_branin_function()

Two-dimensional Branin, often used as an optimization benchmark but here modified to be used as a multi-fidelity benchmark

Based on: https://www.sfu.ca/~ssurjano/branin.html

High fidelity given by: :rtype: Tuple[MultiSourceFunctionWrapper, ParameterSpace]

\[f(\mathbf{x}) = (x_2 - b x_1 ^ 2 + c x_1 - r) ^ 2 + s(1 - t) \cos(x_1) + s\]

Middle fidelity given by:

\[f_{m}(\mathbf{x}) = \sqrt{f_{high}(\mathbf{x} - 2)} + \frac{2(x_1 - 0.5) - 3(3x_2 - 1) - 1}{100}\]

Low fidelity given by:

\[f_{m}(1.2(\mathbf{x} + 2)) - \frac{3 x_2 + 1}{100}\]

where:

\[ \begin{align}\begin{aligned}b = 5.1 / (4 \pi ^ 2)\\c = 5 /\pi\\r = 6\\s = 10\\t = 1 / (8\pi)\end{aligned}\end{align} \]
emukit.test_functions.multi_fidelity.currin.multi_fidelity_currin_function()

High fidelity function is given by: :rtype: Tuple[MultiSourceFunctionWrapper, ParameterSpace]

\[f_{high}(\mathbf{x}) = \left[ 1 - \exp \left(-\frac{1}{2x_2}\right) \right] \frac{2300x_1^3 + 1900x_1^2 + 2092x_1 + 60}{100x_1^3+500x_1^2 + 4x_1 + 20}\]

Low fidelity function given by:

\[\begin{split}f_{low}(\mathbf{x}) = \frac{1}{4} \left[ f_{high}(x_1 + 0.05, x_2 + 0.05) + f_{high}(x_1 + 0.05, \max (0, x_2 - 0.05)) \\ + f_{high}(x_1 - 0.05, x_2 + 0.05) + f_{high}\left(x_1 - 0.05, \max \left(0, x_2 - 0.05\right)\right) \right]\end{split}\]

Input domain:

\[\mathbf{x}_i \in [0, 1]\]

Reference: https://www.sfu.ca/~ssurjano/curretal88exp.html

emukit.test_functions.multi_fidelity.hartmann.multi_fidelity_hartmann_3d()

The function is given by:

\[f(x, \alpha) = -\sum_{i=1}^{4} \alpha_i \exp \left( -\sum_{j=1}^{3} A_{i,j}\left( x_j - P_{i, j} \right)^2 \right)\]

where

\[\begin{split}\mathbf{A} = \begin{bmatrix} 3.0 & 10 & 30 \\ 0.1 & 10 & 35 \\ 3.0 & 10 & 30 \\ 0.1 & 10 & 35 \end{bmatrix}\end{split}\]
\[\begin{split}\mathbf{P} = 10^{-4} \begin{bmatrix} 3689 & 1170 & 2673 \\ 4699 & 4387 & 7470 \\ 1091 & 8732 & 5547 \\ 381 & 5743 & 8828 \end{bmatrix}\end{split}\]

The high fidelity function is given by setting:

\[\alpha = (1.0, 1.2, 3.0, 3.2)^T\]

The middle fidelity is given by setting:

\[\alpha = (1.01, 1.19, 2.9, 3.3)^T\]

The low fidelity is given by setting:

\[\alpha = (1.02, 1.18, 2.8, 3.4)^T\]

The domain is given by:

\[\mathbf{x}_i \in (0, 1)\]

Reference: https://www.sfu.ca/~ssurjano/hart3.html

Return type:

Tuple[MultiSourceFunctionWrapper, ParameterSpace]

Returns:

Tuple of MultiSourceFunctionWrapper and ParameterSpace

emukit.test_functions.multi_fidelity.park.multi_fidelity_park_function()

High fidelity is given by: :rtype: Tuple[MultiSourceFunctionWrapper, ParameterSpace]

\[f_{high}(\mathbf{x}) = \frac{x_1}{2}\left[ \sqrt{1 + \left( x_2 + x_3^2 \right) \frac{x_4}{x_1^2}} - 1\right] + \left( x_1 + 3 x_4 \right) \exp \left[ 1 + \sin x_3 \right]\]

Low fidelity is given by:

\[f_{low}(\mathbf{x}) = \left[ 1 + \frac{\sin x_1}{10} \right] f_{high}(\mathbf{x}) - 2x_1 + x_2 ^ 2 + x_3 ^2 + 0.5\]

The input domain is given by:

\[\mathbf{x}_i \in (0, 1)\]

Reference: https://www.sfu.ca/~ssurjano/park91a.html

Module contents