From ad2415865177f526a39700fd1d48867acca8795c Mon Sep 17 00:00:00 2001 From: Stefan Schroeder <4sschroeder@gmail.com> Date: Fri, 23 Aug 2013 14:27:23 +0200 Subject: [PATCH] refine calcInsertion --- .../CalculatesServiceInsertion.java | 63 +++---------------- .../BuildCVRPAlgoFromScratchTest.java | 4 +- 2 files changed, 9 insertions(+), 58 deletions(-) diff --git a/jsprit-core/src/main/java/algorithms/CalculatesServiceInsertion.java b/jsprit-core/src/main/java/algorithms/CalculatesServiceInsertion.java index 20f2f69c..b8f5f923 100644 --- a/jsprit-core/src/main/java/algorithms/CalculatesServiceInsertion.java +++ b/jsprit-core/src/main/java/algorithms/CalculatesServiceInsertion.java @@ -22,7 +22,6 @@ import basics.route.Driver; import basics.route.End; import basics.route.ServiceActivity; import basics.route.Start; -import basics.route.TourActivities; import basics.route.TourActivity; import basics.route.Vehicle; import basics.route.VehicleImpl.NoVehicle; @@ -31,36 +30,9 @@ import basics.route.VehicleRoute; final class CalculatesServiceInsertion implements JobInsertionCalculator{ - - static class Break { - private Marginals marginals; - private boolean breakLoop; - public Break(Marginals marginals, boolean breakLoop) { - super(); - this.marginals = marginals; - this.breakLoop = breakLoop; - } - /** - * @return the marginals - */ - public Marginals getMarginals() { - return marginals; - } - /** - * @return the breakLoop - */ - public boolean isBreakLoop() { - return breakLoop; - } - - } - + private static final Logger logger = Logger.getLogger(CalculatesServiceInsertion.class); - - private Start start; - - private End end; - + private HardRouteLevelConstraint hardRouteLevelConstraint; private Neighborhood neighborhood = new Neighborhood() { @@ -105,19 +77,21 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{ return InsertionData.noInsertionFound(); } - TourActivities tour = currentRoute.getTourActivities(); double bestCost = bestKnownCosts; Marginals bestMarginals = null; Service service = (Service)jobToInsert; int insertionIndex = InsertionData.NO_INDEX; TourActivity deliveryAct2Insert = ServiceActivity.newInstance(service); - initialiseStartAndEnd(newVehicle, newVehicleDepartureTime); + Start start = Start.newInstance(newVehicle.getLocationId(), newVehicle.getEarliestDeparture(), newVehicle.getLatestArrival()); + start.setEndTime(newVehicleDepartureTime); + + End end = End.newInstance(newVehicle.getLocationId(), 0.0, newVehicle.getLatestArrival()); TourActivity prevAct = start; int actIndex = 0; - for(TourActivity nextAct : tour.getActivities()){ + for(TourActivity nextAct : currentRoute.getTourActivities().getActivities()){ if(deliveryAct2Insert.getTheoreticalLatestOperationStartTime() < prevAct.getTheoreticalEarliestOperationStartTime()){ break; } @@ -155,29 +129,6 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{ return insertionData; } - private void initialiseStartAndEnd(final Vehicle newVehicle, double newVehicleDepartureTime) { - if(start == null){ - start = Start.newInstance(newVehicle.getLocationId(), newVehicle.getEarliestDeparture(), newVehicle.getLatestArrival()); - start.setEndTime(newVehicleDepartureTime); - } - else{ - start.setLocationId(newVehicle.getLocationId()); - start.setTheoreticalEarliestOperationStartTime(newVehicle.getEarliestDeparture()); - start.setTheoreticalLatestOperationStartTime(newVehicle.getLatestArrival()); - start.setEndTime(newVehicleDepartureTime); - } - - if(end == null){ - end = End.newInstance(newVehicle.getLocationId(), 0.0, newVehicle.getLatestArrival()); - } - else{ - end.setLocationId(newVehicle.getLocationId()); - end.setTheoreticalEarliestOperationStartTime(newVehicleDepartureTime); - end.setTheoreticalLatestOperationStartTime(newVehicle.getLatestArrival()); - end.setEndTime(newVehicle.getLatestArrival()); - } - } - public Marginals calculate(InsertionFacts iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct) { return marginalCalculus.calculate(iFacts, prevAct, nextAct, newAct); diff --git a/jsprit-core/src/test/java/algorithms/BuildCVRPAlgoFromScratchTest.java b/jsprit-core/src/test/java/algorithms/BuildCVRPAlgoFromScratchTest.java index 74da88b1..83d1c220 100644 --- a/jsprit-core/src/test/java/algorithms/BuildCVRPAlgoFromScratchTest.java +++ b/jsprit-core/src/test/java/algorithms/BuildCVRPAlgoFromScratchTest.java @@ -83,8 +83,8 @@ public class BuildCVRPAlgoFromScratchTest { // System.out.println("ini: costs="+iniSolution.getCost()+";#routes="+iniSolution.getRoutes().size()); vra.addInitialSolution(iniSolution); - vra.setNuOfIterations(1000); - vra.setPrematureBreak(200); + vra.setNuOfIterations(10000); +// vra.setPrematureBreak(200); }