1

How can I set the constraint on the fixed number of vehicles involved in a route?? I have some problem to implement correctly the StateManager and ConstraintManager, Could I have some example of this type of implementation(StateManager and ConstraintManager with a short main )?

1 Answers1

0

To set fixed/finite number of vehicle you need to set vehicle type by:

VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2);
VehicleType vehicleType = vehicleTypeBuilder.build();
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
vehicleBuilder.setStartLocation(loc(Coordinate.newInstance(10, 10)));
vehicleBuilder.setType(vehicleType);
VehicleImpl vehicle = vehicleBuilder.build();

Then build the problem by:

VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
vrpBuilder.addVehicle(vehicle).setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE);

Now if you want to set finite number of vehicle you have to use: VehicleRoutingProblem.FleetSize.FINITE

To add vehicles use:

            int nuOfVehicles = 13;
            for (int i = 0; i < nuOfVehicles; i++) {
            VehicleType vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type")
                .addCapacityDimension(0, capacity).setCostPerDistance(1.0).build();
            String vehicleId = depotCounter + "_" + (i + 1) + "_vehicle";
            VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance(vehicleId);
            vehicleBuilder.setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY()));
            vehicleBuilder.setType(vehicleType);
            vehicleBuilder.setLatestArrival(maxDuration);
            VehicleImpl vehicle = vehicleBuilder.build();
            vrpBuilder.addVehicle(vehicle);
        }
sutirtha
  • 375
  • 3
  • 21