LoadPart(long st, long end, double value) { tw = TimeWindow.create(st, end); load = value; }
/** * @param time The time to check. * @return <code>true</code> when <code>time</code> is in [{@link #begin}, * {@link #end}), <code>false</code> otherwise. */ public boolean isIn(long time) { return isAfterStart(time) && isBeforeEnd(time); }
/** * @param time The time to check. * @return <code>true</code> when <code>time < {@link #end}</code>, * <code>false</code> otherwise. */ public boolean isBeforeEnd(long time) { return time < end(); }
final long earliestDeliveryOpening = pickupTW.begin() + pickupToDeliveryTT + parcelBuilder.getPickupDuration(); final long latestDeliveryOpening = endTime - deliveryToDepotTT; delOpening = Math.max(delOpening, earliestDeliveryOpening); final long earliestDeliveryClosing = pickupTW.end() + pickupToDeliveryTT + parcelBuilder.getPickupDuration(); final long latestDeliveryClosing = endTime - deliveryToDepotTT long deliveryClosing = DoubleMath.roundToLong(pickupTW.length() earliestDeliveryClosing, latestDeliveryClosing); final TimeWindow deliveryTW = TimeWindow.create(delOpening, boundedDelClose);
/** * @param time The time to check. * @return <code>true</code> when <code>time >= {@link #begin}</code>, * <code>false</code> otherwise. */ public boolean isAfterStart(long time) { return time >= begin(); }
if (cur.getDeliveryTimeWindow().isBeforeStart(time)) { time = cur.getDeliveryTimeWindow().begin(); if (cur.getDeliveryTimeWindow().isAfterEnd(time)) { final long tardiness = time - cur.getDeliveryTimeWindow().end(); stats.deliveryTardiness += tardiness; } else { if (cur.getPickupTimeWindow().isBeforeStart(time)) { time = cur.getPickupTimeWindow().begin(); if (cur.getPickupTimeWindow().isAfterEnd(time)) { final long tardiness = time - cur.getPickupTimeWindow().end(); stats.pickupTardiness += tardiness; stats.totalTravelTime += tt; if (vso.getDto().getAvailabilityTimeWindow().isAfterEnd(time)) { stats.overTime += time - vso.getDto().getAvailabilityTimeWindow().end();
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 { vp.toCoordY(parcel.getDeliveryLocation().y)); if (parcel.getPickupTimeWindow().isBeforeStart(time)) { gc.setBackground(darkGreen); } else if (parcel.getPickupTimeWindow().isBeforeEnd(time)) { gc.setBackground(green); } else {
boolean isBeforeEnd(long i) { return tw.isBeforeEnd(i); }
@Override public boolean canDeliver(TimeWindow tw, long time, long duration) { return tw.isIn(time); } },
/** * @param time The time to check. * @return <code>true</code> when <code>time >= {@link #end}</code>, * <code>false</code> otherwise. */ public boolean isAfterEnd(long time) { return time >= end(); }
/** * @param time The time to check. * @return <code>true</code> when <code>time < {@link #begin}</code>, * <code>false</code> otherwise. */ public boolean isBeforeStart(long time) { return time < begin(); }
Builder() { startPosition = DEFAULT_START_POSITION; speed = DEFAULT_SPEED; capacity = 1; availabilityTimeWindow = TimeWindow.always(); }
double get(long i) { if (tw.isIn(i)) { return load; } return 0d; }
/** * Set the length (duration) of the scenario. Note that the time at which * the simulation is stopped is defined by * {@link #setStopCondition(StopCondition)} . * @param length The length of the scenario, expressed in the time unit as * defined by the {@link TimeModel}. * @return This, as per the builder pattern. */ public T scenarioLength(long length) { timeWindow = TimeWindow.create(0, length); return self(); }
long end() { return tw.end(); }
long begin() { return tw.begin(); }