Point getParcelPos(RoadUser obj) { if (!containsObject(obj) && obj instanceof Parcel) { final ParcelState state = pdpModel.get().getParcelState( (Parcel) obj); checkArgument( state == ParcelState.IN_CARGO, "Can only move to parcels which are either on the map or in cargo, " + "state is %s, obj is %s.", state, obj); return ((Parcel) obj).getDeliveryLocation(); } return getPosition(obj); }
Point getParcelPos(RoadUser obj) { if (!containsObject(obj) && obj instanceof Parcel) { final ParcelState state = pdpModel.get().getParcelState( (Parcel) obj); checkArgument( state == ParcelState.IN_CARGO, "Can only move to parcels which are either on the map or in cargo, " + "state is %s, obj is %s.", state, obj); return ((Parcel) obj).getDeliveryLocation(); } return getPosition(obj); }
} else if (inCargo) { rm.moveTo(this, curr.get().getDeliveryLocation(), time); if (rm.getPosition(this).equals(curr.get().getDeliveryLocation())) {
} else if (inCargo) { rm.moveTo(this, curr.get().getDeliveryLocation(), time); if (rm.getPosition(this).equals(curr.get().getDeliveryLocation())) {
float getField(Point in, Truck truck) { float field = 0.0f; for (final FieldEmitter emitter : emitters) { field = field + (float) (emitter.getStrength() / Point.distance(emitter.getPosition(), in)); } for (final Parcel p : verifyNotNull(pdpModel).getContents(truck)) { field = field + (float) (2 / Point.distance(p.getDeliveryLocation(), in)); } return field; }
float getField(Point in, Truck truck) { float field = 0.0f; for (final FieldEmitter emitter : emitters) { field = field + (float) (emitter.getStrength() / Point.distance(emitter.getPosition(), in)); } for (final Parcel p : verifyNotNull(pdpModel).getContents(truck)) { field = field + (float) (2 / Point.distance(p.getDeliveryLocation(), in)); } return field; }
if (pm.get().containerContains(this, target.get())) { if (rm.get().getPosition(this) .equals(target.get().getDeliveryLocation())) { pm.get().deliver(this, target.get(), time); } else { rm.get().moveTo(this, target.get().getDeliveryLocation(), time);
@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; }
parcel.getDeliveryLocation().equals(roadModel.getPosition(vehicle)), "parcel must be delivered at its destination, vehicle should move " + "there first");
gc.setForeground(black); for (final Parcel parcel : contents) { final Point po = parcel.getDeliveryLocation(); final int xd = vp.toCoordX(po.x); final int yd = vp.toCoordY(po.y); final int y = vp.toCoordY(p.y); gc.setForeground(lightGray); gc.drawLine(x, y, vp.toCoordX(parcel.getDeliveryLocation().x), vp.toCoordY(parcel.getDeliveryLocation().y));
if (delivery.getDeliveryLocation().equals(getPosition()) && pm.getVehicleState(this) == VehicleState.IDLE) { pm.deliver(this, delivery, time); } else { rm.moveTo(this, delivery.getDeliveryLocation(), time);
.getDeliveryLocation(); final long travelTime = computeTravelTimeTo(loc, time.getTimeUnit()); final long openingTime = isPickup ? p.getPickupTimeWindow().begin() : p
if (delivery.getDeliveryLocation().equals(getPosition()) && pm.getVehicleState(this) == VehicleState.IDLE) { pm.deliver(this, delivery, time); } else { rm.moveTo(this, delivery.getDeliveryLocation(), time);
.getDeliveryLocation(); final long travelTime = computeTravelTimeTo(loc, time.getTimeUnit()); final long openingTime = isPickup ? p.getPickupTimeWindow().begin() : p
for (final Parcel p : parcels) { final Point pos = pdpModel.containerContains(vehicle, p) ? p .getDeliveryLocation() : roadModel.getPosition(p); final double d = Point.distance(roadModel.getPosition(vehicle), pos); if (d < dist) {
/** * Check whether mixing diversion allowed/disallowed methods produce the * expected results. */ @Test public void test() { // first move by using the location rm.moveTo(dv1, dp1.getPickupLocation(), time(10)); assertEquals(rm.getPosition(dv1), dp1.getPickupLocation()); pm.pickup(dv1, dp1, time(1)); assertTrue(pm.containerContains(dv1, dp1)); // now move by using the reference to the parcel rm.moveTo(dv1, dp1, time(300)); assertEquals(rm.getPosition(dv1), dp1.getDeliveryLocation()); } }
/** * It is not allowed to go to a delivery location twice. */ @Test(expected = IllegalArgumentException.class) public void attemptVisitFor3rdTime2() { // first pickup rm.moveTo(dv1, dp1, time(11)); assertTrue(rm.equalPosition(dv1, dp1)); rm.removeObject(dp1); // then deliver rm.moveTo(dv1, dp1, time(80)); assertEquals(rm.getPosition(dv1), dp1.getDeliveryLocation()); rm.moveTo(dv1, dp2, time(180)); assertTrue(rm.equalPosition(dv1, dp2)); rm.removeObject(dp2); // it is not allowed to revisit this position rm.moveTo(dv1, dp1, time(80)); }
assertTrue(model.getParcels(ParcelState.AVAILABLE).isEmpty()); rm.moveTo(truck, pack1.getDeliveryLocation(), TimeLapseFactory.create(0, 3600000 * 3)); assertEquals(pack1.getDeliveryLocation(), rm.getPosition(truck));