public static Simulator init(Scenario scenario, MASConfiguration config, long seed) { return Experiment.init(scenario, config, seed, false, Optional.<ModelBuilder<?, ?>>absent()); }
containsStatisticsProvider(scenContrBuilder.getChildren()) || containsStatisticsProvider(config.getModels());
@Override public SimulationResult call() { final Object resultObject = Experiment.perform(arguments); final SimulationResult result = SimulationResult.create(arguments, resultObject); return result; } }
/** * Checks determinism of two subsequent identical JPPF experiments. */ @Test public void determinismJppfVsJppf() { final List<Integer> ints = asList(1, 2, 5, 10); final List<ExperimentResults> allResults = newArrayList(); final Experiment.Builder experimentBuilder = Experiment.builder() .computeDistributed() .addScenario(scenario) .withRandomSeed(123) .repeat(10) .addConfiguration(ExperimentTestUtil.testConfig("A")); for (final int i : ints) { allResults.add( experimentBuilder.numBatches(i) .perform()); } assertEquals(4, allResults.size()); for (int i = 0; i < allResults.size() - 1; i++) { assertEquals(allResults.get(i), allResults.get(i + 1)); } }
public static StatisticsDTO singleRun(Scenario scenario, MASConfiguration c, long seed, ObjectiveFunction objFunc, boolean showGui) { return (StatisticsDTO) Experiment .singleRun(scenario, c, seed, showGui, PostProcessors.statisticsPostProcessor(objFunc), null) .getResultObject(); }
final Scenario s1 = ScenarioTestUtil.createRandomScenario(456L); final MASConfiguration c0 = ExperimentTestUtil.testConfig("c0"); final Experiment.Builder builder = Experiment.builder() .addScenario(s0) .addScenario(s1)
results = Experiment.builder()
public static Simulator init(Scenario scenario, MASConfiguration config, long seed, boolean showGui, ModelBuilder<?, ?> guiBuilder) { return Experiment.init(scenario, config, seed, showGui, Optional.<ModelBuilder<?, ?>>of(guiBuilder)); }
@Override public SimulationResult call() { final Object resultObject = Experiment.perform(arguments); final SimulationResult result = SimulationResult.create(arguments, resultObject); return result; } }
containsStatisticsProvider(scenContrBuilder.getChildren()) || containsStatisticsProvider(config.getModels());
results = Experiment.builder()
static Object perform(SimArgs args) { final Simulator sim = Experiment.init(args.getScenario(), args.getMasConfig(), args.getRandomSeed(), args.isShowGui(), args.getUiCreator()); try { sim.start(); final Object resultObject = args.getPostProcessor().collectResults(sim, args); checkNotNull(resultObject, "PostProcessor may not return null."); return resultObject; } catch (final Exception e) { final FailureStrategy strategy = args.getPostProcessor().handleFailure(e, sim, args); checkNotNull(strategy, "An exception (%s) occured in the simulation but the PostProcessor %s " + "failed to handle the failure.", e.toString(), args.getPostProcessor()); if (strategy == FailureStrategy.INCLUDE) { return args.getPostProcessor().collectResults(sim, args); } else if (strategy == FailureStrategy.ABORT_EXPERIMENT_RUN) { throw new AbortExperimentException("Failed: " + args, e); } return strategy; } }
@Override public void run() { // gather data from provider final DataProvider dataProvider = getDataProvider(); checkNotNull( dataProvider, "Probable problem: your MASConfiguration/PostProcessor may not be " + "fully serializable."); final Supplier<Scenario> scenario = getDataProvider().getParameter( scenarioId); final MASConfiguration configuration = getDataProvider().getParameter( configurationId); final PostProcessor<?> postProcessor = getDataProvider().getParameter( postProcessorId); final Scenario s = scenario.get(); final SimArgs simArgs = SimArgs.create(s, configuration, seed, repetition, false, postProcessor, null); Object simResult; do { simResult = Experiment.perform(simArgs); } while (simResult == FailureStrategy.RETRY); checkArgument(simResult instanceof Serializable, "Your PostProcessor must generate Serializable objects, found %s.", simResult); setResult(simResult); }
final MASConfiguration c0 = ExperimentTestUtil.testConfig("c0"); final MASConfiguration c1 = ExperimentTestUtil.testConfig("c1"); final Experiment.Builder builder = Experiment.builder() .addScenario(s0) .addScenario(s1)
static Object perform(SimArgs args) { final Simulator sim = Experiment.init(args.getScenario(), args.getMasConfig(), args.getRandomSeed(), args.isShowGui(), args.getUiCreator()); try { sim.start(); final Object resultObject = args.getPostProcessor().collectResults(sim, args); checkNotNull(resultObject, "PostProcessor may not return null."); return resultObject; } catch (final Exception e) { final FailureStrategy strategy = args.getPostProcessor().handleFailure(e, sim, args); checkNotNull(strategy, "An exception (%s) occured in the simulation but the PostProcessor %s " + "failed to handle the failure.", e.toString(), args.getPostProcessor()); if (strategy == FailureStrategy.INCLUDE) { return args.getPostProcessor().collectResults(sim, args); } else if (strategy == FailureStrategy.ABORT_EXPERIMENT_RUN) { throw new AbortExperimentException("Failed: " + args, e); } return strategy; } }
@Override public void run() { // gather data from provider final DataProvider dataProvider = getDataProvider(); checkNotNull( dataProvider, "Probable problem: your MASConfiguration/PostProcessor may not be " + "fully serializable."); final Supplier<Scenario> scenario = getDataProvider().getParameter( scenarioId); final MASConfiguration configuration = getDataProvider().getParameter( configurationId); final PostProcessor<?> postProcessor = getDataProvider().getParameter( postProcessorId); final Scenario s = scenario.get(); final SimArgs simArgs = SimArgs.create(s, configuration, seed, repetition, false, postProcessor, null); Object simResult; do { simResult = Experiment.perform(simArgs); } while (simResult == FailureStrategy.RETRY); checkArgument(simResult instanceof Serializable, "Your PostProcessor must generate Serializable objects, found %s.", simResult); setResult(simResult); }
/** * Test of {@link RandomMVArraysSolver} using the * {@link com.github.rinde.rinsim.central.arrays.MultiVehicleArraysSolver} * interface. */ @Test public void test() { Experiment.builder() .addScenario(scenario) .addConfiguration( Central.solverConfiguration(RandomMVArraysSolver.solverSupplier())) .repeat(!offline && allowDiversion ? 2 : 1) .perform(); }
/** * Tests default processor. */ @Test public void testDefaultPostProcessor() { final Scenario scenario = ScenarioTestUtil.createRandomScenario(123L, StatsTracker.builder()); final Experiment.Builder builder = Experiment .builder() .addScenario(scenario) .addConfiguration(ExperimentTestUtil.testConfig("test")) .withRandomSeed(123); final ExperimentResults er = builder.perform(); assertThat(er.getResults().asList().get(0).getResultObject()) .isInstanceOf(String.class); assertThat(er.getResults().asList().get(0).getResultObject()) .isEqualTo("simulation duration: 10801000"); }
@Test public void testRetryPostProcessor() { final Experiment.Builder builder = Experiment.builder() .addScenario(scenario) .computeDistributed() .addConfiguration(ExperimentTestUtil.testConfig("test")) .usePostProcessor(ExperimentTestUtil.retryOncePostProcessor()) .repeat(3) .withRandomSeed(123); final ExperimentResults er = builder.perform(); for (int i = 0; i < er.getResults().size(); i++) { assertThat(er.getResults().asList().get(0).getResultObject()) .isEqualTo("SUCCESS"); } }
/** * Test correct handling of failure during simulation. */ @Test public void testDefaultPostProcessorFailure() { final Scenario scenario = ScenarioTestUtil.createRandomScenario(123L, StatsTracker.builder(), FailureModel.builder()); final Experiment.Builder builder = Experiment.builder() .addScenario(scenario) .addConfiguration(ExperimentTestUtil.testConfig("test")) .withThreads(1) .repeat(3) .withRandomSeed(123); boolean fail = false; try { builder.perform(); } catch (final AbortExperimentException e) { assertThat(e.getCause().getMessage()).contains("FailureModel"); fail = true; } assertThat(fail).isTrue(); }