Skip to content

Add inequality constraints to Gaussian Process trainer#32848

Draft
dschwen wants to merge 1 commit intoidaholab:nextfrom
dschwen:gp_inequality_constraint
Draft

Add inequality constraints to Gaussian Process trainer#32848
dschwen wants to merge 1 commit intoidaholab:nextfrom
dschwen:gp_inequality_constraint

Conversation

@dschwen
Copy link
Copy Markdown
Member

@dschwen dschwen commented Apr 27, 2026

Reason

Enforce inequality constraints when training Gaussian processes.

Design

Three mechanisms for enforcing inequality constraints on GP predictions:

  • Link functions (log, logit): exact constraints via output warping; GP trains in unconstrained latent space and predictions are inverted back to physical space via the inverse link.
  • Derivative observations: monotonicity constraints via virtual observations that augment the covariance matrix with cross-covariance blocks between function values and directional derivatives.
  • Penalty constraints: soft bounds added to NLML loss/gradient during Adam hyperparameter tuning.

Impact

Added capability

Three mechanisms for enforcing inequality constraints on GP predictions:

- Link functions (log, logit): exact constraints via output warping;
  GP trains in unconstrained latent space and predictions are inverted
  back to physical space via the inverse link.
- Derivative observations: monotonicity constraints via virtual
  observations that augment the covariance matrix with cross-covariance
  blocks between function values and directional derivatives.
- Penalty constraints: soft bounds added to NLML loss/gradient during
  Adam hyperparameter tuning.

New files: GPLinkFunction.h/C, GP_log_link.i, GP_logit_link.i,
GP_derivative_obs.i, GP_penalty_constraint.i, GPLinkFunction.md.
Updated: GaussianProcess.h/C, GaussianProcessTrainer.h/C,
GaussianProcessSurrogate.C, CovarianceFunctionBase.h/C,
SquaredExponentialCovariance.h/C, tests spec, and doc pages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dschwen dschwen force-pushed the gp_inequality_constraint branch from e9776c6 to 7bf2ef8 Compare April 27, 2026 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant