From 590f2c187705a09a8238097be28309fdeb86cded Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Mon, 11 Aug 2014 22:14:33 +0200 Subject: [PATCH] add bad job list --- .../core/algorithm/state/BadJobListTest.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 jsprit-core/src/test/java/jsprit/core/algorithm/state/BadJobListTest.java diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/state/BadJobListTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/state/BadJobListTest.java new file mode 100644 index 00000000..ee54f20a --- /dev/null +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/state/BadJobListTest.java @@ -0,0 +1,58 @@ +package jsprit.core.algorithm.state; + +import jsprit.core.algorithm.VehicleRoutingAlgorithm; +import jsprit.core.algorithm.box.GreedySchrimpfFactory; +import jsprit.core.problem.VehicleRoutingProblem; +import jsprit.core.problem.job.Service; +import jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import jsprit.core.problem.solution.route.activity.TimeWindow; +import jsprit.core.problem.vehicle.VehicleImpl; +import jsprit.core.util.Coordinate; +import jsprit.core.util.Solutions; +import org.junit.Test; + +import java.util.Collection; + +import static org.junit.Assert.assertTrue; + +public class BadJobListTest { + + @Test + public void job2ShouldBeInBadJobList_dueToTimeWindow(){ + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocationCoordinate(Coordinate.newInstance(1, 1)).build()); + Service job1 = Service.Builder.newInstance("job1").setCoord(Coordinate.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); + builder.addJob(job1); + Service job2 = Service.Builder.newInstance("job2").setCoord(Coordinate.newInstance(2, 2)).setTimeWindow(TimeWindow.newInstance(12, 24)).setServiceTime(1).build(); + builder.addJob(job2); + + VehicleRoutingProblem vrp = builder.build(); + VehicleRoutingAlgorithm algorithm = new GreedySchrimpfFactory().createAlgorithm(vrp); + algorithm.setMaxIterations(10); + Collection solutions = algorithm.searchSolutions(); + + VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); + assertTrue(!solution.getBadJobs().contains(job1)); + assertTrue(solution.getBadJobs().contains(job2)); + } + + @Test + public void job2ShouldBeInBadJobList_dueToSize(){ + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocationCoordinate(Coordinate.newInstance(1, 1)).build()); + Service job1 = Service.Builder.newInstance("job1").setCoord(Coordinate.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); + builder.addJob(job1); + Service job2 = Service.Builder.newInstance("job2").setCoord(Coordinate.newInstance(2, 2)).addSizeDimension(0,10).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); + builder.addJob(job2); + + VehicleRoutingProblem vrp = builder.build(); + VehicleRoutingAlgorithm algorithm = new GreedySchrimpfFactory().createAlgorithm(vrp); + algorithm.setMaxIterations(10); + Collection solutions = algorithm.searchSolutions(); + + VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); + assertTrue(!solution.getBadJobs().contains(job1)); + assertTrue(solution.getBadJobs().contains(job2)); + } + +}