@Override
  public String printResults() {

    double averageWaitingTime = 0.0;
    double averageTravelTime = 0.0;

    double sumWaitingTime = 0.0;
    double sumTravelTime = 0.0;

    int numberOfAgentsCountedSoFar = 0;

    for (AgentCountBox agentCountBox : this.completeAgents) {
      averageWaitingTime =
          (numberOfAgentsCountedSoFar * averageWaitingTime + agentCountBox.getWaitingTime())
              / (numberOfAgentsCountedSoFar + 1);
      averageTravelTime =
          (numberOfAgentsCountedSoFar * averageTravelTime + agentCountBox.getTravelTimeInVehicle())
              / (numberOfAgentsCountedSoFar + 1);

      sumWaitingTime += agentCountBox.getWaitingTime();
      sumTravelTime += agentCountBox.getTravelTimeInVehicle();

      numberOfAgentsCountedSoFar++;
    }

    log.info(
        "Veh "
            + this.vehId
            + " from "
            + Time.writeTime(this.startTime)
            + " to "
            + Time.writeTime(this.stopTime)
            + " counted "
            + numberOfAgentsCountedSoFar
            + " agents who (in average) had to wait for "
            + ((int) averageWaitingTime)
            + "s and travelled "
            + ((int) averageTravelTime)
            + "s - sumWaiting "
            + ((int) sumWaitingTime)
            + "s, sumTT "
            + ((int) sumTravelTime)
            + "s, "
            + this.numberOfAdditionalTripsPerformed
            + " agents drive a bus stop ahead resulting in additional trips");

    return this.vehId
        + ", "
        + Time.writeTime(this.startTime)
        + ", "
        + Time.writeTime(this.stopTime)
        + ", "
        + numberOfAgentsCountedSoFar
        + ", "
        + ((int) averageWaitingTime)
        + ", "
        + ((int) averageTravelTime)
        + ", "
        + ((int) sumWaitingTime)
        + ", "
        + ((int) sumTravelTime)
        + ", "
        + this.numberOfAdditionalTripsPerformed;
  }