Skip to content

Multi fidelity acquisition functions and recommender logic#756

Open
jpenn2023 wants to merge 29 commits intodev/mfbofrom
dev-mfbo-main-acquisition-functions
Open

Multi fidelity acquisition functions and recommender logic#756
jpenn2023 wants to merge 29 commits intodev/mfbofrom
dev-mfbo-main-acquisition-functions

Conversation

@jpenn2023
Copy link
Copy Markdown
Collaborator

No description provided.

@AdrianSosic AdrianSosic force-pushed the dev-mfbo-main-acquisition-functions branch from 59af949 to dd2974f Compare March 6, 2026 17:33
@AdrianSosic
Copy link
Copy Markdown
Collaborator

Hey @jpenn2023, the branch now sits on top of the current surrogate one, so you should also have an up-to-date view now (including the commits from the surrogate)

@jpenn2023 jpenn2023 marked this pull request as ready for review March 13, 2026 11:56

# Jordan MHS NOTE: typing awkward here since register_buffer does not declare attr.
fidelity_columns: Tensor
fidelities_comb: Tensor
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does comb refer to?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Combinations. The acqf allows for multiple fidelity columns. The multi-parameter fidelity value is then an outer product over the single-parameter fidelities, with an assumption that the costs and zetas add between fidelity parameters. Will change variable name to fidelity_combinations for now.

r"""Second optimisation stage: choose optimal fidelity to query."""
# Jordan MHS NOTE: casting here because botorch model likelihood is too
# broadly typed. Check best practice in case likelihood does not have noise.
likelihood = cast(GaussianLikelihood, self.model.likelihood)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assert instead of cast OR add workaround to set noise to 0 if not present in class (preference as discussed)


self._args.current_value = current_value

def _set_project(self) -> None:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

confusing name, why not set_projection?


curr_val_acqf = FixedFeatureAcquisitionFunction(
acq_function=PosteriorMean(self._botorch_surrogate),
d=7,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hardcoded to 7? seems strange

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! This is a typo carried over from the Hartmann7 example.

"""Construct column indices and values of costs, fidelities and values for MFUCB."""
fidelity_params = {
p
for i, p in enumerate(searchspace.parameters)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i is never used in this comprerehnsion and thus enumerate seems obsolete?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants