1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00
This commit is contained in:
jie31best 2019-09-26 02:17:23 +00:00 committed by GitHub
commit 0628a72b54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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;
}