@Override public void drop(Vehicle vehicle, Parcel parcel, TimeLapse time) { synchronized (this) { /* 1 */checkVehicleInRoadModel(vehicle); /* 2 */checkVehicleIdle(vehicle); /* 3 */checkVehicleDoesNotContainParcel(vehicle, parcel); eventDispatcher.dispatchEvent(new PDPModelEvent( PDPModelEventType.START_DELIVERY, self, time.getTime(), parcel, vehicle)); if (time.getTimeLeft() < parcel.getDeliveryDuration()) { vehicleState.put(vehicle, VehicleState.DELIVERING); parcelState.put(ParcelState.DELIVERING, parcel); pendingVehicleActions.put(vehicle, new DropAction(this, vehicle, parcel, parcel.getDeliveryDuration() - time.getTimeLeft())); time.consumeAll(); } else { time.consume(parcel.getDeliveryDuration()); doDrop(vehicle, parcel, time.getTime()); } } }
time.getTime(), parcel.getDeliveryDuration()), "parcel delivery is not allowed at this time (%s) according to the " + "time window policy: %s", if (time.getTimeLeft() < parcel.getDeliveryDuration()) { vehicleState.put(vehicle, VehicleState.DELIVERING); parcelState.put(ParcelState.DELIVERING, parcel); pendingVehicleActions.put(vehicle, new DeliverAction(this, vehicle, parcel, parcel.getDeliveryDuration() - time.getTimeLeft())); time.consumeAll(); } else { time.consume(parcel.getDeliveryDuration()); doDeliver(vehicle, parcel, time.getTime());
for (final Parcel p : deliveries) { serviceTimes[index] = DoubleMath.roundToInt( timeConverter.convert(p.getDeliveryDuration()), RoundingMode.CEILING);
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; }
time += cur.getDeliveryDuration();
- p.getDeliveryDuration(); if (pme.time > latestBeginTime) { final long tardiness = pme.time - latestBeginTime;
- p.getDeliveryDuration(); if (pme.time > latestBeginTime) { final long tardiness = pme.time - latestBeginTime;