bayesian_optimization module
Define bayesian optimization algorithms.
- class BayesianOptimizationLW(*, compensating_elements, elts, objectives, variables, compute_beam_propagation, compute_residuals, cavity_settings_factory, reference_simulation_output, constraints=None, compute_constraints=None, optimisation_algorithm_kwargs=None, history_kwargs=None, **kwargs)[source]
Bases:
OptimisationAlgorithmBayesian optimization algorithm.
Under the hood, relies on
bayes_opt.BayesianOptimization.The keys defined in
TOMLkey:optimisation_algorithm_kwargsare passed tobayes_opt.BayesianOptimization.maximize().Special keys:
"acquisition"table is used to set the acquisition function. SeeBayesianOptimizationLW.acquisition_function().
- Parameters:
compensating_elements (
Collection[Element])elts (
ListOfElements)objectives (
Collection[Objective])variables (
Collection[Variable])compute_beam_propagation (
Callable[[SetOfCavitySettings],SimulationOutput])compute_residuals (
Callable[[SimulationOutput],Any])cavity_settings_factory (
CavitySettingsFactory)reference_simulation_output (
SimulationOutput)constraints (
Collection[Constraint] |None, default:None)compute_constraints (
Callable[[SimulationOutput],ndarray] |None, default:None)optimisation_algorithm_kwargs (
dict[str,Any] |None, default:None)
- optimize()[source]
Set up the optimization and solve the problem.
- Return type:
- Returns:
Gives list of solutions, corresponding objective, convergence violation if applicable, etc.
- _to_maximise(**kwargs)[source]
The function to maximize by BO.
This is the classic
OptimisationAlgorithm._norm_wrapper_residuals(), with two adaptations: :rtype:floatMultiplied by
-1.0to maximize instead of minimizeTakes arguments as floats instead of numpy array. - Keys are
Variable.__str__()
- acquisition_function()[source]
Get acquisition function. :rtype:
AcquisitionFunction|NoneTodo
Allow for user-defined acquisition function.
We use
kwargsfrom the"acquisition"key. It can look like:[wtf.optimisation_algorithm_kwargs] # arguments passed to `BayesianOptimization.maximize` method [wtf.optimisation_algorithm_kwargs.acquisition] # arguments used to define acquisition function # Name of a func in `bayes_opt.acquisition`: acquisition_name = "UpperConfidenceBound" # Kwargs passed to this function: kwargs = { kappa = 2.576, random_state = 42 }
- _abc_impl = <_abc._abc_data object at 0x75e515b573c0>