From a739ab77d051cf7c9f7da48bc95d64f9e6768c61 Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Wed, 11 Jun 2014 03:05:11 +0200 Subject: [PATCH] added tests to reproduce bug #105 --- .../jsprit/core/algorithm/OpenRoutesTest.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java new file mode 100644 index 00000000..eed63bfa --- /dev/null +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/OpenRoutesTest.java @@ -0,0 +1,65 @@ +package jsprit.core.algorithm; + +import static org.junit.Assert.*; + +import java.util.Collection; + +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.solution.VehicleRoutingProblemSolution; +import jsprit.core.problem.vehicle.Vehicle; +import jsprit.core.problem.vehicle.VehicleImpl; +import jsprit.core.problem.vehicle.VehicleType; +import jsprit.core.problem.vehicle.VehicleTypeImpl; +import jsprit.core.util.Coordinate; +import jsprit.core.util.Solutions; + +import org.junit.Test; + +public class OpenRoutesTest { + + @Test + public void whenDealingWithOpenRoute_insertionShouldNotRequireRouteToBeClosed(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(9.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(5, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).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_algorithmShouldCalculateCorrectCosts(){ + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(10.) + .setType(type).setReturnToDepot(false).setStartLocationCoordinate(Coordinate.newInstance(0, 0)).build(); + + Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(5, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build(); + + VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); + vra.setNuOfIterations(10); + + Collection solutions = vra.searchSolutions(); + + assertEquals(5.,Solutions.bestOf(solutions).getCost(),0.01); + + } + +}