Class Platoons<T>

java.lang.Object
org.opentrafficsim.road.gtu.generator.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-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Author:
Alexander Verbraeck, Peter Knoppers, Wouter Schakel
  • Method Details

    • ofCategory

      public static Platoons<Category> ofCategory(LaneBasedGtuCharacteristicsGeneratorOd characteristics, OtsSimulatorInterface simulator, nl.tudelft.simulation.jstats.streams.StreamInterface stream, Lane position)
      Creates a Platoon&lt;Category&gt; instance for platoons.
      Parameters:
      characteristics - GtuCharacteristicsGeneratorOD; characteristics generator
      simulator - OtsSimulatorInterface; simulator
      stream - StreamInterface; random number stream
      position - Lane; position
      Returns:
      Platoons<Category>; platoons based on OD
    • ofGtuType

      public static Platoons<GtuType> ofGtuType(LaneBasedGtuCharacteristicsGenerator characteristics, OtsSimulatorInterface simulator, nl.tudelft.simulation.jstats.streams.StreamInterface stream, Lane position)
      Creates a Platoon&lt;GtuType&gt; instance for platoons.
      Parameters:
      characteristics - LaneBasedGtuCharacteristicsGenerator; characteristics generator
      simulator - OtsSimulatorInterface; simulator
      stream - StreamInterface; random number stream
      position - Lane; position
      Returns:
      Platoons<GtuType>; platoons based on OD
    • addPlatoon

      public Platoons<T> addPlatoon(org.djunits.value.vdouble.scalar.Time start, org.djunits.value.vdouble.scalar.Time end) throws nl.tudelft.simulation.dsol.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:
      nl.tudelft.simulation.dsol.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(org.djunits.value.vdouble.scalar.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(org.djunits.value.vdouble.scalar.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
    • start

      public void start(LaneBasedGtuGenerator generator) throws nl.tudelft.simulation.dsol.SimRuntimeException
      Sets the generator and starts the events.
      Parameters:
      generator - LaneBasedGtuGenerator; GTU generator
      Throws:
      nl.tudelft.simulation.dsol.SimRuntimeException - if start of first platoon is in the past
    • getGenerator

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

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

      protected void start() throws nl.tudelft.simulation.dsol.SimRuntimeException
      Starts the events.
      Throws:
      nl.tudelft.simulation.dsol.SimRuntimeException - if start of first platoon is in the past
    • compensate

      public org.djunits.value.vdouble.vector.FrequencyVector compensate(T category, org.djunits.value.vdouble.vector.FrequencyVector demand, org.djunits.value.vdouble.vector.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
    • placeGtu

      protected abstract void placeGtu(org.opentrafficsim.road.gtu.generator.Platoons.PlatoonGtu<T> platoonGtu) throws nl.tudelft.simulation.dsol.SimRuntimeException, NamingException, GtuException, NetworkException, OtsGeometryException, ProbabilityException, org.opentrafficsim.base.parameters.ParameterException
      Places the next platoon GTU and schedules the next one.
      Parameters:
      platoonGtu - PlatoonGtu<T>; info of GTU to generate
      Throws:
      nl.tudelft.simulation.dsol.SimRuntimeException - on exception
      NamingException - on exception
      GtuException - on exception
      NetworkException - on exception
      OtsGeometryException - on exception
      org.opentrafficsim.base.parameters.ParameterException - on exception
      ProbabilityException - on exception