private List<Truck> findTrucks() { final Point reference = convertToPos((Truck) vehicle.get()); final List<TruckDist> pos = newArrayList(Collections2.transform(roadModel .get().getObjectsOfType(Truck.class), new ToTruckDistFunc(reference))); checkState( pos.size() >= negotiators, "There are not enough vehicles in the system to hold a %s-party " + "negotiation, there are only %s vehicle(s).", negotiators, pos.size()); Collections.sort(pos, TRUCK_DIST_COMPARATOR); final List<Truck> trucks = newArrayList(Lists.transform(pos, TRUCK_DIST_TO_TRUCK).subList(0, negotiators)); if (!trucks.contains(vehicle.get())) { // remove the last one in the list trucks.remove(trucks.size() - 1); trucks.add((Truck) vehicle.get()); } checkArgument(trucks.contains(vehicle.get())); return trucks; }
@Override public GlobalStateObject convert(SolveArgs args) { final Collection<Vehicle> vs = vehicles.isEmpty() ? roadModel .getObjectsOfType(Vehicle.class) : vehicles; final Set<Parcel> ps = args.parcels.isPresent() ? args.parcels.get() : ImmutableSet.copyOf(pdpModel.getParcels(ANNOUNCED, AVAILABLE, PICKING_UP)); return Solvers.convert(roadModel, pdpModel, vs, ps, time(), args.currentRoutes, args.fixRoutes); }
@Override public void tick(TimeLapse timeLapse) { if (hasChanged) { hasChanged = false; // TODO check to see that this is called the first possible moment after // the add parcel event was dispatched // TODO it must be checked whether the calculated routes end up in the // correct vehicles final Set<RouteFollowingVehicle> vehicles = roadModel .getObjectsOfType(RouteFollowingVehicle.class); // gather current routes final ImmutableList.Builder<ImmutableList<Parcel>> currentRouteBuilder = ImmutableList .builder(); for (final RouteFollowingVehicle vehicle : vehicles) { final ImmutableList<Parcel> l = ImmutableList.copyOf(vehicle .getRoute()); currentRouteBuilder.add(l); } final Iterator<ImmutableList<Parcel>> routes = solverAdapter .solve( SolveArgs.create() .useAllParcels() .useCurrentRoutes(currentRouteBuilder.build())) .iterator(); for (final RouteFollowingVehicle vehicle : vehicles) { vehicle.setRoute(routes.next()); } } }
if (vehicles.isEmpty()) { vehicles.addAll( roadModel.getObjectsOfType(RouteFollowingVehicle.class)); checkState(!vehicles.isEmpty(), "At least one vehicle must have been added to the simulator in order "
PDPTWTestUtil.register(rm, pm, v1, p1); final Parcel destination = rm.getObjectsOfType(Parcel.class) .iterator().next(); rm.moveTo(v1, destination, TimeLapseFactory.create(0, 1000));