Class LaneBasedGTUGenerator

java.lang.Object
nl.tudelft.simulation.event.EventProducer
org.opentrafficsim.road.gtu.generator.LaneBasedGTUGenerator
All Implemented Interfaces:
java.io.Serializable, Locatable, nl.tudelft.simulation.event.EventProducerInterface, Identifiable, GtuGeneratorQueue

public class LaneBasedGTUGenerator
extends nl.tudelft.simulation.event.EventProducer
implements java.io.Serializable, Identifiable, GtuGeneratorQueue
Lane based GTU generator. This generator generates lane based GTUs using a LaneBasedTemplateGTUType. The template is used to generate a set of GTU characteristics at the times implied by the headway generator. These sets are queued until there is sufficient room to construct a GTU at the specified lane locations. The speed of a construction GTU may be reduced to ensure it does not run into its immediate leader GTU.

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 Mar 8, 2016
Author:
Alexander Verbraeck, Peter Knoppers
See Also:
Serialized Form
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  LaneBasedGTUGenerator.Placement
    Placement contains the information that a RoomChecker returns.
    static interface  LaneBasedGTUGenerator.RoomChecker
    Interface for class that checks that there is sufficient room for a proposed new GTU and returns the maximum safe speed and position for the proposed new GTU.
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static nl.tudelft.simulation.event.EventType GTU_GENERATED_EVENT
    Event of a generated GTU.

    Fields inherited from class nl.tudelft.simulation.event.EventProducer

    listeners

    Fields inherited from interface nl.tudelft.simulation.event.EventProducerInterface

    FIRST_POSITION, LAST_POSITION
  • Constructor Summary

    Constructors 
    Constructor Description
    LaneBasedGTUGenerator​(java.lang.String id, Generator<Duration> interarrivelTimeGenerator, LaneBasedGTUCharacteristicsGenerator laneBasedGTUCharacteristicsGenerator, GeneratorPositions generatorPositions, OTSRoadNetwork network, OTSSimulatorInterface simulator, LaneBasedGTUGenerator.RoomChecker roomChecker, IdGenerator idGenerator)
    Construct a new lane base GTU generator.
  • Method Summary

    Modifier and Type Method Description
    void disable​(Time start, Time end, java.util.Set<LaneDirection> laneDirections)
    Disable the vehicle generator during the specific time.
    javax.media.j3d.Bounds getBounds()
    long getGeneratedGTUs()  
    java.lang.String getId()
    Retrieve the id of this LaneBasedGTUGenerator.
    DirectedPoint getLocation()
    java.util.Map<DirectedPoint,​java.lang.Integer> getQueueLengths()
    Returns the locations and lengths of generation queues.
    void placeGtu​(LaneBasedGTUCharacteristics characteristics, java.util.Set<DirectedLanePosition> position, Speed speed)
    Places a GTU, regardless of whether it has room.
    void queueGtu​(LaneBasedGTUCharacteristics characteristics, java.util.Set<LaneDirection> position)
    Adds a GTU to the generation queue.
    void setErrorHandler​(GTUErrorHandler gtuErrorHandler)
    Sets the GTU error handler.
    void setInstantaneousLaneChange​(boolean instantaneous)
    Sets whether GTUs will change lane instantaneously.
    void setNoLaneChangeDistance​(Length noLaneChangeDistance)
    Sets the initial distance over which lane changes shouldn't be performed.
    java.lang.String toString()

    Methods inherited from class nl.tudelft.simulation.event.EventProducer

    addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, removeAllListeners, removeAllListeners, removeListener

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • GTU_GENERATED_EVENT

      public static final nl.tudelft.simulation.event.EventType GTU_GENERATED_EVENT
      Event of a generated GTU. Payload: LaneBasedIndividualGTU
  • Constructor Details

  • Method Details

    • setNoLaneChangeDistance

      public void setNoLaneChangeDistance​(Length noLaneChangeDistance)
      Sets the initial distance over which lane changes shouldn't be performed.
      Parameters:
      noLaneChangeDistance - Length; initial distance over which lane changes shouldn't be performed
    • setInstantaneousLaneChange

      public void setInstantaneousLaneChange​(boolean instantaneous)
      Sets whether GTUs will change lane instantaneously.
      Parameters:
      instantaneous - boolean; whether GTUs will change lane instantaneously
    • setErrorHandler

      public void setErrorHandler​(GTUErrorHandler gtuErrorHandler)
      Sets the GTU error handler.
      Parameters:
      gtuErrorHandler - GTUErrorHandler; GTU error handler
    • queueGtu

      public final void queueGtu​(LaneBasedGTUCharacteristics characteristics, java.util.Set<LaneDirection> position)
      Adds a GTU to the generation queue. This method ignores whether vehicle generation is enabled at the location. This allows an external party to govern (over some time) what vehicles are generated.
      Parameters:
      characteristics - LaneBasedGTUCharacteristics; characteristics of GTU to add to the queue
      position - Set<LaneDirection>; position to generate the GTU at
    • placeGtu

      public final void placeGtu​(LaneBasedGTUCharacteristics characteristics, java.util.Set<DirectedLanePosition> position, Speed speed) throws javax.naming.NamingException, GTUException, NetworkException, SimRuntimeException, OTSGeometryException
      Places a GTU, regardless of whether it has room. The user of this method should verify this is the case.
      Parameters:
      characteristics - LaneBasedGTUCharacteristics; characteristics
      position - Set<DirectedLanePosition>; position
      speed - Speed; speed
      Throws:
      javax.naming.NamingException - on exception
      GTUException - on exception
      NetworkException - on exception
      SimRuntimeException - on exception
      OTSGeometryException - on exception
    • toString

      public final java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • getGeneratedGTUs

      public final long getGeneratedGTUs()
      Returns:
      generatedGTUs.
    • getId

      public final java.lang.String getId()
      Retrieve the id of this LaneBasedGTUGenerator.
      Specified by:
      getId in interface Identifiable
      Returns:
      String; the id of this LaneBasedGTUGenerator
    • disable

      public void disable​(Time start, Time end, java.util.Set<LaneDirection> laneDirections) throws SimRuntimeException
      Disable the vehicle generator during the specific time. Underlying processes such as drawing characteristics and headways are continued, but simply will not result in the queuing of the GTU.
      Parameters:
      start - Time; start time
      end - Time; end time
      laneDirections - Set<LaneDirection>; lanes to disable generation on
      Throws:
      SimRuntimeException - if time is incorrect
    • getLocation

      public DirectedPoint getLocation() throws java.rmi.RemoteException
      Specified by:
      getLocation in interface Locatable
      Throws:
      java.rmi.RemoteException
    • getBounds

      public javax.media.j3d.Bounds getBounds() throws java.rmi.RemoteException
      Specified by:
      getBounds in interface Locatable
      Throws:
      java.rmi.RemoteException
    • getQueueLengths

      public java.util.Map<DirectedPoint,​java.lang.Integer> getQueueLengths()
      Returns the locations and lengths of generation queues. Note that the provided location may differ from the generator location, as one generator may generate GTU's at different points.
      Specified by:
      getQueueLengths in interface GtuGeneratorQueue
      Returns:
      Map<DirectedPoint, Integer>; locations and lengths of generation queues