From c0debb2a4b92abfc4a04496177ba675718a3fa7d Mon Sep 17 00:00:00 2001 From: Kandel Irina Date: Sun, 28 Jan 2018 17:41:01 +0200 Subject: [PATCH] pass constraintmanager as parameter --- .../algorithm/VehicleRoutingAlgorithms.java | 24 ++++++++++--------- .../io/algorithm/TestAlgorithmReader.java | 16 +++++++++---- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java index 400167a6..2b09b978 100644 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java +++ b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java @@ -364,11 +364,11 @@ public class VehicleRoutingAlgorithms { * @return {@link com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm} */ public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp, final AlgorithmConfig algorithmConfig) { - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null, null); } public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final AlgorithmConfig algorithmConfig) { - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null, null); } /** @@ -382,14 +382,14 @@ public class VehicleRoutingAlgorithms { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configURL); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null, null); } public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final URL configURL) { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configURL); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null, null); } /** @@ -403,28 +403,28 @@ public class VehicleRoutingAlgorithms { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null, null, null); } public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, final String configFileName, StateManager stateManager) { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, stateManager, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, stateManager, null, null); } - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final String configFileName, StateManager stateManager, SolutionCostCalculator solutionCostCalculator) { + public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final String configFileName, StateManager stateManager, ConstraintManager constraintManager, SolutionCostCalculator solutionCostCalculator) { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, stateManager, solutionCostCalculator); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, stateManager, constraintManager, solutionCostCalculator); } public static VehicleRoutingAlgorithm readAndCreateAlgorithm(VehicleRoutingProblem vrp, int nThreads, String configFileName) { AlgorithmConfig algorithmConfig = new AlgorithmConfig(); AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null); + return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null, null, null); } private static class OpenRouteStateVerifier implements StateUpdater, ReverseActivityVisitor { @@ -459,7 +459,7 @@ public class VehicleRoutingAlgorithms { } - private static VehicleRoutingAlgorithm createAlgo(final VehicleRoutingProblem vrp, XMLConfiguration config, int nuOfThreads, StateManager stateMan, SolutionCostCalculator solutionCostCalculator) { + private static VehicleRoutingAlgorithm createAlgo(final VehicleRoutingProblem vrp, XMLConfiguration config, int nuOfThreads, StateManager stateMan, ConstraintManager constraintManager, SolutionCostCalculator solutionCostCalculator) { //create state-manager final StateManager stateManager; if (stateMan != null) { @@ -479,7 +479,9 @@ public class VehicleRoutingAlgorithms { * define constraints */ //constraint manager - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + if (constraintManager == null) + constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addTimeWindowConstraint(); constraintManager.addLoadConstraint(); constraintManager.addSkillsConstraint(); diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java index 17613627..2dca4b5b 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java @@ -30,6 +30,7 @@ import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; import com.graphhopper.jsprit.core.algorithm.selector.SolutionSelector; import com.graphhopper.jsprit.core.algorithm.state.StateManager; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; @@ -51,9 +52,7 @@ import java.util.Collection; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; public class TestAlgorithmReader { @@ -297,12 +296,21 @@ public class TestAlgorithmReader { doNothing().when(stateMan).updateTimeWindowStates(); doNothing().when(stateMan).updateSkillStates(); - VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, 10, getClass().getResource("algorithmConfig_withoutIterations.xml").getFile(), stateMan, solutionCostCalculator); + ConstraintManager constraintManager = mock(ConstraintManager.class); + doNothing().when(constraintManager).addTimeWindowConstraint(); + doNothing().when(constraintManager).addLoadConstraint(); + doNothing().when(constraintManager).addSkillsConstraint(); + + VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, 10, getClass().getResource("algorithmConfig_withoutIterations.xml").getFile(), stateMan, constraintManager, solutionCostCalculator); vra.getObjectiveFunction().equals(solutionCostCalculator); verify(stateMan, times(2)).updateLoadStates(); verify(stateMan, times(2)).updateTimeWindowStates(); verify(stateMan, times(2)).updateSkillStates(); + + verify(constraintManager, times(2)).addTimeWindowConstraint(); + verify(constraintManager, times(2)).addSkillsConstraint(); + verify(constraintManager, times(2)).addLoadConstraint(); }