code: def normal_probability_of_improvement(best_observed, mean, stddev):
      """Normal distribution probability of improvement.
  
      Args:
        best_observed: Array of best (largest) observed values. Must broadcast with
          `mean` and `stddev`.
        mean: Array of predicted means. Must broadcast with `best_observed` and
          `stddev`.
        stddev: Array of predicted standard deviations. Must broadcast with
          `best_observed` and `mean`.
  
      Returns:
        poi: Array of expected improvement values.
      """
      dtype = dtype_util.common_dtype([best_observed, mean, stddev])
      best_observed = tf.convert_to_tensor(best_observed, dtype=dtype)
      mean = tf.convert_to_tensor(mean, dtype=dtype)
      stddev = tf.convert_to_tensor(stddev, dtype=dtype)
      norm = normal.Normal(mean, stddev)
      return norm.survival_function(best_observed)
  
file_path: probability/tensorflow_probability/python/experimental/bayesopt/acquisition/probability_of_improvement.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.experimental.bayesopt.acquisition import acquisition_function
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import samplers
label_desc: Use image node_id 1 for calling a global function with example usage: normal_probability_of_improvement(best_observed, mean, stddev) and returns: norm