uo.algorithm.bayesian_optimization package

Optimizer

Universal Optimizer adapter for Gaussian-process Bayesian optimization.

class uo.algorithm.bayesian_optimization.optimizer.AcquisitionConfig(xi: float = 0.01, number_of_restarts: int = 8)

Bases: object

Configuration of Expected Improvement optimization.

number_of_restarts: int = 8
xi: float = 0.01
class uo.algorithm.bayesian_optimization.optimizer.BayesianOptimizer(problem: Problem, solution_template: Solution, bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]], evaluation_budget: int, number_of_initial_points: int | None = None, random_seed: int | None = None, gaussian_process_config: GaussianProcessConfig | None = None, acquisition_config: AcquisitionConfig | None = None, output_control: OutputControl | None = None)

Bases: Algorithm

Bayesian optimizer for bounded, continuous, single-objective problems.

property acquisition_history: ndarray[tuple[Any, ...], dtype[float64]]

Return acquisition values for model-selected candidates.

property bounds: ndarray[tuple[Any, ...], dtype[float64]]

Return a copy of the optimization bounds.

copy() BayesianOptimizer

Copy optimizer configuration without execution state.

property evaluation_budget: int

Return the maximum number of objective evaluations.

classmethod from_construction_tuple(construction_parameters: BayesianOptimizerConstructionParameters) BayesianOptimizer

Create an optimizer from a construction-parameter object.

init() None

Reset execution state and evaluate the initial random design.

optimize() Solution

Run Bayesian optimization and return the best evaluated solution.

string_rep(delimiter: str, indentation: int = 0, indentation_symbol: str = '', group_start: str = '{', group_end: str = '}') str

Return a string representation of the optimizer.

property target_history: ndarray[tuple[Any, ...], dtype[float64]]

Return minimized GP targets, equal to negative fitness values.

property x_history: ndarray[tuple[Any, ...], dtype[float64]]

Return a copy of all evaluated vectors.

class uo.algorithm.bayesian_optimization.optimizer.BayesianOptimizerConstructionParameters(problem: ~uo.problem.problem.Problem | None = None, solution_template: ~uo.solution.solution.Solution | None = None, bounds: ~typing.Sequence[tuple[float, float]] | ~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy.float64]] = <factory>, evaluation_budget: int = 0, number_of_initial_points: int | None = None, random_seed: int | None = None, gaussian_process_config: ~uo.algorithm.bayesian_optimization.optimizer.GaussianProcessConfig = <factory>, acquisition_config: ~uo.algorithm.bayesian_optimization.optimizer.AcquisitionConfig = <factory>, output_control: ~uo.algorithm.output_control.OutputControl | None = None)

Bases: object

Construction parameters for BayesianOptimizer.

acquisition_config: AcquisitionConfig
bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]]
evaluation_budget: int = 0
gaussian_process_config: GaussianProcessConfig
number_of_initial_points: int | None = None
output_control: OutputControl | None = None
problem: Problem | None = None
random_seed: int | None = None
solution_template: Solution | None = None
class uo.algorithm.bayesian_optimization.optimizer.GaussianProcessConfig(length_scale: float = 0.5, amplitude: float = 1.0, mean_value: float = 0.0, jitter: float = 1e-08)

Bases: object

Configuration of the Gaussian-process surrogate.

amplitude: float = 1.0
jitter: float = 1e-08
length_scale: float = 0.5
mean_value: float = 0.0

Gaussian process

class uo.algorithm.bayesian_optimization.gaussian_process.GaussianProcessRegressor(kernel: Kernel, mean_value: float = 0.0, jitter: float = 1e-08)

Bases: object

fit(x_train: ndarray[tuple[Any, ...], dtype[float64]], y_train: ndarray[tuple[Any, ...], dtype[float64]]) None
predict(x_query: ndarray[tuple[Any, ...], dtype[float64]]) tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]]

Kernels

class uo.algorithm.bayesian_optimization.kernels.RBFKernel(length_scale: 'float', amplitude: 'float')

Bases: object

amplitude: float
diagonal(x: ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]
length_scale: float
matrix(x: ndarray[tuple[Any, ...], dtype[float64]], y: ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]

Acquisition

uo.algorithm.bayesian_optimization.acquisition.expected_improvement(mean: float, variance: float, best_y: float, xi: float = 0.01, epsilon: float = 1e-12) float
uo.algorithm.bayesian_optimization.acquisition_optimization.maximize_acquisition(acquisition_fn: Callable[[ndarray[tuple[Any, ...], dtype[float64]]], float], bounds: ndarray[tuple[Any, ...], dtype[float64]], rng: Generator, n_restarts: int = 8) tuple[ndarray[tuple[Any, ...], dtype[float64]], float]
uo.algorithm.bayesian_optimization.acquisition_optimization.suggest_next_point(gp: GaussianProcessRegressor, bounds: ndarray[tuple[Any, ...], dtype[float64]], best_y: float, xi: float, rng: Generator, number_of_restarts: int = 8) tuple[ndarray[tuple[Any, ...], dtype[float64]], float]

Search-space utilities

uo.algorithm.bayesian_optimization.space.clip_to_bounds(x: ndarray[tuple[Any, ...], dtype[float64]], bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]
uo.algorithm.bayesian_optimization.space.from_unit_cube(u: ndarray[tuple[Any, ...], dtype[float64]], bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]
uo.algorithm.bayesian_optimization.space.sample_uniform(rng: Generator, bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]], n_samples: int) ndarray[tuple[Any, ...], dtype[float64]]
uo.algorithm.bayesian_optimization.space.to_unit_cube(x: ndarray[tuple[Any, ...], dtype[float64]], bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]
uo.algorithm.bayesian_optimization.space.validate_bounds(bounds: Sequence[tuple[float, float]] | ndarray[tuple[Any, ...], dtype[float64]]) ndarray[tuple[Any, ...], dtype[float64]]