diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java index eed63bfa..56aa7bb6 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java @@ -8,6 +8,7 @@ import jsprit.core.algorithm.box.SchrimpfFactory; import jsprit.core.algorithm.recreate.NoSolutionFoundException; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.job.Service; +import jsprit.core.problem.job.Shipment; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.problem.vehicle.Vehicle; import jsprit.core.problem.vehicle.VehicleImpl; @@ -20,6 +21,31 @@ import org.junit.Test; public class OpenRoutesTest { + @Test + public void whenDealingWithOpenRouteAndShipments_insertionShouldNotRequireRouteToBeClosed(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(11.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Shipment shipment = Shipment.Builder.newInstance("s").setPickupCoord(Coordinate.newInstance(5, 0)) + .setDeliveryCoord(Coordinate.newInstance(10, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); + + VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); + + try{ + @SuppressWarnings("unused") + Collection solutions = vra.searchSolutions(); + assertTrue(true); + } + catch(NoSolutionFoundException e){ + assertFalse(true); + } + + } + @Test public void whenDealingWithOpenRoute_insertionShouldNotRequireRouteToBeClosed(){ VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); @@ -43,6 +69,70 @@ public class OpenRoutesTest { } + + + @Test + public void whenDealingWithOpenRouteAndShipments_algorithmShouldCalculateCorrectCosts(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(20.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Shipment shipment = Shipment.Builder.newInstance("s").setPickupCoord(Coordinate.newInstance(5, 0)) + .setDeliveryCoord(Coordinate.newInstance(10, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); + + VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); + + Collection solutions = vra.searchSolutions(); + + assertEquals(10.,Solutions.bestOf(solutions).getCost(),0.01); + + } + + @Test + public void whenDealingWithOpenRouteAndShipments_insertionShouldNotRequireRouteToBeClosed(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(11.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Shipment shipment = Shipment.Builder.newInstance("s").setPickupCoord(Coordinate.newInstance(5, 0)) + .setDeliveryCoord(Coordinate.newInstance(10, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); + + VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); + + try{ + @SuppressWarnings("unused") + Collection solutions = vra.searchSolutions(); + assertTrue(true); + } + catch(NoSolutionFoundException e){ + assertFalse(true); + } + + } + + @Test + public void whenDealingWithOpenRouteAndShipments_algorithmShouldCalculateCorrectCosts(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(20.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Shipment shipment = Shipment.Builder.newInstance("s").setPickupCoord(Coordinate.newInstance(5, 0)) + .setDeliveryCoord(Coordinate.newInstance(10, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); + + VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); + + Collection solutions = vra.searchSolutions(); + + assertEquals(10.,Solutions.bestOf(solutions).getCost(),0.01); + + } + @Test public void whenDealingWithOpenRoute_algorithmShouldCalculateCorrectCosts(){ VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();