mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
Merge 32bf4e63c1 into 74c3c6839b
This commit is contained in:
commit
0628a72b54
1 changed files with 26 additions and 13 deletions
|
|
@ -40,20 +40,31 @@ class InsertionDataUpdater {
|
|||
relevantVehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle()));
|
||||
}
|
||||
} else relevantVehicles.addAll(fleetManager.getAvailableVehicles());
|
||||
double bestCost = Double.MAX_VALUE;
|
||||
InsertionData bestIData = new InsertionData.NoInsertionFound();
|
||||
for (Vehicle v : relevantVehicles) {
|
||||
double depTime = v.getEarliestDeparture();
|
||||
InsertionData iData = insertionCostsCalculator.getInsertionData(route, unassignedJob, v, depTime, route.getDriver(), Double.MAX_VALUE);
|
||||
if (iData instanceof InsertionData.NoInsertionFound) {
|
||||
continue;
|
||||
}
|
||||
insertionDataSet.add(new VersionedInsertionData(iData, updateRound, route));
|
||||
if (iData.getInsertionCost() < bestCost) {
|
||||
bestIData = iData;
|
||||
bestCost = iData.getInsertionCost();
|
||||
}
|
||||
}
|
||||
Iterator<VersionedInsertionData> iterator = insertionDataSet.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
VersionedInsertionData versionedInsertionData = iterator.next();
|
||||
if (versionedInsertionData.getRoute() == route &&
|
||||
versionedInsertionData.getVersion() != updateRound)
|
||||
iterator.remove();
|
||||
}
|
||||
insertionDataSet.add(new VersionedInsertionData(bestIData, updateRound, route));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static VehicleRoute findRoute(Collection<VehicleRoute> routes, Job job) {
|
||||
for(VehicleRoute r : routes){
|
||||
if(r.getVehicle().getBreak() == job) return r;
|
||||
|
|
@ -112,16 +123,13 @@ class InsertionDataUpdater {
|
|||
} else continue;
|
||||
}
|
||||
}
|
||||
int currentDataVersion = updates.get(versionedIData.getRoute());
|
||||
if(versionedIData.getVersion() == currentDataVersion){
|
||||
if(best == null) {
|
||||
best = versionedIData.getiData();
|
||||
bestRoute = versionedIData.getRoute();
|
||||
}
|
||||
else {
|
||||
secondBest = versionedIData.getiData();
|
||||
break;
|
||||
}
|
||||
if(best == null) {
|
||||
best = versionedIData.getiData();
|
||||
bestRoute = versionedIData.getRoute();
|
||||
}
|
||||
else {
|
||||
secondBest = versionedIData.getiData();
|
||||
break;
|
||||
}
|
||||
}
|
||||
VehicleRoute emptyRoute = VehicleRoute.emptyRoute();
|
||||
|
|
@ -154,6 +162,11 @@ class InsertionDataUpdater {
|
|||
else if(scoredJob.getScore() > bestScoredJob.getScore()){
|
||||
bestScoredJob = scoredJob;
|
||||
}
|
||||
else if (scoredJob.getScore() == bestScoredJob.getScore()) {
|
||||
if (scoredJob.getJob().getId().compareTo(bestScoredJob.getJob().getId()) <= 0) {
|
||||
bestScoredJob = scoredJob;
|
||||
}
|
||||
}
|
||||
}
|
||||
return bestScoredJob;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue