class_docstr: Class to handle the cost of evaluating the function.
  
  param cost_withGradients: function that returns the cost of evaluating the function and its gradient. By default
  no cost is used. Options are:
      - cost_withGradients is some pre-defined cost function. Should return numpy array as outputs.
      - cost_withGradients = 'evaluation_time'.
  
  .. Note:: if cost_withGradients = 'evaluation time' the evaluation time of the function is used to model a GP whose
  mean is used as cost.
docstr: Predicts the time cost and its gradient of evaluating the function at x.
code: def _cost_gp_withGradients(self, x):
      """
      Predicts the time cost and its gradient of evaluating the function at x.
      """
      m, _, dmdx, _ = self.cost_model.predict_withGradients(x)
      return np.exp(m), np.exp(m) * dmdx
  
file_path: GPyOpt/GPyOpt/core/task/cost.py
imports: from ...models import GPModel
  import numpy
label_desc: Use image node_id 3 for calling the CostModel obj's underlying member method code with example usage: obj._cost_gp_withGradients(x) and returns: np,  unknown