Basis class
public abstract class Iteration {}
It defines when should stop this phase.
public abstract bool StopCondition();
It defines when move to the next iteration, what you should do? In general, you should update the current iteration counter and the temperature.
public abstract void NextIteration();
Initialization before the phase start. In general, you should reset the current iteration counter and the temperature.
public abstract void Init();