From 4398bb631123118c049108e20d0c9d92b9c0650b Mon Sep 17 00:00:00 2001 From: kobyb Date: Sun, 11 Mar 2018 16:41:27 +0200 Subject: [PATCH] Addprohibitedtasksupport (#36) * add prohibited task option * add to builder * add to constructor * array to set * cr * remove unsused import --- .../jsprit/core/problem/vehicle/Vehicle.java | 3 ++ .../core/problem/vehicle/VehicleImpl.java | 33 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java index 6d430655..df2fdf23 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java @@ -83,4 +83,7 @@ public interface Vehicle extends HasId, HasIndex { // default Object getUserData() { // return null; // }; + public abstract boolean isTaskPermited(String taskId); + + public abstract void addProhibitedTask(String taskId); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java index 0731abf2..41107525 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java @@ -24,7 +24,7 @@ import com.graphhopper.jsprit.core.problem.job.Break; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collection; +import java.util.*; /** @@ -97,6 +97,16 @@ public class VehicleImpl extends AbstractVehicle { return null; } + @Override + public boolean isTaskPermited(String taskId) { + return true; + } + + @Override + public void addProhibitedTask(String taskId) { + throw new IllegalArgumentException("NoVehicle should not have prohibited tasks"); + } + } /** @@ -134,6 +144,8 @@ public class VehicleImpl extends AbstractVehicle { private Object userData; + private Set prohibitedTasks = new HashSet<>(); + private Builder(String id) { super(); this.id = id; @@ -248,6 +260,12 @@ public class VehicleImpl extends AbstractVehicle { return this; } + public Builder addExcludedTask(String taskId){ + if (taskId != null) + prohibitedTasks.add(taskId); + return this; + } + /** * Builds and returns the vehicle. *

@@ -331,6 +349,8 @@ public class VehicleImpl extends AbstractVehicle { private final Break aBreak; + private final Set prohibitedTasks; + private VehicleImpl(Builder builder) { setUserData(builder.userData); id = builder.id; @@ -342,6 +362,7 @@ public class VehicleImpl extends AbstractVehicle { endLocation = builder.endLocation; startLocation = builder.startLocation; aBreak = builder.aBreak; + prohibitedTasks = builder.prohibitedTasks; // setVehicleIdentifier(new VehicleTypeKey(type.getTypeId(),startLocation.getId(),endLocation.getId(),earliestDeparture,latestArrival,skills)); setVehicleIdentifier(new VehicleTypeKey(type.getTypeId(), startLocation.getId(), endLocation.getId(), earliestDeparture, latestArrival, skills, returnToDepot)); } @@ -407,6 +428,16 @@ public class VehicleImpl extends AbstractVehicle { return aBreak; } + @Override + public boolean isTaskPermited(String taskId) { + return !prohibitedTasks.contains(taskId); + } + + @Override + public void addProhibitedTask(String taskId) { + prohibitedTasks.add(taskId); + } + /* (non-Javadoc) * @see java.lang.Object#hashCode() */