quantrs2_anneal/bayesian_hyperopt/
convergence.rs

1//! Convergence Configuration Types
2
3/// Convergence criteria configuration
4#[derive(Debug, Clone)]
5pub struct ConvergenceConfig {
6    /// Tolerance for objective function improvement
7    pub objective_tolerance: f64,
8    /// Tolerance for parameter changes
9    pub parameter_tolerance: f64,
10    /// Maximum number of iterations without improvement
11    pub max_stagnation: usize,
12    /// Confidence level for convergence assessment
13    pub confidence_level: f64,
14    /// Early stopping criteria
15    pub early_stopping: EarlyStoppingCriteria,
16}
17
18impl Default for ConvergenceConfig {
19    fn default() -> Self {
20        Self {
21            objective_tolerance: 1e-6,
22            parameter_tolerance: 1e-8,
23            max_stagnation: 20,
24            confidence_level: 0.95,
25            early_stopping: EarlyStoppingCriteria::default(),
26        }
27    }
28}
29
30/// Early stopping criteria
31#[derive(Debug, Clone)]
32pub struct EarlyStoppingCriteria {
33    /// Enable early stopping
34    pub enabled: bool,
35    /// Minimum number of iterations before stopping
36    pub min_iterations: usize,
37    /// Improvement threshold
38    pub improvement_threshold: f64,
39    /// Patience (iterations to wait for improvement)
40    pub patience: usize,
41}
42
43impl Default for EarlyStoppingCriteria {
44    fn default() -> Self {
45        Self {
46            enabled: true,
47            min_iterations: 20,
48            improvement_threshold: 1e-4,
49            patience: 10,
50        }
51    }
52}