class_docstr: Evaluate the average performance (objective value) for each search algorithm
  at different time steps (trial number).
  The performance (objective value) used for a trial will the best result until the trial.
docstr: Generate a `plotly.graph_objects.Figure` to display average performance
  for each search algorithm.
  
  task: str
      Name of the task
  experiments: list
      A list of experiment, instances of `orion.core.worker.experiment`.
docstr_tok: ["Generate","a","`","plotly.graph_objects.Figure","`","to","display","average","performance","for","each","search","algorithm",".","task",":","str","Name","of","the","task","experiments",":","list","A","list","of","experiment",",","instances","of","`","orion.core.worker.experiment","`","."]
code: def analysis(self, task, experiments):
      """
      Generate a `plotly.graph_objects.Figure` to display average performance
      for each search algorithm.
  
      task: str
          Name of the task
      experiments: list
          A list of experiment, instances of `orion.core.worker.experiment`.
      """
      algorithm_groups = defaultdict(list)
  
      for _, exp in experiments:
          algorithm_name = list(exp.configuration["algorithm"].keys())[
              0
          ]
          algorithm_groups[algorithm_name].append(exp)
  
      return {regrets.__name__: regrets(algorithm_groups)}
  
imports: from collections import defaultdict
  from orion.benchmark.assessment.base import BenchmarkAssessment
  from orion.plotting.base import regrets
label_desc: Use image node_id 2 for calling the AverageResult obj's underlying member method code with example usage: obj.analysis(task, experiments) and returns: dict