View Javadoc
1   package org.opentrafficsim.kpi.sampling.indicator;
2   
3   import java.util.HashSet;
4   import java.util.List;
5   import java.util.Set;
6   
7   import org.djunits.value.vdouble.scalar.Length;
8   import org.djunits.value.vdouble.scalar.Time;
9   import org.opentrafficsim.kpi.sampling.Query;
10  import org.opentrafficsim.kpi.sampling.Trajectory;
11  import org.opentrafficsim.kpi.sampling.TrajectoryGroup;
12  
13  /**
14   * Sum of trajectory lengths divided by number of GTU's.
15   * <p>
16   * Copyright (c) 2013-2018 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
17   * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>.
18   * <p>
19   * @version $Revision$, $LastChangedDate$, by $Author$, initial version 1 okt. 2016 <br>
20   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
21   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
22   * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
23   */
24  public class MeanTripLength extends AbstractIndicator<Length>
25  {
26  
27      /** {@inheritDoc} */
28      @Override
29      protected Length calculate(final Query query, final Time startTime, final Time endTime,
30              final List<TrajectoryGroup> trajectoryGroups)
31      {
32          Length sum = Length.ZERO;
33          Set<String> gtuIds = new HashSet<>();
34          for (TrajectoryGroup trajectoryGroup : trajectoryGroups)
35          {
36              for (Trajectory<?> trajectory : trajectoryGroup.getTrajectories())
37              {
38                  sum = sum.plus(trajectory.getTotalLength());
39                  gtuIds.add(trajectory.getGtuId());
40              }
41          }
42          return sum.divideBy(gtuIds.size());
43      }
44  
45      /** {@inheritDoc} */
46      @Override
47      @SuppressWarnings("checkstyle:designforextension")
48      public String toString()
49      {
50          return "MeanTripLength []";
51      }
52  
53  }