pub mod evaluation;
pub mod objectives;
pub mod quantum_constraints;
pub mod search_budget;
pub mod search_space;
pub use evaluation::*;
pub use objectives::*;
pub use quantum_constraints::*;
pub use search_budget::*;
pub use search_space::*;
use std::collections::HashMap;
#[derive(Debug, Clone)]
pub struct QuantumAutoMLConfig {
pub task_type: Option<MLTaskType>,
pub search_budget: SearchBudgetConfig,
pub objectives: Vec<OptimizationObjective>,
pub search_space: SearchSpaceConfig,
pub quantum_constraints: QuantumConstraints,
pub evaluation_config: EvaluationConfig,
pub advanced_features: AdvancedAutoMLFeatures,
}
#[derive(Debug, Clone, PartialEq)]
pub enum MLTaskType {
BinaryClassification,
MultiClassification { num_classes: usize },
MultiLabelClassification { num_labels: usize },
Regression,
TimeSeriesForecasting { horizon: usize },
Clustering { num_clusters: Option<usize> },
AnomalyDetection,
DimensionalityReduction { target_dim: Option<usize> },
ReinforcementLearning,
GenerativeModeling,
}
#[derive(Debug, Clone)]
pub struct AdvancedAutoMLFeatures {
pub online_learning: bool,
pub interpretability: bool,
pub pipeline_anomaly_detection: bool,
pub deployment_optimization: bool,
pub quantum_error_mitigation: bool,
pub warm_start: bool,
pub multi_objective: bool,
pub fairness_optimization: bool,
}
impl Default for AdvancedAutoMLFeatures {
fn default() -> Self {
Self {
online_learning: false,
interpretability: true,
pipeline_anomaly_detection: true,
deployment_optimization: false,
quantum_error_mitigation: true,
warm_start: true,
multi_objective: true,
fairness_optimization: false,
}
}
}
impl QuantumAutoMLConfig {
pub fn basic() -> Self {
Self {
task_type: None,
search_budget: SearchBudgetConfig::quick(),
objectives: vec![OptimizationObjective::MaximizeAccuracy { weight: 1.0 }],
search_space: SearchSpaceConfig::default(),
quantum_constraints: QuantumConstraints::default(),
evaluation_config: EvaluationConfig::default(),
advanced_features: AdvancedAutoMLFeatures::default(),
}
}
pub fn comprehensive() -> Self {
Self {
task_type: None,
search_budget: SearchBudgetConfig::extensive(),
objectives: vec![
OptimizationObjective::MaximizeAccuracy { weight: 0.6 },
OptimizationObjective::MinimizeComplexity { weight: 0.2 },
OptimizationObjective::MaximizeQuantumAdvantage { weight: 0.2 },
],
search_space: SearchSpaceConfig::comprehensive(),
quantum_constraints: QuantumConstraints::default(),
evaluation_config: EvaluationConfig::rigorous(),
advanced_features: AdvancedAutoMLFeatures {
online_learning: true,
interpretability: true,
pipeline_anomaly_detection: true,
deployment_optimization: true,
quantum_error_mitigation: true,
warm_start: true,
multi_objective: true,
fairness_optimization: true,
},
}
}
pub fn production() -> Self {
Self {
task_type: None,
search_budget: SearchBudgetConfig::production(),
objectives: vec![
OptimizationObjective::MaximizeAccuracy { weight: 0.5 },
OptimizationObjective::MinimizeInferenceTime { weight: 0.3 },
OptimizationObjective::MaximizeRobustness { weight: 0.2 },
],
search_space: SearchSpaceConfig::production(),
quantum_constraints: QuantumConstraints::production(),
evaluation_config: EvaluationConfig::production(),
advanced_features: AdvancedAutoMLFeatures {
online_learning: false,
interpretability: true,
pipeline_anomaly_detection: true,
deployment_optimization: true,
quantum_error_mitigation: true,
warm_start: true,
multi_objective: false,
fairness_optimization: true,
},
}
}
}