use scirs2_core::ndarray::{Array1, Array2};
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ContinualLearningStrategy {
EWC,
SI,
MAS,
Progressive,
PackNet,
GEM,
AGEM,
ExperienceReplay,
QuantumMemoryConsolidation,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum MemoryType {
Episodic,
Semantic,
Working,
Quantum,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum TaskType {
Classification,
Regression,
ReinforcementLearning,
Unsupervised,
Quantum,
}
#[derive(Debug, Clone)]
pub struct QuantumContinualLearningConfig {
pub strategy: ContinualLearningStrategy,
pub memory_types: Vec<MemoryType>,
pub max_tasks: usize,
pub memory_capacity: usize,
pub learning_rate: f64,
pub regularization_strength: f64,
pub num_qubits: usize,
pub random_state: Option<u64>,
}
#[derive(Debug, Clone)]
pub struct ContinualTask {
pub task_id: usize,
pub task_type: TaskType,
pub name: String,
pub description: String,
pub parameters: HashMap<String, f64>,
}
#[derive(Debug, Clone)]
pub struct MemoryConfig {
pub memory_type: MemoryType,
pub capacity: usize,
pub retention_strategy: String,
pub quantum_enhancement: f64,
}
#[derive(Debug, Clone)]
pub struct EvaluationConfig {
pub metrics: Vec<String>,
pub eval_frequency: usize,
pub use_validation: bool,
pub measure_forgetting: bool,
}
impl Default for QuantumContinualLearningConfig {
fn default() -> Self {
Self {
strategy: ContinualLearningStrategy::EWC,
memory_types: vec![MemoryType::Episodic, MemoryType::Semantic],
max_tasks: 10,
memory_capacity: 1000,
learning_rate: 0.001,
regularization_strength: 0.1,
num_qubits: 4,
random_state: None,
}
}
}