diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java
index 3a13395b..cc4a58fa 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java
@@ -35,6 +35,8 @@ import java.util.concurrent.Executors;
public class Jsprit {
+ private final ActivityInsertionCostsCalculator activityInsertion;
+
public enum Construction {
BEST_INSERTION("best_insertion"), REGRET_INSERTION("regret_insertion");
@@ -132,6 +134,8 @@ public class Jsprit {
private Random random = RandomNumberGeneration.newInstance();
+ private ActivityInsertionCostsCalculator activityInsertionCalculator;
+
public static Builder newInstance(VehicleRoutingProblem vrp) {
return new Builder(vrp);
}
@@ -225,6 +229,11 @@ public class Jsprit {
return this;
}
+ public Builder setActivityInsertionCalculator(ActivityInsertionCostsCalculator activityInsertionCalculator){
+ this.activityInsertionCalculator = activityInsertionCalculator;
+ return this;
+ }
+
public VehicleRoutingAlgorithm buildAlgorithm() {
return new Jsprit(this).create(vrp);
}
@@ -294,6 +303,7 @@ public class Jsprit {
this.properties = builder.properties;
this.objectiveFunction = builder.objectiveFunction;
this.random = builder.random;
+ this.activityInsertion = builder.activityInsertionCalculator;
}
private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) {
@@ -403,6 +413,7 @@ public class Jsprit {
.setConcurrentMode(es, noThreads)
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
+ .setActivityInsertionCostCalculator(activityInsertion)
.build();
scorer = getRegretScorer(vrp);
regretInsertion.setScoringFunction(scorer);
@@ -412,6 +423,7 @@ public class Jsprit {
.setInsertionStrategy(InsertionBuilder.Strategy.REGRET)
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
.considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString())))
+ .setActivityInsertionCostCalculator(activityInsertion)
.build();
scorer = getRegretScorer(vrp);
regretInsertion.setScoringFunction(scorer);
@@ -425,6 +437,7 @@ public class Jsprit {
.setInsertionStrategy(InsertionBuilder.Strategy.BEST)
.considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString())))
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
+ .setActivityInsertionCostCalculator(activityInsertion)
.build();
best = bestInsertion;
} else {
@@ -433,6 +446,7 @@ public class Jsprit {
.considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString())))
.setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString())))
.setConcurrentMode(es, noThreads)
+ .setActivityInsertionCostCalculator(activityInsertion)
.build();
best = bestInsertion;
}
diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/io/AlgorithmConfigXmlReader.java b/jsprit-core/src/main/java/jsprit/core/algorithm/io/AlgorithmConfigXmlReader.java
index cebd43a7..47c536df 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/io/AlgorithmConfigXmlReader.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/io/AlgorithmConfigXmlReader.java
@@ -77,9 +77,7 @@ public class AlgorithmConfigXmlReader {
try {
algorithmConfig.getXMLConfiguration().load();
} catch (ConfigurationException e) {
- log.error(e);
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
}
diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java b/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java
index d96b75c5..f0ea52a3 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java
@@ -519,7 +519,6 @@ public class VehicleRoutingAlgorithms {
@Override
public void uncaughtException(Thread arg0, Throwable arg1) {
System.err.println(arg1.toString());
- System.exit(0);
}
});
Runtime.getRuntime().addShutdownHook(new Thread() {
diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java
index fa9210d7..de43da1b 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java
@@ -130,9 +130,7 @@ public final class BestInsertionConcurrent extends AbstractInsertionStrategy {
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (ExecutionException e) {
- e.printStackTrace();
- logger.error("Exception", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
VehicleRoute newRoute = VehicleRoute.emptyRoute();
InsertionData newIData = bestInsertionCostCalculator.getInsertionData(newRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, bestInsertionCost);
diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java
index 51f06db0..2be97a88 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertion.java
@@ -259,6 +259,11 @@ public class RegretInsertion extends AbstractInsertionStrategy {
if(scoredJob.getScore() > bestScoredJob.getScore()){
bestScoredJob = scoredJob;
}
+ else if (scoredJob.getScore() == bestScoredJob.getScore()){
+ if(scoredJob.getJob().getId().compareTo(bestScoredJob.getJob().getId()) <= 0){
+ bestScoredJob = scoredJob;
+ }
+ }
}
}
return bestScoredJob;
diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java
index 8e922728..c599226c 100644
--- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java
+++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java
@@ -136,6 +136,11 @@ public class RegretInsertionConcurrent extends AbstractInsertionStrategy {
} else if (sJob.getScore() > bestScoredJob.getScore()) {
bestScoredJob = sJob;
}
+ else if (sJob.getScore() == bestScoredJob.getScore()){
+ if(sJob.getJob().getId().compareTo(bestScoredJob.getJob().getId()) <= 0){
+ bestScoredJob = sJob;
+ }
+ }
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/Skills.java b/jsprit-core/src/main/java/jsprit/core/problem/Skills.java
index 6905ba9f..ba5d255f 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/Skills.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/Skills.java
@@ -47,7 +47,7 @@ public class Skills {
* @return builder
*/
public Builder addSkill(String skill) {
- skills.add(skill.toLowerCase());
+ skills.add(skill.trim().toLowerCase());
return this;
}
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
index d1e9dc43..89104e09 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
@@ -163,9 +163,7 @@ public class VrpXMLReader {
try {
xmlConfig.load();
} catch (ConfigurationException e) {
- logger.error("Exception:", e);
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
readProblemType(xmlConfig);
readVehiclesAndTheirTypes(xmlConfig);
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
index d6a99a19..f06aa2a1 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
@@ -117,9 +117,7 @@ public class VrpXMLWriter {
element.setAttribute("xsi:schemaLocation", "http://www.w3schools.com vrp_xml_schema.xsd");
} catch (ConfigurationException e) {
- logger.error("Exception:", e);
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
try {
@@ -128,9 +126,7 @@ public class VrpXMLWriter {
serializer.serialize(xmlConfig.getDocument());
out.close();
} catch (IOException e) {
- logger.error("Exception:", e);
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/jsprit/core/problem/vehicle/VehicleImpl.java
index 3172faac..578800e1 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/vehicle/VehicleImpl.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/vehicle/VehicleImpl.java
@@ -187,6 +187,7 @@ public class VehicleImpl extends AbstractVehicle {
* @return this builder
*/
public Builder setEarliestStart(double earliest_startTime) {
+ if(earliest_startTime < 0) throw new IllegalArgumentException("earliest start of vehicle " + id + " must not be negative");
this.earliestStart = earliest_startTime;
return this;
}
@@ -198,6 +199,7 @@ public class VehicleImpl extends AbstractVehicle {
* @return this builder
*/
public Builder setLatestArrival(double latest_arrTime) {
+ if(latest_arrTime < 0) throw new IllegalArgumentException("latest arrival time of vehicle " + id + " must not be negative");
this.latestArrival = latest_arrTime;
return this;
}
@@ -224,6 +226,7 @@ public class VehicleImpl extends AbstractVehicle {
* or (endLocationId!=null AND returnToDepot=false)
*/
public VehicleImpl build() {
+ if(latestArrival < earliestStart) throw new IllegalStateException("latest arrival of vehicle " + id + " must not be smaller than its start time");
if (startLocation != null && endLocation != null) {
if (!startLocation.getId().equals(endLocation.getId()) && !returnToDepot)
throw new IllegalStateException("this must not be. you specified both endLocationId and open-routes. this is contradictory.
" +
diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/box/JspritTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/box/JspritTest.java
index 6dd1fafd..3dbf420b 100644
--- a/jsprit-core/src/test/java/jsprit/core/algorithm/box/JspritTest.java
+++ b/jsprit-core/src/test/java/jsprit/core/algorithm/box/JspritTest.java
@@ -3,6 +3,8 @@ package jsprit.core.algorithm.box;
import jsprit.core.algorithm.SearchStrategy;
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
import jsprit.core.algorithm.listener.StrategySelectedListener;
+import jsprit.core.algorithm.recreate.InsertionData;
+import jsprit.core.algorithm.recreate.listener.BeforeJobInsertionListener;
import jsprit.core.algorithm.recreate.listener.JobInsertedListener;
import jsprit.core.algorithm.ruin.listener.RuinListener;
import jsprit.core.problem.Location;
@@ -185,6 +187,51 @@ public class JspritTest {
}
+ @Test
+ public void strategyDrawShouldBeReproducibleV2() {
+ Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build();
+ Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build();
+ Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build();
+ Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build();
+
+ VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
+ VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build();
+ VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS,"4").buildAlgorithm();
+ vra.setMaxIterations(100);
+ final List firstRecord = new ArrayList();
+ vra.addListener(new StrategySelectedListener() {
+
+ @Override
+ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) {
+ firstRecord.add(discoveredSolution.getStrategyId());
+ }
+
+ });
+ vra.searchSolutions();
+
+ RandomNumberGeneration.reset();
+ VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS,"2").buildAlgorithm();
+ second.setMaxIterations(100);
+ final List secondRecord = new ArrayList();
+ second.addListener(new StrategySelectedListener() {
+
+ @Override
+ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) {
+ secondRecord.add(discoveredSolution.getStrategyId());
+ }
+
+ });
+ second.searchSolutions();
+
+ for (int i = 0; i < 100; i++) {
+ if (!firstRecord.get(i).equals(secondRecord.get(i))) {
+ org.junit.Assert.assertFalse(true);
+ }
+ }
+ org.junit.Assert.assertTrue(true);
+
+ }
+
@Test
public void ruinedJobsShouldBeReproducible() {
Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build();
@@ -192,6 +239,72 @@ public class JspritTest {
Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build();
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build();
+ VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
+ VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build();
+ VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp)
+ .setProperty(Jsprit.Strategy.WORST_REGRET,"0.")
+ .setProperty(Jsprit.Strategy.WORST_BEST, "0.")
+ .setProperty(Jsprit.Parameter.THREADS, "2").buildAlgorithm();
+ vra.setMaxIterations(100);
+ final List firstRecord = new ArrayList();
+ vra.addListener(new RuinListener() {
+ @Override
+ public void ruinStarts(Collection routes) {
+
+ }
+
+ @Override
+ public void ruinEnds(Collection routes, Collection unassignedJobs) {
+
+ }
+
+ @Override
+ public void removed(Job job, VehicleRoute fromRoute) {
+ firstRecord.add(job.getId());
+ }
+ });
+ vra.searchSolutions();
+
+ VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "4")
+ .setProperty(Jsprit.Strategy.WORST_REGRET, "0.")
+ .setProperty(Jsprit.Strategy.WORST_BEST, "0.")
+ .buildAlgorithm();
+ second.setMaxIterations(100);
+ final List secondRecord = new ArrayList();
+ second.addListener(new RuinListener() {
+ @Override
+ public void ruinStarts(Collection routes) {
+
+ }
+
+ @Override
+ public void ruinEnds(Collection routes, Collection unassignedJobs) {
+
+ }
+
+ @Override
+ public void removed(Job job, VehicleRoute fromRoute) {
+ secondRecord.add(job.getId());
+ }
+ });
+ second.searchSolutions();
+
+ Assert.assertEquals(secondRecord.size(), firstRecord.size());
+ for (int i = 0; i < firstRecord.size(); i++) {
+ if (!firstRecord.get(i).equals(secondRecord.get(i))) {
+ Assert.assertFalse(true);
+ }
+ }
+ Assert.assertTrue(true);
+ }
+
+ @Test
+ public void ruinedJobsShouldBeReproducibleV2() {
+ Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build();
+ Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build();
+ Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build();
+ Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build();
+
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build();
VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp);
@@ -286,5 +399,73 @@ public class JspritTest {
Assert.assertTrue(true);
}
+ @Test
+ public void insertionShouldBeReproducibleV2() {
+ Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build();
+ Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 1)).build();
+ Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 3)).build();
+ Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 4)).build();
+
+ VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
+ VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build();
+
+ VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp)
+ .setProperty(Jsprit.Strategy.WORST_REGRET,"0.")
+ .setProperty(Jsprit.Strategy.WORST_BEST, "0.")
+ .setProperty(Jsprit.Parameter.THREADS, "4").buildAlgorithm();
+ vra.setMaxIterations(100);
+ final List firstRecord = new ArrayList();
+ final List firstRecordCosts = new ArrayList();
+ vra.addListener(new BeforeJobInsertionListener() {
+ @Override
+ public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute route) {
+ String id = job.getId();
+ firstRecordCosts.add(data.getInsertionCost());
+ firstRecord.add(id);
+ }
+ });
+ vra.searchSolutions();
+
+ VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp)
+ .setProperty(Jsprit.Strategy.WORST_REGRET,"0.")
+ .setProperty(Jsprit.Strategy.WORST_BEST, "0.")
+ .setProperty(Jsprit.Parameter.THREADS, "5").buildAlgorithm();
+ second.setMaxIterations(100);
+ final List secondRecord = new ArrayList();
+ final List secondRecordCosts = new ArrayList();
+ second.addListener(new BeforeJobInsertionListener() {
+ @Override
+ public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute route) {
+ secondRecord.add(job.getId());
+ secondRecordCosts.add(data.getInsertionCost());
+ }
+ });
+ second.searchSolutions();
+
+// for(int i=0;i skillSet = new HashSet();
+ skillSet.add(" skill1");
+ skillSet.add("Skill2");
+ Skills skills = Skills.Builder.newInstance().addAllSkills(skillSet).build();
+ assertTrue(skills.containsSkill("skill1"));
+ assertTrue(skills.containsSkill("skill2"));
+ }
+
+ @Test
+ public void whenSkillsAddedTrailingWhitespaceShouldNotMatter() {
+ Set skillSet = new HashSet();
+ skillSet.add("skill1 ");
+ skillSet.add("Skill2");
+ Skills skills = Skills.Builder.newInstance().addAllSkills(skillSet).build();
+ assertTrue(skills.containsSkill("skill1"));
+ assertTrue(skills.containsSkill("skill2"));
+ }
+
+ @Test
+ public void whenSkillsAddedTrailingWhitespaceShouldNotMatter2() {
+ Skills skills = Skills.Builder.newInstance().addSkill("skill1 ").build();
+ assertTrue(skills.containsSkill("skill1"));
+ }
+
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java
index a46795d0..f532f14e 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java
@@ -107,9 +107,7 @@ public class ChristofidesReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -117,10 +115,7 @@ public class ChristofidesReader {
try {
return reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
- return null;
+ throw new RuntimeException(e);
}
}
@@ -135,9 +130,7 @@ public class ChristofidesReader {
try {
reader = new BufferedReader(new FileReader(solomonFile));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java
index 95943ca9..2b5fd9ad 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java
@@ -136,9 +136,7 @@ public class CordeauReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -146,10 +144,7 @@ public class CordeauReader {
try {
return reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
- return null;
+ throw new RuntimeException(e);
}
}
@@ -164,9 +159,7 @@ public class CordeauReader {
try {
reader = new BufferedReader(new FileReader(solomonFile));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java
index aae46cee..092c5dfd 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java
@@ -142,9 +142,7 @@ public class LiLimReader {
try {
reader = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java
index f0ac80f9..e84a1034 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java
@@ -86,9 +86,7 @@ public class LopezIbanezBlumReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -96,10 +94,7 @@ public class LopezIbanezBlumReader {
try {
return reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
- return null;
+ throw new RuntimeException(e);
}
}
@@ -108,9 +103,7 @@ public class LopezIbanezBlumReader {
try {
reader = new BufferedReader(new FileReader(solomonFile));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java
index 90856af6..a22526d7 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java
@@ -149,9 +149,7 @@ public class LuiShenReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -159,10 +157,7 @@ public class LuiShenReader {
try {
return reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
- return null;
+ throw new RuntimeException(e);
}
}
@@ -177,9 +172,7 @@ public class LuiShenReader {
try {
reader = new BufferedReader(new FileReader(solomonFile));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java
index 74154788..07cf7140 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java
@@ -127,9 +127,7 @@ public class SolomonReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -137,10 +135,7 @@ public class SolomonReader {
try {
return reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- logger.error("Exception:", e);
- System.exit(1);
- return null;
+ throw new RuntimeException(e);
}
}
@@ -155,9 +150,7 @@ public class SolomonReader {
try {
reader = new BufferedReader(new FileReader(solomonFile));
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- logger.error("Exception:", e1);
- System.exit(1);
+ throw new RuntimeException(e1);
}
return reader;
}
diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/VrphGoldenReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/VrphGoldenReader.java
index 829da23a..707de375 100644
--- a/jsprit-instances/src/main/java/jsprit/instance/reader/VrphGoldenReader.java
+++ b/jsprit-instances/src/main/java/jsprit/instance/reader/VrphGoldenReader.java
@@ -138,8 +138,7 @@ public class VrphGoldenReader {
try {
reader.close();
} catch (IOException e) {
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
}
@@ -148,8 +147,7 @@ public class VrphGoldenReader {
try {
readLine = reader.readLine();
} catch (IOException e) {
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
return readLine;
}
@@ -160,10 +158,8 @@ public class VrphGoldenReader {
bufferedReader = new BufferedReader(new FileReader(new File(filename)));
return bufferedReader;
} catch (FileNotFoundException e) {
- e.printStackTrace();
- System.exit(1);
+ throw new RuntimeException(e);
}
- return bufferedReader;
}
public static void main(String[] args) {