#[derive(Debug, Clone)]
pub struct ConvergenceConfig {
pub objective_tolerance: f64,
pub parameter_tolerance: f64,
pub max_stagnation: usize,
pub confidence_level: f64,
pub early_stopping: EarlyStoppingCriteria,
}
impl Default for ConvergenceConfig {
fn default() -> Self {
Self {
objective_tolerance: 1e-6,
parameter_tolerance: 1e-8,
max_stagnation: 20,
confidence_level: 0.95,
early_stopping: EarlyStoppingCriteria::default(),
}
}
}
#[derive(Debug, Clone)]
pub struct EarlyStoppingCriteria {
pub enabled: bool,
pub min_iterations: usize,
pub improvement_threshold: f64,
pub patience: usize,
}
impl Default for EarlyStoppingCriteria {
fn default() -> Self {
Self {
enabled: true,
min_iterations: 20,
improvement_threshold: 1e-4,
patience: 10,
}
}
}