Acquisitions

The surrogate model solved by the sub-optimizer is built from the posterior mean and variance of the GP surrogates through an acquisition function, selectable with BayesOptOptions(acquisition = ...) or the surrogate constructors.

AcquisitionValue (minimized)Interval semantics
LCB(η = 3.0)μ(x) - η σ(x)[μ - ησ, μ + ησ]
GPUCB(β; schedule)μ(x) - β(t) σ(x)[μ - β(t)σ, μ + β(t)σ]
EI(ξ = 0.01)-EI(x)degenerate
PI(ξ = 0.01)-PI(x)degenerate

LCB/GPUCB return the non-degenerate [μ - ησ, μ + ησ] interval ("benefit of the doubt"), so the uncertainty propagates through user code with IntervalArithmetic. A larger η/β means more exploration, smaller more exploitation.

GPUCB optionally grows β with the observation count t for no-regret behaviour:

acquisition = GPUCB(1.0; schedule = t -> sqrt(2log(t + 1)))

EI and PI return degenerate intervals of the (negated) acquisition value, since the sub-optimizer minimizes. ξ biases them towards exploration. The best incumbent is taken as the minimum of the posterior mean at the observed points (robust to observation noise).

Constraint surrogates always use LCB(std_multiple): feasibility calls for a conservative lower bound regardless of the objective acquisition.

The acquisition interface

AbstractAcquisition is the supertype of all acquisitions (LCB, GPUCB, EI, PI). An acquisition is a callable: acq(s) returns the acquisition interval ([μ - ησ, μ + ησ], or a degenerate interval for EI/PI) at the current posterior of a surrogate s, so it plugs into both BayesOptOptions(acquisition = ...) and the surrogate constructors surrogate(f, x0; acquisition = ...).