Class LaneBasedGTUGenerator

  • All Implemented Interfaces:
    Serializable, Locatable, EventProducerInterface, org.opentrafficsim.base.Identifiable, GtuGeneratorQueue

    public class LaneBasedGTUGenerator
    extends EventProducer
    implements Serializable, org.opentrafficsim.base.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-2022 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 Detail

      • GTU_GENERATED_EVENT

        public static final EventType GTU_GENERATED_EVENT
        Event of a generated GTU. Payload: LaneBasedIndividualGTU
    • Constructor Detail

      • LaneBasedGTUGenerator

        public LaneBasedGTUGenerator​(String id,
                                     Generator<Duration> interarrivelTimeGenerator,
                                     LaneBasedGTUCharacteristicsGenerator laneBasedGTUCharacteristicsGenerator,
                                     GeneratorPositions generatorPositions,
                                     OTSRoadNetwork network,
                                     OTSSimulatorInterface simulator,
                                     LaneBasedGTUGenerator.RoomChecker roomChecker,
                                     IdGenerator idGenerator)
                              throws SimRuntimeException,
                                     ProbabilityException,
                                     org.opentrafficsim.base.parameters.ParameterException
        Construct a new lane base GTU generator.
        Parameters:
        id - String; name of the new GTU generator
        interarrivelTimeGenerator - Generator<Duration>; generator for the interval times between GTUs
        laneBasedGTUCharacteristicsGenerator - LaneBasedGTUCharacteristicsGenerator; generator of the characteristics of each GTU
        generatorPositions - GeneratorPositions; location and initial direction provider for all generated GTUs
        network - OTSRoadNetwork; the OTS network that owns the generated GTUs
        simulator - OTSSimulatorInterface; simulator
        roomChecker - RoomChecker; the way that this generator checks that there is sufficient room to place a new GTU
        idGenerator - IdGenerator; id generator
        Throws:
        SimRuntimeException - when startTime lies before the current simulation time
        ProbabilityException - pe
        org.opentrafficsim.base.parameters.ParameterException - if drawing from the interarrival generator fails
    • Method Detail

      • 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,
                                   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
      • getGeneratedGTUs

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

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

        public void disable​(Time start,
                            Time end,
                            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
      • getQueueLengths

        public Map<DirectedPoint,​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