class_docstr: Expected improvement acquisition function
  
  :param model: GPyOpt class of model
  :param space: GPyOpt class of domain
  :param optimizer: optimizer of the acquisition. Should be a GPyOpt optimizer
  :param cost_withGradients: function
  :param jitter: positive value to make the acquisition more explorative.
  
  .. Note:: allows to compute the Improvement per unit of cost
docstr: Computes the Expected Improvement and its derivative (has a very easy derivative!)
docstr_tok: ["Computes","the","Expected","Improvement","and","its","derivative","(","has","a","very","easy","derivative","!",")"]
code: def _compute_acq_withGradients(self, x):
      """
      Computes the Expected Improvement and its derivative (has a very easy derivative!)
      """
      fmin = self.model.get_fmin()
      m, s, dmdx, dsdx = self.model.predict_withGradients(x)
      phi, Phi, u = get_quantiles(self.jitter, fmin, m, s)
      f_acqu = s * (u * Phi + phi)
      df_acqu = dsdx * phi - Phi * dmdx
      return f_acqu, df_acqu
  
file_path: GPyOpt/GPyOpt/acquisitions/EI.py
imports: from .base import AcquisitionBase
  from ..util.general import get_quantiles
label_desc: Use image node_id 4 for calling the AcquisitionEI obj's underlying member method code with example usage: obj._compute_acq_withGradients(x) and returns: f_acqu,  df_acqu