pub trait CurriculumScheduler: Send {
fn difficulty(&self) -> f32;
fn tier(&self) -> usize;
fn step(&mut self, epoch: usize, accuracy: f32);
fn reset(&mut self);
fn sample_weight(&self, sample_difficulty: f32) -> f32 {
1.0 - (sample_difficulty - self.difficulty()).abs().min(1.0) * 0.5
}
fn include_sample(&self, sample_difficulty: f32) -> bool {
sample_difficulty <= self.difficulty()
}
fn name(&self) -> &str;
}