Class LaneBasedGTUGenerator
- java.lang.Object
-
- org.djutils.event.EventProducer
-
- org.opentrafficsim.road.gtu.generator.LaneBasedGTUGenerator
-
- All Implemented Interfaces:
Serializable
,Locatable
,EventProducerInterface
,Identifiable
,GtuGeneratorQueue
public class LaneBasedGTUGenerator extends EventProducer implements 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 aRoomChecker
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 EventType
GTU_GENERATED_EVENT
Event of a generated GTU.-
Fields inherited from class org.djutils.event.EventProducer
eventProducerImpl
-
Fields inherited from interface org.djutils.event.EventProducerInterface
FIRST_POSITION, LAST_POSITION
-
-
Constructor Summary
Constructors Constructor Description LaneBasedGTUGenerator(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
disable(Time start, Time end, Set<LaneDirection> laneDirections)
Disable the vehicle generator during the specific time.javax.media.j3d.Bounds
getBounds()
long
getGeneratedGTUs()
String
getId()
Retrieve the id of this LaneBasedGTUGenerator.DirectedPoint
getLocation()
Map<DirectedPoint,Integer>
getQueueLengths()
Returns the locations and lengths of generation queues.Serializable
getSourceId()
void
placeGtu(LaneBasedGTUCharacteristics characteristics, Set<DirectedLanePosition> position, Speed speed)
Places a GTU, regardless of whether it has room.void
queueGtu(LaneBasedGTUCharacteristics characteristics, 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.String
toString()
-
Methods inherited from class org.djutils.event.EventProducer
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, getEventTypesWithListeners, getListenerReferences, hasListeners, numberOfListeners, removeAllListeners, removeAllListeners, removeListener
-
-
-
-
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, ParameterException
Construct a new lane base GTU generator.- Parameters:
id
- String; name of the new GTU generatorinterarrivelTimeGenerator
- Generator<Duration>; generator for the interval times between GTUslaneBasedGTUCharacteristicsGenerator
- LaneBasedGTUCharacteristicsGenerator; generator of the characteristics of each GTUgeneratorPositions
- GeneratorPositions; location and initial direction provider for all generated GTUsnetwork
- OTSRoadNetwork; the OTS network that owns the generated GTUssimulator
- OTSSimulatorInterface; simulatorroomChecker
- RoomChecker; the way that this generator checks that there is sufficient room to place a new GTUidGenerator
- IdGenerator; id generator- Throws:
SimRuntimeException
- when startTime lies before the current simulation timeProbabilityException
- peParameterException
- 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 queueposition
- Set<LaneDirection>; position to generate the GTU at
-
placeGtu
public final void placeGtu(LaneBasedGTUCharacteristics characteristics, Set<DirectedLanePosition> position, Speed speed) throws 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; characteristicsposition
- Set<DirectedLanePosition>; positionspeed
- Speed; speed- Throws:
NamingException
- on exceptionGTUException
- on exceptionNetworkException
- on exceptionSimRuntimeException
- on exceptionOTSGeometryException
- on exception
-
getGeneratedGTUs
public final long getGeneratedGTUs()
- Returns:
- generatedGTUs.
-
getId
public final String getId()
Retrieve the id of this LaneBasedGTUGenerator.- Specified by:
getId
in interfaceIdentifiable
- 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 timeend
- Time; end timelaneDirections
- Set<LaneDirection>; lanes to disable generation on- Throws:
SimRuntimeException
- if time is incorrect
-
getLocation
public DirectedPoint getLocation() throws RemoteException
- Specified by:
getLocation
in interfaceLocatable
- Throws:
RemoteException
-
getBounds
public javax.media.j3d.Bounds getBounds() throws RemoteException
- Specified by:
getBounds
in interfaceLocatable
- Throws:
RemoteException
-
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 interfaceGtuGeneratorQueue
- Returns:
- Map<DirectedPoint, Integer>; locations and lengths of generation queues
-
getSourceId
public Serializable getSourceId()
- Specified by:
getSourceId
in interfaceEventProducerInterface
- Specified by:
getSourceId
in classEventProducer
-
-