use std::collections::HashMap;
use std::time::{Duration, SystemTime};
use serde::{Deserialize, Serialize};
use crate::crosstalk::CrosstalkConfig;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdvancedCrosstalkConfig {
pub base_config: CrosstalkConfig,
pub ml_config: CrosstalkMLConfig,
pub realtime_config: RealtimeMitigationConfig,
pub prediction_config: CrosstalkPredictionConfig,
pub signal_processing_config: SignalProcessingConfig,
pub adaptive_compensation_config: AdaptiveCompensationConfig,
pub multilevel_mitigation_config: MultilevelMitigationConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrosstalkMLConfig {
pub enable_prediction: bool,
pub enable_clustering: bool,
pub enable_anomaly_detection: bool,
pub model_types: Vec<CrosstalkMLModel>,
pub feature_config: CrosstalkFeatureConfig,
pub training_config: CrosstalkTrainingConfig,
pub model_selection_config: ModelSelectionConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum CrosstalkMLModel {
LinearRegression,
RandomForest { n_estimators: usize, max_depth: Option<usize> },
GradientBoosting { n_estimators: usize, learning_rate: f64 },
SupportVectorMachine { kernel: String, c: f64 },
NeuralNetwork { hidden_layers: Vec<usize>, activation: String },
GaussianProcess { kernel: String, alpha: f64 },
TimeSeriesForecaster { model_type: String, window_size: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrosstalkFeatureConfig {
pub enable_temporal_features: bool,
pub enable_spectral_features: bool,
pub enable_spatial_features: bool,
pub enable_statistical_features: bool,
pub temporal_window_size: usize,
pub spectral_bins: usize,
pub spatial_neighborhood: usize,
pub feature_selection: FeatureSelectionMethod,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum FeatureSelectionMethod {
None,
VarianceThreshold { threshold: f64 },
UnivariateSelection { k: usize },
RecursiveFeatureElimination { n_features: usize },
LassoSelection { alpha: f64 },
MutualInformation { k: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrosstalkTrainingConfig {
pub train_test_split: f64,
pub cv_folds: usize,
pub random_state: Option<u64>,
pub early_stopping: EarlyStoppingConfig,
pub data_augmentation: DataAugmentationConfig,
pub online_learning: OnlineLearningConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EarlyStoppingConfig {
pub enable: bool,
pub patience: usize,
pub min_delta: f64,
pub monitor_metric: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataAugmentationConfig {
pub enable: bool,
pub noise_level: f64,
pub time_warping: f64,
pub frequency_shift_range: f64,
pub augmentation_ratio: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OnlineLearningConfig {
pub enable: bool,
pub learning_rate: f64,
pub forgetting_factor: f64,
pub batch_size: usize,
pub update_frequency: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelSelectionConfig {
pub enable_auto_selection: bool,
pub ensemble_method: EnsembleMethod,
pub hyperparameter_optimization: HyperparameterOptimization,
pub validation_strategy: ValidationStrategy,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum EnsembleMethod {
None,
Voting { strategy: String },
Bagging { n_estimators: usize },
Boosting { algorithm: String },
Stacking { meta_learner: String },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum HyperparameterOptimization {
GridSearch,
RandomSearch { n_iter: usize },
BayesianOptimization { n_calls: usize },
GeneticAlgorithm { population_size: usize, generations: usize },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ValidationStrategy {
HoldOut { test_size: f64 },
KFold { n_splits: usize },
StratifiedKFold { n_splits: usize },
TimeSeriesSplit { n_splits: usize },
LeaveOneOut,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RealtimeMitigationConfig {
pub enable_realtime: bool,
pub monitoring_interval: Duration,
pub adaptation_threshold: f64,
pub max_adaptation_rate: f64,
pub feedback_control: FeedbackControlConfig,
pub alert_config: AlertConfig,
pub performance_tracking: PerformanceTrackingConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeedbackControlConfig {
pub controller_type: ControllerType,
pub control_params: ControlParameters,
pub stability_analysis: StabilityAnalysisConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ControllerType {
PID { kp: f64, ki: f64, kd: f64 },
LQR { q_matrix: Vec<f64>, r_matrix: Vec<f64> },
MPC { horizon: usize, constraints: Vec<String> },
AdaptiveControl { adaptation_rate: f64 },
RobustControl { uncertainty_bounds: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ControlParameters {
pub tracking_accuracy: f64,
pub disturbance_rejection: f64,
pub effort_limits: (f64, f64),
pub response_time: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StabilityAnalysisConfig {
pub enable_monitoring: bool,
pub stability_margins: StabilityMargins,
pub robustness_analysis: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StabilityMargins {
pub gain_margin: f64,
pub phase_margin: f64,
pub delay_margin: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertConfig {
pub enable_alerts: bool,
pub thresholds: AlertThresholds,
pub notification_channels: Vec<NotificationChannel>,
pub escalation: AlertEscalation,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertThresholds {
pub crosstalk_threshold: f64,
pub prediction_error_threshold: f64,
pub mitigation_failure_threshold: f64,
pub instability_threshold: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum NotificationChannel {
Log { level: String },
Email { recipients: Vec<String> },
Slack { webhook_url: String, channel: String },
Database { table: String },
WebSocket { endpoint: String },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertEscalation {
pub enable_escalation: bool,
pub escalation_levels: Vec<EscalationLevel>,
pub escalation_time: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EscalationLevel {
pub level: String,
pub severity_threshold: f64,
pub actions: Vec<String>,
pub channels: Vec<NotificationChannel>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceTrackingConfig {
pub enable_tracking: bool,
pub tracked_metrics: Vec<String>,
pub data_retention: Duration,
pub analysis_interval: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrosstalkPredictionConfig {
pub enable_prediction: bool,
pub prediction_horizon: Duration,
pub prediction_interval: Duration,
pub uncertainty_quantification: UncertaintyQuantificationConfig,
pub time_series_config: TimeSeriesConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UncertaintyQuantificationConfig {
pub enable: bool,
pub confidence_levels: Vec<f64>,
pub estimation_method: UncertaintyEstimationMethod,
pub monte_carlo_samples: usize,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum UncertaintyEstimationMethod {
Bootstrap { n_bootstrap: usize },
Bayesian { prior_type: String },
Ensemble { n_models: usize },
DropoutMonteCarlo { dropout_rate: f64, n_samples: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeSeriesConfig {
pub model_type: TimeSeriesModel,
pub seasonality: SeasonalityConfig,
pub trend_analysis: TrendAnalysisConfig,
pub changepoint_detection: ChangepointDetectionConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum TimeSeriesModel {
ARIMA { p: usize, d: usize, q: usize },
ExponentialSmoothing { trend: String, seasonal: String },
Prophet { growth: String, seasonality_mode: String },
LSTM { hidden_size: usize, num_layers: usize },
Transformer { d_model: usize, n_heads: usize, n_layers: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SeasonalityConfig {
pub enable_detection: bool,
pub periods: Vec<usize>,
pub strength_threshold: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrendAnalysisConfig {
pub enable_analysis: bool,
pub detection_method: TrendDetectionMethod,
pub significance_threshold: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum TrendDetectionMethod {
MannKendall,
LinearRegression,
TheilSen,
LOWESS { frac: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChangepointDetectionConfig {
pub enable_detection: bool,
pub detection_method: ChangepointDetectionMethod,
pub min_segment_length: usize,
pub detection_threshold: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ChangepointDetectionMethod {
PELT { penalty: f64 },
BinarySegmentation { max_changepoints: usize },
WindowBased { window_size: usize },
BayesianChangepoint { prior_prob: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SignalProcessingConfig {
pub enable_advanced_processing: bool,
pub filtering_config: FilteringConfig,
pub spectral_config: SpectralAnalysisConfig,
pub timefreq_config: TimeFrequencyConfig,
pub wavelet_config: WaveletConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FilteringConfig {
pub enable_adaptive: bool,
pub filter_types: Vec<FilterType>,
pub filter_params: FilterParameters,
pub noise_reduction: NoiseReductionConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum FilterType {
Butterworth { order: usize, cutoff: f64 },
Chebyshev1 { order: usize, rp: f64, cutoff: f64 },
Chebyshev2 { order: usize, rs: f64, cutoff: f64 },
Elliptic { order: usize, rp: f64, rs: f64, cutoff: f64 },
Kalman { process_noise: f64, measurement_noise: f64 },
Wiener { noise_estimate: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FilterParameters {
pub sampling_frequency: f64,
pub passband: (f64, f64),
pub stopband: (f64, f64),
pub passband_ripple: f64,
pub stopband_attenuation: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NoiseReductionConfig {
pub enable: bool,
pub method: NoiseReductionMethod,
pub noise_estimation: NoiseEstimationMethod,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum NoiseReductionMethod {
SpectralSubtraction { over_subtraction_factor: f64 },
WienerFiltering { noise_estimate: f64 },
WaveletDenoising { wavelet: String, threshold_method: String },
AdaptiveFiltering { step_size: f64, filter_length: usize },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum NoiseEstimationMethod {
VoiceActivityDetection,
MinimumStatistics,
MCRA { alpha: f64 },
IMCRA { alpha_s: f64, alpha_d: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpectralAnalysisConfig {
pub window_function: WindowFunction,
pub fft_size: usize,
pub overlap: f64,
pub zero_padding: usize,
pub estimation_method: SpectralEstimationMethod,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum WindowFunction {
Rectangular,
Hanning,
Hamming,
Blackman,
Kaiser { beta: f64 },
Tukey { alpha: f64 },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum SpectralEstimationMethod {
Periodogram,
Welch { nperseg: usize, noverlap: usize },
Bartlett,
Multitaper { nw: f64, k: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeFrequencyConfig {
pub enable: bool,
pub stft_config: STFTConfig,
pub cwt_config: CWTConfig,
pub hht_config: HHTConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct STFTConfig {
pub window_size: usize,
pub hop_size: usize,
pub window_function: WindowFunction,
pub zero_padding: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CWTConfig {
pub wavelet_type: WaveletType,
pub scales: Vec<f64>,
pub sampling_period: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum WaveletType {
Morlet { omega: f64 },
MexicanHat,
Daubechies { order: usize },
Biorthogonal { nr: usize, nd: usize },
Coiflets { order: usize },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HHTConfig {
pub emd_config: EMDConfig,
pub if_method: InstantaneousFrequencyMethod,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EMDConfig {
pub max_imfs: usize,
pub stopping_criterion: f64,
pub ensemble_emd: bool,
pub noise_std: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum InstantaneousFrequencyMethod {
HilbertTransform,
TeagerKaiser,
DirectQuadrature,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WaveletConfig {
pub enable: bool,
pub decomposition_levels: usize,
pub wavelet_type: WaveletType,
pub boundary_condition: BoundaryCondition,
pub thresholding: WaveletThresholdingConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum BoundaryCondition {
Zero,
Symmetric,
Periodic,
Constant,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WaveletThresholdingConfig {
pub method: ThresholdingMethod,
pub threshold_selection: ThresholdSelection,
pub threshold_value: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ThresholdingMethod {
Soft,
Hard,
Greater,
Less,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ThresholdSelection {
Manual,
SURE,
Minimax,
BayesThresh,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptiveCompensationConfig {
pub enable_adaptive: bool,
pub compensation_algorithms: Vec<CompensationAlgorithm>,
pub learning_config: CompensationLearningConfig,
pub optimization_config: CompensationOptimizationConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum CompensationAlgorithm {
LinearCompensation { gain_matrix: Vec<f64> },
NonlinearCompensation { polynomial_order: usize },
NeuralNetworkCompensation { architecture: Vec<usize> },
AdaptiveFilterCompensation { filter_type: String, order: usize },
FeedforwardCompensation { delay: f64 },
FeedbackCompensation { controller: ControllerType },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompensationLearningConfig {
pub algorithm: LearningAlgorithm,
pub learning_rate: f64,
pub forgetting_factor: f64,
pub convergence_criterion: f64,
pub max_iterations: usize,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum LearningAlgorithm {
LMS { step_size: f64 },
RLS { forgetting_factor: f64 },
GradientDescent { momentum: f64 },
Adam { beta1: f64, beta2: f64, epsilon: f64 },
KalmanFilter { process_noise: f64, measurement_noise: f64 },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompensationOptimizationConfig {
pub objective: OptimizationObjective,
pub constraints: Vec<OptimizationConstraint>,
pub algorithm: OptimizationAlgorithm,
pub tolerance: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum OptimizationObjective {
MinimizeCrosstalk,
MaximizeFidelity,
MinimizeEnergy,
MaximizeRobustness,
MultiObjective { weights: Vec<f64> },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationConstraint {
pub constraint_type: ConstraintType,
pub value: f64,
pub tolerance: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ConstraintType {
MaxCrosstalk,
MinFidelity,
MaxEnergy,
MaxCompensationEffort,
StabilityMargin,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum OptimizationAlgorithm {
GradientDescent,
ConjugateGradient,
BFGS,
ParticleSwarm,
GeneticAlgorithm,
DifferentialEvolution,
SimulatedAnnealing,
BayesianOptimization,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MultilevelMitigationConfig {
pub enable_multilevel: bool,
pub mitigation_levels: Vec<MitigationLevel>,
pub level_selection: LevelSelectionStrategy,
pub coordination_strategy: CoordinationStrategy,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MitigationLevel {
pub name: String,
pub priority: usize,
pub strategies: Vec<String>,
pub resource_requirements: ResourceRequirements,
pub performance_targets: PerformanceTargets,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceRequirements {
pub computational_complexity: f64,
pub memory_mb: usize,
pub realtime_constraints: Duration,
pub hardware_requirements: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceTargets {
pub crosstalk_reduction: f64,
pub fidelity_improvement: f64,
pub max_latency: Duration,
pub reliability: f64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum LevelSelectionStrategy {
Priority,
Dynamic { criteria: Vec<String> },
Adaptive { selection_criteria: Vec<String> },
RoundRobin,
LoadBalanced,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum CoordinationStrategy {
Sequential,
Parallel,
Hierarchical { control_hierarchy: Vec<String> },
Adaptive { coordination_algorithm: String },
}
impl Default for AdvancedCrosstalkConfig {
fn default() -> Self {
Self {
base_config: CrosstalkConfig::default(),
ml_config: CrosstalkMLConfig {
enable_prediction: true,
enable_clustering: true,
enable_anomaly_detection: true,
model_types: vec![
CrosstalkMLModel::RandomForest { n_estimators: 100, max_depth: Some(10) },
CrosstalkMLModel::GradientBoosting { n_estimators: 50, learning_rate: 0.1 },
CrosstalkMLModel::NeuralNetwork {
hidden_layers: vec![64, 32, 16],
activation: "relu".to_string()
},
],
feature_config: CrosstalkFeatureConfig {
enable_temporal_features: true,
enable_spectral_features: true,
enable_spatial_features: true,
enable_statistical_features: true,
temporal_window_size: 100,
spectral_bins: 256,
spatial_neighborhood: 3,
feature_selection: FeatureSelectionMethod::UnivariateSelection { k: 20 },
},
training_config: CrosstalkTrainingConfig {
train_test_split: 0.8,
cv_folds: 5,
random_state: Some(42),
early_stopping: EarlyStoppingConfig {
enable: true,
patience: 10,
min_delta: 0.001,
monitor_metric: "val_loss".to_string(),
},
data_augmentation: DataAugmentationConfig {
enable: true,
noise_level: 0.01,
time_warping: 0.1,
frequency_shift_range: 0.05,
augmentation_ratio: 0.2,
},
online_learning: OnlineLearningConfig {
enable: true,
learning_rate: 0.001,
forgetting_factor: 0.95,
batch_size: 32,
update_frequency: Duration::from_secs(60),
},
},
model_selection_config: ModelSelectionConfig {
enable_auto_selection: true,
ensemble_method: EnsembleMethod::Voting { strategy: "soft".to_string() },
hyperparameter_optimization: HyperparameterOptimization::BayesianOptimization { n_calls: 50 },
validation_strategy: ValidationStrategy::KFold { n_splits: 5 },
},
},
realtime_config: RealtimeMitigationConfig {
enable_realtime: true,
monitoring_interval: Duration::from_millis(100),
adaptation_threshold: 0.1,
max_adaptation_rate: 10.0,
feedback_control: FeedbackControlConfig {
controller_type: ControllerType::PID { kp: 1.0, ki: 0.1, kd: 0.01 },
control_params: ControlParameters {
tracking_accuracy: 0.95,
disturbance_rejection: 0.8,
effort_limits: (-1.0, 1.0),
response_time: Duration::from_millis(10),
},
stability_analysis: StabilityAnalysisConfig {
enable_monitoring: true,
stability_margins: StabilityMargins {
gain_margin: 6.0,
phase_margin: 45.0,
delay_margin: 0.001,
},
robustness_analysis: true,
},
},
alert_config: AlertConfig {
enable_alerts: true,
thresholds: AlertThresholds {
crosstalk_threshold: 0.1,
prediction_error_threshold: 0.05,
mitigation_failure_threshold: 0.2,
instability_threshold: 0.15,
},
notification_channels: vec![
NotificationChannel::Log { level: "WARN".to_string() },
],
escalation: AlertEscalation {
enable_escalation: true,
escalation_levels: vec![
EscalationLevel {
level: "WARNING".to_string(),
severity_threshold: 0.1,
actions: vec!["alert".to_string()],
channels: vec![NotificationChannel::Log { level: "WARN".to_string() }],
},
EscalationLevel {
level: "CRITICAL".to_string(),
severity_threshold: 0.2,
actions: vec!["alert".to_string(), "compensate".to_string()],
channels: vec![NotificationChannel::Log { level: "ERROR".to_string() }],
},
],
escalation_time: Duration::from_secs(30),
},
},
performance_tracking: PerformanceTrackingConfig {
enable_tracking: true,
tracked_metrics: vec![
"crosstalk_strength".to_string(),
"fidelity".to_string(),
"mitigation_effectiveness".to_string(),
],
data_retention: Duration::from_secs(3600 * 24), analysis_interval: Duration::from_secs(300), },
},
prediction_config: CrosstalkPredictionConfig {
enable_prediction: true,
prediction_horizon: Duration::from_secs(600), prediction_interval: Duration::from_secs(60), uncertainty_quantification: UncertaintyQuantificationConfig {
enable: true,
confidence_levels: vec![0.68, 0.95, 0.99],
estimation_method: UncertaintyEstimationMethod::Bootstrap { n_bootstrap: 1000 },
monte_carlo_samples: 1000,
},
time_series_config: TimeSeriesConfig {
model_type: TimeSeriesModel::ARIMA { p: 2, d: 1, q: 2 },
seasonality: SeasonalityConfig {
enable_detection: true,
periods: vec![24, 168, 8760], strength_threshold: 0.1,
},
trend_analysis: TrendAnalysisConfig {
enable_analysis: true,
detection_method: TrendDetectionMethod::MannKendall,
significance_threshold: 0.05,
},
changepoint_detection: ChangepointDetectionConfig {
enable_detection: true,
detection_method: ChangepointDetectionMethod::PELT { penalty: 1.0 },
min_segment_length: 10,
detection_threshold: 0.01,
},
},
},
signal_processing_config: SignalProcessingConfig {
enable_advanced_processing: true,
filtering_config: FilteringConfig {
enable_adaptive: true,
filter_types: vec![
FilterType::Butterworth { order: 4, cutoff: 0.1 },
FilterType::Kalman { process_noise: 0.01, measurement_noise: 0.1 },
],
filter_params: FilterParameters {
sampling_frequency: 1e9, passband: (1e6, 100e6), stopband: (0.5e6, 200e6), passband_ripple: 0.1,
stopband_attenuation: 60.0,
},
noise_reduction: NoiseReductionConfig {
enable: true,
method: NoiseReductionMethod::WienerFiltering { noise_estimate: 0.01 },
noise_estimation: NoiseEstimationMethod::MinimumStatistics,
},
},
spectral_config: SpectralAnalysisConfig {
window_function: WindowFunction::Hanning,
fft_size: 1024,
overlap: 0.5,
zero_padding: 2,
estimation_method: SpectralEstimationMethod::Welch { nperseg: 256, noverlap: 128 },
},
timefreq_config: TimeFrequencyConfig {
enable: true,
stft_config: STFTConfig {
window_size: 256,
hop_size: 64,
window_function: WindowFunction::Hanning,
zero_padding: 1,
},
cwt_config: CWTConfig {
wavelet_type: WaveletType::Morlet { omega: 6.0 },
scales: (1..100).map(|i| i as f64).collect(),
sampling_period: 1e-9, },
hht_config: HHTConfig {
emd_config: EMDConfig {
max_imfs: 10,
stopping_criterion: 0.01,
ensemble_emd: true,
noise_std: 0.1,
},
if_method: InstantaneousFrequencyMethod::HilbertTransform,
},
},
wavelet_config: WaveletConfig {
enable: true,
decomposition_levels: 6,
wavelet_type: WaveletType::Daubechies { order: 4 },
boundary_condition: BoundaryCondition::Symmetric,
thresholding: WaveletThresholdingConfig {
method: ThresholdingMethod::Soft,
threshold_selection: ThresholdSelection::SURE,
threshold_value: None,
},
},
},
adaptive_compensation_config: AdaptiveCompensationConfig {
enable_adaptive: true,
compensation_algorithms: vec![
CompensationAlgorithm::LinearCompensation { gain_matrix: vec![1.0; 16] },
CompensationAlgorithm::AdaptiveFilterCompensation {
filter_type: "LMS".to_string(),
order: 10
},
],
learning_config: CompensationLearningConfig {
algorithm: LearningAlgorithm::Adam { beta1: 0.9, beta2: 0.999, epsilon: 1e-8 },
learning_rate: 0.001,
forgetting_factor: 0.99,
convergence_criterion: 1e-6,
max_iterations: 1000,
},
optimization_config: CompensationOptimizationConfig {
objective: OptimizationObjective::MinimizeCrosstalk,
constraints: vec![
OptimizationConstraint {
constraint_type: ConstraintType::MaxEnergy,
value: 1.0,
tolerance: 0.1,
},
],
algorithm: OptimizationAlgorithm::BayesianOptimization,
tolerance: 1e-6,
},
},
multilevel_mitigation_config: MultilevelMitigationConfig {
enable_multilevel: true,
mitigation_levels: vec![
MitigationLevel {
name: "Level1_Fast".to_string(),
priority: 1,
strategies: vec![],
resource_requirements: ResourceRequirements {
computational_complexity: 0.1,
memory_mb: 10,
realtime_constraints: Duration::from_millis(1),
hardware_requirements: vec!["CPU".to_string()],
},
performance_targets: PerformanceTargets {
crosstalk_reduction: 0.5,
fidelity_improvement: 0.1,
max_latency: Duration::from_millis(1),
reliability: 0.9,
},
},
MitigationLevel {
name: "Level2_Accurate".to_string(),
priority: 2,
strategies: vec![],
resource_requirements: ResourceRequirements {
computational_complexity: 1.0,
memory_mb: 100,
realtime_constraints: Duration::from_millis(10),
hardware_requirements: vec!["CPU".to_string(), "GPU".to_string()],
},
performance_targets: PerformanceTargets {
crosstalk_reduction: 0.8,
fidelity_improvement: 0.3,
max_latency: Duration::from_millis(10),
reliability: 0.95,
},
},
],
level_selection: LevelSelectionStrategy::Adaptive {
selection_criteria: vec!["latency".to_string(), "accuracy".to_string()]
},
coordination_strategy: CoordinationStrategy::Hierarchical {
control_hierarchy: vec!["Level1_Fast".to_string(), "Level2_Accurate".to_string()]
},
},
}
}
}