diff --git a/jsprit-core/src/main/java/algorithms/BestInsertion.java b/jsprit-core/src/main/java/algorithms/BestInsertion.java index 7522cc60..c0bbf801 100644 --- a/jsprit-core/src/main/java/algorithms/BestInsertion.java +++ b/jsprit-core/src/main/java/algorithms/BestInsertion.java @@ -51,10 +51,7 @@ final class BestInsertion extends AbstractInsertionStrategy{ private RouteAlgorithm routeAlgorithm; - private Map experimentalPreferredRoute = new HashMap(); - public void setExperimentalPreferredRoute(Map experimentalPreferredRoute) { - this.experimentalPreferredRoute = experimentalPreferredRoute; } private boolean allowUnassignedJobs = false; diff --git a/jsprit-core/src/main/java/algorithms/InsertionFactory.java b/jsprit-core/src/main/java/algorithms/InsertionFactory.java index 5de8a1f4..a38922e2 100644 --- a/jsprit-core/src/main/java/algorithms/InsertionFactory.java +++ b/jsprit-core/src/main/java/algorithms/InsertionFactory.java @@ -112,7 +112,7 @@ class InsertionFactory { // // } - insertionStrategy.addListener(new RemoveEmptyVehicles()); + insertionStrategy.addListener(new RemoveEmptyVehicles(vehicleFleetManager)); insertionStrategy.addListener(new ResetAndIniFleetManager(vehicleFleetManager)); insertionStrategy.addAllListener(insertionListeners); // insertionStrategy.addListener(new FindCheaperVehicle( diff --git a/jsprit-core/src/main/java/algorithms/RemoveEmptyVehicles.java b/jsprit-core/src/main/java/algorithms/RemoveEmptyVehicles.java index 16796f87..906f01fd 100644 --- a/jsprit-core/src/main/java/algorithms/RemoveEmptyVehicles.java +++ b/jsprit-core/src/main/java/algorithms/RemoveEmptyVehicles.java @@ -34,6 +34,13 @@ class RemoveEmptyVehicles implements InsertionStartsListener, InsertionEndsListe private static Logger log = Logger.getLogger(RemoveEmptyVehicles.class); + private VehicleFleetManager fleetManager; + + RemoveEmptyVehicles(VehicleFleetManager fleetManager) { + super(); + this.fleetManager = fleetManager; + } + @Override public void informInsertionStarts(Collection vehicleRoutes, int nOfJobs2Recreate) { // List routes = new ArrayList(vehicleRoutes); @@ -51,7 +58,10 @@ class RemoveEmptyVehicles implements InsertionStartsListener, InsertionEndsListe public void informInsertionEnds(Collection vehicleRoutes) { List routes = new ArrayList(vehicleRoutes); for(VehicleRoute route : routes){ - if(route.isEmpty()) { vehicleRoutes.remove(route); } + if(route.isEmpty()) { + fleetManager.unlock(route.getVehicle()); + vehicleRoutes.remove(route); + } } } } diff --git a/jsprit-core/src/main/java/algorithms/ResetAndIniFleetManager.java b/jsprit-core/src/main/java/algorithms/ResetAndIniFleetManager.java index 98e2a669..721a407e 100644 --- a/jsprit-core/src/main/java/algorithms/ResetAndIniFleetManager.java +++ b/jsprit-core/src/main/java/algorithms/ResetAndIniFleetManager.java @@ -42,11 +42,10 @@ class ResetAndIniFleetManager implements InsertionStartsListener{ public void informInsertionStarts(Collection vehicleRoutes, int nOfJobs2Recreate) { vehicleFleetManager.unlockAll(); for(VehicleRoute route : vehicleRoutes){ - if(!route.isEmpty()){ +// if(!route.isEmpty()){ vehicleFleetManager.lock(route.getVehicle()); - } +// } } -// log.info("#lockedVehicles=" + ((VehicleFleetManagerImpl)vehicleFleetManager).sizeOfLockedVehicles() + " #routes="+vehicleRoutes.size()); } @Override diff --git a/jsprit-core/src/main/java/algorithms/RouteAlgorithmImpl.java b/jsprit-core/src/main/java/algorithms/RouteAlgorithmImpl.java index 2d9062d8..6510d054 100644 --- a/jsprit-core/src/main/java/algorithms/RouteAlgorithmImpl.java +++ b/jsprit-core/src/main/java/algorithms/RouteAlgorithmImpl.java @@ -125,9 +125,6 @@ final class RouteAlgorithmImpl implements RouteAlgorithm { } if(job instanceof Service) { vehicleRoute.getTourActivities().addActivity(insertionData.getDeliveryInsertionIndex(), ServiceActivity.newInstance((Service)job)); -// if(vehicleRoute.getStart().getEndTime() != insertionData.getVehicleDepartureTime()){ -// logger.info("depTime switched from " + vehicleRoute.getStart().getEndTime() + " to " + insertionData.getVehicleDepartureTime()); -// } vehicleRoute.setDepartureTime(insertionData.getVehicleDepartureTime()); } else throw new IllegalStateException("neither service nor shipment. this is not supported."); @@ -163,13 +160,6 @@ final class RouteAlgorithmImpl implements RouteAlgorithm { return algoDescription; } - private void insertJob(Service service, int serviceInsertionIndex, VehicleRoute vehicleRoute) { -// TourActivity del = actStates.getActivity(service,true); - vehicleRoute.getTourActivities().addActivity(serviceInsertionIndex, ServiceActivity.newInstance(service)); - } - - - public Collection getListeners() { return listeners; } diff --git a/jsprit-core/src/main/java/algorithms/VehicleFleetManager.java b/jsprit-core/src/main/java/algorithms/VehicleFleetManager.java index afe104f0..8148c56f 100644 --- a/jsprit-core/src/main/java/algorithms/VehicleFleetManager.java +++ b/jsprit-core/src/main/java/algorithms/VehicleFleetManager.java @@ -23,7 +23,6 @@ package algorithms; import java.util.Collection; import basics.route.Vehicle; -import basics.route.VehicleImpl; import basics.route.VehicleImpl.VehicleType; interface VehicleFleetManager {