This is primarily intended for @Kumirei :
I’m coming to the alarming conclusion that the GanbarOmeter gauge might be trying to display something awfully close to what your (infinitely simpler!) Expected Daily Reviews script displays.
I’m still ruminating about a few improvements (read: “unnecessary complications” ) but I’ve got a question about your algorithm.
Forgive me for re-writing it functionally, but your “Expected Daily Reviews” algorithm is as follows:
const srs_interval = [0, 0.5, 1, 1, 2, 7, 14, 30, 120, 0];
const reviewingStages = [1, 2, 3, 4, 5, 6, 7, 8];
const expectedDailyReviews = reviewingStages
.map((stage) => counts[stage] / srs_interval[stage])
.reduce((acc, count) => (acc += count));
If I understand correctly, the srs_interval[]
array effectively contains the number of reviews that items in each stage are likely to contribute to any given daily review queue.
- Each item in stage 1 will likely contribute 1/0.5 = 2 reviews
- Each item in stage 2 will likely contribute 1/1 reviews
- Each item in stage 3 will likely contribute 1/1 reviews
- Each item in stage 4 will likely contribute 1/2 reviews
- Each item in stage 5 will likely contribute 1/7 reviews
- Each item in stage 6 will likely contribute 1/14 reviews
- Each item in stage 7 will likely contribute 1/30 reviews
- Each item in stage 8 will likely contribute 1/120 reviews
These numbers are very close to the scheduling interval for progressing (correctly answered) items.
But why are srs_schedule[1]
0.5 and srs_schedule[2]
1 (instead of 1/6 and 1/3, respectively)?
Is it a heuristic for the fact that few of us perform more than two review sessions in a day? (I only do one session/day myself).