#[derive(Debug, Clone)]
pub struct TimeSeriesBifurcationForecaster {
pub base_model: TimeSeriesModel,
pub detection_threshold: f64,
pub forecast_horizon: usize,
pub multistep_strategy: MultiStepStrategy,
pub anomaly_detection: AnomalyDetectionConfig,
pub trend_analysis: TrendAnalysisConfig,
}
#[derive(Debug, Clone)]
pub enum TimeSeriesModel {
LSTM {
hidden_size: usize,
num_layers: usize,
bidirectional: bool,
},
GRU {
hidden_size: usize,
num_layers: usize,
bidirectional: bool,
},
Transformer {
d_model: usize,
nhead: usize,
num_layers: usize,
positional_encoding: bool,
},
Conv1D {
channels: Vec<usize>,
kernel_sizes: Vec<usize>,
dilations: Vec<usize>,
},
HybridCNNRNN {
cnn_channels: Vec<usize>,
rnn_hidden_size: usize,
rnn_layers: usize,
},
}
#[derive(Debug, Clone, Copy)]
pub enum MultiStepStrategy {
Recursive,
Direct,
MIMO,
Ensemble,
}
#[derive(Debug, Clone)]
pub struct AnomalyDetectionConfig {
pub method: AnomalyDetectionMethod,
pub threshold: f64,
pub window_size: usize,
pub min_duration: usize,
}
#[derive(Debug, Clone, Copy)]
pub enum AnomalyDetectionMethod {
StatisticalOutlier,
IsolationForest,
OneClassSVM,
Autoencoder,
LSTMPredictionError,
}
#[derive(Debug, Clone)]
pub struct TrendAnalysisConfig {
pub method: TrendDetectionMethod,
pub window_size: usize,
pub significance_level: f64,
pub change_point_detection: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum TrendDetectionMethod {
LinearRegression,
MannKendall,
SensSlope,
SeasonalMannKendall,
CUSUM,
}