class AbstractOptimizer implements Optimizer {

	@Override
	public void startOptimization() {
		optimizing = true;
		for (OptimizerStateListener listener : stateListeners) {
			listener.optimizationStarted(this);
		}
		try {
			optimize();
		} catch (StopException e) {
			System.out.println("Optimization stopped.");
		} catch (TerminationException e) {
			System.err.println("Optimization terminated.");
		} finally {
			stopOptimization();
		}
	}

	public  AbstractOptimizer(Population population, Archive archive, IndividualCompleter completer, Control control,
			Iteration iteration);

}