fsrs4anki-helper icon indicating copy to clipboard operation
fsrs4anki-helper copied to clipboard

[Enhancement] Maintain the downward trend of review burden when applying Easy Days

Open user1823 opened this issue 4 months ago • 6 comments

Almost every day, my Future Due graph looks like the following. image Here, you can see a downward trend in the number of due cards. But actually, my review burden remains roughly constant. The reason is that I do some new cards every day and fail some review cards. These cards get short intervals and increase the review load on the subsequent days so that it becomes roughly equal to that today.

In short, my review load remains constant despite not using the load balancing feature of the add-on.

But, if I apply Easy Day to a specific date (say, 3rd March) with a review percentage of say, 80%, I get a Future Due graph like the following:

image

Look how it has "postponed" many cards so that the review load remains roughly equal on all days in the range. You can see that even the number of cards due in 1 months has decreased. So, some cards are postponed that far (they must be having a large fuzz range though).

This graph gives the impression that the add-on has balanced my review load, but it has not. Once I do some new cards or fail some cards, the cards due on future days (say, a week later) would become greater than the days in the near future (say, 3 days from now).

If you are wondering what happens if I apply Easy Day to tomorrow, this is what happens: image

This is not a significant problem if I was using the load balancer every day because it would continuously adjust the number of due cards to keep them roughly constant (it is still wasteful, though). However, if I use it just once (say, to apply Easy Days to a specific busy day), the load balancer "unnecessarily" postpones many of my reviews causing my workload to become higher in the future.

The following drawing summarizes what I want the load balancer to do: image

When Easy Days is applied, it can do something like this: image

user1823 avatar Feb 25 '24 17:02 user1823

Because apply easy days to specific date only reschedules a set of cards due in a fixed time windows.

L-M-Sherlock avatar Feb 26 '24 02:02 L-M-Sherlock

Because apply easy days to specific date only reschedules a set of cards due in a fixed time windows.

Sorry for the late reply.

There are two issues here:

  1. The load balancer is trying to flatten the curve, which is not ideal. It should just try to smoothen it rather than flattening it (as shown in my drawing).
  2. When Easy Days on specific date is applied, the above issue causes the Future Due graph to take a weird shape because only some cards are rescheduled.

Firstly, let me show that the problem exists even when ALL the cards are rescheduled.

My Future Due graph today looks like the following: image

If I press "Reschedule all cards" after enabling load balancer, it looks like the following: image

You can see that the load balancer reduced my tomorrow's review load from 148 reviews to 95 reviews because it "thinks" that the load is more balanced now. But actually, it is the opposite as I explained in my previous comment (when I do more new cards and fail some review cards, the future due count will increase).

By the way, the rescheduling changed my burden in FSRS Stats from 149 to 140. This also suggests that I should be doing around 140 reviews per day, not just 95 reviews.

Frankly speaking, I think that the current load balancer is useless because of this behavior. Something like https://github.com/lune-stone/anki-addon-limit-new-by-young may benefit the users more (thank you @aleksejrs for linking it above).

Now, let's come to the issue of Easy Days. The above behavior of the load balancer is directly responsible for causing weird Future Due graph when Easy Days are applied to specific dates. To correct this, an approach similar to my drawing in the previous comment can be used.

user1823 avatar Feb 27 '24 17:02 user1823

The mechanism of load balance is to reschedule each card to the day within their fuzz range that has the fewest reviews. When you reschedule all cards, the fuzz ranges of cards are slightly overlapped. Due to the tendency of decreasing of reviews in the future, the result of load balance is more like smoothen instead flatten. However, when we apply easy days to the specific dates, the cards in the time windows is likely to be rescheduled out of the time windows, but the cards out of the window cannot be rescheduled into it. It's the main cause of current issue. But I have no idea to solve it without coming up with a new method for load balance.

L-M-Sherlock avatar Feb 28 '24 02:02 L-M-Sherlock

But I have no idea to solve it without coming up with a new method for load balance.

Then, let's add a Help Wanted label to attract more people who can give their inputs.

user1823 avatar Feb 28 '24 06:02 user1823

I can work on this.

d-jason32 avatar Mar 15 '24 23:03 d-jason32

Go ahead

user1823 avatar Mar 16 '24 14:03 user1823