class_docstr: Alpine1 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 f(self, X):
      X = reshape(X, self.input_dim)
      n = X.shape[0]
      fval = np.abs(X * np.sin(X) + 0.1 * X).sum(axis=1)
      if self.sd == 0:
          noise = np.zeros(n).reshape(n, 1)
      else:
          noise = np.random.normal(0, self.sd, n)
      return fval.reshape(n, 1) + noise
  
file_path: GPyOpt/GPyOpt/objective_examples/experimentsNd.py
imports: import numpy
  from ..util.general import reshape
label_desc: Use image node_id 2 for calling the alpine1 obj's underlying member method code with example usage: obj.f(X) and returns: unknown