Class Conflict

  • All Implemented Interfaces:
    Serializable, EventListener, Locatable, EventListenerInterface, EventProducerInterface, org.opentrafficsim.base.Identifiable, Drawable, ObjectInterface, LaneBasedObject

    public final class Conflict
    extends AbstractLaneBasedObject
    implements EventListenerInterface
    Conflicts deal with traffic on different links/roads that need to consider each other as their paths may be in conflict spatially. A single Conflict represents the one-sided consideration of a conflicting situation. I.e., what is considered a single conflict in traffic theory, is represented by two Conflicts, one on each of the conflicting Lanes.

    This class provides easy access to upstream and downstream GTUs through PerceptionIterables using methods getUpstreamGtus and getDownstreamGtus. These methods are efficient in that they reuse underlying data structures if the GTUs are requested at the same time by another 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 Sep 7, 2016
    Author:
    Alexander Verbraeck, Peter Knoppers, Wouter Schakel
    See Also:
    Serialized Form
    • Method Detail

      • getUpstreamGtus

        public PerceptionCollectable<HeadwayGTU,​LaneBasedGTU> getUpstreamGtus​(LaneBasedGTU perceivingGtu,
                                                                                    HeadwayGtuType headwayGtuType,
                                                                                    Length visibility)
        Provides the upstream GTUs.
        Parameters:
        perceivingGtu - LaneBasedGTU; perceiving GTU
        headwayGtuType - HeadwayGtuType; headway GTU type to use
        visibility - Length; distance over which GTU's are provided
        Returns:
        PerceptionIterable<HeadwayGtU>; iterable over the upstream GTUs
      • getDownstreamGtus

        public PerceptionCollectable<HeadwayGTU,​LaneBasedGTU> getDownstreamGtus​(LaneBasedGTU perceivingGtu,
                                                                                      HeadwayGtuType headwayGtuType,
                                                                                      Length visibility)
        Provides the downstream GTUs.
        Parameters:
        perceivingGtu - LaneBasedGTU; perceiving GTU
        headwayGtuType - HeadwayGtuType; headway GTU type to use
        visibility - Length; distance over which GTU's are provided
        Returns:
        PerceptionIterable<HeadwayGtU>; iterable over the downstream GTUs
      • getConflictType

        public ConflictType getConflictType()
        Returns:
        conflictType.
      • getConflictRule

        public ConflictRule getConflictRule()
        Returns:
        conflictRule.
      • conflictPriority

        public ConflictPriority conflictPriority()
        Returns:
        conflictPriority.
      • getLength

        public Length getLength()
        Returns:
        length.
      • getOtherConflict

        public Conflict getOtherConflict()
        Returns:
        otherConflict.
      • getGtuType

        public GTUType getGtuType()
        Returns:
        gtuType.
      • isPermitted

        public boolean isPermitted()
        If permitted, traffic upstream of traffic lights may not be ignored, as these can have green light.
        Returns:
        permitted.
      • getTrafficLightDistance

        public Length getTrafficLightDistance​(Length maxDistance)
        Returns the distance to an upstream traffic light.
        Parameters:
        maxDistance - Length; maximum distance of traffic light
        Returns:
        Length; distance to upstream traffic light, infinite if beyond maximum distance
      • generateConflictPair

        public static void generateConflictPair​(ConflictType conflictType,
                                                ConflictRule conflictRule,
                                                boolean permitted,
                                                Lane lane1,
                                                Length longitudinalPosition1,
                                                Length length1,
                                                GTUDirectionality direction1,
                                                OTSLine3D geometry1,
                                                GTUType gtuType1,
                                                Lane lane2,
                                                Length longitudinalPosition2,
                                                Length length2,
                                                GTUDirectionality direction2,
                                                OTSLine3D geometry2,
                                                GTUType gtuType2,
                                                OTSSimulatorInterface simulator)
                                         throws NetworkException
        Creates a pair of conflicts.
        Parameters:
        conflictType - ConflictType; conflict type, i.e. crossing, merge or split
        conflictRule - ConflictRule; conflict rule
        permitted - boolean; whether the conflict is permitted in traffic light control
        lane1 - Lane; lane of conflict 1
        longitudinalPosition1 - Length; longitudinal position of conflict 1
        length1 - Length; Length of conflict 1
        direction1 - GTUDirectionality; GTU direction of conflict 1
        geometry1 - OTSLine3D; geometry of conflict 1
        gtuType1 - GTUType; gtu type of conflict 1
        lane2 - Lane; lane of conflict 2
        longitudinalPosition2 - Length; longitudinal position of conflict 2
        length2 - Length; Length of conflict 2
        direction2 - GTUDirectionality; GTU direction of conflict 2
        geometry2 - OTSLine3D; geometry of conflict 2
        gtuType2 - GTUType; gtu type of conflict 2
        simulator - OTSSimulatorInterface; the simulator for animation and timed events
        Throws:
        NetworkException - if the combination of conflict type and both conflict rules is not correct