class_docstr: Specifies an experiment which can be run in benchmarks.
  
  Parameters
  ----------
  function: ExperimentFunction
      the function to run the experiment on. It must inherit from ExperimentFunction to implement
      necessary functionalities (parametrization, descriptors, evaluation_function, pseudotime etc)
  
  Note
  ----
  - "run" method catches error but forwards stderr so that errors are not completely hidden
  - "run" method outputs the description of the experiment, which is a set of figures/names from the functions
  settings (dimension, etc...), the optimization settings (budget, etc...) and the results (loss, etc...)
code: def __repr__(self) -> str:
      return f"Experiment: {self.optimsettings} (dim={self.function.dimension}, param={self.function.parametrization}) on {self.function} with seed {self.seed}"
  
imports: import sys
  import time
  import random
  import numbers
  import warnings
  import traceback
  import nevergrad.common.typing
  import typing
  import numpy
  from nevergrad.parametrization import parameter
  from nevergrad.common import decorators
  from nevergrad.common import errors
  from ..functions import base
  from ..optimization import base
  from ..optimization.optimizerlib import registry
  from .None import execution
label_desc: Use image node_id 2 for calling the Experiment obj's underlying member method code with example usage: obj.__repr__() and returns: str, self, str, self, str, self, str, self, str, self