Iteration schemes provide finer-grained control over how the optimiser explores its solution space. An iteration scheme allows a single invocation of the optimiser to be split into a sequence of “batches”, where each batch runs for a specified number of iterations with a specified maximum neighbourhood size. In the absence of an iteration scheme the optimiser will run with a single fixed maximum neighbourhood size for all of the iterations.
An example iteration scheme is:
In this scheme, the optimiser will run for a total of 7000 iterations. For the first 1000 iterations the optimiser will use a maximum neighbourhood size of 200; for the next 2000 it will use a maximum neighbourhood size of 150; for the last 4000 it will use a maximum neighbourhood size of 100.
Using an iteration scheme may improve performance as the optimiser is allowed a greater degree of freedom in the choices it makes at the beginning of a batch. Having multiple batches effectively increases the amount of time that the optimiser is afforded this greater degree of freedom.
Reducing the maximum neighbourhood size in later batches (as in the above example) reduces the likelihood of the optimiser straying too far from a good solution and failing to find any further improvements.