use scirs2_core::numeric::Float;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::fmt::Debug;
use std::time::Duration;
#[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)]
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 ProblemType {
Regression,
Classification,
Clustering,
DimensionalityReduction,
ReinforcementLearning,
GenerativeModeling,
FeatureSelection,
HyperparameterOptimization,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CorrelationStructure {
Independent,
Linear,
Nonlinear,
Hierarchical,
Spatial,
Temporal,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DistributionType {
Gaussian,
Uniform,
Exponential,
PowerLaw,
Multimodal,
HeavyTailed,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MetricType {
Accuracy,
Loss,
F1Score,
AUC,
Precision,
Recall,
RMSE,
MAE,
R2,
LogLikelihood,
Perplexity,
Custom(u32),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum EvaluatorType {
MLModel,
OptimizationFunction,
Simulator,
RealWorldAPI,
Custom,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DataFormat {
Dense,
Sparse,
Sequential,
Graph,
Image,
Text,
Audio,
Custom,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ActivationFunction {
ReLU,
Sigmoid,
Tanh,
GELU,
Swish,
ELU,
LeakyReLU,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScheduleType {
Constant,
Exponential,
StepDecay,
CosineAnnealing,
ReduceOnPlateau,
OneCycle,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FeatureExtractionMethod {
ArchitectureEmbedding,
HyperparameterEncoding,
ResourceUsageFeatures,
PerformanceHistory,
DatasetCharacteristics,
OptimizationLandscape,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum NormalizationMethod {
MinMax,
ZScore,
Robust,
Quantile,
PowerTransform,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScalingMethod {
Standard,
MinMax,
Robust,
MaxAbs,
Quantile,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FeatureSelectionMethod {
VarianceThreshold,
UnivariateSelection,
RecursiveFeatureElimination,
SelectFromModel,
SequentialFeatureSelection,
MutualInformation,
}
#[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 UncertaintyEstimationMethod {
MonteCarloDropout,
DeepEnsemble,
BayesianNeuralNetwork,
QuantileRegression,
ConformalPrediction,
GaussianProcessUncertainty,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TemporalPatternType {
Burst,
Steady,
Periodic,
Random,
Declining,
}
#[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 DataCharacteristics<T: Float + Debug + Send + Sync + 'static> {
pub noise_level: T,
pub sparsity: T,
pub correlation: CorrelationStructure,
pub distribution: DistributionType,
pub outlier_percentage: T,
}
#[derive(Debug, Clone)]
pub struct SuccessMetrics<T: Float + Debug + Send + Sync + 'static> {
pub min_performance: T,
pub max_convergence_time: Duration,
pub stability_threshold: T,
pub efficiency_threshold: T,
}
#[derive(Debug, Clone)]
pub struct TerminationConditions<T: Float + Debug + Send + Sync + 'static> {
pub max_iterations: usize,
pub max_time: Duration,
pub convergence_tolerance: T,
pub stagnation_threshold: usize,
pub early_stopping: EarlyStoppingCriteria<T>,
}
#[derive(Debug, Clone)]
pub struct EarlyStoppingCriteria<T: Float + Debug + Send + Sync + 'static> {
pub patience: usize,
pub min_improvement: T,
pub validation_metric: MetricType,
pub relative_improvement: bool,
}
#[derive(Debug, Clone)]
pub struct EvaluationCriterion<T: Float + Debug + Send + Sync + 'static> {
pub name: String,
pub metric_type: MetricType,
pub target_value: T,
pub tolerance: T,
pub weight: T,
}
#[derive(Debug, Clone)]
pub struct IOSpecification {
pub input_format: DataFormat,
pub output_format: DataFormat,
pub supports_batching: bool,
pub supports_parallel: bool,
}
#[derive(Debug, Clone)]
pub struct ValidationCriteria<T: Float + Debug + Send + Sync + 'static> {
pub cv_folds: usize,
pub validation_split: T,
pub significance_level: T,
pub confidence_level: T,
pub bootstrap_samples: usize,
}
#[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,
}