/** * @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(); }
/** * @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(); }
long end() { return tw.end(); }
@Override public String toString() { return MoreObjects.toStringHelper("LoadPart").add("begin", tw.begin()) .add("end", tw.end()).add("load", load).toString(); } }
/** * @return The length of the time window: <code>{@link #end} - * {@link #begin}</code>. */ public long length() { return end() - begin(); }
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)); }
@Override public void write(@Nullable JsonWriter writer, @Nullable TimeWindow value) throws IOException { if (writer == null) { return; } if (value == null) { writer.nullValue(); return; } final String xy = value.begin() + VALUE_SEPARATOR + value.end(); writer.value(xy); } }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof TimeWindow) { TimeWindow that = (TimeWindow) o; return (this.begin == that.begin()) && (this.end == that.end()); } return false; }
@Override public void write(@Nullable JsonWriter writer, @Nullable TimeWindow value) throws IOException { if (writer == null) { return; } if (value == null) { writer.nullValue(); return; } final String xy = value.begin() + VALUE_SEPARATOR + value.end(); writer.value(xy); } }
static int[] convertTW(TimeWindow tw, long time, UnitConverter timeConverter) { final int releaseDate = fixTWstart(tw.begin(), time, timeConverter); final int dueDate = fixTWend(tw.end(), time, timeConverter); if (releaseDate > dueDate) { // if this happens, we know this is the result of rounding behavior: // release is rounded up, due is rounded down. We also know that the // difference is only 1. Therefore we flip the values. checkArgument(Math.abs(dueDate - releaseDate) == 1); return new int[] {dueDate, releaseDate}; } return new int[] {releaseDate, dueDate}; }
/** * Measures the degree of dynamism of the specified scenario. * @param s The scenario to measure. * @return A double in range [0,1]. */ public static double measureDynamism(Scenario s) { return measureDynamism(s, s.getTimeWindow().end()); }
static long pickupUrgency(IParcel dto) { return dto.getPickupTimeWindow().end() - dto.getOrderAnnounceTime(); }
static Builder create(Scenario scen) { final int ticks = scen.getTimeWindow().end() == Long.MAX_VALUE ? -1 : (int) (scen.getTimeWindow().end() - scen.getTimeWindow().begin()); return create( scen, ImmutableMap.<Class<? extends TimedEvent>, TimedEventHandler<?>>of(), ticks, StopModelBuilder.create(scen.getStopCondition()), false); }
static Builder create(Scenario scen) { final int ticks = scen.getTimeWindow().end() == Long.MAX_VALUE ? -1 : (int) (scen.getTimeWindow().end() - scen.getTimeWindow().begin()); return create( scen, ImmutableMap.<Class<? extends TimedEvent>, TimedEventHandler<?>>of(), ticks, StopModelBuilder.create(scen.getStopCondition()), false); }
static TimeWindow msToNs(TimeWindow tw) { if (tw.equals(TimeWindow.always())) { return TimeWindow.always(); } return TimeWindow.create(msToNs(tw.begin()), msToNs(tw.end())); }
/** * @param time The time to use as 'now'. * @return <code>true</code> if it is the end of the day or if this vehicle * has to leave before the end of this tick to arrive back at the * depot right before the end of the day, <code>false</code> * otherwise. */ protected boolean isEndOfDay(TimeLapse time) { final long travelTime = computeTravelTimeTo( getRoadModel().getPosition(depot.get()), time.getTimeUnit()); return time.getEndTime() - 1 >= getAvailabilityTimeWindow().end() - travelTime; }
/** * @param time The time to use as 'now'. * @return <code>true</code> if it is the end of the day or if this vehicle * has to leave before the end of this tick to arrive back at the * depot right before the end of the day, <code>false</code> * otherwise. */ protected boolean isEndOfDay(TimeLapse time) { final long travelTime = computeTravelTimeTo( getRoadModel().getPosition(depot.get()), time.getTimeUnit()); return time.getEndTime() - 1 >= getAvailabilityTimeWindow().end() - travelTime; }
Vehicle(VehicleStateObject vso, int ind) { vehicle = vso; endTime = Util.msToNs(vso.getDto().getAvailabilityTimeWindow()).end(); remainingServiceTime = vso.getRemainingServiceTime() > 0 ? Util.msToNs(vso.getRemainingServiceTime()) : 0; index = ind; }
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; }