Skip to content
/ SMAC3 Public
  • Sponsor
  • Notifications You must be signed in to change notification settings
  • Fork 233

Commit 55ca5e4

Browse files
daphne12345benjamc
andauthoredFeb 26, 2025··
Fix/1179 (#1186)
* Fix for "Problem with HyperBand setup given a total budget #1179" * Update CHANGELOG.md * Fix tests for correct hyperband budegt calculation --------- Co-authored-by: C. Benjamins <75323339+benjamc@users.noreply.github.com>

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed
 

‎smac/intensifier/hyperband_utils.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ def determine_HB(min_budget: float, max_budget: float, eta: int = 3) -> dict:
4444
_max_iterations[i] = max_iter + 1
4545

4646
total_trials = np.sum([np.sum(v) for v in _n_configs_in_stage.values()])
47-
total_budget = np.sum([np.sum(v) for v in _budgets_in_stage.values()])
47+
48+
total_budget = 0
49+
for stage in _n_configs_in_stage.keys():
50+
for b, c in zip(_budgets_in_stage[stage], _n_configs_in_stage[stage]):
51+
total_budget += b * c
4852

4953
return {
5054
"max_iterations": _max_iterations,

‎tests/test_intensifier/test_hyperband_utils.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test_determine_HB():
3131
4: [81],
3232
}
3333
expected_trials_used = 206
34-
expected_budget_used = 547
34+
expected_budget_used = 1902
3535
expected_number_of_brackets = 5
3636

3737
assert result["max_iterations"] == expected_max_iterations
@@ -52,7 +52,7 @@ def test_determine_hyperband_for_multifidelity():
5252
total_budget=total_budget, min_budget=min_budget, max_budget=max_budget, eta=eta
5353
)
5454

55-
expected_n_trials = 206 + 137 # 206 trials for one full round, and additional trials for the remaining budget
55+
expected_n_trials = 188 # Budget not enough for one full round (would nee 1902 as total budget)
5656

5757
assert result["n_trials"] == expected_n_trials
5858
assert result["total_budget"] == total_budget
@@ -71,4 +71,9 @@ def test_get_n_trials_for_hyperband_multifidelity():
7171
total_budget=total_budget, min_budget=min_budget, max_budget=max_budget, eta=eta
7272
)
7373

74-
assert n_trials == (206 + 137)
74+
assert n_trials == 188
75+
76+
if __name__=="__main__":
77+
test_determine_HB()
78+
test_determine_hyperband_for_multifidelity()
79+
test_get_n_trials_for_hyperband_multifidelity()

0 commit comments

Comments
 (0)
Please sign in to comment.