package com.plectix.simulator.simulator.api.steps.experiments;
import com.plectix.simulator.controller.SimulatorInputData;
abstract public class AbstractExperimentRunner implements ExperimentListener {
private Experiment experiment = null;
public AbstractExperimentRunner(SimulatorInputData simulatorInputData) throws Exception {
super();
this.experiment = new Experiment(simulatorInputData);
}
public void run(int numberOfExperiments, int numberOfRuns, ExperimentRunnerListener experimentRunnerListener) {
int experimentNo= 0;
try {
while (experimentNo < numberOfExperiments) {
if (experimentRunnerListener != null) {
experimentRunnerListener.startingExperiment(experimentNo, experiment.getSimulator());
}
// run numberOfRuns simulations:
experiment.run(numberOfRuns, this);
if (experimentRunnerListener != null) {
experimentRunnerListener.finishedExperiment(experimentNo, experiment.getSimulator());
}
experimentNo++;
}
} catch (Exception e) {
e.printStackTrace();
} catch (OutOfMemoryError outOfMemoryError) {
outOfMemoryError.printStackTrace();
System.err.println("Caught an OutOfMemoryError!");
} finally {
if (experimentRunnerListener != null) {
experimentRunnerListener.finishedAllExperiments(experimentNo, experiment.getSimulator());
}
}
}
public final Experiment getExperiment() {
return experiment;
}
}