1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

make job insertion more flexible

This commit is contained in:
oblonski 2018-07-24 10:48:07 +02:00
parent 89f864492f
commit d6e5ca38a9
No known key found for this signature in database
GPG key ID: 179DE487285680D1
2 changed files with 42 additions and 0 deletions

View file

@ -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);

View file

@ -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.
*