pub mod architecture;
pub mod architecture_embedding;
pub mod domain_specific_nas;
pub mod error;
pub mod evaluation;
pub mod hyperparameter;
pub mod multi_objective;
pub mod nas_engine;
pub mod progressive;
pub mod search_strategies;
pub use architecture::ArchitectureSpace;
pub use architecture_embedding::{AggregationMethod, ArchitectureEmbedder};
pub use domain_specific_nas::{
DomainNASEngine, DomainSearchSpace, DomainType as NASDomainType, NASConstraint,
};
pub use error::{OptimError, Result};
pub use search_strategies::SearchStrategy;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EvaluationConfig {
pub epochs: u32,
pub batch_size: usize,
pub learning_rate: f64,
pub performance_prediction: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum EvaluationMetric {
FinalPerformance,
ConvergenceSpeed,
Stability,
Robustness,
Efficiency,
Generalization,
MemoryUsage,
ComputationTime,
TrainingStability,
MemoryEfficiency,
ComputationalEfficiency,
Accuracy,
TrainingTime,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EvaluationResults {
pub metrics: EvaluationMetric,
pub history: Vec<f64>,
pub validation_accuracy: f64,
pub metric_scores: std::collections::HashMap<EvaluationMetric, f64>,
pub overall_score: f64,
pub confidence_intervals: std::collections::HashMap<EvaluationMetric, (f64, f64)>,
pub evaluation_time: std::time::Duration,
pub success: bool,
pub error_message: Option<String>,
pub benchmark_results: Vec<BenchmarkResult>,
pub cv_results: CrossValidationResults,
pub training_trajectory: Vec<TrainingPoint>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BenchmarkResult {
pub name: String,
pub score: f64,
pub execution_time: std::time::Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrossValidationResults {
pub mean_score: f64,
pub std_score: f64,
pub fold_scores: Vec<f64>,
pub num_folds: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrainingPoint {
pub step: usize,
pub training_loss: f64,
pub validation_loss: Option<f64>,
pub timestamp_secs: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizerArchitecture {
pub id: String,
pub parameters: std::collections::HashMap<String, f64>,
pub structure: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceUsage {
pub memory_usage: usize,
pub compute_time: f64,
pub energy_consumption: f64,
pub memory_gb: f64,
pub cpu_time_seconds: f64,
pub gpu_time_seconds: f64,
pub energy_kwh: f64,
pub cost_usd: f64,
pub network_gb: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NASConfig {
pub search_budget: usize,
pub population_size: usize,
pub generations: usize,
}
impl Default for NASConfig {
fn default() -> Self {
Self {
search_budget: 1000,
population_size: 50,
generations: 20,
}
}
}