(self, all_budgets=True, bigger_is_better=True, non_decreasing_budget=True)
return (return_dict)
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
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
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
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)
def get_incumbent_trajectory ( self , all_budgets = True , bigger_is_better = True , non_decreasing_budget = True ) : 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 )