diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/AlgorithmSearchProgressChartListener.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/AlgorithmSearchProgressChartListener.java index e6d16c3d..4136ff8c 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/AlgorithmSearchProgressChartListener.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/AlgorithmSearchProgressChartListener.java @@ -16,17 +16,16 @@ ******************************************************************************/ package jsprit.analysis.toolbox; -import java.util.Collection; - import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.listener.AlgorithmEndsListener; import jsprit.core.algorithm.listener.AlgorithmStartsListener; import jsprit.core.algorithm.listener.IterationEndsListener; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; - +import java.util.Collection; /** @@ -40,7 +39,7 @@ import org.apache.log4j.Logger; public class AlgorithmSearchProgressChartListener implements IterationEndsListener, AlgorithmEndsListener, AlgorithmStartsListener { - private static Logger log = Logger.getLogger(AlgorithmSearchProgressChartListener.class); + private static Logger log = LogManager.getLogger(AlgorithmSearchProgressChartListener.class); private String filename; diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ComputationalLaboratory.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ComputationalLaboratory.java index 87d05a49..eb050838 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ComputationalLaboratory.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ComputationalLaboratory.java @@ -18,24 +18,18 @@ ******************************************************************************/ package jsprit.analysis.toolbox; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.VehicleRoutingAlgorithmFactory; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.util.BenchmarkInstance; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + public class ComputationalLaboratory { @@ -267,7 +261,7 @@ public class ComputationalLaboratory { private int threads = Runtime.getRuntime().availableProcessors()+1; public ComputationalLaboratory() { - Logger.getRootLogger().setLevel(Level.ERROR); + } /** @@ -306,9 +300,8 @@ public class ComputationalLaboratory { /** * Adds instance. - * - * @param name - * @param problem + * + * @param instance the instance to be added * @throws IllegalStateException if there is already an instance with the same name. */ public void addInstance(BenchmarkInstance instance){ @@ -319,9 +312,8 @@ public class ComputationalLaboratory { /** * Adds collection of instances. - * - * @param name - * @param problem + * + * @param instances collection of instances to be added * @throws IllegalStateException if there is already an instance with the same name. */ public void addAllInstances(Collection instances){ diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ConcurrentBenchmarker.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ConcurrentBenchmarker.java index 25a71439..7b7a8e0b 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ConcurrentBenchmarker.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/ConcurrentBenchmarker.java @@ -16,15 +16,6 @@ ******************************************************************************/ package jsprit.analysis.toolbox; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - import jsprit.analysis.util.BenchmarkWriter; import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.VehicleRoutingAlgorithmFactory; @@ -35,10 +26,12 @@ import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.util.BenchmarkInstance; import jsprit.core.util.BenchmarkResult; import jsprit.core.util.Solutions; - import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.*; public class ConcurrentBenchmarker { @@ -75,7 +68,7 @@ public class ConcurrentBenchmarker { public ConcurrentBenchmarker(String algorithmConfig) { super(); this.algorithmConfig = algorithmConfig; - Logger.getRootLogger().setLevel(Level.ERROR); +// LogManager.getRootLogger().setLevel(Level.ERROR); } public ConcurrentBenchmarker(VehicleRoutingAlgorithmFactory algorithmFactory){ diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/Plotter.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/Plotter.java index a5ab00d3..45bbcd03 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/Plotter.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/Plotter.java @@ -16,38 +16,17 @@ ******************************************************************************/ package jsprit.analysis.toolbox; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Paint; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; -import java.io.File; -import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - import jsprit.core.problem.VehicleRoutingProblem; -import jsprit.core.problem.job.Delivery; -import jsprit.core.problem.job.Job; -import jsprit.core.problem.job.Pickup; -import jsprit.core.problem.job.Service; -import jsprit.core.problem.job.Shipment; +import jsprit.core.problem.job.*; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.problem.solution.route.VehicleRoute; import jsprit.core.problem.solution.route.activity.TourActivity; import jsprit.core.problem.vehicle.Vehicle; import jsprit.core.util.Coordinate; import jsprit.core.util.Locations; - -import org.apache.log4j.Logger; -import org.jfree.chart.ChartUtilities; -import org.jfree.chart.JFreeChart; -import org.jfree.chart.LegendItem; -import org.jfree.chart.LegendItemCollection; -import org.jfree.chart.LegendItemSource; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jfree.chart.*; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.XYItemLabelGenerator; import org.jfree.chart.plot.XYPlot; @@ -62,6 +41,12 @@ import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.RectangleEdge; import org.jfree.util.ShapeUtilities; +import java.awt.*; +import java.awt.geom.Ellipse2D; +import java.io.File; +import java.io.IOException; +import java.util.*; + /** * Visualizes problem and solution. @@ -154,7 +139,7 @@ public class Plotter { } - private static Logger log = Logger.getLogger(Plotter.class); + private static Logger log = LogManager.getLogger(Plotter.class); /** * Label to label ID (=jobId), SIZE (=jobSize=jobCapacityDimensions) diff --git a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/StopWatch.java b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/StopWatch.java index 837d6581..2ccac67d 100644 --- a/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/StopWatch.java +++ b/jsprit-analysis/src/main/java/jsprit/analysis/toolbox/StopWatch.java @@ -16,20 +16,20 @@ ******************************************************************************/ package jsprit.analysis.toolbox; -import java.util.Collection; - import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.listener.AlgorithmEndsListener; import jsprit.core.algorithm.listener.AlgorithmStartsListener; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; +import java.util.Collection; public class StopWatch implements AlgorithmStartsListener, AlgorithmEndsListener{ - private static Logger log = Logger.getLogger(StopWatch.class); + private static Logger log = LogManager.getLogger(StopWatch.class); private double ran; diff --git a/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java b/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java index ff183ba9..72a3f399 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java +++ b/jsprit-examples/src/main/java/jsprit/examples/BicycleMessenger.java @@ -18,6 +18,7 @@ ******************************************************************************/ package jsprit.examples; +import jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; import jsprit.analysis.toolbox.GraphStreamViewer; import jsprit.analysis.toolbox.GraphStreamViewer.Label; import jsprit.analysis.toolbox.Plotter; @@ -27,6 +28,7 @@ import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder; import jsprit.core.algorithm.state.StateManager; import jsprit.core.algorithm.state.StateUpdater; +import jsprit.core.algorithm.termination.VariationCoefficientTermination; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.Builder; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; @@ -108,8 +110,8 @@ public class BicycleMessenger { public ConstraintsStatus fulfilled(JobInsertionContext iFacts,TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { //make sure vehicle can manage direct path double arrTime_at_nextAct_onDirectRoute = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double latest_arrTime_at_nextAct = stateManager.getActivityState(nextAct, latest_act_arrival_time_stateId, Double.class); - + Double latest_arrTime_at_nextAct = stateManager.getActivityState(nextAct, latest_act_arrival_time_stateId, Double.class); + if(latest_arrTime_at_nextAct == null) latest_arrTime_at_nextAct = nextAct.getTheoreticalLatestOperationStartTime(); if(arrTime_at_nextAct_onDirectRoute > latest_arrTime_at_nextAct){ //constraint can never be fulfilled anymore, thus .NOT_FULFILLED_BREAK return ConstraintsStatus.NOT_FULFILLED_BREAK; @@ -274,10 +276,10 @@ public class BicycleMessenger { vraBuilder.setStateAndConstraintManager(stateManager, constraintManager); VehicleRoutingAlgorithm algorithm = vraBuilder.build(); algorithm.setNuOfIterations(2000); -// VariationCoefficientTermination prematureAlgorithmTermination = new VariationCoefficientTermination(200, 0.001); -// algorithm.setPrematureAlgorithmTermination(prematureAlgorithmTermination); -// algorithm.addListener(prematureAlgorithmTermination); -// algorithm.addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); + VariationCoefficientTermination prematureAlgorithmTermination = new VariationCoefficientTermination(200, 0.001); + algorithm.setPrematureAlgorithmTermination(prematureAlgorithmTermination); + algorithm.addListener(prematureAlgorithmTermination); + algorithm.addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); //search Collection solutions = algorithm.searchSolutions(); diff --git a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExampleWithPenaltyVehicles.java b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExampleWithPenaltyVehicles.java index 3909070a..b6457b7d 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExampleWithPenaltyVehicles.java +++ b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExampleWithPenaltyVehicles.java @@ -16,15 +16,8 @@ ******************************************************************************/ package jsprit.examples; -import java.util.Arrays; -import java.util.Collection; - -import jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import jsprit.analysis.toolbox.GraphStreamViewer; -import jsprit.analysis.toolbox.Plotter; -import jsprit.analysis.toolbox.SolutionPrinter; +import jsprit.analysis.toolbox.*; import jsprit.analysis.toolbox.SolutionPrinter.Print; -import jsprit.analysis.toolbox.StopWatch; import jsprit.core.algorithm.VehicleRoutingAlgorithm; import jsprit.core.algorithm.io.VehicleRoutingAlgorithms; import jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners.Priority; @@ -40,6 +33,9 @@ import jsprit.core.util.Coordinate; import jsprit.core.util.Solutions; import jsprit.util.Examples; +import java.util.Arrays; +import java.util.Collection; + public class MultipleDepotExampleWithPenaltyVehicles { @@ -111,7 +107,8 @@ public class MultipleDepotExampleWithPenaltyVehicles { * solve the problem */ VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig.xml"); - vra.getAlgorithmListeners().addListener(new StopWatch(),Priority.HIGH); + vra.setNuOfIterations(5000); + vra.getAlgorithmListeners().addListener(new StopWatch(),Priority.HIGH); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); Collection solutions = vra.searchSolutions(); diff --git a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java index ddcb181f..5191000f 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java +++ b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java @@ -16,8 +16,6 @@ ******************************************************************************/ package jsprit.examples; -import java.util.Collection; - import jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; import jsprit.analysis.toolbox.GraphStreamViewer; import jsprit.analysis.toolbox.Plotter; @@ -31,16 +29,13 @@ import jsprit.core.problem.io.VrpXMLReader; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.util.Examples; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import java.util.Collection; public class PickupAndDeliveryExample2 { public static void main(String[] args) { - - Logger.getRootLogger().setLevel(Level.INFO); - + /* * some preparation - create output folder */ 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 08b0601b..c45f1df3 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/ChristofidesReader.java @@ -17,11 +17,6 @@ package jsprit.instance.reader; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; import jsprit.core.problem.job.Service; @@ -29,9 +24,13 @@ import jsprit.core.problem.vehicle.Vehicle; import jsprit.core.problem.vehicle.VehicleImpl; import jsprit.core.problem.vehicle.VehicleTypeImpl; import jsprit.core.util.Coordinate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; - +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; /** @@ -44,7 +43,7 @@ import org.apache.log4j.Logger; */ public class ChristofidesReader { - private static Logger logger = Logger.getLogger(ChristofidesReader.class); + private static Logger logger = LogManager.getLogger(ChristofidesReader.class); private final VehicleRoutingProblem.Builder vrpBuilder; 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 b905c664..a34643a9 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/CordeauReader.java @@ -17,13 +17,6 @@ package jsprit.instance.reader; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - import jsprit.core.problem.Capacity; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; @@ -33,9 +26,15 @@ import jsprit.core.problem.vehicle.VehicleImpl; import jsprit.core.problem.vehicle.VehicleImpl.Builder; import jsprit.core.problem.vehicle.VehicleTypeImpl; import jsprit.core.util.Coordinate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; - +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** @@ -51,7 +50,7 @@ import org.apache.log4j.Logger; */ public class CordeauReader { - private static Logger logger = Logger.getLogger(CordeauReader.class); + private static Logger logger = LogManager.getLogger(CordeauReader.class); private final VehicleRoutingProblem.Builder vrpBuilder; 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 f03f8edb..73d673f7 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LiLimReader.java @@ -17,15 +17,6 @@ package jsprit.instance.reader; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.Builder; import jsprit.core.problem.job.Shipment; @@ -35,8 +26,17 @@ import jsprit.core.problem.vehicle.VehicleImpl; import jsprit.core.problem.vehicle.VehicleTypeImpl; import jsprit.core.util.Coordinate; import jsprit.core.util.Locations; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; /** @@ -92,7 +92,7 @@ public class LiLimReader { } - private static Logger logger = Logger.getLogger(LiLimReader.class); + private static Logger logger = LogManager.getLogger(LiLimReader.class); private VehicleRoutingProblem.Builder vrpBuilder; 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 1c043b62..80d9d8c5 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LuiShenReader.java @@ -17,11 +17,6 @@ package jsprit.instance.reader; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; import jsprit.core.problem.job.Service; @@ -30,14 +25,18 @@ import jsprit.core.problem.vehicle.Vehicle; import jsprit.core.problem.vehicle.VehicleImpl; import jsprit.core.problem.vehicle.VehicleTypeImpl; import jsprit.core.util.Coordinate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; - +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; public class LuiShenReader { - private static Logger logger = Logger.getLogger(LuiShenReader.class); + private static Logger logger = LogManager.getLogger(LuiShenReader.class); private final VehicleRoutingProblem.Builder vrpBuilder; 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 e6058231..11bdb5c6 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/SolomonReader.java @@ -17,11 +17,6 @@ package jsprit.instance.reader; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.VehicleRoutingProblem.FleetSize; import jsprit.core.problem.job.Service; @@ -30,9 +25,13 @@ import jsprit.core.problem.vehicle.Vehicle; import jsprit.core.problem.vehicle.VehicleImpl; import jsprit.core.problem.vehicle.VehicleTypeImpl; import jsprit.core.util.Coordinate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import org.apache.log4j.Logger; - +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; /** @@ -53,7 +52,7 @@ public class SolomonReader { this.variableCostProjectionFactor = costProjectionFactor; } - private static Logger logger = Logger.getLogger(SolomonReader.class); + private static Logger logger = LogManager.getLogger(SolomonReader.class); private final VehicleRoutingProblem.Builder vrpBuilder;