class_docstr: Branin function
  
  :param bounds: the box constraints to define the domain in which the function is optimized.
  :param sd: standard deviation, to generate noisy evaluations of the function.
class_docstr_tok: ["Branin","function",":","param","bounds",":","the","box","constraints","to","define","the","domain","in","which","the","function","is","optimized",".",":","param","sd",":","standard","deviation",",","to","generate","noisy","evaluations","of","the","function","."]
code: def __init__(
      self,
      bounds=None,
      a=None,
      b=None,
      c=None,
      r=None,
      s=None,
      t=None,
      sd=None,
  ):
      self.input_dim = 2
      if bounds is None:
          self.bounds = [(-5, 10), (1, 15)]
      else:
          self.bounds = bounds
      if a == None:
          self.a = 1
      else:
          self.a = a
      if b == None:
          self.b = 5.1 / (4 * np.pi**2)
      else:
          self.b = b
      if c == None:
          self.c = 5 / np.pi
      else:
          self.c = c
      if r == None:
          self.r = 6
      else:
          self.r = r
      if s == None:
          self.s = 10
      else:
          self.s = s
      if t == None:
          self.t = 1 / (8 * np.pi)
      else:
          self.t = t
      if sd == None:
          self.sd = 0
      else:
          self.sd = sd
      self.min = [(-np.pi, 12.275), (np.pi, 2.275), (9.42478, 2.475)]
      self.fmin = 0.397887
      self.name = "Branin"
  
imports: import numpy
  from ..util.general import reshape
label_desc: Use image node_id 1 to create a new branin object from inherited base classes: function2d with example: obj = branin(bounds, a, b, c, r, s, t, sd)