@Test public void scenarioGeneration() { final ScenarioGenerator scenGen = ScenarioGenerator.builder() .parcels(Parcels.builder() .announceTimes( TimeSeries.nonHomogenousPoisson(scenarioLengthMs - 30 * 60 * 1000L, .buildNormal()) .build()) .vehicles( Vehicles.homogenous( VehicleDTO.builder() .build(), 12)) .scenarioLength(scenarioLengthMs) .setStopCondition(StatsStopConditions.timeOutEvent()) .addModel(PDPRoadModel.builder(RoadModelBuilders.plane())) .addModel(DefaultPDPModel.builder()) .build();
final ImmutableList<AddVehicleEvent> vehicles = vehicleGenerator.generate( rng.nextLong(), parcelGenerator.getCenter(), builder.getTimeWindow().end()); b.addAll(vehicles); builder.getTimeWindow().end())); b.addAll(gen.generate(rng.nextLong(), builder.getTimeWindow().end())); b.add(TimeOutEvent.create(builder.getTimeWindow().end()));
final ScenarioGenerator generator = ScenarioGenerator .builder(TestPC.CLASS_A) .scenarioLength(4 * 60 * 60 * 1000L) .setStopCondition( StopConditions.and( StatsStopConditions.anyTardiness(), StatsStopConditions.timeOutEvent())) .parcels( Parcels .builder() .build()) .addModel( PDPRoadModel.builder( RoadModelBuilders.plane() .withMaxSpeed(50d)) .withAllowVehicleDiversion(true)) .addModel( DefaultPDPModel.builder() .withTimeWindowPolicy(TimeWindowPolicies.TARDY_ALLOWED)) .build();
final Scenario generatedScenario = ScenarioGenerator .builder() .addModel( PDPRoadModel.builder( RoadModelBuilders.plane() .withMaxSpeed(20d)) .withAllowVehicleDiversion(true)) .addModel( DefaultPDPModel.builder() .withTimeWindowPolicy(TimeWindowPolicies.LIBERAL)) .setStopCondition(StatsStopConditions.timeOutEvent()) .build().generate(rng, "hoi");
@Test public void createPDPScenarioGeneratorTest() { final ModelBuilder<? extends RoadModel, ? extends RoadUser> roadModelBuilder = RoadModelBuilders .dynamicGraph(ListenableGraph.supplier(TableGraph.supplier())) .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR) .withDistanceUnit(SI.METER); final ScenarioGenerator sg = ScenarioGenerator.builder().addModel( PDPDynamicGraphRoadModel.builderForDynamicGraphRm( (ModelBuilder<? extends DynamicGraphRoadModel, ? extends RoadUser>) roadModelBuilder) .withAllowVehicleDiversion(true)) .build(); assertEquals(SI.METER, sg.getDistanceUnit()); assertEquals(NonSI.KILOMETERS_PER_HOUR, sg.getSpeedUnit()); }
@Test public void createPlaneScenarioGeneratorTest() { final ModelBuilder<? extends RoadModel, ? extends RoadUser> roadModelBuilder = RoadModelBuilders .plane() .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR) .withDistanceUnit(SI.METER); final ScenarioGenerator sg = ScenarioGenerator.builder().addModel( roadModelBuilder) .build(); assertEquals(SI.METER, sg.getDistanceUnit()); assertEquals(NonSI.KILOMETERS_PER_HOUR, sg.getSpeedUnit()); } }
@Test public void createGraphScenarioGeneratorTest() { final ModelBuilder<? extends RoadModel, ? extends RoadUser> roadModelBuilder = RoadModelBuilders .dynamicGraph(ListenableGraph.supplier(TableGraph.supplier())) .withSpeedUnit(NonSI.KILOMETERS_PER_HOUR) .withDistanceUnit(SI.METER); final ScenarioGenerator sg = ScenarioGenerator.builder().addModel( roadModelBuilder) .build(); assertEquals(SI.METER, sg.getDistanceUnit()); assertEquals(NonSI.KILOMETERS_PER_HOUR, sg.getSpeedUnit()); }
/** * Create a {@link Builder} for constructing {@link ScenarioGenerator}s. * @return The builder. */ public static Builder builder() { return new Builder(Scenario.DEFAULT_PROBLEM_CLASS); }
/** * @return Constructs a new {@link ScenarioGenerator} instance based on this * builder. */ public ScenarioGenerator build() { return new ScenarioGenerator(new Builder(this)); } }
/** * Create a {@link Builder} for constructing {@link ScenarioGenerator}s. * @param problemClass The {@link ProblemClass} of the scenarios that will be * generated by the generator under construction. * @return The builder. */ public static Builder builder(ProblemClass problemClass) { return new Builder(problemClass); }
/** * @return The time window of generated scenarios. */ public TimeWindow getTimeWindow() { return builder.getTimeWindow(); }