Class LaneBasedGTUGenerator

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

public class LaneBasedGTUGenerator
extends 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
  • Field Details

  • 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
    • getSourceId

      public java.io.Serializable getSourceId()
      Specified by:
      getSourceId in interface EventProducerInterface
      Specified by:
      getSourceId in class EventProducer