Functions

This page contains the documentation for all exported functions.

The Main Function

The main function bo!(problem::BossProblem; kwargs...) performs the Bayesian optimization. It augments the dataset (problem.data) and updates the model parameters and/or hyperparameters (problem.params) of the provided BossProblem.

The following diagram showcases the pipeline of the main function bo!.

BOSS Pipeline
BOSS.bo!Function
bo!(problem::BossProblem{Function}; kwargs...)
x = bo!(problem::BossProblem{Missing}; kwargs...)

Run the Bayesian optimization procedure to solve the given optimization problem or give a recommendation for the next evaluation point if problem.f == missing.

Arguments

  • problem::BossProblem: Defines the optimization problem.

Keywords

  • model_fitter::ModelFitter: Defines the algorithm used to estimate model parameters.
  • acq_maximizer::AcquisitionMaximizer: Defines the algorithm used to maximize the acquisition function.
  • term_cond::TermCond: Defines the termination condition.
  • options::BossOptions: Defines miscellaneous settings.

References

BossProblem, ModelFitter, AcquisitionMaximizer, TermCond, BossOptions

Examples

See 'https://soldasim.github.io/BOSS.jl/stable/example/' for example usage.

source

The package can be used in two modes;

The "BO mode" is used if the objective function is defined within the BossProblem. In this mode, BOSS performs the standard Bayesian optimization procedure while querying the objective function for new points.

The "Recommender mode" is used if the objective function is missing. In this mode, BOSS performs a single iteration of the Bayesian optimization procedure and returns a recommendation for the next evaluation point. The user can evaluate the objective function manually, use the method augment_dataset! to add the result to the data, and call bo! again for a new recommendation.

Important Functions

BOSS.estimate_parameters!Function
estimate_parameters!(::BossProblem, ::ModelFitter)

Estimate the model parameters & hyperparameters using the given model_fitter algorithm.

Keywords

  • options::BossOptions: Defines miscellaneous settings.
source
BOSS.maximize_acquisitionFunction
x = maximize_acquisition(::BossProblem, ::AcquisitionMaximizer)

Maximize the given acquisition function via the given acq_maximizer algorithm to find the optimal next evaluation point(s).

Keywords

  • options::BossOptions: Defines miscellaneous settings.
source
BOSS.eval_objective!Function
eval_objective!(::BossProblem, x::AbstractVector{<:Real})

Evaluate the objective function and update the data.

Keywords

  • options::BossOptions: Defines miscellaneous settings.
source
BOSS.augment_dataset!Function
augment_dataset!(::BossProblem, x::AbstractVector{<:Real}, y::AbstractVector{<:Real})
augment_dataset!(::BossProblem, X::AbstractMatrix{<:Real}, Y::AbstractMatrix{<:Real})

Add one (as vectors) or more (as matrices) datapoints to the dataset.

source
BOSS.construct_acquisitionFunction
construct_acquisition(::AcquisitionFunction, ::BossProblem, ::BossOptions) -> (x -> ::Real)

Construct the given AcquisitionFunction for the given BossProblem.

The returned function acq(x::AbstractVector{<:Real}) = val::Real is maximized to select the next evaluation function of blackbox function in each iteration.

This method must be implemented for all subtypes of AcquisitionFunction.

source
BOSS.model_posteriorFunction
model_posterior(::BossProblem) -> ::Union{<:ModelPosterior, <:AbstractVector{<:ModelPosterior}}
model_posterior(::SurrogateModel, ::ModelParams, ::ExperimentData) -> ::ModelPosterior
model_posterior(::SurrogateModel, ::AbstractVector{<:ModelParams}, ::ExperimentData) -> ::AbstractVector{<:ModelPosterior}

Return an instance of ModelPosterior allowing to evaluate the posterior predictive distribution, or a vector of ModelPosteriors in case of multiple sampled model parameters.

See ModelPosterior for the list of available methods.

source
BOSS.model_posterior_sliceFunction
model_posterior_slice(::BossProblem, slice::Int) -> ::Union{<:ModelPosteriorSlice, <:AbstractVector{<:ModelPosteriorSlice}}
model_posterior_slice(::SurrogateModel, ::ModelParams, ::ExperimentData, slice::Int) -> ::ModelPosteriorSlice
model_posterior_slice(::SurrogateModel, ::AbstractVector{<:ModelParams}, ::ExperimentData, slice::Int) -> ::AbstractVector{<:ModelPosteriorSlice}

Return an instance of ModelPosteriorSlice allowing to evaluate the posterior predictive distribution, or a vector of ModelPosteriorSlices in case of multiple sampled model parameters.

See ModelPosteriorSlice for the list of available methods.

source

Utility Functions

BOSS.x_dimFunction
x_dim(::BossProblem) -> Int

Return the input dimension of the problem.

source
BOSS.y_dimFunction
y_dim(::BossProblem) -> Int

Return the output dimension of the problem.

source
BOSS.cons_dimFunction
cons_dim(::BossProblem) -> Int
cons_dim(::Domain) -> Int

Return the output dimension of the constraint function on the input.

See Domain for more information.

source
BOSS.data_countFunction
data_count(::BossProblem) -> Int

Return the number of datapoints in the dataset.

source
BOSS.is_consistentFunction
is_consistent(::BossProblem) -> Bool

Return true iff the model parameters have been fitted using the current dataset.

source
BOSS.get_fitnessFunction
get_fitness(::AcquisitionFunction) -> (y -> ::Real)

Return the fitness function if the given AcquisitionFunction defines it. Otherwise, throw MethodError.

source
BOSS.get_paramsFunction
get_params(::BossProblem) -> ::Union{::ModelParams, AbstractVector{<:ModelParams}}
get_params(::UniFittedParams) -> ::ModelParams
get_params(::MultiFittedParams) -> ::AbstractVector{<:ModelParams}

Return the fitted ModelParams or a vector of ModelParams samples.

source
BOSS.resultFunction
result(problem) -> (x, y)

Return the best found point (x, y).

The provided BossProblem must contain an AcquisitionFunction, with the get_fitness function defined.

Returns the point (x, y) from the dataset of the given problem such that y satisfies the constraints and fitness(y) is maximized. Returns nothing if the dataset is empty or if no feasible point is present.

Does not check whether x belongs to the domain as no exterior points should be present in the dataset.

source
BOSS.TruncatedMvNormalType
TruncatedMvNormal(μ, Σ, lb, ub)

Defines the truncated multivariate normal distribution with mean μ, covariance matrix Σ, lower bounds lb, and upper bounds ub.

source