diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index e9461279f..13006fa88 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -468,7 +468,7 @@ impl Collection { self.get_config_bool(BoolKey::FsrsShortTermWithStepsEnabled); let fsrs_allow_short_term = if fsrs_enabled { let params = config.fsrs_params(); - if params.len() == 19 { + if params.len() >= 19 { params[17] > 0.0 && params[18] > 0.0 } else { false diff --git a/rslib/src/scheduler/fsrs/params.rs b/rslib/src/scheduler/fsrs/params.rs index 13e588535..d313a6851 100644 --- a/rslib/src/scheduler/fsrs/params.rs +++ b/rslib/src/scheduler/fsrs/params.rs @@ -116,10 +116,10 @@ impl Collection { })?; progress_thread.join().ok(); if let Ok(fsrs) = FSRS::new(Some(current_params)) { - let current_rmse = fsrs.evaluate(items.clone(), |_| true)?.rmse_bins; + let current_log_loss = fsrs.evaluate(items.clone(), |_| true)?.log_loss; let optimized_fsrs = FSRS::new(Some(¶ms))?; - let optimized_rmse = optimized_fsrs.evaluate(items.clone(), |_| true)?.rmse_bins; - if current_rmse <= optimized_rmse { + let optimized_log_loss = optimized_fsrs.evaluate(items.clone(), |_| true)?.log_loss; + if current_log_loss <= optimized_log_loss { if num_of_relearning_steps <= 1 { params = current_params.to_vec(); } else {