code: def d_acquisition_function(self, x):
          
          x = np.atleast_2d(x)
  
          if self.transform=='softplus':
              fval = -self.acq.acquisition_function(x)[:,0]
              scale = 1./(np.log1p(np.exp(fval))*(1.+np.exp(-fval)))
          elif self.transform=='none':
              fval = -self.acq.acquisition_function(x)[:,0]
              scale = 1./fval
          else:
              scale = 1.
  
          if self.X_batch is None:
              _, grad_acq_x = self.acq.acquisition_function_withGradients(x)
              return scale*grad_acq_x
          else:
              _, grad_acq_x = self.acq.acquisition_function_withGradients(x)
              return scale*grad_acq_x  - self._d_hammer_function(x, self.X_batch, self.r_x0, self.s_x0)
docs: Returns the gradient of the acquisition function at x.