diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategy.java b/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategy.java index e93ca090..5a7bbf18 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategy.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategy.java @@ -33,15 +33,18 @@ import java.util.Collections; public class SearchStrategy { public static class DiscoveredSolution { + private VehicleRoutingProblemSolution solution; + private boolean accepted; - private String strategyName; + + private String strategyId; - public DiscoveredSolution(VehicleRoutingProblemSolution solution,boolean accepted, String strategyName) { + public DiscoveredSolution(VehicleRoutingProblemSolution solution, boolean accepted, String strategyId) { super(); this.solution = solution; this.accepted = accepted; - this.strategyName = strategyName; + this.strategyId = strategyId; } public VehicleRoutingProblemSolution getSolution() { @@ -52,10 +55,12 @@ public class SearchStrategy { return accepted; } - @SuppressWarnings("UnusedDeclaration") + @Deprecated public String getStrategyName() { - return strategyName; + return strategyId; } + + public String getStrategyId() { return strategyId; } } @@ -137,7 +142,7 @@ public class SearchStrategy { double costs = solutionCostCalculator.getCosts(lastSolution); lastSolution.setCost(costs); boolean solutionAccepted = solutionAcceptor.acceptSolution(solutions, lastSolution); - return new DiscoveredSolution(lastSolution, solutionAccepted, getName()); + return new DiscoveredSolution(lastSolution, solutionAccepted, getId()); } private String getErrMsg() { diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategyManager.java b/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategyManager.java index da1eb06b..4396d038 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategyManager.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/SearchStrategyManager.java @@ -43,22 +43,27 @@ public class SearchStrategyManager { this.random = random; } - public List getStrategies() { return Collections.unmodifiableList(strategies); } - /** * Returns the probabilities. * [schroeder (2014.11.21): Now they are actually no propabilities anymore but weights. The resulting probabilities * are calculated here with the sum of weights] * @return list of probabilities */ + @Deprecated public List getProbabilities() { return Collections.unmodifiableList(weights); } - + + public List getWeights(){ return Collections.unmodifiableList(weights); } + + public double getWeight(String strategyId){ + return weights.get(id2index.get(strategyId)); + } + /** * adds a new search strategy with a certain weight. * @param strategy strategy to be added diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/VehicleRoutingAlgorithm.java b/jsprit-core/src/main/java/jsprit/core/algorithm/VehicleRoutingAlgorithm.java index 0b353507..8fa2d250 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/VehicleRoutingAlgorithm.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/VehicleRoutingAlgorithm.java @@ -205,7 +205,7 @@ public class VehicleRoutingAlgorithm { SearchStrategy strategy = searchStrategyManager.getRandomStrategy(); DiscoveredSolution discoveredSolution = strategy.run(problem, solutions); memorizeIfBestEver(discoveredSolution); - selectedStrategy(strategy.getId(),searchStrategyManager,problem, solutions); + selectedStrategy(discoveredSolution,problem,solutions); if(terminationManager.isPrematureBreak(discoveredSolution)){ logger.info("premature algorithm termination at iteration "+ (i+1)); noIterationsThisAlgoIsRunning = (i+1); @@ -233,8 +233,8 @@ public class VehicleRoutingAlgorithm { } - private void selectedStrategy(String name, SearchStrategyManager searchStrategyManager, VehicleRoutingProblem problem, Collection solutions) { - algoListeners.selectedStrategy(name, searchStrategyManager, problem, solutions); + private void selectedStrategy(DiscoveredSolution discoveredSolution, VehicleRoutingProblem problem, Collection solutions) { + algoListeners.selectedStrategy(discoveredSolution,problem,solutions); } /** diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/listener/StrategySelectedListener.java b/jsprit-core/src/main/java/jsprit/core/algorithm/listener/StrategySelectedListener.java index 4f96b60d..9f190c2a 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/listener/StrategySelectedListener.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/listener/StrategySelectedListener.java @@ -16,7 +16,7 @@ ******************************************************************************/ package jsprit.core.algorithm.listener; -import jsprit.core.algorithm.SearchStrategyManager; +import jsprit.core.algorithm.SearchStrategy; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; @@ -27,6 +27,6 @@ import java.util.Collection; public interface StrategySelectedListener extends VehicleRoutingAlgorithmListener{ - void informSelectedStrategy(String strategyId, SearchStrategyManager searchStrategyManager, VehicleRoutingProblem problem, Collection solutions); + void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions); } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/listener/VehicleRoutingAlgorithmListeners.java b/jsprit-core/src/main/java/jsprit/core/algorithm/listener/VehicleRoutingAlgorithmListeners.java index f97d6614..2620038f 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/listener/VehicleRoutingAlgorithmListeners.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/listener/VehicleRoutingAlgorithmListeners.java @@ -16,7 +16,7 @@ ******************************************************************************/ package jsprit.core.algorithm.listener; -import jsprit.core.algorithm.SearchStrategyManager; +import jsprit.core.algorithm.SearchStrategy; import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; @@ -172,10 +172,10 @@ public class VehicleRoutingAlgorithmListeners { } } - public void selectedStrategy(String name, SearchStrategyManager searchStrategyManager, VehicleRoutingProblem problem, Collection solutions) { + public void selectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem problem, Collection solutions) { for(PrioritizedVRAListener l : algorithmListeners){ if(l.getListener() instanceof StrategySelectedListener){ - ((StrategySelectedListener)l.getListener()).informSelectedStrategy(name, searchStrategyManager, problem, solutions); + ((StrategySelectedListener)l.getListener()).informSelectedStrategy(discoveredSolution, problem, solutions); } } }