use std::collections::HashMap;
use std::time::{Duration, SystemTime};
use quantrs2_core::qubit::QubitId;
use scirs2_core::ndarray::{Array1, Array2};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MidCircuitExecutionResult {
pub final_measurements: HashMap<String, usize>,
pub classical_registers: HashMap<String, Vec<u8>>,
pub measurement_history: Vec<MeasurementEvent>,
pub execution_stats: ExecutionStats,
pub performance_metrics: PerformanceMetrics,
pub error_analysis: Option<ErrorAnalysis>,
pub analytics_results: AdvancedAnalyticsResults,
pub prediction_results: Option<MeasurementPredictionResults>,
pub optimization_recommendations: OptimizationRecommendations,
pub adaptive_insights: AdaptiveLearningInsights,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MeasurementEvent {
pub timestamp: f64,
pub qubit: QubitId,
pub result: u8,
pub storage_location: StorageLocation,
pub latency: f64,
pub confidence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum StorageLocation {
ClassicalBit(usize),
ClassicalRegister(String, usize),
Buffer(usize),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionStats {
pub total_execution_time: Duration,
pub quantum_time: Duration,
pub measurement_time: Duration,
pub classical_time: Duration,
pub num_measurements: usize,
pub num_conditional_ops: usize,
pub avg_measurement_latency: f64,
pub max_measurement_latency: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceMetrics {
pub measurement_success_rate: f64,
pub classical_efficiency: f64,
pub circuit_fidelity: f64,
pub measurement_error_rate: f64,
pub timing_overhead: f64,
pub resource_utilization: ResourceUtilization,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceUtilization {
pub quantum_utilization: f64,
pub classical_utilization: f64,
pub memory_usage: usize,
pub communication_overhead: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ErrorAnalysis {
pub measurement_errors: HashMap<QubitId, MeasurementErrorStats>,
pub classical_errors: Vec<ClassicalError>,
pub timing_violations: Vec<TimingViolation>,
pub error_correlations: Array2<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MeasurementErrorStats {
pub readout_error_rate: f64,
pub spam_error: f64,
pub thermal_relaxation: f64,
pub dephasing: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClassicalError {
pub error_type: ClassicalErrorType,
pub timestamp: f64,
pub description: String,
pub affected_operations: Vec<usize>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ClassicalErrorType {
Timeout,
InvalidRegisterAccess,
ConditionEvaluationError,
BufferOverflow,
CommunicationError,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimingViolation {
pub operation_index: usize,
pub expected_timing: f64,
pub actual_timing: f64,
pub severity: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AdvancedAnalyticsResults {
pub statistical_analysis: StatisticalAnalysisResults,
pub correlation_analysis: CorrelationAnalysisResults,
pub time_series_analysis: Option<TimeSeriesAnalysisResults>,
pub anomaly_detection: Option<AnomalyDetectionResults>,
pub distribution_analysis: DistributionAnalysisResults,
pub causal_analysis: Option<CausalAnalysisResults>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StatisticalAnalysisResults {
pub descriptive_stats: DescriptiveStatistics,
pub hypothesis_tests: HypothesisTestResults,
pub confidence_intervals: ConfidenceIntervals,
pub effect_sizes: EffectSizeAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DescriptiveStatistics {
pub mean_latency: f64,
pub std_latency: f64,
pub median_latency: f64,
pub latency_percentiles: Vec<f64>,
pub success_rate_stats: MeasurementSuccessStats,
pub error_rate_distribution: ErrorRateDistribution,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MeasurementSuccessStats {
pub overall_success_rate: f64,
pub per_qubit_success_rate: HashMap<QubitId, f64>,
pub temporal_success_rate: Vec<(f64, f64)>, pub success_rate_ci: (f64, f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ErrorRateDistribution {
pub histogram: Vec<(f64, usize)>, pub best_fit_distribution: String,
pub distribution_parameters: Vec<f64>,
pub goodness_of_fit: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HypothesisTestResults {
pub independence_tests: HashMap<String, StatisticalTest>,
pub stationarity_tests: HashMap<String, StatisticalTest>,
pub normality_tests: HashMap<String, StatisticalTest>,
pub comparison_tests: HashMap<String, ComparisonTest>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatisticalTest {
pub statistic: f64,
pub p_value: f64,
pub critical_value: f64,
pub is_significant: bool,
pub effect_size: Option<f64>,
}
impl Default for StatisticalTest {
fn default() -> Self {
Self {
statistic: 0.0,
p_value: 0.1,
critical_value: 1.96,
is_significant: false,
effect_size: None,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ComparisonTest {
pub test_type: String,
pub statistic: f64,
pub p_value: f64,
pub mean_difference: f64,
pub difference_ci: (f64, f64),
pub cohens_d: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfidenceIntervals {
pub confidence_level: f64,
pub mean_intervals: HashMap<String, (f64, f64)>,
pub bootstrap_intervals: HashMap<String, (f64, f64)>,
pub prediction_intervals: HashMap<String, (f64, f64)>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EffectSizeAnalysis {
pub cohens_d: HashMap<String, f64>,
pub correlations: HashMap<String, f64>,
pub r_squared: HashMap<String, f64>,
pub practical_significance: HashMap<String, bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CorrelationAnalysisResults {
pub pearson_correlations: Array2<f64>,
pub spearman_correlations: Array2<f64>,
pub kendall_correlations: Array2<f64>,
pub significant_correlations: Vec<CorrelationPair>,
pub partial_correlations: Array2<f64>,
pub network_analysis: CorrelationNetworkAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CorrelationPair {
pub variable1: String,
pub variable2: String,
pub correlation: f64,
pub p_value: f64,
pub correlation_type: CorrelationType,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CorrelationType {
Pearson,
Spearman,
Kendall,
Partial,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CorrelationNetworkAnalysis {
pub adjacency_matrix: Array2<f64>,
pub centrality_measures: NodeCentralityMeasures,
pub communities: Vec<Vec<usize>>,
pub network_density: f64,
pub clustering_coefficient: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NodeCentralityMeasures {
pub betweenness: Vec<f64>,
pub closeness: Vec<f64>,
pub eigenvector: Vec<f64>,
pub degree: Vec<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeSeriesAnalysisResults {
pub trend_analysis: TrendAnalysis,
pub seasonality_analysis: Option<SeasonalityAnalysis>,
pub autocorrelation: AutocorrelationAnalysis,
pub change_points: Vec<ChangePoint>,
pub stationarity: StationarityTestResults,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrendAnalysis {
pub trend_direction: TrendDirection,
pub trend_strength: f64,
pub trend_slope: f64,
pub trend_significance: f64,
pub trend_ci: (f64, f64),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TrendDirection {
Increasing,
Decreasing,
Stable,
Volatile,
Cyclical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SeasonalityAnalysis {
pub periods: Vec<usize>,
pub seasonal_strength: f64,
pub seasonal_components: Array1<f64>,
pub residual_components: Array1<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutocorrelationAnalysis {
pub acf: Array1<f64>,
pub pacf: Array1<f64>,
pub significant_lags: Vec<usize>,
pub ljung_box_statistic: f64,
pub ljung_box_p_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChangePoint {
pub index: usize,
pub timestamp: f64,
pub confidence: f64,
pub magnitude: f64,
pub change_type: ChangePointType,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ChangePointType {
MeanShift,
VarianceChange,
TrendChange,
DistributionChange,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StationarityTestResults {
pub adf_test: StatisticalTest,
pub kpss_test: StatisticalTest,
pub pp_test: StatisticalTest,
pub is_stationary: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnomalyDetectionResults {
pub anomalies: Vec<AnomalyEvent>,
pub anomaly_scores: Array1<f64>,
pub thresholds: HashMap<String, f64>,
pub method_performance: AnomalyMethodPerformance,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnomalyEvent {
pub index: usize,
pub timestamp: f64,
pub anomaly_score: f64,
pub anomaly_type: AnomalyType,
pub affected_measurements: Vec<usize>,
pub severity: AnomalySeverity,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AnomalyType {
PointAnomaly,
ContextualAnomaly,
CollectiveAnomaly,
TrendAnomaly,
SeasonalAnomaly,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AnomalySeverity {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnomalyMethodPerformance {
pub precision: HashMap<String, f64>,
pub recall: HashMap<String, f64>,
pub f1_scores: HashMap<String, f64>,
pub false_positive_rates: HashMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DistributionAnalysisResults {
pub best_fit_distributions: HashMap<String, DistributionFit>,
pub distribution_comparisons: Vec<DistributionComparison>,
pub mixture_models: Option<MixtureModelResults>,
pub normality_assessment: NormalityAssessment,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DistributionFit {
pub distribution_name: String,
pub parameters: Vec<f64>,
pub log_likelihood: f64,
pub aic: f64,
pub bic: f64,
pub ks_statistic: f64,
pub ks_p_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DistributionComparison {
pub distribution1: String,
pub distribution2: String,
pub aic_difference: f64,
pub bic_difference: f64,
pub likelihood_ratio_test: StatisticalTest,
pub better_fit: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MixtureModelResults {
pub n_components: usize,
pub weights: Array1<f64>,
pub component_parameters: Vec<Vec<f64>>,
pub log_likelihood: f64,
pub bic: f64,
pub assignments: Array1<usize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NormalityAssessment {
pub shapiro_wilk: StatisticalTest,
pub anderson_darling: StatisticalTest,
pub jarque_bera: StatisticalTest,
pub is_normal: bool,
pub normality_confidence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CausalAnalysisResults {
pub causal_graph: CausalGraph,
pub causal_effects: Vec<CausalEffect>,
pub confounding_analysis: ConfoundingAnalysis,
pub causal_strength: HashMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CausalGraph {
pub adjacency_matrix: Array2<f64>,
pub node_names: Vec<String>,
pub edge_weights: HashMap<(usize, usize), f64>,
pub graph_confidence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CausalEffect {
pub cause: String,
pub effect: String,
pub effect_size: f64,
pub confidence_interval: (f64, f64),
pub p_value: f64,
pub mechanism: CausalMechanism,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CausalMechanism {
Direct,
Indirect,
Mediated,
Confounded,
Spurious,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ConfoundingAnalysis {
pub confounders: Vec<String>,
pub confounder_strength: HashMap<String, f64>,
pub backdoor_satisfied: bool,
pub frontdoor_satisfied: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MeasurementPredictionResults {
pub predictions: Array1<f64>,
pub confidence_intervals: Array2<f64>,
pub timestamps: Vec<f64>,
pub model_performance: PredictionModelPerformance,
pub uncertainty: PredictionUncertainty,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictionModelPerformance {
pub mae: f64,
pub mse: f64,
pub rmse: f64,
pub mape: f64,
pub r2_score: f64,
pub accuracy: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictionUncertainty {
pub aleatoric_uncertainty: Array1<f64>,
pub epistemic_uncertainty: Array1<f64>,
pub total_uncertainty: Array1<f64>,
pub uncertainty_bounds: Array2<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationRecommendations {
pub scheduling_optimizations: Vec<SchedulingOptimization>,
pub protocol_optimizations: Vec<ProtocolOptimization>,
pub resource_optimizations: Vec<ResourceOptimization>,
pub performance_improvements: Vec<PerformanceImprovement>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SchedulingOptimization {
pub optimization_type: SchedulingOptimizationType,
pub expected_improvement: f64,
pub difficulty: OptimizationDifficulty,
pub description: String,
pub implementation_steps: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SchedulingOptimizationType {
MeasurementBatching,
TemporalReordering,
ParallelExecution,
ConditionalOptimization,
LatencyReduction,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProtocolOptimization {
pub protocol_type: String,
pub description: String,
pub expected_benefit: f64,
pub risk_level: RiskLevel,
pub validation_requirements: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceOptimization {
pub resource_type: ResourceType,
pub current_utilization: f64,
pub optimal_utilization: f64,
pub strategy: String,
pub expected_savings: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ResourceType {
QuantumProcessor,
ClassicalProcessor,
Memory,
NetworkBandwidth,
StorageCapacity,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceImprovement {
pub area: PerformanceArea,
pub current_performance: f64,
pub target_performance: f64,
pub strategy: String,
pub priority: Priority,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PerformanceArea {
MeasurementLatency,
MeasurementAccuracy,
ThroughputRate,
ErrorRate,
ResourceEfficiency,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Priority {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum RiskLevel {
Low,
Medium,
High,
VeryHigh,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizationDifficulty {
Easy,
Moderate,
Difficult,
VeryDifficult,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptiveLearningInsights {
pub learning_progress: LearningProgress,
pub adaptation_history: Vec<AdaptationEvent>,
pub performance_trends: PerformanceTrends,
pub drift_detection: DriftDetectionResults,
pub transfer_learning: TransferLearningInsights,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LearningProgress {
pub iterations_completed: usize,
pub current_learning_rate: f64,
pub loss_history: Array1<f64>,
pub accuracy_history: Array1<f64>,
pub convergence_status: ConvergenceStatus,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ConvergenceStatus {
NotStarted,
InProgress,
Converged,
Diverged,
Plateaued,
Stuck,
Improving,
Diverging,
Oscillating,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptationEvent {
pub timestamp: SystemTime,
pub adaptation_type: AdaptationType,
pub trigger: String,
pub performance_before: f64,
pub performance_after: f64,
pub performance_snapshot: PerformanceMetrics,
pub adaptation_magnitude: f64,
pub success_indicator: f64,
pub success: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AdaptationType {
ParameterTuning,
ArchitectureChange,
FeatureSelection,
HyperparameterOptimization,
ModelRetrained,
ThresholdAdjustment,
PerformanceOptimization,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceTrends {
pub short_term_trend: TrendDirection,
pub long_term_trend: TrendDirection,
pub trend_strength: f64,
pub seasonal_patterns: Option<SeasonalityAnalysis>,
pub volatility: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DriftDetectionResults {
pub drift_detected: bool,
pub drift_type: Option<DriftType>,
pub drift_magnitude: f64,
pub detection_confidence: f64,
pub recommended_actions: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DriftType {
Gradual,
Sudden,
Incremental,
Recurring,
Virtual,
PerformanceDegradation,
QualityDrift,
ConceptDrift,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransferLearningInsights {
pub transfer_effectiveness: f64,
pub domain_similarity: f64,
pub feature_transferability: Array1<f64>,
pub adaptation_requirements: Vec<String>,
pub recommendations: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MidCircuitCapabilities {
pub max_measurements: Option<usize>,
pub supported_measurement_types: Vec<MeasurementType>,
pub classical_register_capacity: usize,
pub max_classical_processing_time: f64,
pub realtime_feedback: bool,
pub parallel_measurements: bool,
pub native_protocols: Vec<String>,
pub timing_constraints: TimingConstraints,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MeasurementType {
ZBasis,
XBasis,
YBasis,
Pauli(String),
Joint,
NonDestructive,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimingConstraints {
pub min_measurement_spacing: f64,
pub max_measurement_duration: f64,
pub classical_deadline: f64,
pub coherence_limits: HashMap<QubitId, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatisticalAnomaly {
pub index: usize,
pub value: f64,
pub z_score: f64,
pub p_value: f64,
pub metric_type: String,
pub anomaly_severity: AnomalySeverity,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TemporalAnomaly {
pub start_index: usize,
pub end_index: usize,
pub change_point: usize,
pub magnitude: f64,
pub direction: ChangeDirection,
pub confidence: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ChangeDirection {
Increase,
Decrease,
Oscillation,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PatternAnomaly {
pub pattern_type: PatternType,
pub description: String,
pub severity: AnomalySeverity,
pub affected_indices: Vec<usize>,
pub confidence: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PatternType {
CorrelationAnomaly,
ConstantSequence,
PeriodicityBreak,
TrendReversal,
VariabilityAnomaly,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnomalySummary {
pub total_anomalies: usize,
pub anomaly_rate: f64,
pub severity_distribution: Vec<(String, usize)>,
pub anomaly_types: Vec<String>,
pub recommendations: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CausalRelationship {
pub cause: String,
pub effect: String,
pub causal_strength: f64,
pub causal_direction: CausalDirection,
pub p_value: f64,
pub confidence_interval: (f64, f64),
pub mechanism: CausalMechanism,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CausalDirection {
Forward,
Backward,
Bidirectional,
None,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum EdgeType {
Directed,
Undirected,
Bidirected,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InterventionAnalysis {
pub intervention_type: String,
pub target_variable: String,
pub intervention_magnitude: f64,
pub predicted_effects: Vec<PredictedEffect>,
pub intervention_cost: f64,
pub benefit_ratio: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictedEffect {
pub variable: String,
pub effect_size: f64,
pub confidence_interval: (f64, f64),
pub p_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfoundingAssessment {
pub confounders: Vec<ConfoundingVariable>,
pub overall_confounding_risk: String,
pub recommendations: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfoundingVariable {
pub variable: String,
pub confounding_strength: f64,
pub adjustment_method: String,
pub p_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictionModel {
pub model_type: String,
pub coefficients: Vec<f64>,
pub feature_names: Vec<String>,
pub training_accuracy: f64,
pub validation_accuracy: f64,
pub last_trained: SystemTime,
pub hyperparameters: Vec<(String, f64)>,
}
impl Default for PredictionModel {
fn default() -> Self {
Self {
model_type: "linear".to_string(),
coefficients: vec![],
feature_names: vec![],
training_accuracy: 0.0,
validation_accuracy: 0.0,
last_trained: SystemTime::now(),
hyperparameters: vec![],
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct MLFeatures {
pub statistical_features: StatisticalFeatures,
pub temporal_features: TemporalFeatures,
pub pattern_features: PatternFeatures,
pub feature_importance: Vec<FeatureImportance>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatisticalFeatures {
pub mean_latency: f64,
pub std_latency: f64,
pub mean_confidence: f64,
pub std_confidence: f64,
pub skewness_latency: f64,
pub kurtosis_latency: f64,
}
impl Default for StatisticalFeatures {
fn default() -> Self {
Self {
mean_latency: 0.0,
std_latency: 0.0,
mean_confidence: 0.0,
std_confidence: 0.0,
skewness_latency: 0.0,
kurtosis_latency: 0.0,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TemporalFeatures {
pub measurement_rate: f64,
pub temporal_autocorrelation: f64,
pub trend_slope: f64,
pub periodicity_strength: f64,
}
impl Default for TemporalFeatures {
fn default() -> Self {
Self {
measurement_rate: 0.0,
temporal_autocorrelation: 0.0,
trend_slope: 0.0,
periodicity_strength: 0.0,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PatternFeatures {
pub latency_confidence_correlation: f64,
pub measurement_consistency: f64,
pub outlier_ratio: f64,
pub pattern_complexity: f64,
}
impl Default for PatternFeatures {
fn default() -> Self {
Self {
latency_confidence_correlation: 0.0,
measurement_consistency: 0.0,
outlier_ratio: 0.0,
pattern_complexity: 0.0,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeatureImportance {
pub feature_name: String,
pub importance: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrainingEpoch {
pub epoch_number: usize,
pub features: MLFeatures,
pub target_metrics: PerformanceMetrics,
pub training_loss: f64,
pub validation_loss: f64,
pub learning_rate: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelPerformance {
pub training_accuracy: f64,
pub validation_accuracy: f64,
pub cross_validation_score: f64,
pub overfitting_score: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationModel {
pub model_type: String,
pub parameters: Vec<f64>,
pub training_features: MLFeatures,
pub model_performance: ModelPerformance,
pub last_updated: SystemTime,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceImprovements {
pub latency_reduction: f64,
pub confidence_increase: f64,
pub throughput_increase: f64,
pub error_rate_reduction: f64,
pub overall_score_improvement: f64,
}
impl Default for PerformanceImprovements {
fn default() -> Self {
Self {
latency_reduction: 0.0,
confidence_increase: 0.0,
throughput_increase: 0.0,
error_rate_reduction: 0.0,
overall_score_improvement: 0.0,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationRecommendation {
pub parameter: String,
pub current_value: f64,
pub recommended_value: f64,
pub expected_improvement: f64,
pub confidence: f64,
pub rationale: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationResult {
pub recommendations: Vec<OptimizationRecommendation>,
pub predicted_improvements: PerformanceImprovements,
pub confidence: f64,
pub model_version: String,
}
impl Default for OptimizationResult {
fn default() -> Self {
Self {
recommendations: vec![],
predicted_improvements: PerformanceImprovements::default(),
confidence: 0.5,
model_version: "1.0".to_string(),
}
}
}