From 1fa8afadb604cac30ced2815d4305f8b6b396c64 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 7 Jan 2015 11:37:44 +0100 Subject: [PATCH] add noise --- .../module/RuinAndRecreateModule.java | 7 ++ .../algorithm/recreate/BestInsertion.java | 13 ++- .../core/algorithm/recreate/NoiseMaker.java | 9 +++ .../algorithm/recreate/RegretInsertion.java | 2 + .../test/resources/infiniteWriterV2Test.xml | 81 ++++++++++++------- 5 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 jsprit-core/src/main/java/jsprit/core/algorithm/recreate/NoiseMaker.java diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/module/RuinAndRecreateModule.java b/jsprit-core/src/main/java/jsprit/core/algorithm/module/RuinAndRecreateModule.java index 9aca39d7..7645cae7 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/module/RuinAndRecreateModule.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/module/RuinAndRecreateModule.java @@ -80,4 +80,11 @@ public class RuinAndRecreateModule implements SearchStrategyModule{ } + public InsertionStrategy getInsertion() { + return insertion; + } + + public RuinStrategy getRuin() { + return ruin; + } } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertion.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertion.java index b5915f5c..19ab1879 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertion.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/BestInsertion.java @@ -43,6 +43,15 @@ public final class BestInsertion extends AbstractInsertionStrategy{ private JobInsertionCostsCalculator bestInsertionCostCalculator; + private NoiseMaker noiseMaker = new NoiseMaker() { + + @Override + public double makeNoise() { + return 0; + } + + }; + public BestInsertion(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem) { super(vehicleRoutingProblem); bestInsertionCostCalculator = jobInsertionCalculator; @@ -67,7 +76,7 @@ public final class BestInsertion extends AbstractInsertionStrategy{ if(iData instanceof NoInsertionFound) { continue; } - if(iData.getInsertionCost() < bestInsertionCost){ + if(iData.getInsertionCost() < bestInsertionCost + noiseMaker.makeNoise()){ bestInsertion = new Insertion(vehicleRoute,iData); bestInsertionCost = iData.getInsertionCost(); } @@ -75,7 +84,7 @@ public final class BestInsertion extends AbstractInsertionStrategy{ VehicleRoute newRoute = VehicleRoute.emptyRoute(); InsertionData newIData = bestInsertionCostCalculator.getInsertionData(newRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, bestInsertionCost); if(!(newIData instanceof NoInsertionFound)){ - if(newIData.getInsertionCost() < bestInsertionCost){ + if(newIData.getInsertionCost() < bestInsertionCost + noiseMaker.makeNoise()){ bestInsertion = new Insertion(newRoute,newIData); vehicleRoutes.add(newRoute); } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/NoiseMaker.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/NoiseMaker.java new file mode 100644 index 00000000..b78efc5b --- /dev/null +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/NoiseMaker.java @@ -0,0 +1,9 @@ +package jsprit.core.algorithm.recreate; + +/** + * Created by schroeder on 06/01/15. + */ +public interface NoiseMaker { + + public double makeNoise(); +} 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 de04d1fe..0e25804e 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 @@ -55,6 +55,7 @@ public class RegretInsertion extends AbstractInsertionStrategy { private boolean newRoute; + ScoredJob(Job job, double score, InsertionData insertionData, VehicleRoute route, boolean isNewRoute) { this.job = job; this.score = score; @@ -185,6 +186,7 @@ public class RegretInsertion extends AbstractInsertionStrategy { private JobInsertionCostsCalculator insertionCostsCalculator; + /** * Sets the scoring function. * diff --git a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml index 07c5406a..2d9058ab 100644 --- a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml +++ b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml @@ -2,24 +2,9 @@ - FINITE + INFINITE - - v2 - vehType2 - - loc - - - loc - - - 0.0 - 1.7976931348623157E308 - - true - v1 vehType @@ -48,16 +33,58 @@ - - vehType2 - - 200 - - - 0.0 - 1.0 - - - + + + + loc + + + 1 + + 2.0 + + + 0.0 + 1.7976931348623157E308 + + + + + + loc2 + + + 1 + + 4.0 + + + 0.0 + 1.7976931348623157E308 + + + + + + + 10.0 + + + noDriver + v1 + 0.0 + + 1 + 0.0 + 0.0 + + 0.0 + + + + + + +