示例#1
0
  private Job getWorst(Collection<VehicleRoute> copied) {
    Job worst = null;
    double bestSavings = Double.MIN_VALUE;

    for (VehicleRoute route : copied) {
      if (route.isEmpty()) continue;
      Map<Job, Double> savingsMap = new HashMap<Job, Double>();
      TourActivity actBefore = route.getStart();
      TourActivity actToEval = null;
      for (TourActivity act : route.getActivities()) {
        if (actToEval == null) {
          actToEval = act;
          continue;
        }
        double savings = savings(route, actBefore, actToEval, act);
        Job job = ((TourActivity.JobActivity) actToEval).getJob();
        if (!savingsMap.containsKey(job)) {
          savingsMap.put(job, savings);
        } else {
          double s = savingsMap.get(job);
          savingsMap.put(job, s + savings);
        }
        actBefore = actToEval;
        actToEval = act;
      }
      double savings = savings(route, actBefore, actToEval, route.getEnd());
      Job job = ((TourActivity.JobActivity) actToEval).getJob();
      if (!savingsMap.containsKey(job)) {
        savingsMap.put(job, savings);
      } else {
        double s = savingsMap.get(job);
        savingsMap.put(job, s + savings);
      }
      // getCounts best
      for (Job j : savingsMap.keySet()) {
        if (savingsMap.get(j) > bestSavings) {
          bestSavings = savingsMap.get(j);
          worst = j;
        }
      }
    }
    return worst;
  }