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...)
docstr: Run an experiment with the provided settings
  
  Returns
  -------
  dict
      A dict containing all the information about the experiments (optimizer/function settings + results)
  
  Note
  ----
  This function catches error (but forwards stderr). It fills up the "error" ("" if no error, else the error name),
  "loss", "elapsed_time" and "elapsed_budget" of the experiment.
docstr_tok: ["Run","an","experiment","with","the","provided","settings","Returns","--","--","--","-","dict","A","dict","containing","all","the","information","about","the","experiments","(","optimizer\/function","settings","+","results",")","Note","--","--","This","function","catches","error","(","but","forwards","stderr",")",".","It","fills","up","the","``","error","''","(","``","''","if","no","error",",","else","the","error","name",")",",","''","loss","''",",","``","elapsed_time","''","and","``","elapsed_budget","''","of","the","experiment","."]
code: def run(self) -> tp.Dict[str, tp.Any]:
      """Run an experiment with the provided settings
  
      Returns
      -------
      dict
          A dict containing all the information about the experiments (optimizer/function settings + results)
  
      Note
      ----
      This function catches error (but forwards stderr). It fills up the "error" ("" if no error, else the error name),
      "loss", "elapsed_time" and "elapsed_budget" of the experiment.
      """
      try:
          self._run_with_error()
      except (
          errors.ExperimentFunctionCopyError,
          errors.UnsupportedExperiment,
      ) as ex:
          raise ex
      except Exception as e:  # pylint: disable=broad-except
          # print the case and the traceback
          self.result["error"] = e.__class__.__name__
          print(f"Error when applying {self}:", file=sys.stderr)
          traceback.print_exc()
          print("\n", file=sys.stderr)
      return self.get_description()
  
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 4 for calling the Experiment obj's underlying member method code with example usage: obj.run() and returns: self