use scirs2_core::ndarray::{Array1, Array2, Array3};
use std::collections::{HashMap, VecDeque};
use super::config::{AlgorithmType, ImagePattern, PatternType};
#[derive(Debug, Clone)]
pub struct NeuralModel {
pub weights: Array2<f64>,
pub biases: Array1<f64>,
pub architecture: String,
}
#[derive(Debug, Clone)]
pub struct ProcessingExperience {
pub inputfeatures: Array1<f64>,
pub action: ProcessingAction,
pub reward: f64,
pub performance: PerformanceMetrics,
pub nextfeatures: Array1<f64>,
pub context: String,
}
#[derive(Debug, Clone)]
pub struct ProcessingAction {
pub primary_algorithm: AlgorithmType,
pub secondary_algorithms: Vec<AlgorithmType>,
pub parameter_adjustments: HashMap<String, f64>,
pub processing_order: Vec<usize>,
}
#[derive(Debug, Clone)]
pub struct PerformanceMetrics {
pub speed: f64,
pub quality: f64,
pub memory_usage: f64,
pub energy_consumption: f64,
pub user_satisfaction: Option<f64>,
}
#[derive(Debug, Clone)]
pub struct ContinualLearningState {
pub task_knowledge: Vec<TaskKnowledge>,
pub forgetting_prevention: ForgettingPreventionState,
pub meta_learning_params: Array1<f64>,
pub adaptationhistory: Vec<AdaptationRecord>,
}
#[derive(Debug, Clone)]
pub struct TaskKnowledge {
pub task_id: String,
pub parameters: Array1<f64>,
pub importance_weights: Array1<f64>,
pub task_performance: f64,
}
#[derive(Debug, Clone)]
pub struct ForgettingPreventionState {
pub ewc_params: Array1<f64>,
pub fisher_information: Array2<f64>,
pub importance_mask: Array1<bool>,
pub memory_strength: f64,
}
#[derive(Debug, Clone)]
pub struct AdaptationRecord {
pub timestamp: u64,
pub adaptation_type: String,
pub parameters_changed: Vec<String>,
pub improvement: f64,
}
#[derive(Debug, Clone)]
pub struct TransferLearningModel {
pub source_domain: String,
pub target_domain: String,
pub transfer_weights: Array2<f64>,
pub effectiveness: f64,
pub transfer_count: usize,
}
#[derive(Debug, Clone)]
pub struct FewShotLearningEntry {
pub examples: Vec<Array1<f64>>,
pub labels: Vec<String>,
pub adaptation_params: Array1<f64>,
pub learning_progress: f64,
}
#[derive(Debug, Clone)]
pub struct ExplanationTracker {
pub decision_explanations: VecDeque<String>,
pub feature_importance: HashMap<String, f64>,
pub justifications: HashMap<String, String>,
pub confidence_scores: HashMap<String, f64>,
}
#[derive(Debug, Clone)]
pub struct PredictionModel {
pub weights: Array2<f64>,
pub model_type: String,
pub accuracy: f64,
pub epochs_trained: usize,
}