1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::Duration;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct AdaptiveQECConfig {
10 pub enable_real_time_adaptation: bool,
12 pub adaptation_window: std::time::Duration,
14 pub performance_threshold: f64,
16 pub enable_threshold_adaptation: bool,
18 pub enable_strategy_switching: bool,
20 pub learning_rate: f64,
22 pub enable_adaptive: bool,
24 pub strategies: Vec<AdaptationStrategy>,
26 pub learning: AdaptiveLearningConfig,
28 pub realtime_optimization: RealtimeOptimizationConfig,
30 pub feedback_control: FeedbackControlConfig,
32 pub prediction: PredictionConfig,
34 pub optimization: OptimizationConfig,
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub enum AdaptationStrategy {
41 ErrorRateBased,
42 PerformanceBased,
43 ResourceBased,
44 MLBased,
45 HybridAdaptation,
46 PredictiveAdaptation,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct AdaptiveLearningConfig {
52 pub algorithms: Vec<LearningAlgorithm>,
54 pub online_learning: OnlineLearningConfig,
56 pub transfer_learning: TransferLearningConfig,
58 pub meta_learning: MetaLearningConfig,
60}
61
62#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
64pub enum LearningAlgorithm {
65 ReinforcementLearning,
66 SupervisedLearning,
67 UnsupervisedLearning,
68 SemiSupervisedLearning,
69 FederatedLearning,
70 ContinualLearning,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct OnlineLearningConfig {
76 pub enable_online: bool,
78 pub learning_rate_adaptation: LearningRateAdaptation,
80 pub concept_drift: ConceptDriftConfig,
82 pub model_updates: ModelUpdateConfig,
84}
85
86#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
88pub enum LearningRateAdaptation {
89 Fixed,
90 Exponential,
91 Polynomial,
92 Adaptive,
93 PerformanceBased,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
98pub struct ConceptDriftConfig {
99 pub enable_detection: bool,
101 pub methods: Vec<DriftDetectionMethod>,
103 pub responses: Vec<DriftResponse>,
105}
106
107#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
109pub enum DriftDetectionMethod {
110 StatisticalTest,
111 PerformanceMonitoring,
112 DistributionChange,
113 ModelPerformance,
114}
115
116#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
118pub enum DriftResponse {
119 Retrain,
120 Adapt,
121 Reset,
122 EnsembleUpdate,
123}
124
125#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct ModelUpdateConfig {
128 pub frequency: UpdateFrequency,
130 pub triggers: Vec<UpdateTrigger>,
132 pub strategies: Vec<UpdateStrategy>,
134}
135
136#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
138pub enum UpdateFrequency {
139 Continuous,
140 Periodic(Duration),
141 EventTriggered,
142 Adaptive,
143}
144
145#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
147pub enum UpdateTrigger {
148 PerformanceDegradation,
149 NewData,
150 EnvironmentChange,
151 UserRequest,
152}
153
154#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
156pub enum UpdateStrategy {
157 FullRetrain,
158 IncrementalUpdate,
159 EnsembleUpdate,
160 ParameterUpdate,
161}
162
163#[derive(Debug, Clone, Serialize, Deserialize)]
165pub struct TransferLearningConfig {
166 pub enable_transfer: bool,
168 pub source_domains: Vec<SourceDomain>,
170 pub strategies: Vec<TransferStrategy>,
172 pub domain_adaptation: DomainAdaptationConfig,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize)]
178pub struct SourceDomain {
179 pub id: String,
181 pub characteristics: HashMap<String, f64>,
183 pub similarity: SimilarityMetrics,
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct SimilarityMetrics {
190 pub statistical: f64,
192 pub structural: f64,
194 pub performance: f64,
196}
197
198#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
200pub enum TransferStrategy {
201 FeatureTransfer,
202 ParameterTransfer,
203 ModelTransfer,
204 KnowledgeDistillation,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct DomainAdaptationConfig {
210 pub methods: Vec<AdaptationMethod>,
212 pub validation: Vec<ValidationStrategy>,
214}
215
216#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
218pub enum AdaptationMethod {
219 FeatureAlignment,
220 DistributionMatching,
221 AdversarialTraining,
222 CorrectionModels,
223}
224
225#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
227pub enum ValidationStrategy {
228 CrossDomainValidation,
229 TargetValidation,
230 UnsupervisedMetrics,
231}
232
233#[derive(Debug, Clone, Serialize, Deserialize)]
235pub struct MetaLearningConfig {
236 pub enable_meta: bool,
238 pub algorithms: Vec<MetaLearningAlgorithm>,
240 pub task_distribution: TaskDistributionConfig,
242 pub meta_optimization: MetaOptimizationConfig,
244}
245
246#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
248pub enum MetaLearningAlgorithm {
249 MAML,
250 Reptile,
251 ProtoNet,
252 RelationNet,
253 MatchingNet,
254}
255
256#[derive(Debug, Clone, Serialize, Deserialize)]
258pub struct TaskDistributionConfig {
259 pub task_types: Vec<String>,
261 pub complexity_range: (f64, f64),
263 pub generation_strategy: TaskGenerationStrategy,
265}
266
267#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
269pub enum TaskGenerationStrategy {
270 Random,
271 Curriculum,
272 Adaptive,
273 HumanDesigned,
274}
275
276#[derive(Debug, Clone, Serialize, Deserialize)]
278pub struct MetaOptimizationConfig {
279 pub optimizer: MetaOptimizer,
281 pub learning_rates: LearningRates,
283 pub regularization: MetaRegularization,
285}
286
287#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
289pub enum MetaOptimizer {
290 SGD,
291 Adam,
292 RMSprop,
293 AdaGrad,
294}
295
296#[derive(Debug, Clone, Serialize, Deserialize)]
298pub struct LearningRates {
299 pub inner_lr: f64,
301 pub outer_lr: f64,
303 pub adaptive: bool,
305}
306
307#[derive(Debug, Clone, Serialize, Deserialize)]
309pub struct MetaRegularization {
310 pub regularization_type: RegularizationType,
312 pub strength: f64,
314}
315
316#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
318pub enum RegularizationType {
319 L1,
320 L2,
321 Dropout,
322 BatchNorm,
323 None,
324}
325
326#[derive(Debug, Clone, Serialize, Deserialize)]
328pub struct RealtimeOptimizationConfig {
329 pub enable_realtime: bool,
331 pub objectives: Vec<OptimizationObjective>,
333 pub algorithms: Vec<RealtimeAlgorithm>,
335 pub constraints: ResourceConstraints,
337}
338
339#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
341pub enum OptimizationObjective {
342 MinimizeErrorRate,
343 MaximizeFidelity,
344 MinimizeLatency,
345 MaximizeThroughput,
346 MinimizeResourceUsage,
347 BalancedObjective,
348}
349
350#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
352pub enum RealtimeAlgorithm {
353 OnlineGradientDescent,
354 AdaptiveMomentum,
355 ParticleSwarm,
356 GeneticAlgorithm,
357 BayesianOptimization,
358 ModelPredictiveControl,
359}
360
361#[derive(Debug, Clone, Serialize, Deserialize)]
363pub struct ResourceConstraints {
364 pub time_limit: Duration,
366 pub memory_limit: usize,
368 pub power_budget: f64,
370 pub hardware_constraints: HardwareConstraints,
372}
373
374#[derive(Debug, Clone, Serialize, Deserialize)]
376pub struct HardwareConstraints {
377 pub connectivity: ConnectivityConstraints,
379 pub gate_fidelities: HashMap<String, f64>,
381 pub coherence_times: CoherenceTimes,
383}
384
385#[derive(Debug, Clone, Serialize, Deserialize)]
387pub struct ConnectivityConstraints {
388 pub coupling_map: Vec<(usize, usize)>,
390 pub max_distance: usize,
392 pub routing_overhead: f64,
394}
395
396#[derive(Debug, Clone, Serialize, Deserialize)]
398pub struct CoherenceTimes {
399 pub t1_times: HashMap<usize, f64>,
401 pub t2_times: HashMap<usize, f64>,
403 pub gate_times: HashMap<String, f64>,
405}
406
407#[derive(Debug, Clone, Serialize, Deserialize)]
409pub struct FeedbackControlConfig {
410 pub enable_feedback: bool,
412 pub algorithms: Vec<ControlAlgorithm>,
414 pub sensors: SensorConfig,
416 pub actuators: ActuatorConfig,
418}
419
420#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
422pub enum ControlAlgorithm {
423 PID,
424 LQR,
425 MPC,
426 AdaptiveControl,
427 RobustControl,
428 NeuralControl,
429}
430
431#[derive(Debug, Clone, Serialize, Deserialize)]
433pub struct SensorConfig {
434 pub sensor_types: Vec<SensorType>,
436 pub sampling_rates: HashMap<String, f64>,
438 pub noise_characteristics: NoiseCharacteristics,
440}
441
442#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
444pub enum SensorType {
445 PerformanceMonitor,
446 ErrorRateMonitor,
447 TemperatureSensor,
448 VibrationseSensor,
449 CustomSensor(String),
450}
451
452#[derive(Debug, Clone, Serialize, Deserialize)]
454pub struct NoiseCharacteristics {
455 pub gaussian_noise: f64,
457 pub systematic_bias: f64,
459 pub temporal_correlation: f64,
461}
462
463#[derive(Debug, Clone, Serialize, Deserialize)]
465pub struct ActuatorConfig {
466 pub actuator_types: Vec<ActuatorType>,
468 pub response_times: HashMap<String, Duration>,
470 pub control_ranges: HashMap<String, (f64, f64)>,
472}
473
474#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
476pub enum ActuatorType {
477 PulseController,
478 FrequencyController,
479 PhaseController,
480 AmplitudeController,
481 CustomActuator(String),
482}
483
484#[derive(Debug, Clone, Serialize, Deserialize)]
486pub struct QECOptimizationConfig {
487 pub enable_optimization: bool,
489 pub enable_code_optimization: bool,
491 pub enable_layout_optimization: bool,
493 pub enable_scheduling_optimization: bool,
495 pub optimization_algorithm: crate::unified_benchmarking::config::OptimizationAlgorithm,
497 pub optimization_objectives: Vec<crate::unified_benchmarking::config::OptimizationObjective>,
499 pub constraint_satisfaction: ConstraintSatisfactionConfig,
501 pub targets: Vec<OptimizationTarget>,
503 pub metrics: Vec<PerformanceMetric>,
505 pub strategies: Vec<OptimizationStrategy>,
507}
508
509#[derive(Debug, Clone, Serialize, Deserialize)]
511pub struct ConstraintSatisfactionConfig {
512 pub hardware_constraints: Vec<HardwareConstraint>,
514 pub resource_constraints: Vec<ResourceConstraint>,
516 pub performance_constraints: Vec<PerformanceConstraint>,
518}
519
520#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
522pub enum HardwareConstraint {
523 ConnectivityGraph,
524 GateTimes,
525 ErrorRates,
526}
527
528#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
530pub enum ResourceConstraint {
531 QubitCount,
532 CircuitDepth,
533 ExecutionTime,
534}
535
536#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
538pub enum PerformanceConstraint {
539 LogicalErrorRate,
540 ThroughputTarget,
541}
542
543#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
545pub enum OptimizationTarget {
546 ErrorCorrection,
547 ResourceEfficiency,
548 Latency,
549 Throughput,
550 EnergyConsumption,
551 FaultTolerance,
552}
553
554#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
556pub enum PerformanceMetric {
557 LogicalErrorRate,
558 DecodingLatency,
559 SyndromeAccuracy,
560 CorrectionSuccess,
561 ResourceUtilization,
562 ThroughputRate,
563}
564
565#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
567pub enum OptimizationStrategy {
568 HeuristicOptimization,
569 ExactOptimization,
570 ApproximateOptimization,
571 MachineLearningOptimization,
572 HybridOptimization,
573}
574
575#[derive(Debug, Clone, Serialize, Deserialize)]
577pub struct QECMLConfig {
578 pub model_type: crate::unified_benchmarking::config::MLModelType,
580 pub training_data_size: usize,
582 pub validation_split: f64,
584 pub enable_online_learning: bool,
586 pub feature_extraction: crate::ml_optimization::FeatureExtractionConfig,
588 pub model_update_frequency: std::time::Duration,
590 pub enable_ml: bool,
592 pub models: Vec<MLModel>,
594 pub training: MLTrainingConfig,
596 pub inference: MLInferenceConfig,
598 pub model_management: ModelManagementConfig,
600}
601
602#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
604pub enum MLModel {
605 NeuralNetwork,
606 ConvolutionalNN,
607 RecurrentNN,
608 Transformer,
609 RandomForest,
610 SupportVectorMachine,
611 GaussianProcess,
612 EnsembleModel,
613}
614
615#[derive(Debug, Clone, Serialize, Deserialize)]
617pub struct MLTrainingConfig {
618 pub data: TrainingDataConfig,
620 pub architecture: ModelArchitectureConfig,
622 pub parameters: TrainingParameters,
624 pub validation: ValidationConfig,
626}
627
628#[derive(Debug, Clone, Serialize, Deserialize)]
630pub struct TrainingDataConfig {
631 pub sources: Vec<DataSource>,
633 pub preprocessing: DataPreprocessingConfig,
635 pub augmentation: DataAugmentationConfig,
637}
638
639#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
641pub enum DataSource {
642 HistoricalData,
643 SimulatedData,
644 RealTimeData,
645 SyntheticData,
646 ExternalData,
647}
648
649#[derive(Debug, Clone, Serialize, Deserialize)]
651pub struct DataPreprocessingConfig {
652 pub normalization: NormalizationMethod,
654 pub feature_selection: FeatureSelectionMethod,
656 pub dimensionality_reduction: DimensionalityReductionMethod,
658}
659
660#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
662pub enum NormalizationMethod {
663 MinMax,
664 ZScore,
665 Robust,
666 None,
667}
668
669#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
671pub enum FeatureSelectionMethod {
672 Statistical,
673 ModelBased,
674 Wrapper,
675 Embedded,
676}
677
678#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
680pub enum DimensionalityReductionMethod {
681 PCA,
682 LDA,
683 TSNE,
684 UMAP,
685 None,
686}
687
688#[derive(Debug, Clone, Serialize, Deserialize)]
690pub struct DataAugmentationConfig {
691 pub enable: bool,
693 pub techniques: Vec<AugmentationTechnique>,
695 pub ratio: f64,
697}
698
699#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
701pub enum AugmentationTechnique {
702 NoiseInjection,
703 Rotation,
704 Scaling,
705 Cropping,
706 Synthesis,
707}
708
709#[derive(Debug, Clone, Serialize, Deserialize)]
711pub struct ModelArchitectureConfig {
712 pub architecture_type: ArchitectureType,
714 pub layers: Vec<LayerConfig>,
716 pub connections: ConnectionPattern,
718}
719
720#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
722pub enum ArchitectureType {
723 Sequential,
724 Residual,
725 DenseNet,
726 Attention,
727 Custom,
728}
729
730#[derive(Debug, Clone, Serialize, Deserialize)]
732pub struct LayerConfig {
733 pub layer_type: LayerType,
735 pub parameters: HashMap<String, f64>,
737 pub activation: ActivationFunction,
739}
740
741#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
743pub enum LayerType {
744 Dense,
745 Convolutional,
746 Recurrent,
747 Attention,
748 Normalization,
749 Dropout,
750}
751
752#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
754pub enum ActivationFunction {
755 ReLU,
756 Sigmoid,
757 Tanh,
758 Softmax,
759 LeakyReLU,
760 ELU,
761}
762
763#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
765pub enum ConnectionPattern {
766 FullyConnected,
767 Sparse,
768 Skip,
769 Residual,
770 Dense,
771}
772
773#[derive(Debug, Clone, Serialize, Deserialize)]
775pub struct TrainingParameters {
776 pub learning_rate: f64,
778 pub batch_size: usize,
780 pub epochs: usize,
782 pub optimizer: OptimizerType,
784 pub loss_function: LossFunction,
786}
787
788#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
790pub enum OptimizerType {
791 SGD,
792 Adam,
793 RMSprop,
794 AdaGrad,
795 AdaDelta,
796}
797
798#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
800pub enum LossFunction {
801 MeanSquaredError,
802 CrossEntropy,
803 BinaryCrossEntropy,
804 HuberLoss,
805 Custom(String),
806}
807
808#[derive(Debug, Clone, Serialize, Deserialize)]
810pub struct ValidationConfig {
811 pub method: ValidationMethod,
813 pub split: f64,
815 pub cv_folds: usize,
817}
818
819#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
821pub enum ValidationMethod {
822 HoldOut,
823 CrossValidation,
824 Bootstrap,
825 TimeSeriesSplit,
826}
827
828#[derive(Debug, Clone, Serialize, Deserialize)]
830pub struct MLInferenceConfig {
831 pub mode: InferenceMode,
833 pub batch_processing: BatchProcessingConfig,
835 pub optimization: InferenceOptimizationConfig,
837}
838
839#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
841pub enum InferenceMode {
842 Synchronous,
843 Asynchronous,
844 Batch,
845 Streaming,
846}
847
848#[derive(Debug, Clone, Serialize, Deserialize)]
850pub struct BatchProcessingConfig {
851 pub enable: bool,
853 pub batch_size: usize,
855 pub timeout: Duration,
857}
858
859#[derive(Debug, Clone, Serialize, Deserialize)]
861pub struct InferenceOptimizationConfig {
862 pub model_optimization: ModelOptimization,
864 pub hardware_acceleration: HardwareAcceleration,
866 pub caching: InferenceCaching,
868}
869
870#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
872pub enum ModelOptimization {
873 Quantization,
874 Pruning,
875 Distillation,
876 Compilation,
877 None,
878}
879
880#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
882pub enum HardwareAcceleration {
883 GPU,
884 TPU,
885 FPGA,
886 CPU,
887 Custom,
888}
889
890#[derive(Debug, Clone, Serialize, Deserialize)]
892pub struct InferenceCaching {
893 pub enable: bool,
895 pub cache_size: usize,
897 pub eviction_policy: CacheEvictionPolicy,
899}
900
901#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
903pub enum CacheEvictionPolicy {
904 LRU,
905 LFU,
906 FIFO,
907 Random,
908}
909
910#[derive(Debug, Clone, Serialize, Deserialize)]
912pub struct ModelManagementConfig {
913 pub versioning: ModelVersioning,
915 pub deployment: ModelDeployment,
917 pub monitoring: ModelMonitoring,
919}
920
921#[derive(Debug, Clone, Serialize, Deserialize)]
923pub struct ModelVersioning {
924 pub enable: bool,
926 pub version_control: VersionControlSystem,
928 pub rollback: RollbackStrategy,
930}
931
932#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
934pub enum VersionControlSystem {
935 Git,
936 MLflow,
937 DVC,
938 Custom,
939}
940
941#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
943pub enum RollbackStrategy {
944 Automatic,
945 Manual,
946 PerformanceBased,
947 TimeBased,
948}
949
950#[derive(Debug, Clone, Serialize, Deserialize)]
952pub struct ModelDeployment {
953 pub strategy: DeploymentStrategy,
955 pub environment: EnvironmentConfig,
957 pub scaling: ScalingConfig,
959}
960
961#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
963pub enum DeploymentStrategy {
964 BlueGreen,
965 Canary,
966 RollingUpdate,
967 Shadow,
968}
969
970#[derive(Debug, Clone, Serialize, Deserialize)]
972pub struct EnvironmentConfig {
973 pub environment_type: EnvironmentType,
975 pub resources: ResourceAllocation,
977 pub dependencies: Vec<String>,
979}
980
981#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
983pub enum EnvironmentType {
984 Development,
985 Staging,
986 Production,
987 Testing,
988}
989
990#[derive(Debug, Clone, Serialize, Deserialize)]
992pub struct ResourceAllocation {
993 pub cpu: f64,
995 pub memory: usize,
997 pub gpu: Option<usize>,
999}
1000
1001#[derive(Debug, Clone, Serialize, Deserialize)]
1003pub struct ScalingConfig {
1004 pub auto_scaling: bool,
1006 pub min_replicas: usize,
1008 pub max_replicas: usize,
1010 pub metrics: Vec<ScalingMetric>,
1012}
1013
1014#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1016pub enum ScalingMetric {
1017 CpuUtilization,
1018 MemoryUtilization,
1019 RequestRate,
1020 ResponseTime,
1021 Custom(String),
1022}
1023
1024#[derive(Debug, Clone, Serialize, Deserialize)]
1026pub struct ModelMonitoring {
1027 pub performance: PerformanceMonitoring,
1029 pub drift_detection: DriftDetection,
1031 pub alerting: AlertingConfig,
1033}
1034
1035#[derive(Debug, Clone, Serialize, Deserialize)]
1037pub struct PerformanceMonitoring {
1038 pub metrics: Vec<MonitoringMetric>,
1040 pub frequency: Duration,
1042 pub baseline_comparison: bool,
1044}
1045
1046#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1048pub enum MonitoringMetric {
1049 Accuracy,
1050 Precision,
1051 Recall,
1052 F1Score,
1053 Latency,
1054 Throughput,
1055}
1056
1057#[derive(Debug, Clone, Serialize, Deserialize)]
1059pub struct DriftDetection {
1060 pub enable: bool,
1062 pub methods: Vec<DriftDetectionMethod>,
1064 pub sensitivity: f64,
1066}
1067
1068#[derive(Debug, Clone, Serialize, Deserialize)]
1070pub struct AlertingConfig {
1071 pub channels: Vec<AlertChannel>,
1073 pub thresholds: HashMap<String, f64>,
1075 pub escalation: EscalationRules,
1077}
1078
1079#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1081pub enum AlertChannel {
1082 Email,
1083 Slack,
1084 PagerDuty,
1085 Webhook,
1086 Dashboard,
1087}
1088
1089#[derive(Debug, Clone, Serialize, Deserialize)]
1091pub struct EscalationRules {
1092 pub levels: Vec<EscalationLevel>,
1094 pub timeouts: HashMap<String, Duration>,
1096}
1097
1098#[derive(Debug, Clone, Serialize, Deserialize)]
1100pub struct EscalationLevel {
1101 pub name: String,
1103 pub threshold: f64,
1105 pub actions: Vec<String>,
1107}
1108
1109#[derive(Debug, Clone, Serialize, Deserialize)]
1111pub struct QECMonitoringConfig {
1112 pub enable_performance_tracking: bool,
1114 pub enable_error_analysis: bool,
1116 pub enable_resource_monitoring: bool,
1118 pub reporting_interval: std::time::Duration,
1120 pub enable_predictive_analytics: bool,
1122 pub enable_monitoring: bool,
1124 pub targets: Vec<MonitoringTarget>,
1126 pub dashboard: DashboardConfig,
1128 pub data_collection: DataCollectionConfig,
1130 pub alerting: MonitoringAlertingConfig,
1132}
1133
1134#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1136pub enum MonitoringTarget {
1137 ErrorRates,
1138 CorrectionPerformance,
1139 ResourceUtilization,
1140 SystemHealth,
1141 UserExperience,
1142}
1143
1144#[derive(Debug, Clone, Serialize, Deserialize)]
1146pub struct DashboardConfig {
1147 pub enable: bool,
1149 pub components: Vec<DashboardComponent>,
1151 pub update_frequency: Duration,
1153 pub access_control: AccessControl,
1155}
1156
1157#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1159pub enum DashboardComponent {
1160 RealTimeMetrics,
1161 HistoricalTrends,
1162 Alerts,
1163 SystemStatus,
1164 PerformanceGraphs,
1165}
1166
1167#[derive(Debug, Clone, Serialize, Deserialize)]
1169pub struct AccessControl {
1170 pub authentication: bool,
1172 pub roles: Vec<UserRole>,
1174 pub permissions: HashMap<String, Vec<String>>,
1176}
1177
1178#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1180pub enum UserRole {
1181 Admin,
1182 Operator,
1183 Viewer,
1184 Guest,
1185}
1186
1187#[derive(Debug, Clone, Serialize, Deserialize)]
1189pub struct DataCollectionConfig {
1190 pub frequency: Duration,
1192 pub retention: DataRetention,
1194 pub storage: StorageConfig,
1196}
1197
1198#[derive(Debug, Clone, Serialize, Deserialize)]
1200pub struct DataRetention {
1201 pub period: Duration,
1203 pub archival: ArchivalStrategy,
1205 pub compression: bool,
1207}
1208
1209#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1211pub enum ArchivalStrategy {
1212 CloudStorage,
1213 LocalStorage,
1214 HybridStorage,
1215 NoArchival,
1216}
1217
1218#[derive(Debug, Clone, Serialize, Deserialize)]
1220pub struct StorageConfig {
1221 pub backend: StorageBackend,
1223 pub replication: usize,
1225 pub consistency: ConsistencyLevel,
1227}
1228
1229#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1231pub enum StorageBackend {
1232 FileSystem,
1233 Database,
1234 CloudStorage,
1235 DistributedStorage,
1236}
1237
1238#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1240pub enum ConsistencyLevel {
1241 Eventual,
1242 Strong,
1243 Session,
1244 Bounded,
1245}
1246
1247#[derive(Debug, Clone, Serialize, Deserialize)]
1249pub struct MonitoringAlertingConfig {
1250 pub rules: Vec<AlertRule>,
1252 pub channels: Vec<NotificationChannel>,
1254 pub suppression: AlertSuppression,
1256}
1257
1258#[derive(Debug, Clone, Serialize, Deserialize)]
1260pub struct AlertRule {
1261 pub name: String,
1263 pub condition: String,
1265 pub severity: AlertSeverity,
1267 pub actions: Vec<AlertAction>,
1269}
1270
1271#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1273pub enum AlertSeverity {
1274 Critical,
1275 High,
1276 Medium,
1277 Low,
1278 Info,
1279}
1280
1281#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1283pub enum AlertAction {
1284 Notify,
1285 Log,
1286 Execute,
1287 Escalate,
1288}
1289
1290#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1292pub enum NotificationChannel {
1293 Email,
1294 SMS,
1295 Slack,
1296 Teams,
1297 Webhook,
1298}
1299
1300#[derive(Debug, Clone, Serialize, Deserialize)]
1302pub struct AlertSuppression {
1303 pub enable: bool,
1305 pub rules: Vec<SuppressionRule>,
1307 pub default_time: Duration,
1309}
1310
1311#[derive(Debug, Clone, Serialize, Deserialize)]
1313pub struct SuppressionRule {
1314 pub name: String,
1316 pub condition: String,
1318 pub duration: Duration,
1320}
1321
1322#[derive(Debug, Clone, Serialize, Deserialize)]
1324pub struct PredictionConfig {
1325 pub horizon: Duration,
1327 pub confidence_threshold: f64,
1329}
1330
1331#[derive(Debug, Clone, Serialize, Deserialize)]
1333pub struct OptimizationConfig {
1334 pub objectives: Vec<String>,
1336 pub constraints: Vec<String>,
1338}
1339
1340impl Default for PredictionConfig {
1341 fn default() -> Self {
1342 Self {
1343 horizon: Duration::from_secs(60),
1344 confidence_threshold: 0.8,
1345 }
1346 }
1347}
1348
1349impl Default for OptimizationConfig {
1350 fn default() -> Self {
1351 Self {
1352 objectives: vec!["minimize_error_rate".to_string()],
1353 constraints: vec!["hardware_connectivity".to_string()],
1354 }
1355 }
1356}