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.unit.LengthUnit;
8   import org.djunits.unit.TimeUnit;
9   import org.djunits.value.vdouble.scalar.Duration;
10  import org.djunits.value.vdouble.scalar.Length;
11  import org.djunits.value.vdouble.scalar.Time;
12  import org.opentrafficsim.kpi.interfaces.LinkDataInterface;
13  import org.opentrafficsim.kpi.sampling.Query;
14  import org.opentrafficsim.kpi.sampling.TrajectoryGroup;
15  
16  /**
17   * Inverse of mean speed.
18   * <p>
19   * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
20   * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>.
21   * <p>
22   * @version $Revision$, $LastChangedDate$, by $Author$, initial version 1 okt. 2016 <br>
23   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
24   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
25   * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
26   */
27  public class MeanTravelTimePerDistance extends AbstractIndicator<Duration>
28  {
29  
30      /** Mean speed indicator. */
31      private final MeanSpeed meanSpeed;
32  
33      /**
34       * @param meanSpeed mean speed indicator
35       */
36      public MeanTravelTimePerDistance(final MeanSpeed meanSpeed)
37      {
38          this.meanSpeed = meanSpeed;
39      }
40  
41      /** {@inheritDoc} */
42      @Override
43      public final Duration calculate(final Query query, final Time startTime, final Time endTime,
44              final List<TrajectoryGroup> trajectoryGroups)
45      {
46          return new Duration(1.0 / this.meanSpeed.getValue(query, startTime, endTime, trajectoryGroups).si, TimeUnit.SI);
47      }
48  
49      /** {@inheritDoc} */
50      @Override
51      @SuppressWarnings("checkstyle:designforextension")
52      public String toString()
53      {
54          return "MeanTravelTime [meanTravelTime=" + this.meanSpeed + " (per km)]";
55      }
56  
57  }