From 1ece0e681942a29d6d90eb6a37b1c6cd1db373e8 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 24 Sep 2015 15:46:27 +0200 Subject: [PATCH 1/4] make noise maker reproducable --- .../core/algorithm/box/InsertionNoiseMaker.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java b/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java index a03b8632..edd06846 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java @@ -32,12 +32,20 @@ class InsertionNoiseMaker implements SoftActivityConstraint, IterationStartsList private double noiseLevel = 0.1; - private Random random = RandomNumberGeneration.getRandom(); + private Random random = RandomNumberGeneration.newInstance(); + + private Random[] randomArray; public InsertionNoiseMaker(VehicleRoutingProblem vrp, double noiseLevel, double noiseProbability) { this.vrp = vrp; this.noiseLevel = noiseLevel; this.noiseProbability = noiseProbability; + randomArray = new Random[vrp.getNuActivities()+2]; + for(int i=0;i Date: Fri, 25 Sep 2015 09:09:31 +0200 Subject: [PATCH 2/4] fix #156 and separate maxCosts calc from noiseMaker --- ...ava => ConcurrentInsertionNoiseMaker.java} | 48 ++----------------- .../jsprit/core/algorithm/box/Jsprit.java | 37 ++++++++------ .../core/algorithm/ruin/JobNeighborhoods.java | 2 + .../algorithm/ruin/JobNeighborhoodsImpl.java | 8 ++++ ...obNeighborhoodsImplWithCapRestriction.java | 10 +++- 5 files changed, 46 insertions(+), 59 deletions(-) rename jsprit-core/src/main/java/jsprit/core/algorithm/box/{InsertionNoiseMaker.java => ConcurrentInsertionNoiseMaker.java} (51%) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java b/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java similarity index 51% rename from jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java rename to jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java index edd06846..ca47cc12 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/box/InsertionNoiseMaker.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java @@ -1,80 +1,43 @@ package jsprit.core.algorithm.box; import jsprit.core.algorithm.listener.IterationStartsListener; -import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.constraint.SoftActivityConstraint; -import jsprit.core.problem.job.Job; -import jsprit.core.problem.job.Service; -import jsprit.core.problem.job.Shipment; import jsprit.core.problem.misc.JobInsertionContext; import jsprit.core.problem.solution.VehicleRoutingProblemSolution; import jsprit.core.problem.solution.route.activity.TourActivity; import jsprit.core.util.RandomNumberGeneration; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Random; /** * Created by schroeder on 16/01/15. */ -class InsertionNoiseMaker implements SoftActivityConstraint, IterationStartsListener { +class ConcurrentInsertionNoiseMaker implements SoftActivityConstraint, IterationStartsListener { private final double noiseProbability; private boolean makeNoise = false; - private VehicleRoutingProblem vrp; - - double maxCosts = 0.; - private double noiseLevel = 0.1; private Random random = RandomNumberGeneration.newInstance(); private Random[] randomArray; - public InsertionNoiseMaker(VehicleRoutingProblem vrp, double noiseLevel, double noiseProbability) { - this.vrp = vrp; + private double maxCosts; + + ConcurrentInsertionNoiseMaker(VehicleRoutingProblem vrp, double maxCosts, double noiseLevel, double noiseProbability) { this.noiseLevel = noiseLevel; this.noiseProbability = noiseProbability; + this.maxCosts = maxCosts; randomArray = new Random[vrp.getNuActivities()+2]; for(int i=0;i fromLocations = getLocations(i); - for (Job j : vrp.getJobs().values()) { - List toLocations = getLocations(j); - for (Location iLoc : fromLocations) { - for (Location jLoc : toLocations) { - max = Math.max(max, vrp.getTransportCosts().getTransportCost(iLoc, jLoc, 0, null, vrp.getVehicles().iterator().next())); - } - } - } - } - maxCosts = max; - } - - private List getLocations(Job j) { - List locs = new ArrayList(); - if (j instanceof Service) { - locs.add(((Service) j).getLocation()); - } else if (j instanceof Shipment) { - locs.add(((Shipment) j).getPickupLocation()); - locs.add(((Shipment) j).getDeliveryLocation()); - } - return locs; } @Override @@ -92,7 +55,6 @@ class InsertionNoiseMaker implements SoftActivityConstraint, IterationStartsList return 0; } - public void setRandom(Random random) { this.random = random; } 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 a64ebdcd..84c82752 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 @@ -308,14 +308,29 @@ public class Jsprit { constraintManager = new ConstraintManager(vrp, stateManager); } + if (noThreads == null) { + noThreads = toInteger(getProperty(Parameter.THREADS.toString())); + } + if (noThreads > 1) { + if (es == null) { + setupExecutorInternally = true; + es = Executors.newFixedThreadPool(noThreads); + } + } + double noiseLevel = toDouble(getProperty(Parameter.INSERTION_NOISE_LEVEL.toString())); double noiseProbability = toDouble(getProperty(Parameter.INSERTION_NOISE_PROB.toString())); - final InsertionNoiseMaker noiseMaker = new InsertionNoiseMaker(vrp, noiseLevel, noiseProbability); - noiseMaker.setRandom(random); - constraintManager.addConstraint(noiseMaker); JobNeighborhoods jobNeighborhoods = new JobNeighborhoodsFactory().createNeighborhoods(vrp, new AvgServiceAndShipmentDistance(vrp.getTransportCosts()), (int) (vrp.getJobs().values().size() * 0.5)); jobNeighborhoods.initialise(); + final double maxCosts = jobNeighborhoods.getMaxDistance(); + + IterationStartsListener noiseConfigurator; + + ConcurrentInsertionNoiseMaker noiseMaker = new ConcurrentInsertionNoiseMaker(vrp, maxCosts, noiseLevel, noiseProbability); + noiseMaker.setRandom(random); + constraintManager.addConstraint(noiseMaker); + noiseConfigurator = noiseMaker; RuinRadial radial = new RuinRadial(vrp, vrp.getJobs().size(), jobNeighborhoods); radial.setRandom(random); @@ -356,7 +371,7 @@ public class Jsprit { public double makeNoise() { if (random.nextDouble() < toDouble(getProperty(Parameter.RUIN_WORST_NOISE_PROB.toString()))) { return toDouble(getProperty(Parameter.RUIN_WORST_NOISE_LEVEL.toString())) - * noiseMaker.maxCosts * random.nextDouble(); + * maxCosts * random.nextDouble(); } else return 0.; } }); @@ -373,15 +388,7 @@ public class Jsprit { AbstractInsertionStrategy regret; final RegretInsertion.DefaultScorer scorer; - if (noThreads == null) { - noThreads = toInteger(getProperty(Parameter.THREADS.toString())); - } - if (noThreads > 1) { - if (es == null) { - setupExecutorInternally = true; - es = Executors.newFixedThreadPool(noThreads); - } - } + if (es != null) { RegretInsertionConcurrent regretInsertion = (RegretInsertionConcurrent) new InsertionBuilder(vrp, fm, stateManager, constraintManager) .setInsertionStrategy(InsertionBuilder.Strategy.REGRET) @@ -434,7 +441,7 @@ public class Jsprit { } }; - SolutionCostCalculator objectiveFunction = getObjectiveFunction(vrp, noiseMaker.maxCosts); + SolutionCostCalculator objectiveFunction = getObjectiveFunction(vrp, maxCosts); SearchStrategy radial_regret = new SearchStrategy(Strategy.RADIAL_REGRET.toString(), new SelectBest(), schrimpfAcceptance, objectiveFunction); radial_regret.addModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial)); @@ -482,7 +489,7 @@ public class Jsprit { VehicleRoutingAlgorithm vra = prettyBuilder.build(); vra.addListener(schrimpfThreshold); - vra.addListener(noiseMaker); + vra.addListener(noiseConfigurator); vra.addListener(noise); vra.addListener(clusters); handleExecutorShutdown(vra); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoods.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoods.java index d475cc16..3b2e579d 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoods.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoods.java @@ -13,4 +13,6 @@ public interface JobNeighborhoods { public void initialise(); + public double getMaxDistance(); + } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java index f0139f90..b813187d 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java @@ -22,6 +22,8 @@ class JobNeighborhoodsImpl implements JobNeighborhoods { private JobDistance jobDistance; + private double maxDistance = 0.; + public JobNeighborhoodsImpl(VehicleRoutingProblem vrp, JobDistance jobDistance) { super(); this.vrp = vrp; @@ -58,6 +60,11 @@ class JobNeighborhoodsImpl implements JobNeighborhoods { calculateDistancesFromJob2Job(); } + @Override + public double getMaxDistance() { + return 0; + } + private void calculateDistancesFromJob2Job() { logger.debug("preprocess distances between locations ..."); StopWatch stopWatch = new StopWatch(); @@ -79,6 +86,7 @@ class JobNeighborhoodsImpl implements JobNeighborhoods { for (Job j : vrp.getJobs().values()) { if (i == j) continue; double distance = jobDistance.getDistance(i, j); + if(distance > maxDistance) maxDistance = distance; ReferencedJob refNode = new ReferencedJob(j, distance); treeSet.add(refNode); nuOfDistancesStored++; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java index 07340c90..202830c8 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java @@ -24,12 +24,14 @@ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { private int capacity; + private double maxDistance = 0.; + public JobNeighborhoodsImplWithCapRestriction(VehicleRoutingProblem vrp, JobDistance jobDistance, int capacity) { super(); this.vrp = vrp; this.jobDistance = jobDistance; this.capacity = capacity; - logger.debug("intialise {}", this); + logger.debug("initialize {}", this); } @Override @@ -64,6 +66,11 @@ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { calculateDistancesFromJob2Job(); } + @Override + public double getMaxDistance() { + return maxDistance; + } + private void calculateDistancesFromJob2Job() { logger.debug("preprocess distances between locations ..."); StopWatch stopWatch = new StopWatch(); @@ -85,6 +92,7 @@ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { for (Job j : vrp.getJobs().values()) { if (i == j) continue; double distance = jobDistance.getDistance(i, j); + if(distance > maxDistance) maxDistance = distance; ReferencedJob refNode = new ReferencedJob(j, distance); if (treeSet.size() < capacity) { treeSet.add(refNode); From e5bc5f87cb34c90d8e885aadc536131671ba4b6e Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 25 Sep 2015 09:13:00 +0200 Subject: [PATCH 3/4] reformat according to .editorconfig --- .../box/ConcurrentInsertionNoiseMaker.java | 4 ++-- .../core/algorithm/ruin/JobNeighborhoodsImpl.java | 2 +- .../JobNeighborhoodsImplWithCapRestriction.java | 2 +- ...UpdateVehicleDependentPracticalTimeWindows.java | 4 ++-- .../core/problem/constraint/SwitchNotFeasible.java | 7 ++++--- .../problem/constraint/TimeWindowConstraint.java | 2 +- .../FastVehicleRoutingTransportCostsMatrix.java | 2 +- .../algorithm/MeetTimeWindowConstraint_IT.java | 14 +++++++------- ...nWithCostsHigherThanTimesAndFiniteFleet_IT.java | 2 +- ...AndFiniteFleet_withTimeAndDistanceCosts_IT.java | 2 +- .../jsprit/core/algorithm/RefuseCollection_IT.java | 2 +- .../TestLocalActivityInsertionCostsCalculator.java | 2 +- ...ixedServiceAndShipmentsProblemOnRouteLevel.java | 2 +- .../ConfigureAlgorithmInCodeInsteadOfPerXml.java | 2 +- ...veryWithMultipleDepotsAndOpenRoutesExample.java | 2 +- .../java/jsprit/examples/MultipleDepotExample.java | 2 +- .../jsprit/examples/MultipleDepotExample2.java | 2 +- .../MultipleDepotWithInitialRoutesExample.java | 2 +- .../jsprit/examples/PickupAndDeliveryExample.java | 2 +- .../jsprit/examples/PickupAndDeliveryExample2.java | 2 +- .../examples/PickupAndDeliveryOpenExample.java | 2 +- .../jsprit/examples/RefuseCollectionExample.java | 2 +- .../RefuseCollectionWithFastMatrixExample.java | 2 +- .../ServicePickupsWithMultipleDepotsExample.java | 2 +- ...SimpleDepotBoundedPickupAndDeliveryExample.java | 2 +- .../SimpleEnRoutePickupAndDeliveryExample.java | 2 +- ...eEnRoutePickupAndDeliveryOpenRoutesExample.java | 2 +- ...dDeliveryWithDepotBoundedDeliveriesExample.java | 2 +- .../main/java/jsprit/examples/SimpleExample.java | 2 +- .../jsprit/examples/SimpleExampleOpenRoutes.java | 2 +- .../jsprit/examples/SimpleExampleWithSkills.java | 2 +- .../examples/SimpleVRPWithBackhaulsExample.java | 2 +- .../main/java/jsprit/examples/SolomonExample.java | 2 +- ...monExampleWithSpecifiedVehicleEndLocations.java | 2 +- ...WithSpecifiedVehicleEndLocationsWithoutTWs.java | 2 +- .../java/jsprit/examples/SolomonOpenExample.java | 2 +- .../java/jsprit/examples/SolomonR101Example.java | 2 +- .../SolomonWithRegretInsertionExample.java | 2 +- .../jsprit/examples/TransportOfDisabledPeople.java | 2 +- .../jsprit/examples/VRPWithBackhaulsExample.java | 2 +- .../jsprit/examples/VRPWithBackhaulsExample2.java | 2 +- 41 files changed, 52 insertions(+), 51 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java b/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java index ca47cc12..1c681224 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/box/ConcurrentInsertionNoiseMaker.java @@ -32,8 +32,8 @@ class ConcurrentInsertionNoiseMaker implements SoftActivityConstraint, Iteration this.noiseLevel = noiseLevel; this.noiseProbability = noiseProbability; this.maxCosts = maxCosts; - randomArray = new Random[vrp.getNuActivities()+2]; - for(int i=0;i maxDistance) maxDistance = distance; + if (distance > maxDistance) maxDistance = distance; ReferencedJob refNode = new ReferencedJob(j, distance); treeSet.add(refNode); nuOfDistancesStored++; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java index 202830c8..8288bc8e 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java @@ -92,7 +92,7 @@ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { for (Job j : vrp.getJobs().values()) { if (i == j) continue; double distance = jobDistance.getDistance(i, j); - if(distance > maxDistance) maxDistance = distance; + if (distance > maxDistance) maxDistance = distance; ReferencedJob refNode = new ReferencedJob(j, distance); if (treeSet.size() < capacity) { treeSet.add(refNode); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java index 57a5b3a5..5e97668e 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java @@ -97,8 +97,8 @@ public class UpdateVehicleDependentPracticalTimeWindows implements RouteVisitor, double potentialLatestArrivalTimeAtCurrAct = latestArrTimeAtPrevAct - transportCosts.getBackwardTransportTime(activity.getLocation(), prevLocation, latestArrTimeAtPrevAct, route.getDriver(), vehicle) - activity.getOperationTime(); double latestArrivalTime = Math.min(activity.getTheoreticalLatestOperationStartTime(), potentialLatestArrivalTimeAtCurrAct); - if(latestArrivalTime < activity.getTheoreticalEarliestOperationStartTime()){ - stateManager.putTypedInternalRouteState(route,vehicle,InternalStates.SWITCH_NOT_FEASIBLE,true); + if (latestArrivalTime < activity.getTheoreticalEarliestOperationStartTime()) { + stateManager.putTypedInternalRouteState(route, vehicle, InternalStates.SWITCH_NOT_FEASIBLE, true); } stateManager.putInternalTypedActivityState(activity, vehicle, InternalStates.LATEST_OPERATION_START_TIME, latestArrivalTime); latest_arrTimes_at_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = latestArrivalTime; diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/SwitchNotFeasible.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/SwitchNotFeasible.java index d923b84c..c0ad04a2 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/SwitchNotFeasible.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/SwitchNotFeasible.java @@ -7,7 +7,7 @@ import jsprit.core.problem.misc.JobInsertionContext; /** * Created by schroeder on 19/09/15. */ -public class SwitchNotFeasible implements HardRouteConstraint{ +public class SwitchNotFeasible implements HardRouteConstraint { private StateManager stateManager; @@ -17,8 +17,9 @@ public class SwitchNotFeasible implements HardRouteConstraint{ @Override public boolean fulfilled(JobInsertionContext insertionContext) { - Boolean notFeasible = stateManager.getRouteState(insertionContext.getRoute(),insertionContext.getNewVehicle(), InternalStates.SWITCH_NOT_FEASIBLE,Boolean.class); - if(notFeasible == null || insertionContext.getRoute().getVehicle().getVehicleTypeIdentifier().equals(insertionContext.getNewVehicle().getVehicleTypeIdentifier())) return true; + Boolean notFeasible = stateManager.getRouteState(insertionContext.getRoute(), insertionContext.getNewVehicle(), InternalStates.SWITCH_NOT_FEASIBLE, Boolean.class); + if (notFeasible == null || insertionContext.getRoute().getVehicle().getVehicleTypeIdentifier().equals(insertionContext.getNewVehicle().getVehicleTypeIdentifier())) + return true; else return !notFeasible; } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java index b708dcf5..ac7d256e 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/TimeWindowConstraint.java @@ -107,7 +107,7 @@ class TimeWindowConstraint implements HardActivityConstraint { routingCosts.getBackwardTransportTime(nextActLocation, newAct.getLocation(), latestArrTimeAtNextAct, iFacts.getNewDriver(), iFacts.getNewVehicle()) - newAct.getOperationTime()); /* - * |--- prevAct ---| + * |--- prevAct ---| * |--- vehicle's arrival @newAct * latest arrival of vehicle @newAct ---| */ diff --git a/jsprit-core/src/main/java/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java index 6bff4a03..8209d8b1 100644 --- a/jsprit-core/src/main/java/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java +++ b/jsprit-core/src/main/java/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java @@ -119,7 +119,7 @@ public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehic * * @return */ - public double[][][] getMatrix(){ + public double[][][] getMatrix() { return matrix; } diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java b/jsprit-core/src/test/java/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java index 0c0e5e23..4160b166 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java @@ -560,7 +560,7 @@ public class MeetTimeWindowConstraint_IT { VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(vrp).buildAlgorithm(); algorithm.setMaxIterations(1000); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - for(VehicleRoute r : solution.getRoutes()){ + for (VehicleRoute r : solution.getRoutes()) { assertTrue(r.getVehicle().getEarliestDeparture() <= r.getDepartureTime()); assertTrue(r.getVehicle().getLatestArrival() >= r.getEnd().getArrTime()); } @@ -576,7 +576,7 @@ public class MeetTimeWindowConstraint_IT { VehicleRoutingAlgorithm algorithm = new SchrimpfFactory().createAlgorithm(vrp); algorithm.setMaxIterations(1000); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - for(VehicleRoute r : solution.getRoutes()){ + for (VehicleRoute r : solution.getRoutes()) { assertTrue(r.getVehicle().getEarliestDeparture() <= r.getDepartureTime()); assertTrue(r.getVehicle().getLatestArrival() >= r.getEnd().getArrTime()); } @@ -592,20 +592,20 @@ public class MeetTimeWindowConstraint_IT { VehicleRoutingAlgorithm algorithm = new GreedySchrimpfFactory().createAlgorithm(vrp); algorithm.setMaxIterations(1000); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - for(VehicleRoute r : solution.getRoutes()){ + for (VehicleRoute r : solution.getRoutes()) { assertTrue(r.getVehicle().getEarliestDeparture() <= r.getDepartureTime()); assertTrue(r.getVehicle().getLatestArrival() >= r.getEnd().getArrTime()); } } - + private FastVehicleRoutingTransportCostsMatrix createMatrix() throws IOException { BufferedReader reader = new BufferedReader(new FileReader(new File("src/test/resources/matrix.txt"))); String line; - FastVehicleRoutingTransportCostsMatrix.Builder builder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(11,false); - while((line = reader.readLine()) != null){ + FastVehicleRoutingTransportCostsMatrix.Builder builder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(11, false); + while ((line = reader.readLine()) != null) { String[] split = line.split("\t"); - builder.addTransportDistance(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Double.parseDouble(split[2])); + builder.addTransportDistance(Integer.parseInt(split[0]), Integer.parseInt(split[1]), Double.parseDouble(split[2])); builder.addTransportTime(Integer.parseInt(split[0]), Integer.parseInt(split[1]), Double.parseDouble(split[3])); } return builder.build(); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java index 576b6f69..2630deef 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java @@ -167,7 +167,7 @@ public class RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT { } String[] lineTokens = line.split(","); /* - * build service + * build service */ Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])) .setLocation(Location.newInstance(lineTokens[0])).build(); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java index ea33b2ed..257d9505 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java @@ -167,7 +167,7 @@ public class RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndD } String[] lineTokens = line.split(","); /* - * build service + * build service */ Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])) .setLocation(Location.newInstance(lineTokens[0])).build(); diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java index f7a0e897..d791e01c 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/RefuseCollection_IT.java @@ -115,7 +115,7 @@ public class RefuseCollection_IT { vrpBuilder.addVehicle(bigVehicle); /* - * create cost-matrix + * create cost-matrix */ VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); /* diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java index 2ce126d9..f29135b1 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestLocalActivityInsertionCostsCalculator.java @@ -409,7 +409,7 @@ public class TestLocalActivityInsertionCostsCalculator { //new: 50 - 50 = 0 /* - activity start time delay at next act = start-time-old - start-time-new is always bigger than subsequent waiting time savings + activity start time delay at next act = start-time-old - start-time-new is always bigger than subsequent waiting time savings */ /* old = 10 + 30 + 10 = 50 diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestMixedServiceAndShipmentsProblemOnRouteLevel.java b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestMixedServiceAndShipmentsProblemOnRouteLevel.java index f8be1d75..1447467a 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestMixedServiceAndShipmentsProblemOnRouteLevel.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/recreate/TestMixedServiceAndShipmentsProblemOnRouteLevel.java @@ -109,7 +109,7 @@ public class TestMixedServiceAndShipmentsProblemOnRouteLevel { VehicleType vehicleType = vehicleTypeBuilder.build(); /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" + * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" */ Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); diff --git a/jsprit-examples/src/main/java/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java b/jsprit-examples/src/main/java/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java index 4b53bbff..fdcd503d 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java +++ b/jsprit-examples/src/main/java/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java @@ -87,7 +87,7 @@ public class ConfigureAlgorithmInCodeInsteadOfPerXml { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java b/jsprit-examples/src/main/java/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java index 8df37967..ca8e357e 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java @@ -126,7 +126,7 @@ public class EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample { VehicleRoutingAlgorithm algorithm = VehicleRoutingAlgorithms.readAndCreateAlgorithm(problem, "input/algorithmConfig.xml"); // algorithm.setMaxIterations(30000); /* - * and search a solution + * and search a solution */ Collection solutions = algorithm.searchSolutions(); diff --git a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample.java b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample.java index 689a8241..f558893b 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample.java @@ -91,7 +91,7 @@ public class MultipleDepotExample { VehicleRoutingProblem vrp = vrpBuilder.build(); /* - * plot to see how the problem looks like + * plot to see how the problem looks like */ // SolutionPlotter.plotVrpAsPNG(vrp, "output/problem01.png", "p01"); diff --git a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample2.java b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample2.java index 34110427..246a4589 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample2.java +++ b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotExample2.java @@ -97,7 +97,7 @@ public class MultipleDepotExample2 { VehicleRoutingProblem vrp = vrpBuilder.build(); /* - * plot to see how the problem looks like + * plot to see how the problem looks like */ // SolutionPlotter.plotVrpAsPNG(vrp, "output/problem08.png", "p08"); diff --git a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotWithInitialRoutesExample.java b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotWithInitialRoutesExample.java index 3c98c7c3..9743bd6f 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotWithInitialRoutesExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/MultipleDepotWithInitialRoutesExample.java @@ -62,7 +62,7 @@ public class MultipleDepotWithInitialRoutesExample { */ VehicleRoutingProblem vrp = vrpBuilder.build(); /* - * since job (service) 26 and 44 are already planned in initial route and thus static AND sequence is fixed they + * since job (service) 26 and 44 are already planned in initial route and thus static AND sequence is fixed they * should not be in jobMap anymore (only variable jobs are in jobMap) */ assert !vrp.getJobs().containsKey("26") : "strange. service 26 should not be part of the problem"; diff --git a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java index 21cb5d4c..e7fd1091 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample.java @@ -72,7 +72,7 @@ public class PickupAndDeliveryExample { VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig_solomon.xml"); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java index 149bef37..6a279ccd 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java +++ b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryExample2.java @@ -78,7 +78,7 @@ public class PickupAndDeliveryExample2 { Collection solutions = vra.searchSolutions(); /* - * Retrieve best solution. + * Retrieve best solution. */ VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryOpenExample.java b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryOpenExample.java index 402e01fd..c9a19b31 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryOpenExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/PickupAndDeliveryOpenExample.java @@ -69,7 +69,7 @@ public class PickupAndDeliveryOpenExample { VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig_open.xml"); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionExample.java b/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionExample.java index 5a0f09db..2b1cc3a9 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionExample.java @@ -110,7 +110,7 @@ public class RefuseCollectionExample { } String[] lineTokens = line.split(","); /* - * build service + * build service */ Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocation(Location.newInstance(lineTokens[0])).build(); /* diff --git a/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionWithFastMatrixExample.java b/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionWithFastMatrixExample.java index 7790f7e0..ee813647 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionWithFastMatrixExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/RefuseCollectionWithFastMatrixExample.java @@ -109,7 +109,7 @@ public class RefuseCollectionWithFastMatrixExample { } String[] lineTokens = line.split(","); /* - * build service + * build service */ Service service = Service.Builder.newInstance(lineTokens[0]) .addSizeDimension(0, Integer.parseInt(lineTokens[1])) diff --git a/jsprit-examples/src/main/java/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java b/jsprit-examples/src/main/java/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java index 152af745..76c796cf 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java @@ -109,7 +109,7 @@ public class ServicePickupsWithMultipleDepotsExample { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java index 48088b25..4d9d5e77 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java @@ -88,7 +88,7 @@ public class SimpleDepotBoundedPickupAndDeliveryExample { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java index 42ac6980..b0c17bc3 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java @@ -93,7 +93,7 @@ public class SimpleEnRoutePickupAndDeliveryExample { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java index 0c36ea70..1ed6a833 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java @@ -93,7 +93,7 @@ public class SimpleEnRoutePickupAndDeliveryOpenRoutesExample { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java index 5b3245b7..ed649d82 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java @@ -97,7 +97,7 @@ public class SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample { VehicleRoutingProblem problem = vrpBuilder.build(); /* - * build the algorithm + * build the algorithm */ VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(problem, "input/algorithmConfig.xml"); vraBuilder.addCoreConstraints(); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleExample.java index 754f32b4..912145ce 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleExample.java @@ -93,7 +93,7 @@ public class SimpleExample { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleOpenRoutes.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleOpenRoutes.java index f1e5bdb0..f6fc2e4e 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleOpenRoutes.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleOpenRoutes.java @@ -87,7 +87,7 @@ public class SimpleExampleOpenRoutes { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleWithSkills.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleWithSkills.java index 860c7206..9521763c 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleWithSkills.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleExampleWithSkills.java @@ -115,7 +115,7 @@ public class SimpleExampleWithSkills { Collection solutions = algorithm.searchSolutions(); /* - * get the best + * get the best */ VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SimpleVRPWithBackhaulsExample.java b/jsprit-examples/src/main/java/jsprit/examples/SimpleVRPWithBackhaulsExample.java index 48677180..a831be8b 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SimpleVRPWithBackhaulsExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SimpleVRPWithBackhaulsExample.java @@ -103,7 +103,7 @@ public class SimpleVRPWithBackhaulsExample { SolutionPrinter.print(bestSolution); /* - * plot + * plot */ Plotter plotter = new Plotter(problem, bestSolution); plotter.setLabel(Label.SIZE); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java index 5c996c42..faf7aa8c 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java @@ -74,7 +74,7 @@ public class SolomonExample { Collection solutions = vra.searchSolutions(); /* - * Retrieve best solution. + * Retrieve best solution. */ VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java index d71b2c5a..1cda7c02 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java @@ -77,7 +77,7 @@ public class SolomonExampleWithSpecifiedVehicleEndLocations { // vra.setPrematureBreak(100); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java index 423dcbe3..7b6e0688 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java @@ -77,7 +77,7 @@ public class SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs { // vra.setPrematureBreak(100); // vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonOpenExample.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonOpenExample.java index dcb2579d..bd61439b 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonOpenExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonOpenExample.java @@ -69,7 +69,7 @@ public class SolomonOpenExample { // vra.setPrematureBreak(100); // vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonR101Example.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonR101Example.java index da14cc52..c52f2c29 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonR101Example.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonR101Example.java @@ -68,7 +68,7 @@ public class SolomonR101Example { vra.setMaxIterations(20000); // vra.setPrematureBreak(100); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* + /* * Solve the problem. * * diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonWithRegretInsertionExample.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonWithRegretInsertionExample.java index e938130f..e7082f2c 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonWithRegretInsertionExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonWithRegretInsertionExample.java @@ -81,7 +81,7 @@ public class SolomonWithRegretInsertionExample { Collection solutions = vra.searchSolutions(); /* - * Retrieve best solution. + * Retrieve best solution. */ VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); diff --git a/jsprit-examples/src/main/java/jsprit/examples/TransportOfDisabledPeople.java b/jsprit-examples/src/main/java/jsprit/examples/TransportOfDisabledPeople.java index 70d563af..445ab930 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/TransportOfDisabledPeople.java +++ b/jsprit-examples/src/main/java/jsprit/examples/TransportOfDisabledPeople.java @@ -186,7 +186,7 @@ public class TransportOfDisabledPeople { algorithm.setPrematureAlgorithmTermination(new IterationWithoutImprovementTermination(100)); /* - * and search a solution + * and search a solution */ Collection solutions = algorithm.searchSolutions(); diff --git a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample.java b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample.java index 762b101b..56278929 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample.java @@ -77,7 +77,7 @@ public class VRPWithBackhaulsExample { VehicleRoutingAlgorithm vra = vraBuilder.build(); vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); /* - * Solve the problem. + * Solve the problem. * * */ diff --git a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java index d7df50a5..ea3205dc 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java +++ b/jsprit-examples/src/main/java/jsprit/examples/VRPWithBackhaulsExample2.java @@ -105,7 +105,7 @@ public class VRPWithBackhaulsExample2 { Collection solutions = vra.searchSolutions(); /* - * Retrieve best solution. + * Retrieve best solution. */ VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); From e25b61cac44c88682263258cf6552a5d0f472f72 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 26 Sep 2015 15:06:40 +0200 Subject: [PATCH 4/4] remove expensive set from activities --- .../route/activity/TourActivities.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivities.java index 768559a0..5217a85b 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -66,36 +66,20 @@ public class TourActivities { } } - - public static TourActivities emptyTour() { - return new TourActivities(); - } - private final ArrayList tourActivities = new ArrayList(); private final Set jobs = new HashSet(); - private final Set activities = new HashSet(); - private ReverseActivityIterator backward; private TourActivities(TourActivities tour2copy) { for (TourActivity tourAct : tour2copy.getActivities()) { TourActivity newAct = tourAct.duplicate(); this.tourActivities.add(newAct); - addToActivitySet(newAct); addJob(newAct); } } - private void addToActivitySet(TourActivity newAct) { - activities.add(newAct); - } - - private void removeFromActivitySet(TourActivity act) { - activities.remove(act); - } - public TourActivities() { } @@ -148,7 +132,6 @@ public class TourActivities { if (c instanceof JobActivity) { if (job.equals(((JobActivity) c).getJob())) { tourActivities.remove(c); - removeFromActivitySet(c); activityRemoved = true; } } @@ -163,8 +146,9 @@ public class TourActivities { * @param activity to be looked up * @return true if this contains specified activity, false otherwise */ + @Deprecated public boolean hasActivity(TourActivity activity) { - return activities.contains(activity); + return tourActivities.contains(activity); } /** @@ -185,7 +169,6 @@ public class TourActivities { for (TourActivity act : acts) { if (act == activity) { tourActivities.remove(act); - removeFromActivitySet(act); actRemoved = true; } else { if (act instanceof JobActivity && job != null) { @@ -228,7 +211,6 @@ public class TourActivities { } else if (insertionIndex >= tourActivities.size()) { tourActivities.add(act); } - addToActivitySet(act); addJob(act); } @@ -243,7 +225,6 @@ public class TourActivities { if (tourActivities.contains(act)) throw new IllegalStateException("act " + act + " already in tour. cannot add act twice."); tourActivities.add(act); - addToActivitySet(act); addJob(act); }