@Override public final Point getDeliveryLocation() { return dto.getDeliveryLocation(); }
/** * 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(); }
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; }
@Override public JsonElement doSerialize(ParcelDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add(context.serialize(src.getPickupLocation())); arr.add(context.serialize(src.getDeliveryLocation())); arr.add(context.serialize(src.getPickupTimeWindow(), TimeWindow.class)); arr.add( context.serialize(src.getDeliveryTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getNeededCapacity())); arr.add(context.serialize(src.getOrderAnnounceTime())); arr.add(context.serialize(src.getPickupDuration())); arr.add(context.serialize(src.getDeliveryDuration())); return arr; } }
@Override public JsonElement doSerialize(ParcelDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add(context.serialize(src.getPickupLocation())); arr.add(context.serialize(src.getDeliveryLocation())); arr.add(context.serialize(src.getPickupTimeWindow(), TimeWindow.class)); arr.add( context.serialize(src.getDeliveryTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getNeededCapacity())); arr.add(context.serialize(src.getOrderAnnounceTime())); arr.add(context.serialize(src.getPickupDuration())); arr.add(context.serialize(src.getDeliveryDuration())); return arr; } }
@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; }
static Point getPos(Parcel parcel, PDPModel model) { if (model.getParcelState(parcel).isPickedUp()) { return parcel.getDto().getDeliveryLocation(); } return parcel.getDto().getPickupLocation(); }
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; }
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { final Set<RouteFollowingVehicle> vehicles = roadModel.getObjectsOfType( RouteFollowingVehicle.class); for (final RouteFollowingVehicle v : vehicles) { final Set<Parcel> seen = newHashSet(); final Point from = roadModel.getPosition(v); int prevX = vp.toCoordX(from.x); int prevY = vp.toCoordY(from.y); for (final Parcel parcel : ImmutableList.copyOf(v.getRoute())) { final Point to; if (pdpModel.getParcelState(parcel).isPickedUp() || seen.contains(parcel)) { to = parcel.getDto().getDeliveryLocation(); } else { to = parcel.getDto().getPickupLocation(); } seen.add(parcel); final int x = vp.toCoordX(to.x); final int y = vp.toCoordY(to.y); gc.drawLine(prevX, prevY, x, y); prevX = x; prevY = y; } } }
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { final Set<RouteFollowingVehicle> vehicles = roadModel.getObjectsOfType( RouteFollowingVehicle.class); for (final RouteFollowingVehicle v : vehicles) { final Set<Parcel> seen = newHashSet(); final Point from = roadModel.getPosition(v); int prevX = vp.toCoordX(from.x); int prevY = vp.toCoordY(from.y); for (final Parcel parcel : ImmutableList.copyOf(v.getRoute())) { final Point to; if (pdpModel.getParcelState(parcel).isPickedUp() || seen.contains(parcel)) { to = parcel.getDto().getDeliveryLocation(); } else { to = parcel.getDto().getPickupLocation(); } seen.add(parcel); final int x = vp.toCoordX(to.x); final int y = vp.toCoordY(to.y); gc.drawLine(prevX, prevY, x, y); prevX = x; prevY = y; } } }
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()); }
event.getParcelDTO().getDeliveryLocation());
assertEquals(destination.getDto().getDeliveryLocation(), rm.getPosition(v1)); pm.deliver(v1, p1, TimeLapseFactory.create(0, 1));