1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

internal ruinImprovement

This commit is contained in:
oblonski 2013-08-13 14:34:10 +02:00
parent 59b25d3d8e
commit 9ef3a775e9

View file

@ -36,6 +36,7 @@ import org.apache.commons.configuration.XMLConfiguration;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import util.RouteUtils; import util.RouteUtils;
import algorithms.RuinStrategy.RuinListener;
import algorithms.VehicleRoutingAlgorithms.TypedMap.AbstractInsertionKey; import algorithms.VehicleRoutingAlgorithms.TypedMap.AbstractInsertionKey;
import algorithms.VehicleRoutingAlgorithms.TypedMap.AbstractKey; import algorithms.VehicleRoutingAlgorithms.TypedMap.AbstractKey;
import algorithms.VehicleRoutingAlgorithms.TypedMap.AcceptorKey; import algorithms.VehicleRoutingAlgorithms.TypedMap.AcceptorKey;
@ -59,16 +60,17 @@ import basics.algo.InsertionListener;
import basics.algo.IterationWithoutImprovementBreaker; import basics.algo.IterationWithoutImprovementBreaker;
import basics.algo.PrematureAlgorithmBreaker; import basics.algo.PrematureAlgorithmBreaker;
import basics.algo.SearchStrategy; import basics.algo.SearchStrategy;
import basics.algo.SearchStrategy.DiscoveredSolution;
import basics.algo.SearchStrategyManager; import basics.algo.SearchStrategyManager;
import basics.algo.SearchStrategyModule; import basics.algo.SearchStrategyModule;
import basics.algo.SearchStrategyModuleListener; import basics.algo.SearchStrategyModuleListener;
import basics.algo.TimeBreaker; import basics.algo.TimeBreaker;
import basics.algo.VariationCoefficientBreaker; import basics.algo.VariationCoefficientBreaker;
import basics.algo.SearchStrategy.DiscoveredSolution;
import basics.algo.VehicleRoutingAlgorithmListeners.PrioritizedVRAListener; import basics.algo.VehicleRoutingAlgorithmListeners.PrioritizedVRAListener;
import basics.algo.VehicleRoutingAlgorithmListeners.Priority; import basics.algo.VehicleRoutingAlgorithmListeners.Priority;
import basics.io.AlgorithmConfig; import basics.io.AlgorithmConfig;
import basics.io.AlgorithmConfigXmlReader; import basics.io.AlgorithmConfigXmlReader;
import basics.route.VehicleRoute;
@ -801,13 +803,24 @@ public class VehicleRoutingAlgorithms {
return ruin; return ruin;
} }
private static RuinStrategy getRandomRuin(VehicleRoutingProblem vrp, private static RuinStrategy getRandomRuin(VehicleRoutingProblem vrp, RouteStates activityStates, TypedMap definedClasses, ModKey modKey, double shareToRuin) {
RouteStates activityStates, TypedMap definedClasses,
ModKey modKey, double shareToRuin) {
RuinStrategyKey stratKey = new RuinStrategyKey(modKey); RuinStrategyKey stratKey = new RuinStrategyKey(modKey);
RuinStrategy ruin = definedClasses.get(stratKey); RuinStrategy ruin = definedClasses.get(stratKey);
if(ruin == null){ if(ruin == null){
ruin = new RuinRandom(vrp, shareToRuin); ruin = new RuinRandom(vrp, shareToRuin);
ruin.addListener(new RuinListener() {
@Override
public void ruinStarts(Collection<VehicleRoute> routes) {}
@Override
public void ruinEnds(Collection<VehicleRoute> routes, Collection<Job> unassignedJobs) {
// new
}
@Override
public void removed(Job job, VehicleRoute fromRoute) {}
});
definedClasses.put(stratKey, ruin); definedClasses.put(stratKey, ruin);
} }
return ruin; return ruin;