syne_tune.optimizer.schedulers.synchronous.dehb_bracket_manager module

class syne_tune.optimizer.schedulers.synchronous.dehb_bracket_manager.DifferentialEvolutionHyperbandBracketManager(rungs_first_bracket, mode, num_brackets_per_iteration=None)[source]

Bases: SynchronousHyperbandBracketManager

Special case of SynchronousHyperbandBracketManager to manage DEHB brackets (type DifferentialEvolutionHyperbandBracket).

In DEHB, the list of brackets is determined by the first one and the number of brackets. Also, later brackets have less total budget, because the size of a rung is determined by its level, independent of the bracket. This is different to what is done in synchronous Hyperband, where the rungs of later brackets have larger sizes, so the total budget of each bracket is the same.

We also need additional methods to access trial_id’s in specific rungs, as well as entries of the top lists for completed rungs. This is because DEHB controls the creation of new configurations at higher rungs, while synchronous Hyperband relies on automatic promotion from lower rungs.

size_of_current_rung(bracket_id)[source]
Return type:

int

trial_id_from_parent_slot(bracket_id, level, slot_index)[source]

The parent slot has the same slot index and rung level in the largest bracket < bracket_id with a trial_id not None. If no such slot exists, None is returned. For a cross-over or selection operation, the target is chosen from the parent slot.

Return type:

Optional[int]

top_of_previous_rung(bracket_id, pos)[source]

For the current rung in bracket bracket_id, consider the slots of the previous rung (below) in sorted order. We return the trial_id of position pos (so for pos=0, the best entry).

Return type:

int