quantrs2_device/ml_optimization/
online_learning.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct OnlineLearningConfig {
9 pub enable_online_learning: bool,
11 pub learning_rate_schedule: LearningRateSchedule,
13 pub memory_management: MemoryManagementConfig,
15 pub forgetting_prevention: ForgettingPreventionConfig,
17 pub incremental_learning: IncrementalLearningConfig,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub enum LearningRateSchedule {
24 Constant,
25 ExponentialDecay,
26 StepDecay,
27 PolynomialDecay,
28 CosineAnnealing,
29 Adaptive,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct MemoryManagementConfig {
35 pub max_buffer_size: usize,
37 pub eviction_strategy: MemoryEvictionStrategy,
39 pub replay_buffer: bool,
41 pub experience_prioritization: bool,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47pub enum MemoryEvictionStrategy {
48 FIFO,
49 LRU,
50 LFU,
51 RandomEviction,
52 ImportanceBased,
53 RecentnessBased,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct ForgettingPreventionConfig {
59 pub elastic_weight_consolidation: bool,
61 pub progressive_networks: bool,
63 pub memory_replay: bool,
65 pub regularization_strength: f64,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct IncrementalLearningConfig {
72 pub incremental_batch_size: usize,
74 pub update_frequency: Duration,
76 pub stability_plasticity_balance: f64,
78 pub knowledge_distillation: bool,
80}