quantrs2_anneal/bayesian_hyperopt/
constraints.rs

1//! Constraint Handling Configuration Types
2
3/// Constraint handling configuration
4#[derive(Debug, Clone)]
5pub struct ConstraintConfig {
6    /// Constraint handling method
7    pub handling_method: ConstraintHandlingMethod,
8    /// Constraint violation penalty
9    pub violation_penalty: f64,
10    /// Feasibility threshold
11    pub feasibility_threshold: f64,
12    /// Constraint approximation method
13    pub approximation_method: ConstraintApproximationMethod,
14}
15
16impl Default for ConstraintConfig {
17    fn default() -> Self {
18        Self {
19            handling_method: ConstraintHandlingMethod::ExpectedFeasibility,
20            violation_penalty: 1000.0,
21            feasibility_threshold: 1e-6,
22            approximation_method: ConstraintApproximationMethod::GaussianProcess,
23        }
24    }
25}
26
27/// Constraint handling methods
28#[derive(Debug, Clone, PartialEq, Eq)]
29pub enum ConstraintHandlingMethod {
30    /// Expected feasibility approach
31    ExpectedFeasibility,
32    /// Penalty method
33    PenaltyMethod,
34    /// Augmented Lagrangian
35    AugmentedLagrangian,
36    /// Constraint-dominated optimization
37    ConstraintDominated,
38    /// Feasibility rules
39    FeasibilityRules,
40}
41
42/// Constraint approximation methods
43#[derive(Debug, Clone, PartialEq, Eq)]
44pub enum ConstraintApproximationMethod {
45    /// Gaussian process model
46    GaussianProcess,
47    /// Support vector machine
48    SupportVectorMachine,
49    /// Random forest
50    RandomForest,
51    /// Neural network
52    NeuralNetwork,
53}