void addParcel(final ParcelInfo p) { newParcels.add(p); width = Math.max(width, (int) (p.parcel.getDeliveryTimeWindow().end() / TIME_PER_PIXEL)); }
void addParcel(final ParcelInfo p) { newParcels.add(p); width = Math.max(width, (int) (p.parcel.getDeliveryTimeWindow().end() / TIME_PER_PIXEL)); }
final int[] tw = convertTW(p.getDeliveryTimeWindow(), state.getTime(), timeConverter); releaseDates[index] = tw[0];
void drawParcel(ParcelInfo p, int y) { final TimeWindow pi = p.parcel.getPickupTimeWindow(); final TimeWindow de = p.parcel.getDeliveryTimeWindow(); final int startX = (int) (p.eventTime / TIME_PER_PIXEL); final int startPickX = (int) (pi.begin() / TIME_PER_PIXEL); final int endPickX = (int) (pi.end() / TIME_PER_PIXEL); final int startDelX = (int) (de.begin() / TIME_PER_PIXEL); final int endDelX = (int) (de.end() / TIME_PER_PIXEL); final GC gc = new GC(contents.get()); gc.setForeground(lineColor); gc.drawLine(startX, y + BAR_START_OFFSET_Y, startX, y + BAR_END_OFFSET_Y); gc.drawLine(startX, y + BAR_MIDDLE_OFFSET_Y, startPickX, y + BAR_MIDDLE_OFFSET_Y); gc.setBackground(pickupColor); gc.fillRectangle(startPickX, y + 2, Math.max(endPickX - startPickX, 1), HALF_BAR_H); gc.drawRectangle(startPickX, y + 2, Math.max(endPickX - startPickX, 1), HALF_BAR_H); gc.drawLine(endPickX, y + BAR_MIDDLE_OFFSET_Y, startDelX, y + BAR_MIDDLE_OFFSET_Y); gc.setBackground(deliveryColor); gc.fillRectangle(startDelX, y + BAR_MIDDLE_OFFSET_Y, Math.max(endDelX - startDelX, 1), HALF_BAR_H); gc.drawRectangle(startDelX, y + BAR_MIDDLE_OFFSET_Y, Math.max(endDelX - startDelX, 1), HALF_BAR_H); gc.dispose(); }
@Nullable Parcel getDelivery(TimeLapse time, int distance) { Parcel target = null; double closest = distance; final PDPModel pm = getPDPModel(); for (final Parcel p : pm.getContents(this)) { final double dist = Point.distance(getRoadModel().getPosition(this), p.getDeliveryLocation()); if (dist < closest && pm.getTimeWindowPolicy().canDeliver(p.getDeliveryTimeWindow(), time.getTime(), p.getPickupDuration())) { closest = dist; target = p; } } return target; }
@Nullable Parcel getDelivery(TimeLapse time, int distance) { Parcel target = null; double closest = distance; final PDPModel pm = getPDPModel(); for (final Parcel p : pm.getContents(this)) { final double dist = Point.distance(getRoadModel().getPosition(this), p.getDeliveryLocation()); if (dist < closest && pm.getTimeWindowPolicy().canDeliver(p.getDeliveryTimeWindow(), time.getTime(), p.getPickupDuration())) { closest = dist; target = p; } } return target; }
void drawParcel(ParcelInfo p, int y) { final TimeWindow pi = p.parcel.getPickupTimeWindow(); final TimeWindow de = p.parcel.getDeliveryTimeWindow(); final int startX = (int) (p.eventTime / TIME_PER_PIXEL); final int startPickX = (int) (pi.begin() / TIME_PER_PIXEL); final int endPickX = (int) (pi.end() / TIME_PER_PIXEL); final int startDelX = (int) (de.begin() / TIME_PER_PIXEL); final int endDelX = (int) (de.end() / TIME_PER_PIXEL); final GC gc = new GC(contents.get()); gc.setForeground(lineColor); gc.drawLine(startX, y + BAR_START_OFFSET_Y, startX, y + BAR_END_OFFSET_Y); gc.drawLine(startX, y + BAR_MIDDLE_OFFSET_Y, startPickX, y + BAR_MIDDLE_OFFSET_Y); gc.setBackground(pickupColor); gc.fillRectangle(startPickX, y + 2, Math.max(endPickX - startPickX, 1), HALF_BAR_H); gc.drawRectangle(startPickX, y + 2, Math.max(endPickX - startPickX, 1), HALF_BAR_H); gc.drawLine(endPickX, y + BAR_MIDDLE_OFFSET_Y, startDelX, y + BAR_MIDDLE_OFFSET_Y); gc.setBackground(deliveryColor); gc.fillRectangle(startDelX, y + BAR_MIDDLE_OFFSET_Y, Math.max(endDelX - startDelX, 1), HALF_BAR_H); gc.drawRectangle(startDelX, y + BAR_MIDDLE_OFFSET_Y, Math.max(endDelX - startDelX, 1), HALF_BAR_H); gc.dispose(); }
if (cur.getDeliveryTimeWindow().isBeforeStart(time)) { time = cur.getDeliveryTimeWindow().begin(); if (cur.getDeliveryTimeWindow().isAfterEnd(time)) { final long tardiness = time - cur.getDeliveryTimeWindow().end(); stats.deliveryTardiness += tardiness;
ParcelVisit(Parcel p, VisitType t) { parcel = p; visitType = t; if (visitType == VisitType.DELIVER) { position = parcel.getDeliveryLocation(); timeWindow = Util.msToNs(parcel.getDeliveryTimeWindow()); serviceDuration = Util.msToNs(parcel.getDeliveryDuration()); } else { position = parcel.getPickupLocation(); timeWindow = Util.msToNs(parcel.getPickupTimeWindow()); serviceDuration = Util.msToNs(parcel.getPickupDuration()); } latestStartTime = timeWindow.end() - serviceDuration; }
timeWindowPolicy.canDeliver(parcel.getDeliveryTimeWindow(), time.getTime(), parcel.getDeliveryDuration()), "parcel delivery is not allowed at this time (%s) according to the "
assert v != null; final long latestBeginTime = p.getDeliveryTimeWindow().end() - p.getDeliveryDuration(); if (pme.time > latestBeginTime) {
final int xd = vp.toCoordX(po.x); final int yd = vp.toCoordY(po.y); if (parcel.getDeliveryTimeWindow().isBeforeStart(time)) { gc.setBackground(darkGreen); } else if (parcel.getDeliveryTimeWindow().isBeforeEnd(time)) { gc.setBackground(green); } else {
final long travelTime = computeTravelTimeTo(loc, time.getTimeUnit()); final long openingTime = isPickup ? p.getPickupTimeWindow().begin() : p .getDeliveryTimeWindow().begin(); final long latestTimeToLeave = openingTime - travelTime; return latestTimeToLeave >= time.getEndTime();
assert v != null; final long latestBeginTime = p.getDeliveryTimeWindow().end() - p.getDeliveryDuration(); if (pme.time > latestBeginTime) {
final long travelTime = computeTravelTimeTo(loc, time.getTimeUnit()); final long openingTime = isPickup ? p.getPickupTimeWindow().begin() : p .getDeliveryTimeWindow().begin(); final long latestTimeToLeave = openingTime - travelTime; return latestTimeToLeave >= time.getEndTime();