1use std::collections::{BTreeMap, HashMap, VecDeque};
11use std::hash::Hasher;
12use std::sync::{Arc, Mutex, RwLock};
13use std::time::{Duration, SystemTime};
14
15use quantrs2_core::qubit::QubitId;
16use scirs2_core::ndarray::{Array1, Array2};
17use serde::{Deserialize, Serialize};
18
19use crate::{
20 calibration::CalibrationManager, prelude::SciRS2NoiseModeler, topology::HardwareTopology,
21};
22
23use super::{
24 adaptive::{
25 self, AccessControl, ActivationFunction, AlertSuppression, AlertingConfig,
26 ArchitectureType, ArchivalStrategy, ConnectionPattern, ConsistencyLevel, DashboardConfig,
27 DataAugmentationConfig, DataCollectionConfig, DataPreprocessingConfig, DataRetention,
28 DataSource, DeploymentStrategy, DimensionalityReductionMethod, DriftDetection,
29 EnvironmentConfig, EnvironmentType, EscalationRules, FeatureSelectionMethod,
30 HardwareAcceleration, InferenceCaching, LayerConfig, LayerType, LossFunction,
31 ModelDeployment, ModelManagementConfig, ModelMonitoring, ModelOptimization,
32 ModelVersioning, MonitoringAlertingConfig, NormalizationMethod, OptimizerType,
33 PerformanceMonitoring, ResourceAllocation, RollbackStrategy, ScalingConfig, StorageBackend,
34 StorageConfig, VersionControlSystem,
35 },
36 codes::{QECCodeType, SurfaceCodeLayout},
37 detection, mitigation,
38 types::{CorrectionOperation, DeviceState, ExecutionContext, SyndromePattern},
39};
40
41pub struct QECConfig {
42 pub code_type: QECCodeType,
44 pub distance: usize,
46 pub strategies: Vec<QECStrategy>,
48 pub enable_ml_optimization: bool,
50 pub enable_adaptive_thresholds: bool,
52 pub correction_timeout: Duration,
54 pub syndrome_detection: detection::SyndromeDetectionConfig,
56 pub ml_config: QECMLConfig,
58 pub adaptive_config: adaptive::AdaptiveQECConfig,
60 pub monitoring_config: QECMonitoringConfig,
62 pub optimization_config: QECOptimizationConfig,
64 pub error_mitigation: mitigation::ErrorMitigationConfig,
66 pub error_codes: Vec<QECCodeType>,
68 pub correction_strategy: QECStrategy,
70 pub adaptive_qec: adaptive::AdaptiveQECConfig,
72 pub performance_optimization: QECOptimizationConfig,
74}
75
76#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
78pub enum QECStrategy {
79 ActiveCorrection,
81 PassiveMonitoring,
83 AdaptiveThreshold,
85 MLDriven,
87 HybridApproach,
89 Passive,
91 ActivePeriodic { cycle_time: Duration },
93 Adaptive,
95 FaultTolerant,
97 Hybrid { strategies: Vec<Self> },
99}
100
101#[derive(Debug, Clone)]
102pub struct ErrorCorrectionCycleResult {
103 pub syndromes_detected: Option<Vec<SyndromePattern>>,
104 pub corrections_applied: Option<Vec<CorrectionOperation>>,
105 pub success: bool,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
114pub struct ErrorStatistics {
115 pub error_rates_by_type: HashMap<String, f64>,
116 pub error_correlations: Array2<f64>,
117 pub temporal_patterns: Vec<TemporalPattern>,
118 pub spatial_patterns: Vec<SpatialPattern>,
119 pub prediction_accuracy: f64,
120 pub last_updated: SystemTime,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct TemporalPattern {
126 pub pattern_type: String,
127 pub frequency: f64,
128 pub amplitude: f64,
129 pub phase: f64,
130 pub confidence: f64,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct SpatialPattern {
136 pub pattern_type: String,
137 pub affected_qubits: Vec<usize>,
138 pub correlation_strength: f64,
139 pub propagation_direction: Option<String>,
140}
141
142#[derive(Debug, Clone, Serialize, Deserialize)]
144pub struct AdaptiveThresholds {
145 pub error_detection_threshold: f64,
146 pub correction_confidence_threshold: f64,
147 pub syndrome_pattern_threshold: f64,
148 pub ml_prediction_threshold: f64,
149 pub adaptation_rate: f64,
150 pub stability_window: Duration,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
157pub struct MLModel {
158 pub model_type: String,
159 pub model_data: Vec<u8>, pub training_accuracy: f64,
161 pub validation_accuracy: f64,
162 pub last_trained: SystemTime,
163 pub feature_importance: HashMap<String, f64>,
164}
165
166#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct CorrectionMetrics {
169 pub total_corrections: usize,
170 pub successful_corrections: usize,
171 pub false_positives: usize,
172 pub false_negatives: usize,
173 pub average_correction_time: Duration,
174 pub resource_utilization: ResourceUtilization,
175 pub fidelity_improvement: f64,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize)]
180pub struct ResourceUtilization {
181 pub auxiliary_qubits_used: f64,
182 pub measurement_overhead: f64,
183 pub classical_processing_time: f64,
184 pub memory_usage: usize,
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct CachedOptimization {
190 pub optimization_result: OptimizationResult,
191 pub context_hash: u64,
192 pub timestamp: SystemTime,
193 pub hit_count: usize,
194 pub performance_score: f64,
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
199pub struct OptimizationResult {
200 pub optimal_strategy: QECStrategy,
201 pub predicted_performance: f64,
202 pub resource_requirements: ResourceRequirements,
203 pub confidence_score: f64,
204 pub optimization_time: Duration,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct ResourceRequirements {
210 pub auxiliary_qubits: usize,
211 pub syndrome_measurements: usize,
212 pub classical_processing: Duration,
213 pub memory_mb: usize,
214 pub power_watts: f64,
215}
216
217impl Default for ErrorStatistics {
219 fn default() -> Self {
220 Self {
221 error_rates_by_type: HashMap::new(),
222 error_correlations: Array2::zeros((0, 0)),
223 temporal_patterns: Vec::new(),
224 spatial_patterns: Vec::new(),
225 prediction_accuracy: 0.0,
226 last_updated: SystemTime::now(),
227 }
228 }
229}
230
231impl Default for AdaptiveThresholds {
232 fn default() -> Self {
233 Self {
234 error_detection_threshold: 0.95,
235 correction_confidence_threshold: 0.90,
236 syndrome_pattern_threshold: 0.85,
237 ml_prediction_threshold: 0.80,
238 adaptation_rate: 0.01,
239 stability_window: Duration::from_secs(60),
240 }
241 }
242}
243
244impl Default for CorrectionMetrics {
245 fn default() -> Self {
246 Self {
247 total_corrections: 0,
248 successful_corrections: 0,
249 false_positives: 0,
250 false_negatives: 0,
251 average_correction_time: Duration::from_millis(100),
252 resource_utilization: ResourceUtilization::default(),
253 fidelity_improvement: 0.0,
254 }
255 }
256}
257
258impl Default for ResourceUtilization {
259 fn default() -> Self {
260 Self {
261 auxiliary_qubits_used: 0.0,
262 measurement_overhead: 0.0,
263 classical_processing_time: 0.0,
264 memory_usage: 0,
265 }
266 }
267}
268impl Default for QECConfig {
269 fn default() -> Self {
270 Self {
271 code_type: QECCodeType::SurfaceCode {
272 distance: 5,
273 layout: SurfaceCodeLayout::Square,
274 },
275 distance: 5,
276 strategies: vec![QECStrategy::Adaptive],
277 enable_ml_optimization: true,
278 enable_adaptive_thresholds: true,
279 correction_timeout: Duration::from_millis(100),
280 adaptive_config: adaptive::AdaptiveQECConfig {
281 enable_real_time_adaptation: true,
282 adaptation_window: Duration::from_secs(60),
283 performance_threshold: 0.95,
284 enable_threshold_adaptation: true,
285 enable_strategy_switching: true,
286 learning_rate: 0.01,
287 enable_adaptive: true,
288 strategies: vec![],
289 learning: adaptive::AdaptiveLearningConfig {
290 algorithms: vec![],
291 online_learning: adaptive::OnlineLearningConfig {
292 enable_online: true,
293 learning_rate_adaptation: adaptive::LearningRateAdaptation::Adaptive,
294 concept_drift: adaptive::ConceptDriftConfig {
295 enable_detection: false,
296 methods: vec![],
297 responses: vec![],
298 },
299 model_updates: adaptive::ModelUpdateConfig {
300 frequency: adaptive::UpdateFrequency::EventTriggered,
301 triggers: vec![],
302 strategies: vec![],
303 },
304 },
305 transfer_learning: adaptive::TransferLearningConfig {
306 enable_transfer: false,
307 source_domains: vec![],
308 strategies: vec![],
309 domain_adaptation: adaptive::DomainAdaptationConfig {
310 methods: vec![],
311 validation: vec![],
312 },
313 },
314 meta_learning: adaptive::MetaLearningConfig {
315 enable_meta: false,
316 algorithms: vec![],
317 task_distribution: adaptive::TaskDistributionConfig {
318 task_types: vec![],
319 complexity_range: (0.0, 1.0),
320 generation_strategy: adaptive::TaskGenerationStrategy::Random,
321 },
322 meta_optimization: adaptive::MetaOptimizationConfig {
323 optimizer: adaptive::MetaOptimizer::Adam,
324 learning_rates: adaptive::LearningRates {
325 inner_lr: 0.01,
326 outer_lr: 0.001,
327 adaptive: true,
328 },
329 regularization: adaptive::MetaRegularization {
330 regularization_type: adaptive::RegularizationType::L2,
331 strength: 0.001,
332 },
333 },
334 },
335 },
336 realtime_optimization: adaptive::RealtimeOptimizationConfig {
337 enable_realtime: true,
338 objectives: vec![],
339 algorithms: vec![],
340 constraints: adaptive::ResourceConstraints {
341 time_limit: Duration::from_millis(100),
342 memory_limit: 1024 * 1024,
343 power_budget: 100.0,
344 hardware_constraints: adaptive::HardwareConstraints {
345 connectivity: adaptive::ConnectivityConstraints {
346 coupling_map: vec![],
347 max_distance: 10,
348 routing_overhead: 1.2,
349 },
350 gate_fidelities: std::collections::HashMap::new(),
351 coherence_times: adaptive::CoherenceTimes {
352 t1_times: std::collections::HashMap::new(),
353 t2_times: std::collections::HashMap::new(),
354 gate_times: std::collections::HashMap::new(),
355 },
356 },
357 },
358 },
359 feedback_control: adaptive::FeedbackControlConfig {
360 enable_feedback: true,
361 algorithms: vec![],
362 sensors: adaptive::SensorConfig {
363 sensor_types: vec![],
364 sampling_rates: std::collections::HashMap::new(),
365 noise_characteristics: adaptive::NoiseCharacteristics {
366 gaussian_noise: 0.01,
367 systematic_bias: 0.0,
368 temporal_correlation: 0.1,
369 },
370 },
371 actuators: adaptive::ActuatorConfig {
372 actuator_types: vec![],
373 response_times: std::collections::HashMap::new(),
374 control_ranges: std::collections::HashMap::new(),
375 },
376 },
377 prediction: adaptive::PredictionConfig::default(),
378 optimization: adaptive::OptimizationConfig::default(),
379 },
380 optimization_config: QECOptimizationConfig {
381 enable_optimization: true,
382 enable_code_optimization: true,
383 enable_layout_optimization: true,
384 enable_scheduling_optimization: true,
385 optimization_algorithm:
386 crate::unified_benchmarking::config::OptimizationAlgorithm::GradientDescent,
387 optimization_objectives: vec![],
388 constraint_satisfaction: ConstraintSatisfactionConfig {
389 hardware_constraints: vec![],
390 resource_constraints: vec![],
391 performance_constraints: vec![],
392 },
393 targets: vec![],
394 metrics: vec![],
395 strategies: vec![],
396 },
397 error_codes: vec![QECCodeType::SurfaceCode {
398 distance: 5,
399 layout: SurfaceCodeLayout::Square,
400 }],
401 correction_strategy: QECStrategy::Adaptive,
402 syndrome_detection: detection::SyndromeDetectionConfig {
403 enable_parallel_detection: true,
404 detection_rounds: 3,
405 stabilizer_measurement_shots: 1000,
406 enable_syndrome_validation: true,
407 validation_threshold: 0.95,
408 enable_error_correlation: true,
409 enable_detection: true,
410 detection_frequency: 1000.0,
411 detection_methods: vec![],
412 pattern_recognition: detection::PatternRecognitionConfig {
413 enable_recognition: true,
414 algorithms: vec![],
415 training_config: detection::PatternTrainingConfig {
416 training_size: 1000,
417 validation_split: 0.2,
418 epochs: 100,
419 learning_rate: 0.001,
420 batch_size: 32,
421 },
422 real_time_adaptation: false,
423 },
424 statistical_analysis: detection::SyndromeStatisticsConfig {
425 enable_statistics: true,
426 methods: vec![],
427 confidence_level: 0.95,
428 data_retention_days: 30,
429 },
430 },
431 error_mitigation: mitigation::ErrorMitigationConfig {
432 enable_zne: true,
433 enable_symmetry_verification: true,
434 enable_readout_correction: true,
435 enable_dynamical_decoupling: true,
436 mitigation_strategies: vec![],
437 zne_config: mitigation::ZNEConfig {
438 noise_factors: vec![1.0, 1.5, 2.0],
439 extrapolation_method: mitigation::ExtrapolationMethod::Linear,
440 circuit_folding: mitigation::CircuitFoldingMethod::GlobalFolding,
441 enable_zne: true,
442 noise_scaling_factors: vec![1.0, 1.5, 2.0],
443 folding: mitigation::FoldingConfig {
444 folding_type: mitigation::FoldingType::Global,
445 global_folding: true,
446 local_folding: mitigation::LocalFoldingConfig {
447 regions: vec![],
448 selection_strategy: mitigation::RegionSelectionStrategy::Adaptive,
449 overlap_handling: mitigation::OverlapHandling::Ignore,
450 },
451 gate_specific: mitigation::GateSpecificFoldingConfig {
452 folding_rules: std::collections::HashMap::new(),
453 priority_ordering: vec![],
454 error_rate_weighting: false,
455 folding_strategies: std::collections::HashMap::new(),
456 default_strategy: mitigation::DefaultFoldingStrategy::Identity,
457 prioritized_gates: vec![],
458 },
459 },
460 richardson: mitigation::RichardsonConfig {
461 enable_richardson: false,
462 order: 2,
463 stability_check: true,
464 error_estimation: mitigation::ErrorEstimationConfig {
465 method: mitigation::ErrorEstimationMethod::Bootstrap,
466 bootstrap_samples: 100,
467 confidence_level: 0.95,
468 },
469 },
470 },
471 enable_mitigation: true,
472 strategies: vec![],
473 zne: mitigation::ZNEConfig {
474 noise_factors: vec![1.0, 1.5, 2.0],
475 extrapolation_method: mitigation::ExtrapolationMethod::Linear,
476 circuit_folding: mitigation::CircuitFoldingMethod::GlobalFolding,
477 enable_zne: true,
478 noise_scaling_factors: vec![1.0, 1.5, 2.0],
479 folding: mitigation::FoldingConfig {
480 folding_type: mitigation::FoldingType::Global,
481 global_folding: true,
482 local_folding: mitigation::LocalFoldingConfig {
483 regions: vec![],
484 selection_strategy: mitigation::RegionSelectionStrategy::Adaptive,
485 overlap_handling: mitigation::OverlapHandling::Ignore,
486 },
487 gate_specific: mitigation::GateSpecificFoldingConfig {
488 folding_rules: std::collections::HashMap::new(),
489 priority_ordering: vec![],
490 error_rate_weighting: false,
491 folding_strategies: std::collections::HashMap::new(),
492 default_strategy: mitigation::DefaultFoldingStrategy::Identity,
493 prioritized_gates: vec![],
494 },
495 },
496 richardson: mitigation::RichardsonConfig {
497 enable_richardson: false,
498 order: 2,
499 stability_check: true,
500 error_estimation: mitigation::ErrorEstimationConfig {
501 method: mitigation::ErrorEstimationMethod::Bootstrap,
502 bootstrap_samples: 100,
503 confidence_level: 0.95,
504 },
505 },
506 },
507 readout_mitigation: mitigation::ReadoutMitigationConfig {
508 enable_mitigation: true,
509 methods: vec![],
510 calibration: mitigation::ReadoutCalibrationConfig {
511 frequency: mitigation::CalibrationFrequency::Periodic(
512 std::time::Duration::from_secs(3600),
513 ),
514 states: vec![],
515 quality_metrics: vec![],
516 },
517 matrix_inversion: mitigation::MatrixInversionConfig {
518 method: mitigation::InversionMethod::PseudoInverse,
519 regularization: mitigation::RegularizationConfig {
520 regularization_type: mitigation::RegularizationType::L2,
521 parameter: 0.001,
522 adaptive: false,
523 },
524 stability: mitigation::NumericalStabilityConfig {
525 condition_threshold: 1e-12,
526 pivoting: mitigation::PivotingStrategy::Partial,
527 scaling: true,
528 },
529 },
530 tensored_mitigation: mitigation::TensoredMitigationConfig {
531 groups: vec![],
532 group_strategy: mitigation::GroupFormationStrategy::Topology,
533 crosstalk_handling: mitigation::CrosstalkHandling::Ignore,
534 },
535 },
536 gate_mitigation: mitigation::GateMitigationConfig {
537 enable_mitigation: true,
538 gate_configs: std::collections::HashMap::new(),
539 twirling: mitigation::TwirlingConfig {
540 enable_twirling: true,
541 twirling_type: mitigation::TwirlingType::Pauli,
542 groups: vec![],
543 randomization: mitigation::RandomizationStrategy::FullRandomization,
544 },
545 randomized_compiling: mitigation::RandomizedCompilingConfig {
546 enable_rc: true,
547 strategies: vec![],
548 replacement_rules: std::collections::HashMap::new(),
549 randomization_level: mitigation::RandomizationLevel::Medium,
550 },
551 },
552 symmetry_verification: mitigation::SymmetryVerificationConfig {
553 enable_verification: true,
554 symmetry_types: vec![],
555 protocols: vec![],
556 tolerance: mitigation::ToleranceSettings {
557 symmetry_tolerance: 0.01,
558 statistical_tolerance: 0.05,
559 confidence_level: 0.95,
560 },
561 },
562 virtual_distillation: mitigation::VirtualDistillationConfig {
563 enable_distillation: true,
564 protocols: vec![],
565 resources: mitigation::ResourceRequirements {
566 auxiliary_qubits: 2,
567 measurement_rounds: 3,
568 classical_processing: mitigation::ProcessingRequirements {
569 memory_mb: 1024,
570 computation_time: std::time::Duration::from_millis(100),
571 parallel_processing: false,
572 },
573 },
574 quality_metrics: vec![],
575 },
576 },
577 adaptive_qec: adaptive::AdaptiveQECConfig {
578 enable_real_time_adaptation: true,
579 adaptation_window: Duration::from_secs(60),
580 performance_threshold: 0.95,
581 enable_threshold_adaptation: true,
582 enable_strategy_switching: true,
583 learning_rate: 0.01,
584 enable_adaptive: true,
585 strategies: vec![],
586 learning: adaptive::AdaptiveLearningConfig {
587 algorithms: vec![],
588 online_learning: adaptive::OnlineLearningConfig {
589 enable_online: true,
590 learning_rate_adaptation: adaptive::LearningRateAdaptation::Adaptive,
591 concept_drift: adaptive::ConceptDriftConfig {
592 enable_detection: false,
593 methods: vec![],
594 responses: vec![],
595 },
596 model_updates: adaptive::ModelUpdateConfig {
597 frequency: adaptive::UpdateFrequency::EventTriggered,
598 triggers: vec![],
599 strategies: vec![],
600 },
601 },
602 transfer_learning: adaptive::TransferLearningConfig {
603 enable_transfer: false,
604 source_domains: vec![],
605 strategies: vec![],
606 domain_adaptation: adaptive::DomainAdaptationConfig {
607 methods: vec![],
608 validation: vec![],
609 },
610 },
611 meta_learning: adaptive::MetaLearningConfig {
612 enable_meta: false,
613 algorithms: vec![],
614 task_distribution: adaptive::TaskDistributionConfig {
615 task_types: vec![],
616 complexity_range: (0.0, 1.0),
617 generation_strategy: adaptive::TaskGenerationStrategy::Random,
618 },
619 meta_optimization: adaptive::MetaOptimizationConfig {
620 optimizer: adaptive::MetaOptimizer::Adam,
621 learning_rates: adaptive::LearningRates {
622 inner_lr: 0.01,
623 outer_lr: 0.001,
624 adaptive: true,
625 },
626 regularization: adaptive::MetaRegularization {
627 regularization_type: adaptive::RegularizationType::L2,
628 strength: 0.001,
629 },
630 },
631 },
632 },
633 realtime_optimization: adaptive::RealtimeOptimizationConfig {
634 enable_realtime: true,
635 objectives: vec![],
636 algorithms: vec![],
637 constraints: adaptive::ResourceConstraints {
638 time_limit: std::time::Duration::from_millis(100),
639 memory_limit: 1024 * 1024,
640 power_budget: 100.0,
641 hardware_constraints: adaptive::HardwareConstraints {
642 connectivity: adaptive::ConnectivityConstraints {
643 coupling_map: vec![],
644 max_distance: 10,
645 routing_overhead: 1.2,
646 },
647 gate_fidelities: std::collections::HashMap::new(),
648 coherence_times: adaptive::CoherenceTimes {
649 t1_times: std::collections::HashMap::new(),
650 t2_times: std::collections::HashMap::new(),
651 gate_times: std::collections::HashMap::new(),
652 },
653 },
654 },
655 },
656 feedback_control: adaptive::FeedbackControlConfig {
657 enable_feedback: true,
658 algorithms: vec![],
659 sensors: adaptive::SensorConfig {
660 sensor_types: vec![],
661 sampling_rates: std::collections::HashMap::new(),
662 noise_characteristics: adaptive::NoiseCharacteristics {
663 gaussian_noise: 0.01,
664 systematic_bias: 0.0,
665 temporal_correlation: 0.1,
666 },
667 },
668 actuators: adaptive::ActuatorConfig {
669 actuator_types: vec![],
670 response_times: std::collections::HashMap::new(),
671 control_ranges: std::collections::HashMap::new(),
672 },
673 },
674 prediction: adaptive::PredictionConfig::default(),
675 optimization: adaptive::OptimizationConfig::default(),
676 },
677 performance_optimization: QECOptimizationConfig {
678 enable_optimization: true,
679 enable_code_optimization: true,
680 enable_layout_optimization: true,
681 enable_scheduling_optimization: true,
682 optimization_algorithm:
683 crate::unified_benchmarking::config::OptimizationAlgorithm::GradientDescent,
684 optimization_objectives: vec![],
685 constraint_satisfaction: ConstraintSatisfactionConfig {
686 hardware_constraints: vec![],
687 resource_constraints: vec![],
688 performance_constraints: vec![],
689 },
690 targets: vec![],
691 metrics: vec![],
692 strategies: vec![],
693 },
694 ml_config: QECMLConfig {
695 model_type: crate::unified_benchmarking::config::MLModelType::NeuralNetwork,
696 training_data_size: 10000,
697 validation_split: 0.2,
698 enable_online_learning: true,
699 feature_extraction: crate::ml_optimization::FeatureExtractionConfig {
700 enable_syndrome_history: true,
701 history_length: 100,
702 enable_spatial_features: true,
703 enable_temporal_features: true,
704 enable_correlation_features: true,
705 enable_auto_extraction: true,
706 circuit_features: crate::ml_optimization::CircuitFeatureConfig {
707 basic_properties: true,
708 gate_distributions: true,
709 depth_analysis: true,
710 connectivity_patterns: true,
711 entanglement_measures: false,
712 symmetry_analysis: false,
713 critical_path_analysis: false,
714 },
715 hardware_features: crate::ml_optimization::HardwareFeatureConfig {
716 topology_features: true,
717 calibration_features: true,
718 error_rate_features: true,
719 timing_features: false,
720 resource_features: false,
721 environmental_features: false,
722 },
723 temporal_features: crate::ml_optimization::TemporalFeatureConfig {
724 time_series_analysis: true,
725 trend_detection: true,
726 seasonality_analysis: false,
727 autocorrelation_features: false,
728 fourier_features: false,
729 },
730 statistical_features: crate::ml_optimization::StatisticalFeatureConfig {
731 moment_features: true,
732 distribution_fitting: false,
733 correlation_features: true,
734 outlier_features: false,
735 normality_tests: false,
736 },
737 graph_features: crate::ml_optimization::GraphFeatureConfig {
738 centrality_measures: false,
739 community_features: false,
740 spectral_features: false,
741 path_features: false,
742 clustering_features: false,
743 },
744 feature_selection: crate::ml_optimization::FeatureSelectionConfig {
745 enable_selection: true,
746 selection_methods: vec![
747 crate::ml_optimization::FeatureSelectionMethod::VarianceThreshold,
748 ],
749 num_features: Some(50),
750 selection_threshold: 0.01,
751 },
752 dimensionality_reduction:
753 crate::ml_optimization::DimensionalityReductionConfig {
754 enable_reduction: false,
755 reduction_methods: vec![],
756 target_dimensions: None,
757 variance_threshold: 0.95,
758 },
759 },
760 model_update_frequency: Duration::from_secs(3600),
761 enable_ml: true,
762 models: vec![],
763 training: MLTrainingConfig {
764 batch_size: 32,
765 learning_rate: 0.001,
766 epochs: 100,
767 optimization_algorithm: "adam".to_string(),
768 data: TrainingDataConfig {
769 sources: vec![],
770 preprocessing: DataPreprocessingConfig {
771 normalization: NormalizationMethod::ZScore,
772 feature_selection: FeatureSelectionMethod::Statistical,
773 dimensionality_reduction: DimensionalityReductionMethod::PCA,
774 },
775 augmentation: DataAugmentationConfig {
776 enable: false,
777 techniques: vec![],
778 ratio: 1.0,
779 },
780 },
781 architecture: ModelArchitectureConfig {
782 architecture_type: ArchitectureType::Sequential,
783 layers: vec![LayerConfig {
784 layer_type: LayerType::Dense,
785 parameters: [("neurons".to_string(), 128.0)].iter().cloned().collect(),
786 activation: ActivationFunction::ReLU,
787 }],
788 connections: ConnectionPattern::FullyConnected,
789 },
790 parameters: TrainingParameters {
791 optimizer: OptimizerType::Adam,
792 loss_function: LossFunction::MeanSquaredError,
793 regularization_strength: 0.01,
794 learning_rate: 0.001,
795 batch_size: 32,
796 epochs: 100,
797 },
798 validation: adaptive::ValidationConfig {
799 method: adaptive::ValidationMethod::HoldOut,
800 split: 0.2,
801 cv_folds: 5,
802 },
803 },
804 inference: MLInferenceConfig {
805 mode: InferenceMode::Synchronous,
806 batch_processing: BatchProcessingConfig {
807 enable: false,
808 batch_size: 32,
809 timeout: std::time::Duration::from_secs(30),
810 },
811 timeout: std::time::Duration::from_secs(30),
812 caching: CachingConfig {
813 enable: true,
814 cache_size: 512,
815 ttl: std::time::Duration::from_secs(3600),
816 eviction_policy: adaptive::CacheEvictionPolicy::LRU,
817 },
818 optimization: InferenceOptimizationConfig {
819 enable_optimization: true,
820 optimization_strategies: vec!["model_pruning".to_string()],
821 performance_targets: vec!["latency".to_string()],
822 model_optimization: ModelOptimization::None,
823 hardware_acceleration: HardwareAcceleration::CPU,
824 caching: InferenceCaching {
825 enable: false,
826 cache_size: 1000,
827 eviction_policy: adaptive::CacheEvictionPolicy::LRU,
828 },
829 },
830 },
831 model_management: ModelManagementConfig {
832 versioning: ModelVersioning {
833 enable: false,
834 version_control: VersionControlSystem::Git,
835 rollback: RollbackStrategy::Manual,
836 },
837 deployment: ModelDeployment {
838 strategy: DeploymentStrategy::BlueGreen,
839 environment: EnvironmentConfig {
840 environment_type: EnvironmentType::Development,
841 resources: ResourceAllocation {
842 cpu: 1.0,
843 memory: 1024,
844 gpu: None,
845 },
846 dependencies: vec![],
847 },
848 scaling: ScalingConfig {
849 auto_scaling: false,
850 min_replicas: 1,
851 max_replicas: 3,
852 metrics: vec![],
853 },
854 },
855 monitoring: ModelMonitoring {
856 performance: PerformanceMonitoring {
857 metrics: vec![],
858 frequency: std::time::Duration::from_secs(60),
859 baseline_comparison: false,
860 },
861 drift_detection: DriftDetection {
862 enable: false,
863 methods: vec![],
864 sensitivity: 0.05,
865 },
866 alerting: AlertingConfig {
867 channels: vec![],
868 thresholds: std::collections::HashMap::new(),
869 escalation: EscalationRules {
870 levels: vec![],
871 timeouts: std::collections::HashMap::new(),
872 },
873 },
874 },
875 },
876 optimization: create_stub_ml_optimization_config(),
877 validation: create_default_validation_config(),
878 },
879 monitoring_config: QECMonitoringConfig {
880 enable_performance_tracking: true,
881 enable_error_analysis: true,
882 enable_resource_monitoring: true,
883 reporting_interval: Duration::from_secs(60),
884 enable_predictive_analytics: false,
885 enable_monitoring: true,
886 targets: vec![],
887 dashboard: DashboardConfig {
888 enable: true,
889 components: vec![],
890 update_frequency: std::time::Duration::from_secs(5),
891 access_control: AccessControl {
892 authentication: false,
893 roles: vec![],
894 permissions: std::collections::HashMap::new(),
895 },
896 },
897 data_collection: DataCollectionConfig {
898 frequency: std::time::Duration::from_secs(1),
899 retention: DataRetention {
900 period: std::time::Duration::from_secs(3600 * 24 * 30),
901 archival: ArchivalStrategy::CloudStorage,
902 compression: false,
903 },
904 storage: StorageConfig {
905 backend: StorageBackend::FileSystem,
906 replication: 1,
907 consistency: ConsistencyLevel::Eventual,
908 },
909 },
910 alerting: MonitoringAlertingConfig {
911 rules: vec![],
912 channels: vec![],
913 suppression: AlertSuppression {
914 enable: false,
915 rules: vec![],
916 default_time: std::time::Duration::from_secs(300),
917 },
918 },
919 },
920 }
921 }
922}
923
924#[derive(Debug, Clone, Serialize, Deserialize)]
930pub struct TrainingDataConfig {
931 pub sources: Vec<DataSource>,
932 pub preprocessing: DataPreprocessingConfig,
933 pub augmentation: DataAugmentationConfig,
934}
935
936#[derive(Debug, Clone, Serialize, Deserialize)]
938pub struct ModelArchitectureConfig {
939 pub architecture_type: ArchitectureType,
940 pub layers: Vec<LayerConfig>,
941 pub connections: ConnectionPattern,
942}
943
944#[derive(Debug, Clone, Serialize, Deserialize)]
946pub struct TrainingParameters {
947 pub optimizer: adaptive::OptimizerType,
948 pub loss_function: adaptive::LossFunction,
949 pub regularization_strength: f64,
950 pub learning_rate: f64,
951 pub batch_size: usize,
952 pub epochs: usize,
953}
954
955#[derive(Debug, Clone, Serialize, Deserialize)]
957pub struct MLTrainingConfig {
958 pub batch_size: usize,
959 pub learning_rate: f64,
960 pub epochs: usize,
961 pub optimization_algorithm: String,
962 pub data: TrainingDataConfig,
963 pub architecture: ModelArchitectureConfig,
964 pub parameters: TrainingParameters,
965 pub validation: adaptive::ValidationConfig,
966}
967
968#[derive(Debug, Clone, Serialize, Deserialize)]
970pub struct MLInferenceConfig {
971 pub mode: InferenceMode,
972 pub batch_processing: BatchProcessingConfig,
973 pub timeout: Duration,
974 pub caching: CachingConfig,
975 pub optimization: InferenceOptimizationConfig,
976}
977
978#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
980pub enum InferenceMode {
981 Synchronous,
982 Asynchronous,
983 Streaming,
984}
985
986#[derive(Debug, Clone, Serialize, Deserialize)]
988pub struct BatchProcessingConfig {
989 pub enable: bool,
990 pub batch_size: usize,
991 pub timeout: Duration,
992}
993
994#[derive(Debug, Clone, Serialize, Deserialize)]
996pub struct CachingConfig {
997 pub enable: bool,
998 pub cache_size: usize,
999 pub ttl: Duration,
1000 pub eviction_policy: adaptive::CacheEvictionPolicy,
1001}
1002
1003#[derive(Debug, Clone, Serialize, Deserialize)]
1005pub struct InferenceOptimizationConfig {
1006 pub enable_optimization: bool,
1007 pub optimization_strategies: Vec<String>,
1008 pub performance_targets: Vec<String>,
1009 pub model_optimization: adaptive::ModelOptimization,
1010 pub hardware_acceleration: adaptive::HardwareAcceleration,
1011 pub caching: adaptive::InferenceCaching,
1012}
1013
1014#[derive(Debug, Clone, Serialize, Deserialize)]
1016pub struct QECMLConfig {
1017 pub model_type: crate::unified_benchmarking::config::MLModelType,
1018 pub training_data_size: usize,
1019 pub validation_split: f64,
1020 pub enable_online_learning: bool,
1021 pub feature_extraction: crate::ml_optimization::FeatureExtractionConfig,
1022 pub model_update_frequency: Duration,
1023 pub enable_ml: bool,
1025 pub inference: MLInferenceConfig,
1026 pub model_management: adaptive::ModelManagementConfig,
1027 pub optimization: crate::ml_optimization::MLOptimizationConfig,
1028 pub validation: crate::ml_optimization::ValidationConfig,
1029 pub models: Vec<String>,
1030 pub training: MLTrainingConfig,
1031}
1032
1033#[derive(Debug, Clone, Serialize, Deserialize)]
1035pub struct QECMonitoringConfig {
1036 pub enable_performance_tracking: bool,
1037 pub enable_error_analysis: bool,
1038 pub enable_resource_monitoring: bool,
1039 pub reporting_interval: Duration,
1040 pub enable_predictive_analytics: bool,
1041 pub enable_monitoring: bool,
1043 pub targets: Vec<String>,
1044 pub dashboard: DashboardConfig,
1045 pub data_collection: DataCollectionConfig,
1046 pub alerting: MonitoringAlertingConfig,
1047}
1048
1049#[derive(Debug, Clone, Serialize, Deserialize)]
1051pub struct QECOptimizationConfig {
1052 pub enable_code_optimization: bool,
1053 pub enable_layout_optimization: bool,
1054 pub enable_scheduling_optimization: bool,
1055 pub optimization_algorithm: crate::unified_benchmarking::config::OptimizationAlgorithm,
1056 pub optimization_objectives: Vec<OptimizationObjective>,
1057 pub constraint_satisfaction: ConstraintSatisfactionConfig,
1058 pub enable_optimization: bool,
1059 pub targets: Vec<String>,
1060 pub metrics: Vec<String>,
1061 pub strategies: Vec<String>,
1062}
1063
1064#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1066pub enum OptimizationObjective {
1067 MaximizeLogicalFidelity,
1068 MinimizeOverhead,
1069 MinimizeLatency,
1070 MinimizeResourceUsage,
1071 MaximizeThroughput,
1072}
1073
1074#[derive(Debug, Clone, Serialize, Deserialize)]
1076pub struct ConstraintSatisfactionConfig {
1077 pub hardware_constraints: Vec<HardwareConstraint>,
1078 pub resource_constraints: Vec<ResourceConstraint>,
1079 pub performance_constraints: Vec<PerformanceConstraint>,
1080}
1081
1082#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1084pub enum HardwareConstraint {
1085 ConnectivityGraph,
1086 GateTimes,
1087 ErrorRates,
1088 CoherenceTimes,
1089 CouplingStrengths,
1090}
1091
1092#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1094pub enum ResourceConstraint {
1095 QubitCount,
1096 CircuitDepth,
1097 ExecutionTime,
1098 MemoryUsage,
1099 PowerConsumption,
1100}
1101
1102#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1104pub enum PerformanceConstraint {
1105 LogicalErrorRate,
1106 ThroughputTarget,
1107 LatencyBound,
1108 FidelityThreshold,
1109 SuccessRate,
1110}
1111
1112#[derive(Debug, Clone, Serialize, Deserialize)]
1115pub struct FeedbackControlConfig {
1116 pub enable_feedback: bool,
1117 pub control_loop_frequency: Duration,
1118}
1119
1120#[derive(Debug, Clone, Serialize, Deserialize)]
1121pub struct LearningConfig {
1122 pub algorithms: Vec<String>,
1123 pub hyperparameters: std::collections::HashMap<String, f64>,
1124}
1125
1126impl Default for FeedbackControlConfig {
1129 fn default() -> Self {
1130 Self {
1131 enable_feedback: true,
1132 control_loop_frequency: Duration::from_millis(100),
1133 }
1134 }
1135}
1136
1137impl Default for LearningConfig {
1138 fn default() -> Self {
1139 Self {
1140 algorithms: vec!["gradient_descent".to_string()],
1141 hyperparameters: std::collections::HashMap::new(),
1142 }
1143 }
1144}
1145
1146#[derive(Debug, Clone, Serialize, Deserialize)]
1150pub struct PatternRecognitionConfig {
1151 pub enable_recognition: bool,
1152 pub recognition_methods: Vec<String>,
1153 pub confidence_threshold: f64,
1154 pub ml_model_path: Option<String>,
1155}
1156
1157#[derive(Debug, Clone, Serialize, Deserialize)]
1159pub struct StatisticalAnalysisConfig {
1160 pub enable_statistics: bool,
1161 pub analysis_methods: Vec<String>,
1162 pub statistical_tests: Vec<String>,
1163 pub significance_level: f64,
1164}
1165
1166#[derive(Debug, Clone, Serialize, Deserialize)]
1168pub struct NoiseScalingConfig {
1169 pub scaling_factors: Vec<f64>,
1170 pub scaling_methods: Vec<String>,
1171 pub max_scaling: f64,
1172}
1173
1174impl Default for PatternRecognitionConfig {
1177 fn default() -> Self {
1178 Self {
1179 enable_recognition: true,
1180 recognition_methods: vec!["neural_network".to_string()],
1181 confidence_threshold: 0.9,
1182 ml_model_path: None,
1183 }
1184 }
1185}
1186
1187impl Default for StatisticalAnalysisConfig {
1188 fn default() -> Self {
1189 Self {
1190 enable_statistics: true,
1191 analysis_methods: vec!["correlation".to_string(), "trend_analysis".to_string()],
1192 statistical_tests: vec!["chi_square".to_string()],
1193 significance_level: 0.05,
1194 }
1195 }
1196}
1197
1198impl Default for NoiseScalingConfig {
1199 fn default() -> Self {
1200 Self {
1201 scaling_factors: vec![1.0, 1.5, 2.0, 2.5, 3.0],
1202 scaling_methods: vec!["folding".to_string()],
1203 max_scaling: 5.0,
1204 }
1205 }
1206}
1207
1208fn create_stub_ml_optimization_config() -> crate::ml_optimization::MLOptimizationConfig {
1210 crate::ml_optimization::MLOptimizationConfig {
1212 enable_optimization: true,
1213 model_config: crate::ml_optimization::MLModelConfig {
1214 primary_algorithms: vec![crate::ml_optimization::MLAlgorithm::DeepNeuralNetwork],
1215 fallback_algorithms: vec![crate::ml_optimization::MLAlgorithm::RandomForest],
1216 hyperparameters: std::collections::HashMap::new(),
1217 training_config: crate::ml_optimization::TrainingConfig {
1218 max_iterations: 100,
1219 learning_rate: 0.001,
1220 batch_size: 32,
1221 early_stopping: crate::ml_optimization::EarlyStoppingConfig {
1222 enable_early_stopping: false,
1223 patience: 10,
1224 min_improvement: 0.001,
1225 restore_best_weights: true,
1226 },
1227 cv_folds: 5,
1228 train_test_split: 0.8,
1229 optimizer: crate::ml_optimization::TrainingOptimizer::Adam,
1230 },
1231 model_selection: crate::ml_optimization::ModelSelectionStrategy::CrossValidation,
1232 regularization: crate::ml_optimization::RegularizationConfig {
1233 l1_lambda: 0.0,
1234 l2_lambda: 0.01,
1235 dropout_rate: 0.0,
1236 batch_normalization: false,
1237 weight_decay: 0.0,
1238 },
1239 },
1240 feature_extraction: create_stub_feature_extraction_config(),
1241 hardware_prediction: create_stub_hardware_prediction_config(),
1242 online_learning: create_stub_online_learning_config(),
1243 transfer_learning: create_stub_transfer_learning_config(),
1244 ensemble_config: create_stub_ensemble_config(),
1245 optimization_strategy: create_stub_optimization_strategy_config(),
1246 validation_config: crate::ml_optimization::validation::MLValidationConfig::default(),
1247 monitoring_config: create_stub_ml_monitoring_config(),
1248 }
1249}
1250
1251fn create_stub_feature_extraction_config() -> crate::ml_optimization::FeatureExtractionConfig {
1252 crate::ml_optimization::FeatureExtractionConfig {
1253 enable_syndrome_history: false,
1254 history_length: 5,
1255 enable_spatial_features: false,
1256 enable_temporal_features: false,
1257 enable_correlation_features: false,
1258 enable_auto_extraction: false,
1259 circuit_features: crate::ml_optimization::features::CircuitFeatureConfig {
1260 basic_properties: false,
1261 gate_distributions: false,
1262 depth_analysis: false,
1263 connectivity_patterns: false,
1264 entanglement_measures: false,
1265 symmetry_analysis: false,
1266 critical_path_analysis: false,
1267 },
1268 hardware_features: crate::ml_optimization::features::HardwareFeatureConfig {
1269 topology_features: false,
1270 calibration_features: false,
1271 error_rate_features: false,
1272 timing_features: false,
1273 resource_features: false,
1274 environmental_features: false,
1275 },
1276 temporal_features: crate::ml_optimization::features::TemporalFeatureConfig {
1277 time_series_analysis: false,
1278 trend_detection: false,
1279 seasonality_analysis: false,
1280 autocorrelation_features: false,
1281 fourier_features: false,
1282 },
1283 statistical_features: crate::ml_optimization::features::StatisticalFeatureConfig {
1284 moment_features: false,
1285 distribution_fitting: false,
1286 correlation_features: false,
1287 outlier_features: false,
1288 normality_tests: false,
1289 },
1290 graph_features: crate::ml_optimization::features::GraphFeatureConfig {
1291 centrality_measures: false,
1292 community_features: false,
1293 spectral_features: false,
1294 path_features: false,
1295 clustering_features: false,
1296 },
1297 feature_selection: crate::ml_optimization::features::FeatureSelectionConfig {
1298 enable_selection: false,
1299 selection_methods: vec![
1300 crate::ml_optimization::features::FeatureSelectionMethod::VarianceThreshold,
1301 ],
1302 num_features: None,
1303 selection_threshold: 0.05,
1304 },
1305 dimensionality_reduction: crate::ml_optimization::features::DimensionalityReductionConfig {
1306 enable_reduction: false,
1307 reduction_methods: vec![],
1308 target_dimensions: None,
1309 variance_threshold: 0.95,
1310 },
1311 }
1312}
1313
1314const fn create_stub_hardware_prediction_config() -> crate::ml_optimization::HardwarePredictionConfig
1315{
1316 crate::ml_optimization::HardwarePredictionConfig {
1317 enable_prediction: false,
1318 prediction_targets: vec![],
1319 prediction_horizon: std::time::Duration::from_secs(300),
1320 uncertainty_quantification: false,
1321 multi_step_prediction: false,
1322 hardware_adaptation: crate::ml_optimization::hardware::HardwareAdaptationConfig {
1323 enable_adaptation: false,
1324 adaptation_frequency: std::time::Duration::from_secs(3600),
1325 adaptation_triggers: vec![],
1326 learning_rate_adaptation: false,
1327 },
1328 }
1329}
1330
1331const fn create_stub_online_learning_config() -> crate::ml_optimization::OnlineLearningConfig {
1332 crate::ml_optimization::OnlineLearningConfig {
1333 enable_online_learning: false,
1334 learning_rate_schedule:
1335 crate::ml_optimization::online_learning::LearningRateSchedule::Constant,
1336 memory_management: crate::ml_optimization::online_learning::MemoryManagementConfig {
1337 max_buffer_size: 1000,
1338 eviction_strategy: crate::ml_optimization::online_learning::MemoryEvictionStrategy::LRU,
1339 replay_buffer: false,
1340 experience_prioritization: false,
1341 },
1342 forgetting_prevention:
1343 crate::ml_optimization::online_learning::ForgettingPreventionConfig {
1344 elastic_weight_consolidation: false,
1345 progressive_networks: false,
1346 memory_replay: false,
1347 regularization_strength: 0.0,
1348 },
1349 incremental_learning: crate::ml_optimization::online_learning::IncrementalLearningConfig {
1350 incremental_batch_size: 32,
1351 update_frequency: std::time::Duration::from_secs(300),
1352 stability_plasticity_balance: 0.5,
1353 knowledge_distillation: false,
1354 },
1355 }
1356}
1357
1358const fn create_stub_transfer_learning_config() -> crate::ml_optimization::TransferLearningConfig {
1359 crate::ml_optimization::TransferLearningConfig {
1360 enable_transfer_learning: false,
1361 source_domains: vec![],
1362 transfer_methods: vec![],
1363 domain_adaptation: crate::ml_optimization::DomainAdaptationConfig {
1364 enable_adaptation: false,
1365 adaptation_methods: vec![],
1366 similarity_threshold: 0.5,
1367 max_domain_gap: 1.0,
1368 },
1369 meta_learning: crate::ml_optimization::MetaLearningConfig {
1370 enable_meta_learning: false,
1371 meta_algorithms: vec![],
1372 inner_loop_iterations: 1,
1373 outer_loop_iterations: 1,
1374 },
1375 }
1376}
1377
1378const fn create_stub_ensemble_config() -> crate::ml_optimization::EnsembleConfig {
1379 crate::ml_optimization::EnsembleConfig {
1380 enable_ensemble: false,
1381 ensemble_methods: vec![],
1382 num_models: 1,
1383 voting_strategy: crate::ml_optimization::VotingStrategy::Majority,
1384 diversity_measures: vec![],
1385 dynamic_selection: false,
1386 }
1387}
1388
1389fn create_stub_optimization_strategy_config() -> crate::ml_optimization::OptimizationStrategyConfig
1390{
1391 crate::ml_optimization::OptimizationStrategyConfig {
1392 constraint_handling: crate::ml_optimization::optimization::ConstraintHandlingConfig {
1393 constraint_types: vec![crate::ml_optimization::optimization::ConstraintType::Box],
1394 penalty_methods: vec![
1395 crate::ml_optimization::optimization::PenaltyMethod::ExteriorPenalty,
1396 ],
1397 constraint_tolerance: 0.1,
1398 feasibility_preservation: false,
1399 },
1400 search_strategies: vec![],
1401 exploration_exploitation: crate::ml_optimization::ExplorationExploitationConfig {
1402 initial_exploration_rate: 0.1,
1403 exploration_decay: 0.95,
1404 min_exploration_rate: 0.01,
1405 exploitation_threshold: 0.9,
1406 adaptive_balancing: false,
1407 },
1408 adaptive_strategies: crate::ml_optimization::AdaptiveStrategyConfig {
1409 enable_adaptive: false,
1410 strategy_selection: vec![],
1411 performance_feedback: false,
1412 strategy_mutation: false,
1413 },
1414 multi_objective: crate::ml_optimization::MultiObjectiveConfig {
1415 enable_multi_objective: false,
1416 objectives: std::collections::HashMap::new(),
1417 pareto_optimization: false,
1418 scalarization_methods: vec![],
1419 },
1420 }
1421}
1422
1423fn create_stub_ml_monitoring_config() -> crate::ml_optimization::MLMonitoringConfig {
1424 crate::ml_optimization::MLMonitoringConfig {
1425 enable_real_time_monitoring: false,
1426 performance_tracking: false,
1427 drift_detection: crate::ml_optimization::DriftDetectionConfig {
1428 enable_detection: false,
1429 detection_methods: vec![],
1430 significance_threshold: 0.05,
1431 window_size: 100,
1432 },
1433 anomaly_detection: false,
1434 alert_thresholds: std::collections::HashMap::new(),
1435 }
1436}
1437
1438fn create_default_validation_config() -> crate::ml_optimization::validation::MLValidationConfig {
1439 crate::ml_optimization::validation::MLValidationConfig::default()
1440}