/** * 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); }
@Override public ImmutableList<AddParcelEvent> generate(long seed, TravelTimes travelModel, long endTime) { rng.setSeed(seed); final ImmutableList.Builder<AddParcelEvent> eventList = ImmutableList .builder(); final List<Double> times = announceTimeGenerator.generate(rng.nextLong()); final ImmutableList.Builder<Point> locsB = ImmutableList.builder(); for (int i = 0; i < times.size() * 2; i++) { locsB.add(graph.getRandomNode(rng)); } final Iterator<Point> locs = locsB.build().iterator(); for (final double time : times) { final long arrivalTime = DoubleMath.roundToLong(time, RoundingMode.FLOOR); final Point origin = locs.next(); final Point destination = locs.next(); checkEndTime(time, endTime); final Parcel.Builder parcelBuilder = Parcel .builder(origin, destination) .orderAnnounceTime(arrivalTime) .pickupDuration(pickupDurationGenerator.get(rng.nextLong())) .deliveryDuration(deliveryDurationGenerator.get(rng.nextLong())) .neededCapacity(neededCapacityGenerator.get(rng.nextLong())); timeWindowGenerator.generate(rng.nextLong(), parcelBuilder, travelModel, endTime); eventList.add(AddParcelEvent.create(parcelBuilder.buildDTO())); } return eventList.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); }
@Override public ImmutableList<AddParcelEvent> generate(long seed, TravelTimes travelModel, long endTime) { rng.setSeed(seed); final ImmutableList.Builder<AddParcelEvent> eventList = ImmutableList .builder(); final List<Double> times = announceTimeGenerator.generate(rng.nextLong()); final Iterator<Point> locs = locationGenerator.generate(rng.nextLong(), times.size() * 2).iterator(); for (final double time : times) { final long arrivalTime = DoubleMath.roundToLong(time, RoundingMode.FLOOR); final Point origin = locs.next(); final Point destination = locs.next(); checkEndTime(time, endTime); final Parcel.Builder parcelBuilder = Parcel .builder(origin, destination) .orderAnnounceTime(arrivalTime) .pickupDuration(pickupDurationGenerator.get(rng.nextLong())) .deliveryDuration(deliveryDurationGenerator.get(rng.nextLong())) .neededCapacity(neededCapacityGenerator.get(rng.nextLong())); timeWindowGenerator.generate(rng.nextLong(), parcelBuilder, travelModel, endTime); eventList.add(AddParcelEvent.create(parcelBuilder.buildDTO())); } return eventList.build(); }
@Test public void scenarioGeneration() { final ScenarioGenerator scenGen = ScenarioGenerator.builder() .parcels(Parcels.builder() .announceTimes( TimeSeries.nonHomogenousPoisson(scenarioLengthMs - 30 * 60 * 1000L,
.parcels( Parcels .builder() .announceTimes( TimeSeries.homogenousPoisson(4 * 60 * 60 * 1000L, 10))