static int computeTardiness(SolutionObject[] sols, MVArraysObject arr) { int total = 0; for (int i = 0; i < sols.length; i++) { final SolutionObject sol = sols[i]; total += ArraysSolvers.computeRouteTardiness(sol.route, sol.arrivalTimes, arr.serviceTimes, arr.dueDates, arr.remainingServiceTimes[i]); } return total; }
static SolutionObject convertRouteToSolutionObject(GlobalStateObject state, VehicleStateObject vso, Map<Parcel, ParcelIndexObj> mapping, int[][] travelTime, int[] releaseDates, int[] dueDates, int[] serviceTimes, int[] vehicleTravelTimes, int remainingServiceTime) { final int[] route = new int[vso.getRoute().get().size() + 2]; final Set<Parcel> seen = newHashSet(); for (int i = 0; i < vso.getRoute().get().size(); i++) { final Parcel dto = vso.getRoute().get().get(i); if (vso.getContents().contains(dto) || seen.contains(dto)) { // it is in cargo route[i + 1] = mapping.get(dto).deliveryIndex; } else { checkArgument(state.getAvailableParcels().contains(dto), "This parcel should be available but is not: %s.", dto); // it is available route[i + 1] = mapping.get(dto).pickupIndex; } // TODO add error msg checkArgument(route[i + 1] > 0); seen.add(dto); } route[route.length - 1] = travelTime.length - 1; final int[] arrivalTimes = computeArrivalTimes(route, travelTime, remainingServiceTime, vehicleTravelTimes, serviceTimes, releaseDates); final int tardiness = computeRouteTardiness(route, arrivalTimes, serviceTimes, dueDates, remainingServiceTime); final int tt = computeTotalTravelTime(route, travelTime, vehicleTravelTimes); return new SolutionObject(route, arrivalTimes, tt + tardiness); }
final int tardiness = ArraysSolvers.computeRouteTardiness(sol.route, sol.arrivalTimes, serviceTimes, dueDates, remainingServiceTimes[v]);
/** * Checks correctness of tardiness computation. Also checks whether the * arrival time at the current position is correctly ignored when calculating * tardiness. */ @Test public void computeSumTardinessTest() { final int[] route = new int[] {0, 1, 2, 3}; final int[] arrivalTimes = new int[] {50, 70, 90, 100}; final int[] serviceTimes = new int[] {0, 5, 5, 0}; final int[] dueDates = new int[] {40, 70, 80, 110}; final int tardiness = ArraysSolvers.computeRouteTardiness(route, arrivalTimes, serviceTimes, dueDates, 0); assertEquals(20, tardiness); }
final int totalTravelTime = ArraysSolvers.computeTotalTravelTime(route, travelTime, vehicleTravelTimes[i]); final int tardiness = ArraysSolvers.computeRouteTardiness(route, arrivalTimes, serviceTimes, dueDates, remainingServiceTimes[i]); sols[i] = new SolutionObject(route, arrivalTimes, totalTravelTime