diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java index c45079fc..55d3961e 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java @@ -94,6 +94,16 @@ public abstract class AbstractInsertionStrategy implements InsertionStrategy { return badJobs; } + @Override + public Collection insertJobs(Collection vehicleRoutes, Collection unassignedJobs, boolean informInsertionStarts, boolean informInsertionEnds) { + if (informInsertionStarts) + insertionsListeners.informInsertionStarts(vehicleRoutes, unassignedJobs); + Collection badJobs = insertUnassignedJobs(vehicleRoutes, unassignedJobs); + if (informInsertionEnds) + insertionsListeners.informInsertionEndsListeners(vehicleRoutes); + return badJobs; + } + public void markUnassigned(Job unassigned, List reasons) { insertionsListeners.informJobUnassignedListeners(unassigned, reasons); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategy.java index a478a69f..f21487c3 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategy.java @@ -46,4 +46,6 @@ public interface InsertionStrategy { public Collection getListeners(); + public Collection insertJobs(Collection vehicleRoutes, Collection unassignedJobs, boolean informInsertionStarts, boolean informInsertionEnds); + } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java index 1275f825..d9268d92 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java @@ -168,6 +168,9 @@ public class ConstraintManager implements HardActivityConstraint, HardRouteConst // public void add public void addConstraint(HardActivityConstraint actLevelConstraint, Priority priority) { + if (actLevelConstraint instanceof VehicleDependentTimeWindowConstraints) { + timeWindowConstraintsSet = true; + } actLevelConstraintManager.addConstraint(actLevelConstraint, priority); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 76b65084..12aa760a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -65,4 +65,5 @@ public interface Job extends HasId, HasIndex { public double getMaxTimeInVehicle(); + public String getDriverId(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index 99608c23..142c7ae6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -93,6 +93,8 @@ public class Service extends AbstractJob { protected double maxTimeInVehicle = Double.MAX_VALUE; + protected String driverId = null; + Builder(String id){ this.id = id; timeWindows = new TimeWindowsImpl(); @@ -260,6 +262,11 @@ public class Service extends AbstractJob { // this.maxTimeInVehicle = maxTimeInVehicle; // return this; } + + public Builder setDriverId(String driverId) { + this.driverId = driverId; + return this; + } } private final String id; @@ -282,6 +289,8 @@ public class Service extends AbstractJob { private final double maxTimeInVehicle; + private final String driverId; + Service(Builder builder) { setUserData(builder.userData); id = builder.id; @@ -294,6 +303,7 @@ public class Service extends AbstractJob { timeWindows = builder.timeWindows; priority = builder.priority; maxTimeInVehicle = builder.maxTimeInVehicle; + driverId = builder.driverId; } public Collection getTimeWindows(){ @@ -414,4 +424,7 @@ public class Service extends AbstractJob { return this.maxTimeInVehicle; } + public String getDriverId() { + return driverId; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index 8d356a02..4b8dc755 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -89,6 +89,8 @@ public class Shipment extends AbstractJob { public double maxTimeInVehicle = Double.MAX_VALUE; + private String driverId = null; + /** * Returns new instance of this builder. * @@ -239,6 +241,10 @@ public class Shipment extends AbstractJob { return this; } + public Builder setDriverId(String driverId) { + this.driverId = driverId; + return this; + } /** * Builds the shipment. @@ -368,6 +374,8 @@ public class Shipment extends AbstractJob { private final double maxTimeInVehicle; + private final String driverId; + Shipment(Builder builder) { setUserData(builder.userData); this.id = builder.id; @@ -382,6 +390,7 @@ public class Shipment extends AbstractJob { this.pickupTimeWindows = builder.pickupTimeWindows; this.priority = builder.priority; this.maxTimeInVehicle = builder.maxTimeInVehicle; + this.driverId = builder.driverId; } @Override @@ -520,4 +529,8 @@ public class Shipment extends AbstractJob { public double getMaxTimeInVehicle() { return maxTimeInVehicle; } + + public String getDriverId() { + return driverId; + } }