+ "be equal.", schedule.size(), state.getVehicles().size()); checkArgument(!state.getVehicles().get(0).getRoute().isPresent(), "A state object without routes is expected."); expectedRoutes.add(HashMultiset.<Parcel>create()); final VehicleStateObject vehicle = state.getVehicles().get(i); expectedRoutes.get(i).addAll(vehicle.getContents()); if (vehicle.getDestination().isPresent() && !vehicle.getContents() .contains(vehicle.getDestination().get())) { expectedRoutes.get(i).add(vehicle.getDestination().get(), 2); undeliveredParcels.addAll(vehicle.getContents()); vehicle.getDestination().asSet().contains(p); if (vehicle.getDestination().isPresent() && !newSchedule.get(i).get(0) .equals(vehicle.getDestination().get())) { newSchedule.get(i).remove(vehicle.getDestination().get()); newSchedule.get(i).add(0, vehicle.getDestination().get());
(Gendreau06ObjectiveFunction) builder.getObjectiveFunction(); checkState(Math.abs(state.getVehicles().get(0).getDto().getSpeed() - objFunc.getVehicleSpeed()) < MAX_SPEED_DIFF, "Speed of vehicle (%s) does not correspond with speed in objective" + " function (%s).", state.getVehicles().get(0).getDto().getSpeed(), objFunc.getVehicleSpeed());
for (int i = 0; i < state.getVehicles().size(); i++) { final VehicleStateObject vso = state.getVehicles().get(i); checkArgument(vso.getRoute().isPresent()); final List<Parcel> route = new ArrayList<>(vso.getRoute().get()); final Multiset<Parcel> routeContents = LinkedHashMultiset.create(route); for (final Parcel p : routeContents.elementSet()) { if (vso.getContents().contains(p)) { vehicleList.add(VehicleStateObject.create( vso.getDto(), vso.getLocation(), vso.getConnection(), vso.getContents(), vso.getRemainingServiceTime(), vso.getDestination().orNull(), ImmutableList.copyOf(route)));
cargoBuilder.addAll(vs.getContents()); points.add(v.getLocation()); points.add(v.getDto().getStartPosition()); dueDates[index] = fixTWend(v.getDto().getAvailabilityTimeWindow().end(), state.getTime(), timeConverter); v.getDto().getSpeed(), state.getSpeedUnit()); if (v.getRoute().isPresent() && state.getVehicles().size() == 1) {
checkArgument(r.isPresent() || vso.getRoute().isPresent(), "Vehicle routes must either be specified as an argument or must be part" + " of the state object."); route = r.get().get(vehicleIndex); } else { route = vso.getRoute().get(); Point vehicleLocation = vso.getLocation(); final Measure<Double, Velocity> maxSpeed = Measure.valueOf(vso.getDto().getSpeed(), state.getSpeedUnit()); if (vso.getConnection().isPresent()) { final Connection<? extends ConnectionData> conn = vso.getConnection().get(); vehicleLocation = conn.to(); final double connectionPercentage = Point.distance(vso.getLocation(), conn.to()) / Point.distance(conn.from(), conn.to()); stats.totalDistance += vso.getConnection().get().getLength() for (int j = 0; j < route.size(); j++) { final Parcel cur = route.get(j); final boolean inCargo = vso.getContents().contains(cur) || seen.contains(cur); seen.add(cur); if (vso.getDestination().isPresent() && j == 0) { checkArgument(
.noCurrentRoutes()); assertEquals(1, state.getAvailableParcels().size()); assertEquals(0, state.getVehicles().get(0).getContents().size()); final Solver solver = SolverValidator.wrap(new MultiVehicleSolverAdapter( new RandomMVArraysSolver(new MersenneTwister(123)), NonSI.MINUTE)); .noCurrentRoutes()); assertEquals(1, state2.getAvailableParcels().size()); assertEquals(0, state2.getVehicles().get(0).getContents().size()); .noCurrentRoutes()); assertTrue(state3.getAvailableParcels().isEmpty()); assertEquals(1, state3.getVehicles().get(0).getContents().size()); .useParcels(ImmutableSet.<Parcel>of()) .noCurrentRoutes()); assertEquals(1, state4.getVehicles().get(0).getContents().size()); assertTrue(state4.getAvailableParcels().isEmpty()); .useParcels(ImmutableSet.<Parcel>of()) .noCurrentRoutes()); assertEquals(1, state5.getVehicles().get(0).getContents().size()); assertTrue(state5.getAvailableParcels().isEmpty()); .useParcels(ImmutableSet.<Parcel>of()) .noCurrentRoutes()); assertTrue(state6.getVehicles().get(0).getContents().isEmpty()); assertTrue(state6.getAvailableParcels().isEmpty());
if (!pdpModel.get().getParcelState(ap).isPickedUp() && !pdpModel.get().getParcelState(ap).isTransitionState() && !state.getVehicles().get(0).getDestination().asSet() .contains(ap) && !ap.equals(lastReceivedParcel)) {
final boolean routeIsPresent = state.getVehicles().get(0).getRoute() .isPresent(); final Set<Parcel> allParcels = newHashSet(); final VehicleStateObject vs = state.getVehicles().get(i); checkArgument( vs.getRoute().isPresent() == routeIsPresent, "Either a route should be present for all vehicles, or no route " + "should be present for all vehicles."); if (vs.getRoute().isPresent()) { for (final Parcel p : vs.getRoute().get()) { checkArgument( !allParcels.contains(p), allParcels.addAll(vs.getRoute().get()); checkArgument(vs.getRemainingServiceTime() >= 0, "Remaining service time must be >= 0, is %s.", vs.getRemainingServiceTime()); final Set<Parcel> intersection = Sets.intersection( state.getAvailableParcels(), vs.getContents()); checkArgument( intersection.isEmpty(), intersection); final Set<Parcel> inventoryIntersection = Sets.intersection( inventoryParcels, vs.getContents()); checkArgument( inventoryIntersection.isEmpty(),
if (vso.getRoute().isPresent()) { final List<Parcel> route = vso.getRoute().get(); final Multiset<Parcel> multiset = HashMultiset.create(route); for (final Parcel p : route) { if (vso.getContents().contains(p) || !pickups.containsKey(p)) { if (multiset.count(p) == 2) { multiset.remove(p);
.useCurrentRoutes(ImmutableList.of(ImmutableList.copyOf(route)))); final Optional<Parcel> dest = gso.getVehicles().get(0).getDestination(); if (LOGGER.isTraceEnabled()) { LOGGER.trace("destination {}", dest);
final Set<Parcel> routeSet = ImmutableSet.copyOf(route); checkArgument( routeSet.containsAll(state.getVehicles().get(i).getContents()), "The route of vehicle %s doesn't visit all parcels in its cargo.", i); inputParcels.addAll(state.getVehicles().get(i).getContents()); if (state.getVehicles().get(i).getDestination().isPresent()) { checkArgument( state.getVehicles().get(i).getDestination().asSet() .contains(route.get(0)), "The route of vehicle %s should start with its current destination:" + " %s.", i, state.getVehicles().get(i).getDestination()); } else { checkArgument( state.getVehicles().get(i).getContents().contains(p), "The parcel in this route is not available, which means it should" + " be in the contents of this vehicle. Parcel: %s.",
.noCurrentRoutes()); assertEquals(2, state.getVehicles().size()); assertTrue(state.getVehicles().get(0).getContents().isEmpty()); assertFalse(state.getVehicles().get(0).getDestination().isPresent()); assertEquals(3, state.getAvailableParcels().size()); assertEquals(v1.getWaitState(), v1.getState()); state = s.convert(SolveArgs.create().useAllParcels().noCurrentRoutes()); assertEquals(2, state.getVehicles().size()); assertTrue(state.getVehicles().get(0).getContents().isEmpty()); assertEquals(p1, state.getVehicles().get(0).getDestination().get()); assertEquals(3, state.getAvailableParcels().size()); assertEquals(v1.getGotoState(), v1.getState()); state = s.convert(SolveArgs.create().useAllParcels().noCurrentRoutes()); assertEquals(2, state.getVehicles().size()); assertTrue(state.getVehicles().get(0).getContents().isEmpty()); assertEquals(p1, state.getVehicles().get(0).getDestination().get()); assertEquals(3, state.getAvailableParcels().size()); assertEquals(v1.getServiceState(), v1.getState()); state = s.convert(SolveArgs.create().useAllParcels().noCurrentRoutes()); assertSame(p1, state.getVehicles().get(0).getDestination().get()); assertEquals(v1.getServiceState(), v1.getState());
v.getRemainingServiceTime() == 0, "This solver can not deal with remaining service time, it should be 0, " + "it was %s.", v.getRemainingServiceTime()); final Collection<Parcel> inCargo = v.getContents();
final VehicleStateObject cur = iterator.next(); final Measure<Double, Velocity> speed = Measure.valueOf( cur.getDto().getSpeed(), state.getSpeedUnit()); if (cur.getDestination().isPresent()) { final Parcel dest = cur.getDestination().get(); final boolean isInCargo = cur.getContents().contains(dest); final ParcelIndexObj pio = sva.parcel2index.get(dest); final int index = isInCargo ? pio.deliveryIndex : pio.pickupIndex; vehicleTravelTimes[i][index] = computeRoundedTravelTime(speed, Measure.valueOf( Point.distance(cur.getLocation(), sva.location2index.get(index)), state.getDistUnit()), vehicleTravelTimes[i][j] = computeRoundedTravelTime(speed, Measure.valueOf( Point.distance(cur.getLocation(), sva.location2index.get(j)), state.getDistUnit()), outputTimeUnit);
final int startIndex = state.getVehicles().get(i).getDestination() .isPresent() ? 1 : 0;
final Set<Parcel> destinations = newLinkedHashSet(); for (final VehicleStateObject vso : state.getVehicles()) { destinations.addAll(vso.getDestination().asSet()); final List<Parcel> conts = newArrayList(vso.getContents()); conts.removeAll(vso.getDestination().asSet()); assigned.addAll(conts); if (vso.getDestination().isPresent() && state.getAvailableParcels().contains(vso.getDestination().get())) { assigned.add(vso.getDestination().get()); if (vso.getDestination().isPresent()) { assigned.add(0, vso.getDestination().get());
assertFalse(state2.getVehicles().get(0).getContents().contains(p1)); assertSame(p1, state2.getVehicles().get(0).getDestination().get()); assertEquals(29, state2.getVehicles().get(0).getRemainingServiceTime()); assertFalse(state2.getVehicles().get(0).getRoute().isPresent());
return VehicleStateObject.create(vehicle.getDTO(), rm.getPosition(vehicle), conn, contents, remainingServiceTime,