@Override
public void timeStep(double dt, double simulationTime, long iterationCount) {
int numberOfVehicles = Math.max(0, RoadNetworkUtils.vehicleCount(route) - roadNetwork.obstacleCount(route));
for (TravelTimeType type : TravelTimeType.values()) {
TravelTime tt = travelTimes.get(type);
tt.numberOfVehicles = numberOfVehicles;
tt.instantaneousTravelTime = RoadNetworkUtils.instantaneousTravelTime(route, type);
tt.totalTravelTime += dt * numberOfVehicles;
tt.meanSpeed = route.getLength() / tt.instantaneousTravelTime;
tt.instTravelTimeEMA = (simulationTime == 0) ?
tt.instantaneousTravelTime :
ExponentialMovingAverage.calc(tt.instantaneousTravelTime, tt.instTravelTimeEMA, beta);
if (tt.fileWriter != null) {
tt.fileWriter.write(simulationTime, tt);
}
}
}