Base class

public abstract class Iteration {}

It defines when the optimization process should be stopped.

public abstract bool StopCondition();

It defines when to move to the next optimization iteration, and what should be done before proceeding to the next iteration. In general, you should update the current iteration counter and the temperature of the optimization.

public abstract void NextIteration();

Initialization before the optimization starts. In general, you should initialize the current iteration counter and the temperature.

public abstract void Init();