Jarrett Ye
8d197a1555
Feat/fsrs simulator backend part ( #3075 )
...
* [WIP] FSRS simulator
* add desired_retention as input
* cargo fmt
* fix format
* add standard copyright header
* support existing cards
* fix format
* pass days_elapsed into Card::convert & return None
2024-03-18 13:42:38 +00:00
Jarrett Ye
8c9d7d64d9
refactor optimal retention to minimize workload per memorization & fix progress goes backwards ( #3065 )
...
* Feat/optimal retention for minimal workload per memorization
* ./ninja fix:minilints
* update to FSRS-rs 0.5.2
* update to FSRS-rs 0.5.3
* ./ninja fix:minilints
* 'estimated retention' -> 'predicted optimal retention'; add warning (dae)
2024-03-11 16:16:37 +07:00
Jarrett Ye
f2acf40221
alert when the resp.weights is empty ( #3061 )
...
* alert when the resp.weights is empty
* format
2024-03-09 10:26:59 +00:00
Jarrett Ye
eb597475c5
Fix/set pretrain_only by fsrs_items ( #3051 )
...
* Fix/set pretrain_only and insufficient reviews based on fsrs_items
* use review_count for FsrsInsufficientReviews
* Update weights.rs
* Update weights.rs
2024-03-05 07:54:34 +00:00
Jarrett Ye
c7556f17e6
update fsrs to 0.4.4 ( #3045 )
...
* update fsrs to 0.4.4
* fix bypassed_learning_is_handled
2024-03-03 14:30:34 +07:00
Abdo
60f8399aed
Show total review count when optimizing FSRS parameters ( #3027 )
...
* Show total review count when optimizing FSRS parameters
* Do not expose items
2024-02-26 13:27:22 +07:00
Abdo
6843d65ed1
Check required review count for FSRS after filtering ( #3019 )
...
* Check for required review count for FSRS after filtering
* Remove unreachable check
* Update minimum review count in optimal retention calculation
* Fix review check in optimal retention routine too
2024-02-24 14:53:38 +07:00
Luc Mcgrady
8b18a08b3b
FSRS - Ignore revlogs before date while optimizing ( #2922 )
...
* Added: Date input button
* Added: ignoreDate to config
* Added: Backend
* Optimize function passes value
* Fix: Spelling
* Moved: filter logic from revlog_for_srs to update_memory_state
* fmt
* Copyright header
* ./check
* Fix: Test
* Renamed: Ignore_date -> Ignore_before_date
* Neaten parameters
* evaluate weights
* ./check
* Optimize all presets
* Added: Label localizations
* Removed globe label
* Added: Tooltip
* Changed error type
* fmt
* Moved filter to own function
* missing function call replacement
* Fix: Typo
* Apply suggestions from code review
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
* timestamp * 1000 -> timestamp_millis
* ignoreBefore -> ignore_before
* clarified ignore_before variables
* i64 -> TimestampMillis
* Un-traitified remove_revlogs_before
* Added: ms == 0 guard
* Added: Ignore_before affects scheduling
* Moved filter to fsrs_items_for_training
* removed filter from revlog_for_srs
* Tuple -> UpdateMemoryStateEntry
* Removed unused function
* Removed superfluous _ms from variables
* cid -> id
* Different ignore method
* Added: Unit test
* cid -> id
* Test: Exact ms edge case
* ./check
* Fix: re-learns could be before ignore date in cards without learning steps
* getignoreRevlogsBeforeMs -> getIgnoreRevlogsBeforeMs
* Removed pub(crate)
* Clarified unit test
* last_learn_entry -> first_of_last_learn_entries
* @user1823's method
* IOS fix
* ./check
* Fix: width defined twice
2024-02-22 11:01:10 +07:00
Damien Elmes
9642a69b88
FSRS items, not revlogs
...
https://forums.ankiweb.net/t/discrepancy-between-revlog-count-in-optimize-and-evaluate/41224/5
2024-02-19 17:51:07 +07:00
Jarrett Ye
492178c107
Fix/ignore revlogs before Forget entry ( #3002 )
...
* Fix/ignore revlogs before Forget entry
* Update weights.rs
2024-02-12 16:09:39 +10:00
Abdo
4ef389b580
Keep previous FSRS parameters if they get worse when optimizing ( #2996 )
...
* Update to fsrs-rs 0.3.0
* Keep previous FSRS parameters if they get worse when optimizing
2024-02-11 16:26:04 +10:00
Jarrett Ye
2fffe4b7ba
update FSRS to v0.2.0 ( #2977 )
...
* update FSRS to v0.2.0
* update comments
* ./ninja fix:minilints
* 1000 -> 400 in translation (dae)
2024-01-30 16:27:12 +10:00
Damien Elmes
bf06020855
Use card.reps - 1 when calculating fuzz ( #2933 )
...
https://github.com/open-spaced-repetition/fsrs4anki-helper/issues/343#issuecomment-1879584562
https://forums.ankiweb.net/t/reschedule-is-inconsistent-with-normal-schedule-in-fuzz/39363
2024-01-09 12:26:46 +10:00
Damien Elmes
66d0046b8a
Check review count up front
...
https://forums.ankiweb.net/t/inconsistent-number-of-reviews-when-clicking-optimize/39275/7
2024-01-08 14:05:09 +10:00
Damien Elmes
1a1d4d5419
Work around test failure on Windows
2023-12-28 18:43:28 +10:00
Damien Elmes
b73c1c7f87
Pull in FSRS fix for pretrain
2023-12-28 18:15:44 +10:00
Jarrett Ye
3378e476e6
Update to FSRS-4.5 ( #2901 )
2023-12-22 16:17:40 +10:00
Damien Elmes
4908be62ed
Update FSRS
...
We're on the commit prior to
https://github.com/open-spaced-repetition/fsrs-rs/pull/141 , as that is
going to require work that will need to wait until after 23.12
2023-12-22 14:02:39 +10:00
Damien Elmes
db93939ded
Don't use SM2 memory state when cards are manually introduced
...
https://github.com/open-spaced-repetition/fsrs4anki/issues/540#issuecomment-1848833376
2023-12-12 09:40:31 +10:00
Damien Elmes
cfc6bc6548
Update FSRS for new default weights
2023-12-08 13:54:31 +10:00
Damien Elmes
86aafa74a6
Treat cards with no reps like new cards
...
https://github.com/open-spaced-repetition/fsrs4anki/issues/540#issuecomment-1837780217
2023-12-07 14:56:39 +10:00
Damien Elmes
96ae3a5d63
Update to latest fsrs-rs
...
The extra entries in Cargo.lock and licenses.json are mostly spurious,
and caused by https://github.com/tracel-ai/burn/pull/1025#issuecomment-1842006690
2023-12-07 14:13:58 +10:00
Jarrett Ye
80c5f2d491
skip revlog with time = 0 when calc recall cost ( #2870 )
...
* skip revlog with time = 0 when calc recall cost
* Update retention.rs
2023-12-05 13:08:34 +10:00
Damien Elmes
d767e9ad3c
Suppress manual revlog entry if the previous entry was also manual
...
Means we lose some detail in the history, but should reduce the
collection bloat caused by a user experimenting with reschedule multiple
times in a short period, when they don't restore from backup afterwards.
https://forums.ankiweb.net/t/possible-syncing-limitation-by-fsrs-manual-scheduling-data-accumulation/37610
2023-11-27 11:24:31 +10:00
Damien Elmes
452e012c71
Add option to calculate all weights at once
2023-11-27 11:24:31 +10:00
Damien Elmes
c67f510b9a
Update to latest FSRS
2023-11-27 11:24:31 +10:00
Jarrett Ye
3713c86373
don't convert from sm2 when ivl = 0 ( #2849 )
2023-11-26 13:14:31 +10:00
Damien Elmes
366f78715b
Include next_day timestamp in revlog export
2023-11-23 14:46:48 +10:00
Damien Elmes
a9d73fc3be
Add a method for exporting revlogs in binary
2023-11-22 11:57:40 +10:00
Damien Elmes
f8e0321ca5
When training with the whole collection, include deleted card history
2023-11-22 10:53:08 +10:00
Damien Elmes
b6102d0310
Update fsrs-rs
2023-11-13 10:13:20 +10:00
Damien Elmes
59acde45a1
Remove redundant FSRS revlog code
...
Closes https://github.com/open-spaced-repetition/fsrs-rs/issues/113
2023-11-06 09:44:07 +10:00
Damien Elmes
987c1825a6
Fix panic when enabling FSRS with add-on-rescheduled cards
...
https://forums.ankiweb.net/t/error-upon-fsrs-activation-on-anki-23-10/36488
2023-11-03 10:07:47 +10:00
Damien Elmes
39bf2f2160
Update to latest fsrs
2023-10-18 09:03:23 +10:00
Damien Elmes
72e57456ce
Fix stuttering in FSRS progress display
2023-10-14 14:03:20 +10:00
Damien Elmes
003cdfd2ec
Use sm2 retention when deriving memory state
...
Closes #2702
2023-10-13 10:37:35 +10:00
Damien Elmes
f741b4af91
Fix 'PanicException: command requires weights to be set'
2023-10-09 18:39:18 +10:00
Damien Elmes
0e6104a96b
Fix 'Expression tree is too large' when user has many decks
...
+ Allow 'did:' searches to match multiple decks at once
2023-10-09 18:39:18 +10:00
Damien Elmes
6c1d7a6703
Use 0 when there are no relearning steps; ensure not NaN
2023-10-05 09:55:05 +10:00
Damien Elmes
3636c7c90e
When the user has no relearning steps, synthesize the value
2023-10-03 13:50:29 +10:00
Damien Elmes
72b0c81761
When learning steps are missing, start from the SM-2 state
...
Closes https://github.com/open-spaced-repetition/fsrs-rs/issues/87
2023-10-03 12:20:10 +10:00
Damien Elmes
257d7bbbbc
Update FSRS crate
2023-10-03 11:28:56 +10:00
Damien Elmes
072cd37b42
Support rescheduling on weight/retention change
2023-10-01 15:20:58 +10:00
Damien Elmes
d16faacd0f
Allow cards with no learning history when not training
2023-09-30 16:10:23 +10:00
Damien Elmes
50c8a1ba9f
Update FSRS
...
- up to 10x performance increase in optimal retention
- expose loss aversion
- use SpinBoxes
2023-09-30 16:10:22 +10:00
Damien Elmes
b8390d096e
Shift weight calculation to backend so it can be run in parallel
2023-09-28 09:10:54 +10:00
Damien Elmes
1f55ad1d44
Expose the ability to train weights from items ( #2687 )
2023-09-28 08:28:24 +10:00
Jarrett Ye
05499297e0
Fix first_rating_count & learn_cost ( #2688 )
...
* fix first_rating_count & learn_cost
* Update CONTRIBUTORS
* cargo clippy --fix
* cargo fmt
2023-09-27 18:31:40 +10:00
Damien Elmes
ab4e820608
Update FSRS; fix handling of invalid revlogs
...
State is now inferred from SM-2 data when the revlog is not suitable
2023-09-27 13:13:10 +10:00
Damien Elmes
a1f4bcb3cb
Fix optimal retention caps
2023-09-26 14:17:55 +10:00
Damien Elmes
c9ca5ee6e7
Fix cancel signal being ignored if sent quickly
2023-09-25 16:32:12 +10:00
Damien Elmes
e0399bcad2
Allow cards with no learning history when not training
2023-09-25 15:57:35 +10:00
Damien Elmes
baae685dbb
UI tweaks
...
https://forums.ankiweb.net/t/anki-23-10-beta-1/34912/19
2023-09-25 15:54:18 +10:00
Damien Elmes
e6aaeb85e9
Expose memory state computation to Python
...
Closes #2676
2023-09-25 11:05:47 +10:00
Damien Elmes
03edb7bf9e
Store desired retention in card data
...
If we want to be able to factor the desired retention into a sort based
on relative overdueness, having the values accessible on the card makes
things easier.
2023-09-23 15:42:42 +10:00
Damien Elmes
6074865763
Calculate parameters automatically
...
Logic derived from d8e2f6a0ff
Closes #2661
2023-09-18 16:43:36 +10:00
Damien Elmes
59759b468f
Start on a 'get params' button
2023-09-17 12:58:13 +10:00
Damien Elmes
25d5e56397
Clear memory state when user disables FSRS
2023-09-17 11:50:38 +10:00
Damien Elmes
0301ae1d8a
fsrs_memory_state -> memory_state
2023-09-17 11:50:38 +10:00
Damien Elmes
5004cd332b
Integrate FSRS into Anki ( #2654 )
...
* Pack FSRS data into card.data
* Update FSRS card data when preset or weights change
+ Show FSRS stats in card stats
* Show a warning when there's a limited review history
* Add some translations; tweak UI
* Fix default requested retention
* Add browser columns, fix calculation of R
* Property searches
eg prop:d>0.1
* Integrate FSRS into reviewer
* Warn about long learning steps
* Hide minimum interval when FSRS is on
* Don't apply interval multiplier to FSRS intervals
* Expose memory state to Python
* Don't set memory state on new cards
* Port Jarret's new tests; add some helpers to make tests more compact
https://github.com/open-spaced-repetition/fsrs-rs/pull/64
* Fix learning cards not being given memory state
* Require update to v3 scheduler
* Don't exclude single learning step when calculating memory state
* Use relearning step when learning steps unavailable
* Update docstring
* fix single_card_revlog_to_items (#2656 )
* not need check the review_kind for unique_dates
* add email address to CONTRIBUTORS
* fix last first learn & keep early review
* cargo fmt
* cargo clippy --fix
* Add Jarrett to about screen
* Fix fsrs_memory_state being initialized to default in get_card()
* Set initial memory state on graduate
* Update to latest FSRS
* Fix experiment.log being empty
* Fix broken colpkg imports
Introduced by "Update FSRS card data when preset or weights change"
* Update memory state during (re)learning; use FSRS for graduating intervals
* Reset memory state when cards are manually rescheduled as new
* Add difficulty graph; hide eases when FSRS enabled
* Add retrievability graph
* Derive memory_state from revlog when it's missing and shouldn't be
---------
Co-authored-by: Jarrett Ye <jarrett.ye@outlook.com>
2023-09-16 16:09:26 +10:00
Damien Elmes
0c6e3eaa93
Integrate the FSRS optimizer ( #2633 )
...
* Support searching for deck configs by name
* Integrate FSRS optimizer into Anki
* Hack in a rough implementation of evaluate_weights()
* Interrupt calculation if user closes dialog
* Fix interrupted error check
* log_loss/rmse
* Update to latest fsrs commit; add progress info to weight evaluation
* Fix progress not appearing when pretrain takes a while
* Update to latest commit
2023-09-05 18:45:05 +10:00