diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java index 5ad9deb3..56c8cd7f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java @@ -76,6 +76,12 @@ public class InsertionStrategyBuilder { private boolean isFastRegret = false; + private JobInsertionCostsCalculatorFactory shipmentInsertionCalculatorFactory; + + private JobInsertionCostsCalculatorFactory serviceInsertionCalculatorFactory; + + private JobInsertionCostsCalculatorFactory breakInsertionCalculatorFactory; + public InsertionStrategyBuilder(VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, StateManager stateManager, ConstraintManager constraintManager) { super(); this.vrp = vrp; @@ -84,6 +90,18 @@ public class InsertionStrategyBuilder { this.fleetManager = vehicleFleetManager; } + public void setShipmentInsertionCalculatorFactory(JobInsertionCostsCalculatorFactory shipmentInsertionCalculatorFactory) { + this.shipmentInsertionCalculatorFactory = shipmentInsertionCalculatorFactory; + } + + public void setServiceInsertionCalculator(JobInsertionCostsCalculatorFactory serviceInsertionCalculator) { + this.serviceInsertionCalculatorFactory = serviceInsertionCalculator; + } + + public void setBreakInsertionCalculator(JobInsertionCostsCalculatorFactory breakInsertionCalculator) { + this.breakInsertionCalculatorFactory = breakInsertionCalculator; + } + public InsertionStrategyBuilder setInsertionStrategy(Strategy strategy) { this.strategy = strategy; return this; @@ -155,6 +173,12 @@ public class InsertionStrategyBuilder { } else { calcBuilder.setRouteLevel(forwaredLooking, memory, addDefaultCostCalc); } + if (shipmentInsertionCalculatorFactory != null) + calcBuilder.setShipmentCalculatorFactory(shipmentInsertionCalculatorFactory); + if (serviceInsertionCalculatorFactory != null) + calcBuilder.setServiceCalculatorFactory(serviceInsertionCalculatorFactory); + if (breakInsertionCalculatorFactory != null) + calcBuilder.setBreakCalculatorFactory(breakInsertionCalculatorFactory); calcBuilder.setConstraintManager(constraintManager); calcBuilder.setStateManager(stateManager); calcBuilder.setVehicleRoutingProblem(vrp); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java index 011cfe76..e6d63ad4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java @@ -130,6 +130,24 @@ public class JobInsertionCostsCalculatorBuilder { this.algorithmListeners = algorithmListeners; } + public JobInsertionCostsCalculatorBuilder setShipmentCalculatorFactory(JobInsertionCostsCalculatorFactory shipmentCalculatorFactory) { + if (shipmentCalculatorFactory == null) return this; + this.shipmentCalculatorFactory = shipmentCalculatorFactory; + return this; + } + + public JobInsertionCostsCalculatorBuilder setServiceCalculatorFactory(JobInsertionCostsCalculatorFactory serviceCalculatorFactory) { + if (serviceCalculatorFactory == null) return this; + this.serviceCalculatorFactory = serviceCalculatorFactory; + return this; + } + + public JobInsertionCostsCalculatorBuilder setBreakCalculatorFactory(JobInsertionCostsCalculatorFactory breakCalculatorFactory) { + if (breakCalculatorFactory == null) return this; + this.breakCalculatorFactory = breakCalculatorFactory; + return this; + } + /** * Sets activityStates. MUST be set. *