quantrs2_device/mapping_scirs2/
ml_integration.rs

1//! Machine learning integration for advanced mapping
2
3use super::*;
4
5/// Machine learning configuration for mapping
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct MLMappingConfig {
8    /// Enable ML-enhanced mapping
9    pub enable_ml: bool,
10    /// Model types to use
11    pub model_types: Vec<MLModelType>,
12    /// Feature engineering configuration
13    pub feature_config: FeatureConfig,
14    /// Training configuration
15    pub training_config: TrainingConfig,
16    /// Prediction configuration
17    pub prediction_config: PredictionConfig,
18    /// Transfer learning configuration
19    pub transfer_learning: TransferLearningConfig,
20}
21
22/// Feature configuration for ML
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct FeatureConfig {
25    /// Enable graph structural features
26    pub enable_structural: bool,
27    /// Enable temporal features
28    pub enable_temporal: bool,
29    /// Enable hardware-specific features
30    pub enable_hardware: bool,
31    /// Enable circuit-specific features
32    pub enable_circuit: bool,
33    /// Feature selection method
34    pub selection_method: FeatureSelectionMethod,
35    /// Maximum number of features
36    pub max_features: usize,
37}
38
39/// Training configuration
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct TrainingConfig {
42    /// Batch size
43    pub batch_size: usize,
44    /// Number of epochs
45    pub epochs: usize,
46    /// Learning rate
47    pub learning_rate: f64,
48    /// Validation split
49    pub validation_split: f64,
50    /// Early stopping patience
51    pub early_stopping_patience: usize,
52    /// Regularization parameters
53    pub regularization: RegularizationParams,
54}
55
56/// Regularization parameters
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct RegularizationParams {
59    /// L1 regularization
60    pub l1_lambda: f64,
61    /// L2 regularization
62    pub l2_lambda: f64,
63    /// Dropout rate
64    pub dropout: f64,
65    /// Batch normalization
66    pub batch_norm: bool,
67}
68
69/// Prediction configuration
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct PredictionConfig {
72    /// Ensemble size for prediction
73    pub ensemble_size: usize,
74    /// Confidence threshold
75    pub confidence_threshold: f64,
76    /// Use uncertainty estimation
77    pub use_uncertainty_estimation: bool,
78    /// Monte Carlo samples for uncertainty
79    pub monte_carlo_samples: usize,
80    /// Temperature scaling for calibration
81    pub temperature_scaling: bool,
82    /// Calibration method
83    pub calibration_method: CalibrationMethod,
84}
85
86/// Transfer learning configuration
87#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct TransferLearningConfig {
89    /// Enable transfer learning
90    pub enable_transfer: bool,
91    /// Source domains for transfer
92    pub source_domains: Vec<String>,
93    /// Domain adaptation method
94    pub adaptation_method: DomainAdaptationMethod,
95    /// Fine-tuning configuration
96    pub fine_tuning: FineTuningConfig,
97}
98
99/// Fine-tuning configuration
100#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct FineTuningConfig {
102    /// Layers to freeze during initial training
103    pub freeze_layers: Vec<usize>,
104    /// Epochs after which to unfreeze layers
105    pub unfreeze_after_epochs: usize,
106    /// Reduced learning rate for fine-tuning
107    pub reduced_learning_rate: f64,
108}
109
110/// Performance predictions from ML models
111#[derive(Debug, Clone, Serialize, Deserialize)]
112pub struct PerformancePredictions {
113    /// Predicted swap count
114    pub predicted_swaps: f64,
115    /// Predicted execution time
116    pub predicted_time: f64,
117    /// Predicted fidelity
118    pub predicted_fidelity: f64,
119    /// Confidence intervals
120    pub confidence_intervals: HashMap<String, (f64, f64)>,
121    /// Model uncertainty estimates
122    pub uncertainty_estimates: HashMap<String, f64>,
123}
124
125/// ML model performance results
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct MLPerformanceResult {
128    /// Model accuracy metrics
129    pub model_accuracy: HashMap<String, f64>,
130    /// Feature importance scores
131    pub feature_importance: HashMap<String, f64>,
132    /// Prediction reliability
133    pub prediction_reliability: f64,
134    /// Model training history
135    pub training_history: Vec<TrainingEpoch>,
136}
137
138/// Training epoch information
139#[derive(Debug, Clone, Serialize, Deserialize)]
140pub struct TrainingEpoch {
141    /// Epoch number
142    pub epoch: usize,
143    /// Training loss
144    pub training_loss: f64,
145    /// Validation loss
146    pub validation_loss: f64,
147    /// Learning rate
148    pub learning_rate: f64,
149}
150
151/// Adaptive mapping insights
152#[derive(Debug, Clone, Serialize, Deserialize)]
153pub struct AdaptiveMappingInsights {
154    /// Learning progress metrics
155    pub learning_progress: HashMap<String, f64>,
156    /// Adaptation effectiveness
157    pub adaptation_effectiveness: HashMap<String, f64>,
158    /// Performance trend analysis
159    pub performance_trends: HashMap<String, Vec<f64>>,
160    /// Recommended parameter adjustments
161    pub recommended_adjustments: Vec<ParameterAdjustment>,
162}
163
164/// Parameter adjustment recommendation
165#[derive(Debug, Clone, Serialize, Deserialize)]
166pub struct ParameterAdjustment {
167    /// Parameter name
168    pub parameter: String,
169    /// Current value
170    pub current_value: f64,
171    /// Recommended value
172    pub recommended_value: f64,
173    /// Expected improvement
174    pub expected_improvement: f64,
175    /// Confidence in recommendation
176    pub confidence: f64,
177}