mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
speed up regret insertion
This commit is contained in:
parent
093baf1abe
commit
ba700c73fe
2 changed files with 13 additions and 4 deletions
|
|
@ -167,10 +167,13 @@ public class InsertionBuilder {
|
|||
} else if (strategy.equals(Strategy.REGRET)) {
|
||||
if (executor == null) {
|
||||
RegretInsertion regret = new RegretInsertion(costCalculator, vrp, fleetManager);
|
||||
regret.setSwitchAllowed(allowVehicleSwitch);
|
||||
insertion = regret;
|
||||
|
||||
} else {
|
||||
insertion = new RegretInsertionConcurrent(costCalculator, vrp, executor, fleetManager);
|
||||
RegretInsertionConcurrent regret = new RegretInsertionConcurrent(costCalculator, vrp, executor, fleetManager);
|
||||
regret.setSwitchAllowed(allowVehicleSwitch);
|
||||
insertion = regret;
|
||||
}
|
||||
} else throw new IllegalStateException("you should never get here");
|
||||
for (InsertionListener l : iListeners) insertion.addListener(l);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ class InsertionDataUpdater {
|
|||
Collection<Vehicle> relevantVehicles = new ArrayList<Vehicle>();
|
||||
if (!(route.getVehicle() instanceof VehicleImpl.NoVehicle)) {
|
||||
relevantVehicles.add(route.getVehicle());
|
||||
if(addAllAvailable && initialVehicleIds.contains(route.getVehicle().getId())) relevantVehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle()));
|
||||
if(addAllAvailable && !initialVehicleIds.contains(route.getVehicle().getId())){
|
||||
relevantVehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle()));
|
||||
}
|
||||
} else relevantVehicles.addAll(fleetManager.getAvailableVehicles());
|
||||
for (Vehicle v : relevantVehicles) {
|
||||
double depTime = v.getEarliestDeparture();
|
||||
|
|
@ -67,8 +69,12 @@ class InsertionDataUpdater {
|
|||
}
|
||||
}
|
||||
if(versionedIData.getiData() instanceof InsertionData.NoInsertionFound) continue;
|
||||
if(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle() && !switchAllowed) continue;
|
||||
if(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle() && initialVehicleIds.contains(versionedIData.getRoute().getVehicle().getId())) continue;
|
||||
if(!(versionedIData.getRoute().getVehicle() instanceof VehicleImpl.NoVehicle)) {
|
||||
if (versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle()) {
|
||||
if (!switchAllowed) continue;
|
||||
if (initialVehicleIds.contains(versionedIData.getRoute().getVehicle().getId())) continue;
|
||||
}
|
||||
}
|
||||
if(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle()) {
|
||||
if (fleetManager.isLocked(versionedIData.getiData().getSelectedVehicle())) {
|
||||
Vehicle available = fleetManager.getAvailableVehicle(versionedIData.getiData().getSelectedVehicle().getVehicleTypeIdentifier());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue