Hartmann6

hartmann.py: contains the Hartmann6 function

As defined in

“Remarks on multi-fidelity surrogates” by Chanyoung Park, Raphael T. Haftka and Nam H. Kim (2016)

Function definitions:

\[f_h(x_1, ..., x_6) = -\dfrac{1}{1.94}\Bigg( 2.58 + \sum^4_{i=1}\alpha_i \exp\Big( -\sum^6_{j=1} A_{ij}(x_j - P_{ij})^2 \Big) \Bigg)\]
\[f_l(x_1, ..., x_6) = -\dfrac{1}{1.94}\Bigg( 2.58 + \sum^4_{i=1}\alpha^{\prime}_i f_{exp}\Big( -\sum^6_{j=1} A_{ij}(x_j - P_{ij})^2 \Big) \Bigg)\]
\[f_{exp}(x) = (\exp(-4/9) + (\exp(-4/9) * (x + 4)/9)) ^ 9\]

with the following matrices and vectors:

\[\begin{split}A = \left( \begin{array}{cccccc} 10 & 3 & 17 & 3.5 & 1.7 & 8 \\ 0.05 & 10 & 17 & 0.1 & 8 & 14 \\ 3 & 3.5 & 1.70 & 10 & 17 & 8 \\ 17 & 8 & 0.05 & 10 & 0.1 & 14 \end{array} \right)\end{split}\]
\[\begin{split}P = 10^{-4}\left( \begin{array}{cccccc} 1312 & 1696 & 5569 & 124 & 8283 & 5886 \\ 2329 & 4135 & 8307 & 3736 & 1004 & 9991 \\ 2348 & 1451 & 3522 & 2883 & 3047 & 6650 \\ 4047 & 8828 & 8732 & 5743 & 1091 & 381 \\ \end{array} \right)\end{split}\]
\[ \begin{align}\begin{aligned}\alpha = \{0.5, 0.5, 2.0, 4.0\}\\\alpha^{\prime} = \{1.0, 1.2, 3.0, 3.2\}\end{aligned}\end{align} \]
hartmann6 = MultiFidelityFunction(Hartmann6, [1. 1. 1. 1. 1. 1.], [0.1 0.1 0.1 0.1 0.1 0.1], fidelity_names=['high', 'low'])

6D Hartmann6 function with fidelities ‘high’ and ‘low’

hartmann6_hf(xx)
hartmann6_lf(xx)
l_bound = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]

Lower bound for Hartmann6 function

u_bound = [1, 1, 1, 1, 1, 1]

Upper bound for Hartmann6 function