code: def cp_random_multiobjective_optimisation_from_raw_args(
      raw_funcs, domain_config_file, *args, **kwargs
  ):
      """A random multi-objective optimiser on CP spaces."""
      # pylint: disable=no-member
      cp_dom, orderings = load_cp_domain_from_config_file(
          domain_config_file
      )
      proc_funcs = [
          get_processed_func_from_raw_func_for_cp_domain(
              rf,
              cp_dom,
              orderings.index_ordering,
              orderings.dim_ordering,
          )
          for rf in raw_funcs
      ]
      multi_func_caller = CPMultiFunctionCaller(
          proc_funcs,
          cp_dom,
          raw_funcs=raw_funcs,
          domain_orderings=orderings,
      )
      return random_multiobjective_optimisation_from_multi_func_caller(
          multi_func_caller, *args, **kwargs
      )
  
imports: from argparse import Namespace
  import numpy
  from .random_optimiser import random_sample_from_cp_domain_wrapper
  from ..exd.cp_domain_utils import get_processed_func_from_raw_func_for_cp_domain, load_cp_domain_from_config_file
  from ..exd import domains
  from ..exd.exd_utils import get_euclidean_initial_qinfos, get_cp_domain_initial_qinfos
  from ..exd.experiment_caller import CPMultiFunctionCaller
  from .multiobjective_optimiser import MultiObjectiveOptimiser, multiobjective_opt_args
  from ..utils.option_handler import load_options
  from ..utils.reporters import get_reporter
  from ..utils.general_utils import map_to_bounds
label_desc: Use image node_id 2 for calling a global function with example usage: cp_random_multiobjective_optimisation_from_raw_args(raw_funcs, domain_config_file) and returns: random_multiobjective_optimisation_from_multi_func_caller