Org-Drill has several settings which you change using
M-x customize-group org-drill <RET>
. Alternatively you can change these
settings by adding elisp code to your configuration file (.emacs
).
Org-Drill prioritises overdue items in each drill session, presenting them before other items are seen. Overdue items are defined in terms of how far in the past the item is scheduled for review. The threshold is defined in terms of a proportion rather than an absolute number of days. If days overdue is greater than
last-interval * (factor - 1)
and is at least one day overdue, then the item is considered 'overdue'. The default factor is 1.2, meaning that the due date can overrun by 20% before the item is considered overdue.
To change the factor that determines when items become overdue, use something like the following in your .emacs. Note that the value should never be less than 1.0.
(setq org-drill-overdue-interval-factor 1.1)
After prioritising overdue items, Org-Drill next prioritises young items. These are items which were recently learned (or relearned in the case of a failure), and which therefore have short inter-repetition intervals. "Recent" is defined as an inter-repetition interval less than a fixed number of days, rather than a number of repetitions. This ensures that more difficult items are reviewed more often than easier items before they stop being 'young'.
The default definition of a young item is one with an inter-repetition interval of 10 days or less. To change this, use the following:
(setq org-drill-days-before-old 7)
Org-Drill supports three different spaced repetition algorithms, all based on SuperMemo algorithms. These are:
- SM2: an early algorithm, used in SuperMemo 2.0 (1988), which remains very popular – Anki and Mnemosyne, two of the most popular spaced repetition programs, use SM2. This algorithm stores an 'ease factor' for each item, which is modified each time you rate your recall of the item.
- SM5 (default): used in SuperMemo 5.0 (1989). This algorithm uses 'ease factors' but also uses a persistent, per-user 'matrix of optimal factors' which is also modified after each item repetition.
- Simple8: an experimental algorithm based on the SM8 algorithm. SM8 is used in SuperMemo 8.0 (1998) and is almost identical to SM11 which is used in SuperMemo 2002. Like SM5, it uses a matrix of optimal factors. Simple8 differs from SM8 in that it does not adapt the matrix to the individual user, though it does adapt each item's 'ease factor'.
If you want Org-Drill to use the SM2
algorithm, put the following in your
.emacs
:
(setq org-drill-spaced-repetition-algorithm 'sm2)
The intervals generated by the SM2 and SM5 algorithms are pretty deterministic. If you tend to add items in large, infrequent batches, the lack of variation in interval scheduling can lead to the problem of "lumpiness" – one day a large batch of items are due for review, the next there is almost nothing, a few days later another big pile of items is due, and so on.
This problem can be ameliorated by adding some random "noise" to the interval scheduling algorithm. The author of SuperMemo actually recommends this approach for the SM5 algorithm, and Org-Drill's implementation uses his code.
To enable random "noise" for item intervals, set the variable
org-drill-add-random-noise-to-intervals-p
to true by putting the following in
your .emacs
:
(setq org-drill-add-random-noise-to-intervals-p t)
Reviewing items earlier or later than their scheduled review date may affect how soon the next review date should be scheduled. Code to make this adjustment is also presented on the SuperMemo website. It can be enabled with:
(setq org-drill-adjust-intervals-for-early-and-late-repetitions-p t)
This will affect both early and late repetitions if the Simple8 algorithm is used. For the SM5 algorithm it will affect early repetitions only. It has no effect on the SM2 algorithm.
In the SM5 algorithm, the initial interval after the first successful presentation of an item is always 4 days. If you wish to change this for some reason, you can do so with:
(setq org-drill-sm5-initial-interval 5.0)
note that this will have no effect if you are not using the SM5 algorithm.
The learn fraction
is a global value which affects how quickly the intervals
(times between each retest of an item) increase with successive repetitions,
for all items. The default value is 0.5, and this is the value used in
SuperMemo. For some collections of information, you may find that you are
reviewing items too often (they are too easy and the workload is too high), or
too seldom (you are failing them too often). In these situations, it is
possible to alter the learn fraction from its default in order to increase or
decrease the frequency of repetition of items over time. Increasing the value
will make the time intervals grow faster, and lowering it will make them grow
more slowly. The table below shows the growth in intervals (in days) with some
different values of the learn fraction (F). The table assumes that the item is
successfully recalled each time, with an average quality of just under 4.
Repetition | F=0.3 | F=0.4 | **F=0.5** | F=0.6 | F=0.7 |
---|---|---|---|---|---|
1st | 2 | 2 | 2 | 2 | 2 |
2nd | 7 | 7 | 7 | 7 | 7 |
5th | 26 | 34 | 46 | 63 | 85 |
10th | 85 | 152 | 316 | 743 | 1942 |
15th | 233 | 501 | 1426 | 5471 | 27868 |
To alter the learn fraction, put the following in your .emacs:
(setq org-drill-learn-fraction 0.45) ; change the value as desired
Org-Drill is written by Paul Sexton.