@Override public void run() { // gather data from provider final DataProvider dataProvider = getDataProvider(); checkNotNull( dataProvider, "Probable problem: your MASConfiguration/ObjectiveFunction/" + "PostProcessor is not fully serializable."); final Supplier<Scenario> scenario = getDataProvider().getParameter(scenarioId); final MASConfiguration configuration = getDataProvider().getParameter(configurationId); final ObjectiveFunction objectiveFunction = getDataProvider().getParameter(objectiveFunctionId); final PostProcessor<?> postProcessor = getDataProvider().getParameter(postProcessorId); final Scenario s = scenario.get(); final SimArgs simArgs = SimArgs.create(s, configuration, seed, objectiveFunction, false, postProcessor, null); final Object simResult = Experiment.perform(simArgs); checkArgument( simResult instanceof Serializable, "Your PostProcessor must generate Serializable objects, found %s.", simResult); setResult(simResult); }