static ImmutableList<Double> measureLoad(Scenario s, int numVehicles) { final TravelTimes tt = ScenarioGenerator.createTravelTimes(s); final ImmutableList.Builder<LoadPart> loadParts = ImmutableList.builder(); for (final TimedEvent te : s.getEvents()) { if (te instanceof AddParcelEvent) { loadParts.addAll(measureLoad((AddParcelEvent) te, tt)); } } return sum(0, loadParts.build(), numVehicles); }
/** * Checks the time window strictness of the specified {@link Scenario}. A time * window is strict if: * <ul> * <li><code>dtw.begin ≥ ptw.begin + pd + travelTime</code></li> * <li><code>ptw.end + pd + travelTime ≤ dtw.end</code></li> * </ul> * Where: * <ul> * <li><code>dtw</code> is {@link ParcelDTO#getDeliveryTimeWindow()}</li> * <li><code>ptw</code> is {@link ParcelDTO#getPickupTimeWindow()}</li> * <li><code>pd</code> is {@link ParcelDTO#getPickupDuration()}</li> * <li><code>travelTime</code> is the time to travel the shortest path from * {@link ParcelDTO#getPickupLocation()} to * {@link ParcelDTO#getDeliveryLocation()}</li> * </ul> * * @param s The scenario to check. */ public static void checkTimeWindowStrictness(Scenario s) { final TravelTimes tt = ScenarioGenerator.createTravelTimes(s); for (final TimedEvent te : s.getEvents()) { if (te instanceof AddParcelEvent) { checkParcelTWStrictness((AddParcelEvent) te, tt); } } }
b.addAll(vehicles); final TravelTimes tm = createTravelTimes(modelBuilders, getTimeUnit(), depots, vehicles);