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();