quantrs2_ml/automl/config/
mod.rs

1//! AutoML Configuration Module
2//!
3//! This module contains all configuration-related structures for the Quantum AutoML framework.
4//! It addresses the configuration explosion issue by organizing related configurations into
5//! logical sub-modules.
6
7pub mod evaluation;
8pub mod objectives;
9pub mod quantum_constraints;
10pub mod search_budget;
11pub mod search_space;
12
13pub use evaluation::*;
14pub use objectives::*;
15pub use quantum_constraints::*;
16pub use search_budget::*;
17pub use search_space::*;
18
19use std::collections::HashMap;
20
21/// Main Quantum AutoML configuration
22#[derive(Debug, Clone)]
23pub struct QuantumAutoMLConfig {
24    /// Task type (auto-detected if None)
25    pub task_type: Option<MLTaskType>,
26
27    /// Search budget configuration
28    pub search_budget: SearchBudgetConfig,
29
30    /// Optimization objectives
31    pub objectives: Vec<OptimizationObjective>,
32
33    /// Search space configuration
34    pub search_space: SearchSpaceConfig,
35
36    /// Quantum resource constraints
37    pub quantum_constraints: QuantumConstraints,
38
39    /// Evaluation configuration
40    pub evaluation_config: EvaluationConfig,
41
42    /// Advanced features
43    pub advanced_features: AdvancedAutoMLFeatures,
44}
45
46/// Machine learning task types
47#[derive(Debug, Clone, PartialEq)]
48pub enum MLTaskType {
49    /// Binary classification
50    BinaryClassification,
51
52    /// Multi-class classification
53    MultiClassification { num_classes: usize },
54
55    /// Multi-label classification
56    MultiLabelClassification { num_labels: usize },
57
58    /// Regression
59    Regression,
60
61    /// Time series forecasting
62    TimeSeriesForecasting { horizon: usize },
63
64    /// Clustering
65    Clustering { num_clusters: Option<usize> },
66
67    /// Anomaly detection
68    AnomalyDetection,
69
70    /// Dimensionality reduction
71    DimensionalityReduction { target_dim: Option<usize> },
72
73    /// Reinforcement learning
74    ReinforcementLearning,
75
76    /// Generative modeling
77    GenerativeModeling,
78}
79
80/// Advanced AutoML features
81#[derive(Debug, Clone)]
82pub struct AdvancedAutoMLFeatures {
83    /// Automated online learning
84    pub online_learning: bool,
85
86    /// Automated model interpretability
87    pub interpretability: bool,
88
89    /// Automated anomaly detection in pipelines
90    pub pipeline_anomaly_detection: bool,
91
92    /// Automated deployment optimization
93    pub deployment_optimization: bool,
94
95    /// Quantum error mitigation automation
96    pub quantum_error_mitigation: bool,
97
98    /// Automated warm-start from previous runs
99    pub warm_start: bool,
100
101    /// Multi-objective optimization
102    pub multi_objective: bool,
103
104    /// Automated fairness optimization
105    pub fairness_optimization: bool,
106}
107
108impl Default for AdvancedAutoMLFeatures {
109    fn default() -> Self {
110        Self {
111            online_learning: false,
112            interpretability: true,
113            pipeline_anomaly_detection: true,
114            deployment_optimization: false,
115            quantum_error_mitigation: true,
116            warm_start: true,
117            multi_objective: true,
118            fairness_optimization: false,
119        }
120    }
121}
122
123impl QuantumAutoMLConfig {
124    /// Create a basic configuration for rapid prototyping
125    pub fn basic() -> Self {
126        Self {
127            task_type: None,
128            search_budget: SearchBudgetConfig::quick(),
129            objectives: vec![OptimizationObjective::MaximizeAccuracy { weight: 1.0 }],
130            search_space: SearchSpaceConfig::default(),
131            quantum_constraints: QuantumConstraints::default(),
132            evaluation_config: EvaluationConfig::default(),
133            advanced_features: AdvancedAutoMLFeatures::default(),
134        }
135    }
136
137    /// Create a comprehensive configuration for full exploration
138    pub fn comprehensive() -> Self {
139        Self {
140            task_type: None,
141            search_budget: SearchBudgetConfig::extensive(),
142            objectives: vec![
143                OptimizationObjective::MaximizeAccuracy { weight: 0.6 },
144                OptimizationObjective::MinimizeComplexity { weight: 0.2 },
145                OptimizationObjective::MaximizeQuantumAdvantage { weight: 0.2 },
146            ],
147            search_space: SearchSpaceConfig::comprehensive(),
148            quantum_constraints: QuantumConstraints::default(),
149            evaluation_config: EvaluationConfig::rigorous(),
150            advanced_features: AdvancedAutoMLFeatures {
151                online_learning: true,
152                interpretability: true,
153                pipeline_anomaly_detection: true,
154                deployment_optimization: true,
155                quantum_error_mitigation: true,
156                warm_start: true,
157                multi_objective: true,
158                fairness_optimization: true,
159            },
160        }
161    }
162
163    /// Create a production-ready configuration
164    pub fn production() -> Self {
165        Self {
166            task_type: None,
167            search_budget: SearchBudgetConfig::production(),
168            objectives: vec![
169                OptimizationObjective::MaximizeAccuracy { weight: 0.5 },
170                OptimizationObjective::MinimizeInferenceTime { weight: 0.3 },
171                OptimizationObjective::MaximizeRobustness { weight: 0.2 },
172            ],
173            search_space: SearchSpaceConfig::production(),
174            quantum_constraints: QuantumConstraints::production(),
175            evaluation_config: EvaluationConfig::production(),
176            advanced_features: AdvancedAutoMLFeatures {
177                online_learning: false,
178                interpretability: true,
179                pipeline_anomaly_detection: true,
180                deployment_optimization: true,
181                quantum_error_mitigation: true,
182                warm_start: true,
183                multi_objective: false,
184                fairness_optimization: true,
185            },
186        }
187    }
188}