use scirs2_core::numeric::Float;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::fmt::Debug;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum BenchmarkType {
ConvergenceSpeed,
FinalPerformance,
Robustness,
Generalization,
Efficiency,
Scalability,
TransferLearning,
MultiTask,
NoisyOptimization,
NonConvexOptimization,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum TestFunctionType {
Quadratic,
Rosenbrock,
Rastrigin,
Ackley,
Sphere,
Beale,
NeuralNetworkTraining,
LinearRegression,
LogisticRegression,
Custom(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DifficultyLevel {
Easy,
Medium,
Hard,
Expert,
Extreme,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceRequirements {
pub memory_mb: usize,
pub cpu_cores: usize,
pub gpu_memory_mb: Option<usize>,
pub max_runtime_seconds: u64,
pub storage_mb: usize,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ActivationFunction {
ReLU,
Sigmoid,
Tanh,
GELU,
Swish,
ELU,
LeakyReLU,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CacheEvictionPolicy {
LRU,
LFU,
FIFO,
Random,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PredictorModelType {
LinearRegression,
RandomForest,
GradientBoosting,
NeuralNetwork,
GaussianProcess,
SupportVectorMachine,
Ensemble,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StatisticalTestType {
TTest,
WilcoxonSignedRank,
MannWhitneyU,
KruskalWallis,
FriedmanTest,
ChiSquare,
FisherExact,
ANOVA,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum AnalysisMethod {
DescriptiveStatistics,
CorrelationAnalysis,
RegressionAnalysis,
ClusterAnalysis,
FactorAnalysis,
PrincipalComponentAnalysis,
SurvivalAnalysis,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MultipleComparisonCorrection {
None,
Bonferroni,
HolmBonferroni,
BenjaminiHochberg,
BenjaminiYekutieli,
Sidak,
}
#[derive(Debug, Clone)]
pub struct PerformanceRanking {
pub overall_rank: usize,
pub category_ranks: HashMap<BenchmarkType, usize>,
pub percentile_scores: HashMap<BenchmarkType, f64>,
pub relative_performance: f64,
}
#[derive(Debug, Clone)]
pub struct StatisticalSummary<T: Float + Debug + Send + Sync + 'static> {
pub mean: T,
pub median: T,
pub std_dev: T,
pub min: T,
pub max: T,
pub quartiles: (T, T, T),
pub confidence_intervals: HashMap<String, (T, T)>,
}
#[derive(Debug, Clone)]
pub struct ResourceSummary<T: Float + Debug + Send + Sync + 'static> {
pub total_memory_mb: T,
pub peak_memory_mb: T,
pub total_cpu_seconds: T,
pub total_gpu_seconds: T,
pub energy_consumption_kwh: T,
pub cost_estimate_usd: T,
}