Skip to content

Instantly share code, notes, and snippets.

@x0st

x0st/jsprit Secret

Created February 9, 2023 22:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save x0st/12d608f81d187cb56bd16f209fe33413 to your computer and use it in GitHub Desktop.
Save x0st/12d608f81d187cb56bd16f209fe33413 to your computer and use it in GitHub Desktop.
VehicleRoutingProblem.Builder vrpBuilder;
VehicleTypeImpl vehicleTypeCar;
VehicleImpl.Builder vehicleBuilder;
Service.Builder<Delivery> deliveryBuilder;
VehicleRoutingTransportCostsMatrix.Builder matrixBuilder;
VehicleRoutingProblem problem;
VehicleRoutingAlgorithm algorithm;
UnassignedJobReasonTracker unassignedJobReasonTracker;
VehicleRoutingProblemSolution bestSolution;
vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false);
vehicleTypeCar = VehicleTypeImpl.Builder.newInstance("type_car")
.setProfile("car")
.addCapacityDimension(0, 5)
.build();
vrpBuilder.addVehicle(
VehicleImpl.Builder.newInstance("VAN1")
.setType(vehicleTypeCar)
.setReturnToDepot(false)
.setEarliestStart(1675976903L)
.setLatestArrival(1676063303)
.setStartLocation(
Location.Builder.newInstance()
.setIndex(0)
.build()
)
.build()
);
vrpBuilder.addJob(
Delivery.Builder.newInstance("A")
.setServiceTime(600)
.addSizeDimension(0, 1)
.setLocation(
Location.Builder.newInstance()
.setIndex(1)
.build()
)
.addTimeWindow(1675976903d, 1675978603d)
.build()
);
vrpBuilder.addJob(
Delivery.Builder.newInstance("B")
.setServiceTime(600)
.addSizeDimension(0, 1)
.setLocation(
Location.Builder.newInstance()
.setIndex(2)
.build()
)
.build()
);
vrpBuilder.addJob(
Delivery.Builder.newInstance("C")
.setServiceTime(600)
.addSizeDimension(0, 1)
.setLocation(
Location.Builder.newInstance()
.setIndex(3)
.build()
)
.build()
);
Integer[][] m = {
new Integer[]{0, 1279, 542, 162},
new Integer[]{1301, 0, 869, 1375},
new Integer[]{492, 786, 0, 566},
new Integer[]{106, 1273, 531, 0}
};
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
matrixBuilder.addTransportTime(
String.valueOf(i),
String.valueOf(j),
m[i][j]
);
}
}
vrpBuilder.setRoutingCost(matrixBuilder.build());
vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
problem = vrpBuilder.build();
algorithm = Jsprit.Builder.newInstance(problem)
.setProperty(Jsprit.Parameter.THREADS, String.valueOf(1))
.setProperty(Jsprit.Parameter.ITERATIONS, String.valueOf(32))
.buildAlgorithm();
bestSolution = Solutions.bestOf(algorithm.searchSolutions());
for (VehicleRoute route : bestSolution.getRoutes()) {
for (TourActivity activity : route.getActivities()) {
System.out.println(activity.getLocation().getIndex());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment