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)) {
|
} else if (strategy.equals(Strategy.REGRET)) {
|
||||||
if (executor == null) {
|
if (executor == null) {
|
||||||
RegretInsertion regret = new RegretInsertion(costCalculator, vrp, fleetManager);
|
RegretInsertion regret = new RegretInsertion(costCalculator, vrp, fleetManager);
|
||||||
|
regret.setSwitchAllowed(allowVehicleSwitch);
|
||||||
insertion = regret;
|
insertion = regret;
|
||||||
|
|
||||||
} else {
|
} 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");
|
} else throw new IllegalStateException("you should never get here");
|
||||||
for (InsertionListener l : iListeners) insertion.addListener(l);
|
for (InsertionListener l : iListeners) insertion.addListener(l);
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,9 @@ class InsertionDataUpdater {
|
||||||
Collection<Vehicle> relevantVehicles = new ArrayList<Vehicle>();
|
Collection<Vehicle> relevantVehicles = new ArrayList<Vehicle>();
|
||||||
if (!(route.getVehicle() instanceof VehicleImpl.NoVehicle)) {
|
if (!(route.getVehicle() instanceof VehicleImpl.NoVehicle)) {
|
||||||
relevantVehicles.add(route.getVehicle());
|
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());
|
} else relevantVehicles.addAll(fleetManager.getAvailableVehicles());
|
||||||
for (Vehicle v : relevantVehicles) {
|
for (Vehicle v : relevantVehicles) {
|
||||||
double depTime = v.getEarliestDeparture();
|
double depTime = v.getEarliestDeparture();
|
||||||
|
|
@ -67,8 +69,12 @@ class InsertionDataUpdater {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(versionedIData.getiData() instanceof InsertionData.NoInsertionFound) continue;
|
if(versionedIData.getiData() instanceof InsertionData.NoInsertionFound) continue;
|
||||||
if(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle() && !switchAllowed) continue;
|
if(!(versionedIData.getRoute().getVehicle() instanceof VehicleImpl.NoVehicle)) {
|
||||||
if(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle() && initialVehicleIds.contains(versionedIData.getRoute().getVehicle().getId())) continue;
|
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(versionedIData.getiData().getSelectedVehicle() != versionedIData.getRoute().getVehicle()) {
|
||||||
if (fleetManager.isLocked(versionedIData.getiData().getSelectedVehicle())) {
|
if (fleetManager.isLocked(versionedIData.getiData().getSelectedVehicle())) {
|
||||||
Vehicle available = fleetManager.getAvailableVehicle(versionedIData.getiData().getSelectedVehicle().getVehicleTypeIdentifier());
|
Vehicle available = fleetManager.getAvailableVehicle(versionedIData.getiData().getSelectedVehicle().getVehicleTypeIdentifier());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue