Как установить ограничение на фиксированное количество транспортных средств, участвующих в маршруте? У меня есть некоторая проблема, чтобы правильно реализовать StateManager и ConstraintManager. Могу ли я иметь пример такого типа реализации (StateManager и ConstraintManager с коротким основным)?Ограничение на количество транспортных средств JSPRIT
1
A
ответ
0
Чтобы установить фиксированное/конечное число транспортного средства, которое необходимо установить тип транспортного средства путем:
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();
Затем построить эту проблему путем:
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
vrpBuilder.addVehicle(vehicle).setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE);
Теперь, если вы хотите установить конечное число транспортного средства вы должны использовать: VehicleRoutingProblem.FleetSize.FINITE
чтобы добавить транспортные средства использовать:
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);
}