code: def get_mf_cost_function(fidel_bounds):
      """Returns the cost function. fidel_bounds are the bounds for the fidelity space."""
      fidel_dim = len(fidel_bounds)
      if fidel_dim == 1:
          fidel_powers = [2]
      elif fidel_dim == 2:
          fidel_powers = [3, 2]
      elif fidel_dim == 3:
          fidel_powers = [3, 2, 1.5]
      else:
          fidel_powers = [3] + list(np.linspace(2, 1.2, fidel_dim - 1))
  
      # Define the normalised
      def _unnorm_cost_function(norm_z):
          """The cost function with normalised coordinates."""
          return np.power(norm_z, fidel_powers).sum()
  
      max_unnorm_cost = _unnorm_cost_function(np.ones(fidel_dim))
      fidel_bounds = np.array(fidel_bounds)
  
      def _norm_cost_function(z):
          """Normalised cost function."""
          return 0.1 + 0.9 * (
              _unnorm_cost_function(
                  map_to_cube(np.array(z), fidel_bounds)
              )
              / max_unnorm_cost
          )
  
      return _norm_cost_function
  
imports: from __future__ import division
  import numpy
  from .general_utils import map_to_cube
  from ..exd.experiment_caller import EuclideanFunctionCaller
label_desc: Use image node_id 15 for calling a global function with example usage: get_mf_cost_function(fidel_bounds) and returns: _norm_cost_function, np, unknown