class_docstr: 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`
class_docstr_tok: ["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","`"]
code: def evaluate_true(self, X: Tensor) -> Tensor:
      self.to(device=X.device, dtype=X.dtype)
      inner_sum = torch.sum(
          self.A * (X[..., :6].unsqueeze(-2) - 0.0001 * self.P) ** 2,
          dim=-1,
      )
      alpha1 = self.ALPHA[0] - 0.1 * (1 - X[..., 6])
      H = (
          -(
              torch.sum(
                  self.ALPHA[1:] * torch.exp(-inner_sum)[..., 1:],
                  dim=-1,
              )
          )
          - alpha1 * torch.exp(-inner_sum)[..., 0]
      )
      return H
  
file_path: botorch/botorch/test_functions/multi_fidelity.py
imports: from __future__ import annotations
  import math
  from typing import Optional
  import torch
  from botorch.test_functions.synthetic import SyntheticTestFunction
  from torch import Tensor
label_desc: Use image node_id 2 for calling the AugmentedHartmann obj's underlying member method code with example usage: obj.evaluate_true(X) and returns: H