#[derive(Debug, Clone)]
pub struct ConstraintConfig {
pub handling_method: ConstraintHandlingMethod,
pub violation_penalty: f64,
pub feasibility_threshold: f64,
pub approximation_method: ConstraintApproximationMethod,
}
impl Default for ConstraintConfig {
fn default() -> Self {
Self {
handling_method: ConstraintHandlingMethod::ExpectedFeasibility,
violation_penalty: 1000.0,
feasibility_threshold: 1e-6,
approximation_method: ConstraintApproximationMethod::GaussianProcess,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ConstraintHandlingMethod {
ExpectedFeasibility,
PenaltyMethod,
AugmentedLagrangian,
ConstraintDominated,
FeasibilityRules,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ConstraintApproximationMethod {
GaussianProcess,
SupportVectorMachine,
RandomForest,
NeuralNetwork,
}