From 07f6af9e56e806d3ad990612cded2445e905df95 Mon Sep 17 00:00:00 2001
From: Stefan Schroeder <4sschroeder@gmail.com>
Date: Mon, 5 Aug 2013 18:38:54 +0200
Subject: [PATCH] improve GendreauAlgo
---
.../{GendreauPostOpt.java => Gendreau.java} | 8 ++++----
.../algorithms/VehicleRoutingAlgorithms.java | 18 +++++++++---------
.../src/main/java/basics/io/VrpXMLReader.java | 2 +-
.../src/main/resources/algorithm_schema.xsd | 6 ++++--
.../java/algorithms/GendreauPostOptTest.java | 4 ++--
5 files changed, 20 insertions(+), 18 deletions(-)
rename jsprit-core/src/main/java/algorithms/{GendreauPostOpt.java => Gendreau.java} (94%)
diff --git a/jsprit-core/src/main/java/algorithms/GendreauPostOpt.java b/jsprit-core/src/main/java/algorithms/Gendreau.java
similarity index 94%
rename from jsprit-core/src/main/java/algorithms/GendreauPostOpt.java
rename to jsprit-core/src/main/java/algorithms/Gendreau.java
index c7560cee..03d96688 100644
--- a/jsprit-core/src/main/java/algorithms/GendreauPostOpt.java
+++ b/jsprit-core/src/main/java/algorithms/Gendreau.java
@@ -41,9 +41,9 @@ import basics.route.TourActivity.JobActivity;
import util.RandomNumberGeneration;
-final class GendreauPostOpt implements SearchStrategyModule{
+final class Gendreau implements SearchStrategyModule{
- private final static Logger log = Logger.getLogger(GendreauPostOpt.class);
+ private final static Logger log = Logger.getLogger(Gendreau.class);
private final static String NAME = "gendreauPostOpt";
@@ -67,7 +67,7 @@ final class GendreauPostOpt implements SearchStrategyModule{
this.shareOfJobsToRuin = shareOfJobsToRuin;
}
- public GendreauPostOpt(VehicleRoutingProblem vrp, RuinStrategy ruin, AbstractInsertionStrategy insertionStrategy) {
+ public Gendreau(VehicleRoutingProblem vrp, RuinStrategy ruin, AbstractInsertionStrategy insertionStrategy) {
super();
this.routeAlgorithm = insertionStrategy.getRouteAlgorithm();
this.ruin = ruin;
@@ -77,7 +77,7 @@ final class GendreauPostOpt implements SearchStrategyModule{
@Override
public String toString() {
- return "[name=gendreauPostOpt][iterations="+nOfIterations+"][share2ruin="+shareOfJobsToRuin+"]";
+ return "[name=gendreau][iterations="+nOfIterations+"][share2ruin="+shareOfJobsToRuin+"]";
}
public void setRandom(Random random) {
diff --git a/jsprit-core/src/main/java/algorithms/VehicleRoutingAlgorithms.java b/jsprit-core/src/main/java/algorithms/VehicleRoutingAlgorithms.java
index 71631a38..25daad32 100644
--- a/jsprit-core/src/main/java/algorithms/VehicleRoutingAlgorithms.java
+++ b/jsprit-core/src/main/java/algorithms/VehicleRoutingAlgorithms.java
@@ -746,11 +746,11 @@ public class VehicleRoutingAlgorithms {
return module;
}
- if(moduleName.equals("gendreauPostOpt")){
+ if(moduleName.equals("gendreau")){
int iterations = moduleConfig.getInt("iterations");
double share = moduleConfig.getDouble("share");
String ruinName = moduleConfig.getString("ruin[@name]");
- if(ruinName == null) throw new IllegalStateException("gendreauPostOpt.ruin[@name] is missing. set it to \"radialRuin\" or \"randomRuin\"");
+ if(ruinName == null) throw new IllegalStateException("gendreau.ruin[@name] is missing. set it to \"radialRuin\" or \"randomRuin\"");
String ruinId = moduleConfig.getString("ruin[@id]");
if(ruinId == null) ruinId = "noId";
ModKey ruinKey = makeKey(ruinName,ruinId);
@@ -762,7 +762,7 @@ public class VehicleRoutingAlgorithms {
}
String insertionName = moduleConfig.getString("insertion[@name]");
- if(insertionName == null) throw new IllegalStateException("gendreauPostOpt.insertion[@name] is missing. set it to \"regretInsertion\" or \"bestInsertion\"");
+ if(insertionName == null) throw new IllegalStateException("gendreau.insertion[@name] is missing. set it to \"regretInsertion\" or \"bestInsertion\"");
String insertionId = moduleConfig.getString("insertion[@id]");
if(insertionId == null) insertionId = "noId";
ModKey insertionKey = makeKey(insertionName,insertionId);
@@ -775,12 +775,12 @@ public class VehicleRoutingAlgorithms {
insertion = createInsertionStrategy(insertionConfigs.get(0), vrp, vehicleFleetManager, activityStates, prioListeners, executorService, nuOfThreads);
algorithmListeners.addAll(prioListeners);
}
- GendreauPostOpt postOpt = new GendreauPostOpt(vrp, ruin, insertion);
- postOpt.setShareOfJobsToRuin(share);
- postOpt.setNuOfIterations(iterations);
- postOpt.setFleetManager(vehicleFleetManager);
- definedClasses.put(strategyModuleKey, postOpt);
- return postOpt;
+ Gendreau gendreau = new Gendreau(vrp, ruin, insertion);
+ gendreau.setShareOfJobsToRuin(share);
+ gendreau.setNuOfIterations(iterations);
+ gendreau.setFleetManager(vehicleFleetManager);
+ definedClasses.put(strategyModuleKey, gendreau);
+ return gendreau;
}
throw new NullPointerException("no module found with moduleName=" + moduleName +
"\n\tcheck config whether the correct names are used" +
diff --git a/jsprit-core/src/main/java/basics/io/VrpXMLReader.java b/jsprit-core/src/main/java/basics/io/VrpXMLReader.java
index 308e633a..e7c93c63 100644
--- a/jsprit-core/src/main/java/basics/io/VrpXMLReader.java
+++ b/jsprit-core/src/main/java/basics/io/VrpXMLReader.java
@@ -274,7 +274,7 @@ public class VrpXMLReader{
if(distC != null) typeBuilder.setCostPerDistance(distC);
// if(start != null && end != null) typeBuilder.setTimeSchedule(new TimeSchedule(start, end));
VehicleTypeImpl type = typeBuilder.build();
- types.put(type.typeId, type);
+ types.put(type.getTypeId(), type);
vrpBuilder.addVehicleType(type);
}
diff --git a/jsprit-core/src/main/resources/algorithm_schema.xsd b/jsprit-core/src/main/resources/algorithm_schema.xsd
index f3992790..66b1582b 100644
--- a/jsprit-core/src/main/resources/algorithm_schema.xsd
+++ b/jsprit-core/src/main/resources/algorithm_schema.xsd
@@ -166,14 +166,16 @@
-
+
+
+
-
+
diff --git a/jsprit-core/src/test/java/algorithms/GendreauPostOptTest.java b/jsprit-core/src/test/java/algorithms/GendreauPostOptTest.java
index 7ad448f5..7b23c02c 100644
--- a/jsprit-core/src/test/java/algorithms/GendreauPostOptTest.java
+++ b/jsprit-core/src/test/java/algorithms/GendreauPostOptTest.java
@@ -204,7 +204,7 @@ public class GendreauPostOptTest {
RuinRadial radialRuin = RuinRadial.newInstance(vrp, 0.2, new JobDistanceAvgCosts(vrp.getTransportCosts()), new JobRemoverImpl(), updater);
AbstractInsertionStrategy insertionStrategy = new BestInsertion(routeAlgorithm);
- GendreauPostOpt postOpt = new GendreauPostOpt(vrp, radialRuin, insertionStrategy);
+ Gendreau postOpt = new Gendreau(vrp, radialRuin, insertionStrategy);
postOpt.setFleetManager(fleetManager);
VehicleRoutingProblemSolution newSolution = postOpt.runAndGetSolution(sol);
@@ -245,7 +245,7 @@ public class GendreauPostOptTest {
RuinRadial radialRuin = RuinRadial.newInstance(vrp, 0.2, new JobDistanceAvgCosts(vrp.getTransportCosts()), new JobRemoverImpl(), updater);
AbstractInsertionStrategy insertionStrategy = new BestInsertion(routeAlgorithm);
- GendreauPostOpt postOpt = new GendreauPostOpt(vrp, radialRuin, insertionStrategy);
+ Gendreau postOpt = new Gendreau(vrp, radialRuin, insertionStrategy);
postOpt.setShareOfJobsToRuin(1.0);
postOpt.setNuOfIterations(1);
postOpt.setFleetManager(fleetManager);