From d5e5177166e532c9b549e0acd804c68fa5d7609e Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Sat, 21 Jun 2025 23:43:21 +0100 Subject: [PATCH] Added: Loss aversion --- rslib/src/scheduler/fsrs/retention.rs | 11 +++++++++++ ts/routes/deck-options/SimulatorModal.svelte | 13 ++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/rslib/src/scheduler/fsrs/retention.rs b/rslib/src/scheduler/fsrs/retention.rs index ce93fae5b..b26fa25e0 100644 --- a/rslib/src/scheduler/fsrs/retention.rs +++ b/rslib/src/scheduler/fsrs/retention.rs @@ -55,12 +55,23 @@ impl Collection { } let (mut config, cards) = self.simulate_request_to_config(&req)?; + dbg!(&target_type); if let Some(Kind::Memorized(settings)) = target_type { let loss_aversion = settings.loss_aversion; + dbg!(&loss_aversion); + config.relearning_step_transitions[0][0] *= loss_aversion; config.relearning_step_transitions[1][0] *= loss_aversion; config.relearning_step_transitions[2][0] *= loss_aversion; + + config.learning_step_transitions[0][0] *= loss_aversion; + config.learning_step_transitions[1][0] *= loss_aversion; + config.learning_step_transitions[2][0] *= loss_aversion; + + config.state_rating_costs[0][0] *= loss_aversion; + config.state_rating_costs[1][0] *= loss_aversion; + config.state_rating_costs[2][0] *= loss_aversion; } Ok(fsrs diff --git a/ts/routes/deck-options/SimulatorModal.svelte b/ts/routes/deck-options/SimulatorModal.svelte index 80fa6518e..fc57c4650 100644 --- a/ts/routes/deck-options/SimulatorModal.svelte +++ b/ts/routes/deck-options/SimulatorModal.svelte @@ -49,7 +49,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html export let onPresetChange: () => void; let cmrrTargetType = DEFAULT_CMRR_TARGET; - $: if (simulateFsrsRequest?.target) { + let lastCmrrTargetType = cmrrTargetType; + $: if (simulateFsrsRequest?.target && cmrrTargetType !== lastCmrrTargetType) { switch (cmrrTargetType) { case "memorized": simulateFsrsRequest.target.kind = { @@ -66,6 +67,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html }; break; } + lastCmrrTargetType = cmrrTargetType; } const config = state.currentConfig; @@ -449,6 +451,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + + {#if simulateFsrsRequest.target?.kind.case === "memorized"} + + + {"Fail Cost Multiplier: "} + + + {/if}