Hi,
When inserting a regular job activity into a route which contains a break activity, during the evaluation, the location of the break activity is fixed. Will this possibly lead to sub-optimal solution?
An illustrative example is given below, and analysis follows next.
Best regards,
He
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type")
.build();
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1")
.setType(type)
//.setReturnToDepot(false)
.setStartLocation(Location.newInstance(0, 0))
.setBreak(
Break.Builder.newInstance("B")
.addTimeWindow(1, 6)
.setServiceTime(1)
.build()
)
.build();
Delivery s0 = Delivery.Builder.newInstance("X")
.setLocation(Location.newInstance(1, 3))
.addTimeWindow(2, 4)
.setServiceTime(1)
.build();
Delivery s1 = Delivery.Builder.newInstance("A")
.setLocation(Location.newInstance(1, 0))
.addTimeWindow(1, 1)
.setServiceTime(0)
.build();
Delivery s2 = Delivery.Builder.newInstance("C")
.setLocation(Location.newInstance(5, 0))
.setServiceTime(0)
.build();
VehicleRoute initialRoute = VehicleRoute.Builder.newInstance(v1)
.addDelivery(s1)
.addDelivery(s2)
.build();
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance()
.addVehicle(v1)
.addJob(s0)
.addInitialVehicleRoute(initialRoute)
.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE)
.build();
Jsprit.Builder algorithmBuilder = Jsprit.Builder.newInstance(vrp);
VehicleRoutingAlgorithm algorithm = algorithmBuilder.buildAlgorithm();
VehicleRoutingProblemSolution s = Solutions.bestOf(algorithm.searchSolutions());
SolutionPrinter.print(vrp, s, SolutionPrinter.Print.VERBOSE);