final ScenarioGenerator scenGen = ScenarioGenerator.builder() .parcels(Parcels.builder() .announceTimes( TimeSeries.nonHomogenousPoisson(scenarioLengthMs - 30 * 60 * 1000L, IntensityFunctions.sineIntensity() .area(10) .build())) .locations(Locations.builder() .min(new Point(0, 0)) .max(new Point(10, 10)) .redrawWhenOutOfBounds() .buildNormal()) .build()) .vehicles( Vehicles.homogenous(
Parcels .builder() .announceTimes( TimeSeries.homogenousPoisson(4 * 60 * 60 * 1000L, 10)) .locations(Locations.builder().square(5).buildUniform()) .timeWindows(TimeWindows.builder().build()) .build())
/** * Tests whether all generated times are in the interval [0,length). */ @Test public void timesTest() { final int scenarioLength = 10; final ParcelGenerator pg = Parcels.builder() .announceTimes(TimeSeries.homogenousPoisson(scenarioLength, 100)) .build(); final List<AddParcelEvent> events = pg.generate(123, TravelTimesUtil.distance(), scenarioLength); for (final AddParcelEvent ape : events) { assertTrue(ape.getTime() < scenarioLength); } TestUtil.testPrivateConstructor(Parcels.class); }
/** * Tests whether times which are outside the interval [0,length) are correctly * rejected. */ @Test(expected = IllegalArgumentException.class) public void timesFail() { final int scenarioLength = 10; final ParcelGenerator pg2 = Parcels .builder() .announceTimes( TimeSeries.homogenousPoisson(scenarioLength + 0.1, 100)) .build(); pg2.generate(123, TravelTimesUtil.distance(), scenarioLength); }
/** * @return A new {@link Builder} for creating {@link ParcelGenerator}s. */ public static Builder builder() { return new Builder(); }
/** * Sets the durations of the parcel pickup and delivery operations. * @param durations The supplier to draw the durations from. * @return This, as per the builder pattern. */ public Builder serviceDurations(StochasticSupplier<Long> durations) { return pickupDurations(durations).deliveryDurations(durations); }