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 java.lang.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 Details

    • ofCategory

      public static Platoons<Category> ofCategory​(GTUCharacteristicsGeneratorOD characteristics, DEVSSimulatorInterface.TimeDoubleUnit simulator, StreamInterface stream, java.util.Set<LaneDirection> position)
      Creates a Platoon&lt;Category&gt; instance for platoons.
      Parameters:
      characteristics - GTUCharacteristicsGeneratorOD; characteristics generator
      simulator - DEVSSimulatorInterface.TimeDoubleUnit; simulator
      stream - StreamInterface; random number stream
      position - Set<LaneDirection>; position
      Returns:
      Platoons<Category>; platoons based on OD
    • ofGtuType

      public static Platoons<GTUType> ofGtuType​(LaneBasedGTUCharacteristicsGenerator characteristics, DEVSSimulatorInterface.TimeDoubleUnit simulator, StreamInterface stream, java.util.Set<LaneDirection> position)
      Creates a Platoon&lt;GTUType&gt; instance for platoons.
      Parameters:
      characteristics - LaneBasedGTUCharacteristicsGenerator; characteristics generator
      simulator - DEVSSimulatorInterface.TimeDoubleUnit; simulator
      stream - StreamInterface; random number stream
      position - Set<LaneDirection>; position
      Returns:
      Platoons<GTUType>; platoons based on OD
    • 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:
      java.lang.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:
      java.lang.IllegalStateException - if no platoon was started or time is outside of the platoon time range
    • start

      public void start​(LaneBasedGTUGenerator generator) throws SimRuntimeException
      Sets the generator and starts the events.
      Parameters:
      generator - LaneBasedGTUGenerator; GTU generator
      Throws:
      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 java.util.Set<LaneDirection> getPosition()
      Returns the position for sub classes.
      Returns:
      Set<LaneDirection>; position for sub classes
    • start

      protected void start() throws SimRuntimeException
      Starts the events.
      Throws:
      SimRuntimeException - if start of first platoon is in the past
    • 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
    • placeGtu

      protected abstract void placeGtu​(org.opentrafficsim.road.gtu.generator.Platoons.PlatoonGtu<T> platoonGtu) throws SimRuntimeException, javax.naming.NamingException, GTUException, NetworkException, OTSGeometryException, ProbabilityException, ParameterException
      Places the next platoon GTU and schedules the next one.
      Parameters:
      platoonGtu - PlatoonGtu<T>; info of GTU to generate
      Throws:
      SimRuntimeException - on exception
      javax.naming.NamingException - on exception
      GTUException - on exception
      NetworkException - on exception
      OTSGeometryException - on exception
      ParameterException - on exception
      ProbabilityException - on exception