class_docstr: Branin-Currin problem for multi-objective-multi-fidelity optimization.
  
  (2+1)-dimensional function with domain `[0,1]^3` where the last dimension
  is the fidelity parameter `s`.
  Both functions assume minimization. See [Irshad2021]_ for more details.
  
  Modified Branin function:
  
      B(x,s) = 21-((
      15*x_2 - b(s) * (15 * x_1 - 5) ** 2 + c(s) * (15 * x_1 - 5) - 6 ) ** 2
      + 10 * (1 - t(s)) * cos(15 * x_1 - 5)+10)/22
  
  Here `b`, `c`, `r` and `t` are constants and `s` is the fidelity parameter:
      where `b = 5.1 / (4 * math.pi ** 2) - 0.01(1-s)`,
      `c = 5 / math.pi - 0.1*(1 - s)`,
      `r = 6`,
      `t = 1 / (8 * math.pi) + 0.05*(1-s)`
  
  Modified Currin function:
  
      C(x) = 14-((1 - 0.1(1-s)exp(-1 / (2 * x_2))) * (
      2300 * x_1 ** 3 + 1900 * x_1 ** 2 + 2092 * x_1 + 60
      ) / 100 * x_1 ** 3 + 500 * x_1 ** 2 + 4 * x_2 + 20)/15
class_docstr_tok: ["Branin-Currin","problem","for","multi-objective-multi-fidelity","optimization",".","(","2+1",")","-dimensional","function","with","domain","`","[","0,1","]","^3","`","where","the","last","dimension","is","the","fidelity","parameter","`","s","`",".","Both","functions","assume","minimization",".","See","[","Irshad2021","]","_","for","more","details",".","Modified","Branin","function",":","B","(","x",",","s",")","=","21-","(","(","15","*","x_2","-","b","(","s",")","*","(","15","*","x_1","-","5",")","*","*","2","+","c","(","s",")","*","(","15","*","x_1","-","5",")","-","6",")","*","*","2","+","10","*","(","1","-","t","(","s",")",")","*","cos","(","15","*","x_1","-","5",")","+10",")","\/22","Here","`","b","`",",","`","c","`",",","`","r","`","and","`","t","`","are","constants","and","`","s","`","is","the","fidelity","parameter",":","where","`","b","=","5.1","\/","(","4","*","math.pi","*","*","2",")","-","0.01","(","1-s",")","`",",","`","c","=","5","\/","math.pi","-","0.1","*","(","1","-","s",")","`",",","`","r","=","6","`",",","`","t","=","1","\/","(","8","*","math.pi",")","+","0.05","*","(","1-s",")","`","Modified","Currin","function",":","C","(","x",")","=","14-","(","(","1","-","0.1","(","1-s",")","exp","(","-1","\/","(","2","*","x_2",")",")",")","*","(","2300","*","x_1","*","*","3","+","1900","*","x_1","*","*","2","+","2092","*","x_1","+","60",")","\/","100","*","x_1","*","*","3","+","500","*","x_1","*","*","2","+","4","*","x_2","+","20",")","\/15"]
code: def evaluate_true(self, X: Tensor) -> Tensor:
      branin = self._branin(X)
      currin = self._currin(X)
      return torch.stack([-branin, -currin], dim=-1)
  
file_path: botorch/botorch/test_functions/multi_objective_multi_fidelity.py
imports: import math
  import torch
  from botorch.test_functions.base import MultiObjectiveTestProblem
  from torch import Tensor
label_desc: Use image node_id 3 for calling the MOMFBraninCurrin obj's underlying member method code with example usage: obj.evaluate_true(X) and returns: torch