code: def asy_ei(gp, anc_data):
      """Returns a recommendation based on GP-EI."""
      curr_best = anc_data.curr_max_val
      gp_eval = _get_gp_eval_for_parallel_strategy(gp, anc_data, "std")
  
      # EI acquisition with hallucinated observations
      def _ei_acq(x):
          """Acquisition for GP EI."""
          mu, sigma = gp_eval(x)
          norm_diff = (mu - curr_best) / sigma
          return sigma * _expected_improvement_for_norm_diff(norm_diff)
  
      return maximise_acquisition(_ei_acq, anc_data)
  
imports: from __future__ import division
  from argparse import Namespace
  from copy import copy
  import numpy
  from scipy.stats import norm
  from ..utils.general_utils import solve_lower_triangular
  from ..gp.gp_core import get_post_covar_from_raw_covar
  from ..exd.domains import EuclideanDomain
  from ..exd.exd_utils import maximise_with_method
label_desc: Use image node_id 18 for calling a global function with example usage: asy_ei(gp, anc_data) and returns: maximise_acquisition, unknown