class_docstr: Object returned by the HB_master.run function
  
  This class offers a simple API to access the information from
  a Hyperband run.
class_docstr_tok: ["Object","returned","by","the","HB_master.run","function","This","class","offers","a","simple","API","to","access","the","information","from","a","Hyperband","run","."]
docstr: Returns the best configurations over time
  
  
  Parameters
  ----------
          all_budgets: bool
                  If set to true all runs (even those not with the largest budget) can be the incumbent.
                  Otherwise, only full budget runs are considered
          bigger_is_better:bool
                  flag whether an evaluation on a larger budget is always considered better.
                  If True, the incumbent might increase for the first evaluations on a bigger budget
          non_decreasing_budget: bool
                  flag whether the budget of a new incumbent should be at least as big as the one for
                  the current incumbent.
  Returns
  -------
          dict:
                  dictionary with all the config IDs, the times the runs
                  finished, their respective budgets, and corresponding losses
docstr_tok: ["Returns","the","best","configurations","over","time","Parameters","--","--","--","--","--","all_budgets",":","bool","If","set","to","true","all","runs","(","even","those","not","with","the","largest","budget",")","can","be","the","incumbent",".","Otherwise",",","only","full","budget","runs","are","considered","bigger_is_better",":","bool","flag","whether","an","evaluation","on","a","larger","budget","is","always","considered","better",".","If","True",",","the","incumbent","might","increase","for","the","first","evaluations","on","a","bigger","budget","non_decreasing_budget",":","bool","flag","whether","the","budget","of","a","new","incumbent","should","be","at","least","as","big","as","the","one","for","the","current","incumbent",".","Returns","--","--","--","-","dict",":","dictionary","with","all","the","config","IDs",",","the","times","the","runs","finished",",","their","respective","budgets",",","and","corresponding","losses"]
code: def get_incumbent_trajectory(
      self,
      all_budgets=True,
      bigger_is_better=True,
      non_decreasing_budget=True,
  ):
      """
      Returns the best configurations over time
  
  
      Parameters
      ----------
              all_budgets: bool
                      If set to true all runs (even those not with the largest budget) can be the incumbent.
                      Otherwise, only full budget runs are considered
              bigger_is_better:bool
                      flag whether an evaluation on a larger budget is always considered better.
                      If True, the incumbent might increase for the first evaluations on a bigger budget
              non_decreasing_budget: bool
                      flag whether the budget of a new incumbent should be at least as big as the one for
                      the current incumbent.
      Returns
      -------
              dict:
                      dictionary with all the config IDs, the times the runs
                      finished, their respective budgets, and corresponding losses
      """
      all_runs = self.get_all_runs(only_largest_budget=not all_budgets)
  
      if not all_budgets:
          all_runs = list(
              filter(
                  lambda r: r.budget == res.HB_config["max_budget"],
                  all_runs,
              )
          )
  
      all_runs.sort(key=lambda r: r.time_stamps["finished"])
  
      return_dict = {
          "config_ids": [],
          "times_finished": [],
          "budgets": [],
          "losses": [],
      }
  
      current_incumbent = float("inf")
      incumbent_budget = self.HB_config["min_budget"]
  
      for r in all_runs:
          if r.loss is None:
              continue
  
          new_incumbent = False
  
          if bigger_is_better and r.budget > incumbent_budget:
              new_incumbent = True
  
          if r.loss < current_incumbent:
              new_incumbent = True
  
          if non_decreasing_budget and r.budget < incumbent_budget:
              new_incumbent = False
  
          if new_incumbent:
              current_incumbent = r.loss
              incumbent_budget = r.budget
  
              return_dict["config_ids"].append(r.config_id)
              return_dict["times_finished"].append(
                  r.time_stamps["finished"]
              )
              return_dict["budgets"].append(r.budget)
              return_dict["losses"].append(r.loss)
  
      if current_incumbent != r.loss:
          r = all_runs[-1]
  
          return_dict["config_ids"].append(
              return_dict["config_ids"][-1]
          )
          return_dict["times_finished"].append(
              r.time_stamps["finished"]
          )
          return_dict["budgets"].append(return_dict["budgets"][-1])
          return_dict["losses"].append(return_dict["losses"][-1])
  
      return return_dict
  
imports: import copy
  import os
  import json
  from hpbandster.core.base_iteration import Datum
label_desc: Use image node_id 4 for calling the Result obj's underlying member method code with example usage: obj.get_incumbent_trajectory(all_budgets, bigger_is_better, non_decreasing_budget) and returns: return_dict