A single move cache only stores the last evaluation and validation that were offered to the cache.
Any previously cached value is immediately discarded and replaced with the new value. In general,
most neighbourhood searches select a single candidate move (random, best, ...) from the neighbourhood
in every step and then just decide whether or not to apply it to the current solution. Therefore, a
single move cache can be used to effectively cache the evaluation and validation of this candidate
move with minor memory overhead.
This is the default cache of any neighbourhood search.