How to use the next-generation spaced repetition algorithm FSRS on Anki?

If you look at the review history of that card on each device, does everything match? It sounds like your devices may not be fully in sync. After syncing normally, please force a one-way sync in the preferences screen and download from AnkiWeb - does that resolve the issue?

Fixed. The one-way sync did the trick. If I ever update FSRS on my desktop, should I always one-way sync? Each time I tested I did a regular sync, I’m not sure what one-way is changing.

Also, can I safely disable display_memory_state now? I’m assuming that was just to verify that FSRS was on?

1 Like

Provided you’re syncing at the start and end of each session, things should work correctly without having to force changes in one direction: Syncing in Anki: Getting Started - YouTube

I believe display_memory_state is just for debugging, and can be safely removed once you’ve confirmed things are working.

1 Like

Yep, it is disable in default. Feel free to disable it.

1 Like

I have questions about setting this up for deck specific parameters (note: I don’t use subdecks).

  1. In the code that is supposed to be pasted into each card’s front template (image 1) - should the word Deck literally say Deck, or should it say the name of the deck that I want (i.e. Spanish)

  2. In image 1 it says/shows to insert that code onto the front template, and in the screenshot it is under the field name at the bottom. In image 2 it says to insert that code as the first line of the front template. Does this matter?

  3. Does the location of the Deck code snippet (image 1) change if:
    a) I have a conditional card template (see image 3 for an example) i.e. should the snippet go between the #field and /field; and if so, does it need to be the first line or can it be the last?
    – OR –
    b) if I have a card template that utilizes a script in it. i.e should it go between script and /script, and if so should it be the first line or can it be the last?

  4. For each deck that I want specific parameters, will I just repeat the part of the code in image 2 where the top red arrow is pointing — if (deck_name== etc etc etc hardInterval = 1.2; — for each deck? What happens to a deck’s scheduling if I do not specify its parameters here (i.e. I have 3 decks but only want two of them to be affected).

Image 1

Image 2

Image 3

image

3 posts were split to a new topic: Custom scheduling sometimes doesn’t run

  1. It means the word Deck literally says Deck. Anki will transform it into the name of the deck you want automatically.

  2. The first line is better than the bottom. Because some template code could introduce problems.

  3. The first line is the safest if you don’t know how the template code works.

  4. Those unspecific decks will apply the global parameters.

Thank you, I really appreciate it!

Would cards revert to the V3 scheduler if I took the global parameters out? I have a deck that I do not want altered, but it contains the same card template as my other two decks.

It will cause error. You can fill the deck name into the skip_decks to let FSRS skip the deck.

2 Likes

Hello, I’m trying to build my “new(Currently no cards have been added)” deck with using FSRS.

Now I will be adding new cards every day and learning.

Wouldn’t I need to add a parameter to my deck in this case? Or should I periodically use review logs to calculate parameters and then update them?

I recommend using the default parameters for a month and then using the optimizer to generate adaptive parameters from your review logs.

1 Like

Thanks, I’ll do that. I will use the default parameters for the first month, and update the parameters every month thereafter.

It would be better if the parameters were automatically updated as learning progressed, but it seems difficult due to various limitations.

Anyway, FSRS seems to be a very efficient algorithm. thank you for your effort.

2 Likes

After running the optimizer to get new parameters, is it recommended to run the rescheduler? I’m approaching 1 month of being on my old parameters from the first time I ran the optimizer.

Yep, rescheduling with the new parameters will make your schedule more accurate.

1 Like

Thanks for your work on the scheduler. I’ve been using it on a brand new deck of well over 10,000 cards with material which starts very easy and gets progressively more and more difficult. I’m doing new cards at quite a high rate so the difficulty curve is fairly steep and new cards introduced now are going to be significantly easier than the new cards that will be introduced in a month. Do you still recommend rescheduling with new parameters only once a month in this situation? It seems like more aggressive rescheduling, say once a week for example, might be more appropriate given the variation in difficulty, but I’m not sure.

You can reschedule with higher frequency if you review a lot per day.

1 Like

Hello, I would like to ask you how exactly the parameters are configured. I have read the “Usage” but I have some doubts.

It is clear that I have to paste the parameters from the scheduler and launch the optimizer following the guide. That will give me the “var w =” which is the only thing I need.
Can I get any useful data from the rest of the code, should I use the “suggested retention (experimental)” value?
What exactly does the helper do, does it reschedule the scheduler? Now, every time a new version comes out, I copy the data from the new scheduler, re-run the optimizer and then hit reschedule all cards. Is that how I’m supposed to do it? If I have the helper, I don’t need to update the scheduler with every new version?
Should I only reschedule the cards once unless I update the parameters by running the optimizer again with new data? If I do it more than once the rework increases a lot.
About the retention request, do any of these scripts give me the right retention parameter or should I choose one after simulating different options in the simulator?

Thanks for answering my questions and for all the work behind this project

2 Likes

The suggested retention is experimental, so you can ignore it. The retention depends on your goal in the SRS.

The helper could reschedule the existing cards with FSRS. If you haven’t updated the parameters, it take no effect to reschedule (except the first time).

It is beneficial to reschedule if you update the parameters.

I recommend using the simulator to check the request retention.

2 Likes

I hope that we can support Anki on iPhone.

As far as I know FSRS is already supported in the Anki app for iphone.