@Override public Optional<Point> getPosition() { if (roadModel.get().containsObject(this)) { return Optional.of(roadModel.get().getPosition(this)); } return Optional.absent(); }
@Override @Nullable public Point apply(@Nullable T input) { return rm.getPosition(verifyNotNull(input)); } }
@Override public Optional<Point> getPosition() { if (roadModel.get().containsObject(this)) { return Optional.of(roadModel.get().getPosition(this)); } return Optional.absent(); }
@Override public Point getPosition() { return getRoadModel().getPosition(this); }
@Override public Point getPosition() { return getRoadModel().getPosition(this); }
@Override public int compare(@Nullable Parcel arg0, @Nullable Parcel arg1) { final Point cur = roadModel.get().getPosition(vehicle.get()); final Point p0 = getPos(checkNotNull(arg0), pdpModel.get()); final Point p1 = getPos(checkNotNull(arg1), pdpModel.get()); return Double.compare(Point.distance(cur, p0), Point.distance(cur, p1)); } }
private void doSetDestination(Point dest) { destPos = dest; speed = Point.distance(rm.get().getPosition(this), destPos) / (LB + MUL * rng.nextDouble()); }
@Override public boolean apply(@Nullable RoadUser input) { return Point.distance(model.getPosition(verifyNotNull(input)), position) < radius; } }
private void doSetDestination(Point dest) { destPos = dest; speed = Point.distance(rm.get().getPosition(this), destPos) / (LB + MUL * rng.nextDouble()); }
@Override public Optional<Point> getPosition() { return Optional.of(roadModel.get().getPosition(this)); }
/** * @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; }
@Override public boolean apply(RoadUser input) { return input instanceof LongRoadUser || rm.getPosition(input).equals(new Point(15, 15)); } }, 99));
@Override public void afterTick(TimeLapse timeLapse) { if (timeLapse.getStartTime() == 200) { // this is the tick in which the new order event was dispatched. This // check is to ensure that the vehicle moves at the earliest possible // time (which is in the same tick) towards the new order. assertThat(rm.getPosition(vehicles.get(0))) .isNotEqualTo(new Point(0, 0)); assertThat(vehicles.get(0).getRoute()).hasSize(2); assertThat(vehicles.get(1).getRoute()).isEmpty(); } } });
@Override public void tick(TimeLapse timeLapse) { if (!destination.isPresent()) { destination = Optional.of(roadModel.get().getRandomPosition(rng)); } roadModel.get().moveTo(this, destination.get(), timeLapse); if (roadModel.get().getPosition(this).equals(destination.get())) { destination = Optional.absent(); } if (device.get().getUnreadCount() > 0) { lastReceiveTime = timeLapse.getStartTime(); device.get().getUnreadMessages(); device.get().broadcast(Messages.NICE_TO_MEET_YOU); } else if (device.get().getReceivedCount() == 0) { device.get().broadcast(Messages.HELLO_WORLD); } else if (lastReceiveTime > 10 * 1000) { device.get().broadcast(Messages.WHERE_IS_EVERYBODY); } }
@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; }
@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); } } } }
@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); } } } }