class_docstr: Experiment which uses one experiment for the optimization,
  and another for the evaluation
code: def __init__(
      self,
      experiment: base.ExperimentFunction,
      evaluation: base.ExperimentFunction,
      pareto_size: tp.Optional[int] = None,
      pareto_subset: str = "random",
      pareto_subset_tentatives: int = 30,
  ) -> None:
      self._experiment = experiment
      self._evaluation = evaluation
      self._pareto_size = pareto_size
      self._pareto_subset = pareto_subset
      self._pareto_subset_tentatives = pareto_subset_tentatives
      super().__init__(
          self._delegate_to_experiment, experiment.parametrization
      )
      self.add_descriptors(non_proxy_function=False)
      # remove multiobjective descriptors if singleobjective / no pareto subset
      if self._pareto_size is None:
          names = [
              name
              for name in self._descriptors
              if name.startswith("pareto_")
          ]
          for name in names:
              del self._descriptors[name]
  
file_path: nevergrad/nevergrad/functions/helpers.py
imports: import os
  import nevergrad.common.typing
  from nevergrad.parametrization import parameter
  from nevergrad.optimization import multiobjective
  from .None import base
label_desc: Use image node_id 1 to create a new SpecialEvaluationExperiment object from inherited base classes: base with example: obj = SpecialEvaluationExperiment(experiment, evaluation, pareto_size, pareto_subset, pareto_subset_tentatives)