time.getTime(), parcel.getPickupDuration()), "parcel pickup is not allowed according to the time window policy: " + "%s, current time: %s, time window %s.", if (time.getTimeLeft() < parcel.getPickupDuration()) { vehicleState.put(vehicle, VehicleState.PICKING_UP); parcelState.put(ParcelState.PICKING_UP, parcel); parcel, parcel.getPickupDuration() - time.getTimeLeft())); time.consumeAll(); } else { time.consume(parcel.getPickupDuration()); doPickup(vehicle, parcel, time.getTime());
for (final Parcel p : state.getAvailableParcels()) { serviceTimes[index] = DoubleMath.roundToInt( timeConverter.convert(p.getPickupDuration()), RoundingMode.CEILING);
@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; }
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.getPickupDuration();
@Override protected void tickImpl(TimeLapse time) { final RoadModel rm = getRoadModel(); final PDPModel pm = getPDPModel(); // we always go to the closest available parcel final Parcel closest = (Parcel) RoadModels .findClosestObject(rm.getPosition(this), rm, new Predicate<RoadUser>() { @Override public boolean apply(@Nullable RoadUser input) { return input instanceof Parcel && pm.getParcelState((Parcel) input) == ParcelState.AVAILABLE; } }); if (closest != null) { rm.moveTo(this, closest, time); if (rm.equalPosition(closest, this) && pm .getTimeWindowPolicy() .canPickup(closest.getPickupTimeWindow(), time.getTime(), closest.getPickupDuration())) { pm.pickup(this, closest, time); } } } }
@Override protected void tickImpl(TimeLapse time) { final RoadModel rm = getRoadModel(); final PDPModel pm = getPDPModel(); // we always go to the closest available parcel final Parcel closest = (Parcel) RoadModels .findClosestObject(rm.getPosition(this), rm, new Predicate<RoadUser>() { @Override public boolean apply(@Nullable RoadUser input) { return input instanceof Parcel && pm.getParcelState((Parcel) input) == ParcelState.AVAILABLE; } }); if (closest != null) { rm.moveTo(this, closest, time); if (rm.equalPosition(closest, this) && pm .getTimeWindowPolicy() .canPickup(closest.getPickupTimeWindow(), time.getTime(), closest.getPickupDuration())) { pm.pickup(this, closest, time); } } } }
- p.getPickupDuration(); if (pme.time > latestBeginTime) { final long tardiness = pme.time - latestBeginTime;
- p.getPickupDuration(); if (pme.time > latestBeginTime) { final long tardiness = pme.time - latestBeginTime;
if (rm.equalPosition(closest, this) && pm.getTimeWindowPolicy().canPickup(closest.getPickupTimeWindow(), time.getTime(), closest.getPickupDuration())) { final double newSize = getPDPModel().getContentsSize(this) + closest.getNeededCapacity();
if (rm.equalPosition(closest, this) && pm.getTimeWindowPolicy().canPickup(closest.getPickupTimeWindow(), time.getTime(), closest.getPickupDuration())) { final double newSize = getPDPModel().getContentsSize(this) + closest.getNeededCapacity();
@Override protected void tickImpl(TimeLapse time) { final RoadModel rm = getRoadModel(); final PDPModel pm = getPDPModel(); // we always go to the closest available parcel final Parcel closest = (Parcel) RoadModels.findClosestObject( rm.getPosition(this), rm, new Predicate<RoadUser>() { @Override public boolean apply(RoadUser input) { return input instanceof Parcel && pm.getParcelState((Parcel) input) == ParcelState.AVAILABLE; } }); if (closest != null) { rm.moveTo(this, closest, time); if (rm.equalPosition(closest, this) && pm.getTimeWindowPolicy().canPickup(closest.getPickupTimeWindow(), time.getTime(), closest.getPickupDuration())) { pm.pickup(this, closest, time); } } } }
final int y = vp.toCoordY(pos.y); final double percentage = 1d - vpai.timeNeeded() / (double) p.getPickupDuration(); final String text = (int) (percentage * MAX_PERC) + "%";
final int y = vp.toCoordY(pos.y); final double percentage = 1d - vpai.timeNeeded() / (double) p.getPickupDuration(); final String text = (int) (percentage * MAX_PERC) + "%";