saealib.ProductOfFeasibility#
- class saealib.ProductOfFeasibility[source]#
Bases:
PointwiseAcquisitionJoint probability of feasibility across all constraint columns.
Computes the product of per-constraint feasibility probabilities:
\[\text{PoF}_{\text{joint}}(x) = \prod_{i=1}^{m} \Phi\!\left(\frac{0 - \mu_i(x)}{\sigma_i(x)}\right)\]where \(\mu_i\) and \(\sigma_i\) are the surrogate’s predicted mean and standard deviation for the i-th constraint column.
This is the standard acquisition function for constrained Bayesian optimisation with independent constraint surrogates ([23]; Eriksson & Poloczek, 2021). Use it with a surrogate trained on
ConstraintObjectiveSet(which returnsarchive.gastrain_y), typically viaPerObjectiveSurrogate([GP(), ...] * n_constraints).Combine this acquisition with an objective acquisition through
CompositeAcquisitionand configure the result on the optimizer.Requires a surrogate that provides uncertainty estimates (std).
Notes
Assumes constraints are independent. When constraints are strongly correlated, a multi-output GP with joint predictions is more accurate but is not required by this acquisition function.
References
[23]: Letham, B., Karrer, B., Ottoni, G., & Bakshy, E. (2019). Constrained Bayesian optimization with noisy experiments. Bayesian Analysis, 14(2), 495-519.
Conceptual origin also draws on Eriksson & Poloczek (2021), SCBO.
Methods
Return None (no reference needed). |
|
Return the pointwise acquisition contract. |
|
Reject |
|
Delegate to |
|
Compute joint probability of feasibility scores. |
Method Details
- ProductOfFeasibility.__init__()#
- ProductOfFeasibility.compute_reference(archive, rng=None)[source]#
Return None (no reference needed).
- Parameters:
archive (Archive)
rng (np.random.Generator | None)
- Return type:
Any
- ProductOfFeasibility.contract()#
Return the pointwise acquisition contract.
- Return type:
- ProductOfFeasibility.evaluate(candidates_x, prediction, archive, ctx=None, *, prepared=<object object>)#
Reject
prediction is None, resolve the reference, thenscore().See
AcquisitionFunction.evaluate()for the shared parameter contract, including the_UNSETvs. explicitprepared=Nonedistinction.- Parameters:
candidates_x (np.ndarray)
prediction (SurrogatePrediction | None)
archive (Archive)
ctx (OptimizationState | None)
prepared (Any)
- Return type:
AcquisitionResult
- ProductOfFeasibility.prepare(archive, ctx=None)#
Delegate to
compute_reference(archive, rng=ctx.rng if ctx else None).- Parameters:
archive (Archive)
ctx (OptimizationState | None)
- Return type:
Any
- ProductOfFeasibility.score(prediction, reference=None, rng=None)[source]#
Compute joint probability of feasibility scores.
- Parameters:
prediction (SurrogatePrediction) – Surrogate predictions of constraint values.
prediction.valueshape:(n_samples, n_constraints). Must have std (has_uncertainty == True).reference (Any) – Not used. Accepted for interface compatibility.
rng (Generator | None)
- Returns:
Joint PoF scores in [0, 1]. shape:
(n_samples,). Score is 1 when all constraints are clearly satisfied, 0 when any constraint is clearly violated.- Return type:
np.ndarray
- Raises:
TypeError – If prediction does not contain uncertainty estimates.