Builder(ParcelDTO dto) { pickupLocation = dto.getPickupLocation(); deliveryLocation = dto.getDeliveryLocation(); pickupTimeWindow = dto.getPickupTimeWindow(); deliveryTimeWindow = dto.getDeliveryTimeWindow(); neededCapacity = dto.getNeededCapacity(); orderAnnounceTime = dto.getOrderAnnounceTime(); pickupDuration = dto.getPickupDuration(); deliveryDuration = dto.getDeliveryDuration(); toString = null; }
static void checkParcelTWStrictness(AddParcelEvent event, TravelTimes travelTimes) { final long firstDepartureTime = event.getParcelDTO() .getPickupTimeWindow().begin() + event.getParcelDTO().getPickupDuration(); final long latestDepartureTime = event.getParcelDTO() .getPickupTimeWindow().end() + event.getParcelDTO().getPickupDuration(); final double travelTime = travelTimes.getShortestTravelTime( event.getParcelDTO().getPickupLocation(), event.getParcelDTO().getDeliveryLocation()); checkArgument( event.getParcelDTO().getDeliveryTimeWindow().begin() >= firstDepartureTime + travelTime, "The begin of the delivery time window (%s) is too early, " + "should be >= %s.", event.getParcelDTO().getDeliveryTimeWindow(), firstDepartureTime + travelTime); checkArgument( latestDepartureTime + travelTime <= event.getParcelDTO() .getDeliveryTimeWindow().end(), "The end of the pickup time window %s is too late, or end of delivery " + "is too early.", event.getParcelDTO().getPickupTimeWindow().end()); }
/** * Returns an {@link ImmutableList} containing all service points of * {@link Scenario}. The scenario must contain {@link AddParcelEvent}s. * @param s The scenario to extract the points from. * @return A list containing all service points in order of occurrence in the * scenario event list. */ public static ImmutableList<Point> getServicePoints(Scenario s) { final ImmutableList.Builder<Point> builder = ImmutableList.builder(); for (final TimedEvent se : s.getEvents()) { if (se instanceof AddParcelEvent) { builder.add(((AddParcelEvent) se).getParcelDTO().getPickupLocation()); builder.add(((AddParcelEvent) se).getParcelDTO().getDeliveryLocation()); } } return builder.build(); }
GFParcel(ParcelDTO pDto) { super(pDto); pos = pDto.getPickupLocation(); }
@Override public int compare(Visit o1, Visit o2) { final boolean is1pv = o1 instanceof ParcelVisit; final boolean is2pv = o2 instanceof ParcelVisit; if (!is1pv && !is2pv) { return 0; } else if (!is1pv) { return -1; } else if (!is2pv) { return 1; } // is1pv && is2pv final ParcelDTO p1 = ((ParcelVisit) o1).getParcel().getDto(); final ParcelDTO p2 = ((ParcelVisit) o2).getParcel().getDto(); if (p1.equals(p2)) { return 0; } return ComparisonChain.start() // small time windows are more difficult, therefore: reverse ordering .compare( p1.getPickupTimeWindow().length() + p1.getDeliveryTimeWindow().length(), p2.getPickupTimeWindow().length() + p2.getDeliveryTimeWindow().length(), Ordering.natural().reverse()) .result(); }
@Override public final Point getDeliveryLocation() { return dto.getDeliveryLocation(); }
@Override public long getOrderAnnounceTime() { return dto.getOrderAnnounceTime(); }
@Override public final TimeWindow getPickupTimeWindow() { return dto.getPickupTimeWindow(); }
@Override public final TimeWindow getDeliveryTimeWindow() { return dto.getDeliveryTimeWindow(); }
@Override public final long getPickupDuration() { return dto.getPickupDuration(); }
@Override public final long getDeliveryDuration() { return dto.getDeliveryDuration(); }
@Override public final double getNeededCapacity() { return dto.getNeededCapacity(); }
static ImmutableList<LoadPart> measureLoad(AddParcelEvent event, TravelTimes tt) { checkArgument( event.getParcelDTO().getPickupTimeWindow().begin() <= event.getParcelDTO() .getDeliveryTimeWindow().begin(), "Delivery TW begin may not be before pickup TW begin."); checkArgument( event.getParcelDTO().getPickupTimeWindow().end() <= event.getParcelDTO() .getDeliveryTimeWindow().end(), "Delivery TW end may not be before pickup TW end."); final long pickupLb = event.getParcelDTO().getPickupTimeWindow().begin(); final long pickupUb = event.getParcelDTO().getPickupTimeWindow().end() + event.getParcelDTO().getPickupDuration(); final double pickupLoad = event.getParcelDTO().getPickupDuration() / (double) (pickupUb - pickupLb); final LoadPart pickupPart = new LoadPart(pickupLb, pickupUb, pickupLoad); event.getParcelDTO().getPickupLocation(), event.getParcelDTO().getDeliveryLocation()); final long travelLb = pickupLb + event.getParcelDTO().getPickupDuration(); event.getParcelDTO().getDeliveryTimeWindow().end(), travelLb + expectedTravelTime); event.getParcelDTO().getDeliveryTimeWindow().begin(), pickupLb + event.getParcelDTO().getPickupDuration() + expectedTravelTime);
static Point getPos(Parcel parcel, PDPModel model) { if (model.getParcelState(parcel).isPickedUp()) { return parcel.getDto().getDeliveryLocation(); } return parcel.getDto().getPickupLocation(); }
GFParcel(ParcelDTO pDto) { super(pDto); pos = pDto.getPickupLocation(); }
? cur.getDto().getPickupTimeWindow().begin() : cur.getDto().getDeliveryTimeWindow().begin()) - time.getTime(); if (timeUntilReady > 0) {
assertEquals(destination.getDto().getDeliveryLocation(), rm.getPosition(v1)); pm.deliver(v1, p1, TimeLapseFactory.create(0, 1));
/** * Creates a new {@link AddParcelEvent}. * @param dto The {@link ParcelDTO} that describes the parcel. * @return A new instance. */ public static AddParcelEvent create(ParcelDTO dto) { return new AutoValue_AddParcelEvent(dto.getOrderAnnounceTime(), dto); }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof ParcelDTO) { ParcelDTO that = (ParcelDTO) o; return (this.pickupLocation.equals(that.getPickupLocation())) && (this.deliveryLocation.equals(that.getDeliveryLocation())) && (this.pickupTimeWindow.equals(that.getPickupTimeWindow())) && (this.deliveryTimeWindow.equals(that.getDeliveryTimeWindow())) && (Double.doubleToLongBits(this.neededCapacity) == Double.doubleToLongBits(that.getNeededCapacity())) && (this.orderAnnounceTime == that.getOrderAnnounceTime()) && (this.pickupDuration == that.getPickupDuration()) && (this.deliveryDuration == that.getDeliveryDuration()); } return false; }
Point convertToPos(Truck t) { Point p; if (t.getRoute().isEmpty() || heuristic == SelectNegotiatorsHeuristic.VEHICLE_POSITION) { p = roadModel.get().getPosition(t); } else { final Parcel firstDestination = t.getRoute().iterator().next(); if (pdpModel.get().getParcelState(firstDestination).isPickedUp()) { p = firstDestination.getDto().getDeliveryLocation(); } else { p = firstDestination.getDto().getPickupLocation(); } } return p; }