Class Platoons<T>

  • Type Parameters:
    T - type of demand category, typically a Category in an ODMatrix or a GTUType

    public abstract class Platoons<T>
    extends Object
    Connects with a lane-based GTU generator to disable it over some time and generate a platoon instead. Platoons are added as: Platoons.ofCategory(...).addPlatoon(...).addGtu(...).addGtu(...).addPlatoon(...).addGtu(...).addGtu(...).start();. Method addGtu(...) may only determine a generation time if other info is set by fixInfo(...).

    This class may be used with a LaneBasedGTUCharacteristicsGenerator or GTUCharacteristicsGeneratorOD. Use ofGtuType() or ofCategory() respectively.

    Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
    BSD-style license. See OpenTrafficSim License.

    Version:
    $Revision$, $LastChangedDate$, by $Author$, initial version 14 sep. 2018
    Author:
    Alexander Verbraeck, Peter Knoppers, Wouter Schakel
    • Method Detail

      • addPlatoon

        public Platoons<T> addPlatoon​(Time start,
                                      Time end)
                               throws SimRuntimeException
        Add a platoon. The generator is disabled during the provided time frame. Individual GTU's should be added using addGtu.
        Parameters:
        start - Time; start time
        end - Time; end time
        Returns:
        Platoons<T>; for method chaining
        Throws:
        SimRuntimeException - on exception
      • fixInfo

        public Platoons<T> fixInfo​(Node origin,
                                   Node destination,
                                   T category)
        Fix all info except time for GTU's added hereafter.
        Parameters:
        origin - Node; origin
        destination - Node; destination
        category - T; category
        Returns:
        Platoons<T>; for method chaining
      • addGtu

        public Platoons<T> addGtu​(Time time)
        Add GTU to the current platoon. Per platoon, GTU may be given in any order. This method uses info set with fixInfo.
        Parameters:
        time - Time; time of generation
        Returns:
        Platoons<T>; for method chaining
        Throws:
        IllegalStateException - if no fixed info was set using fixInfo
      • addGtu

        public Platoons<T> addGtu​(Time time,
                                  Node origin,
                                  Node destination,
                                  T category)
        Add GTU to the current platoon. Per platoon, GTU may be given in any order.
        Parameters:
        time - Time; time of generation
        origin - Node; origin
        destination - Node; destination
        category - T; category
        Returns:
        Platoons<T>; for method chaining
        Throws:
        IllegalStateException - if no platoon was started or time is outside of the platoon time range
      • getGenerator

        protected LaneBasedGTUGenerator getGenerator()
        Returns the vehicle generator for sub classes.
        Returns:
        LaneBasedGTUGenerator; vehicle generator for sub classes
      • getPosition

        protected Set<LaneDirection> getPosition()
        Returns the position for sub classes.
        Returns:
        Set<LaneDirection>; position for sub classes
      • compensate

        public FrequencyVector compensate​(T category,
                                          FrequencyVector demand,
                                          TimeVector time,
                                          Interpolation interpolation)
        Creates a demand vector in which the platoon demand has been compensated from the input demand vector. Only demand pertaining to the location where the platoons are generated should be compensated.
        Parameters:
        category - T; category
        demand - FrequencyVector; demand vector
        time - TimeVector; time vector
        interpolation - Interpolation; interpolation
        Returns:
        FrequencyVector; demand vector in which the platoon demand has been compensated from the input demand vector