Class CfRoomChecker

java.lang.Object
org.opentrafficsim.road.gtu.generator.CfRoomChecker
All Implemented Interfaces:
LaneBasedGtuGenerator.RoomChecker
Direct Known Subclasses:
CfBaRoomChecker

public class CfRoomChecker extends Object implements LaneBasedGtuGenerator.RoomChecker
This class places GTU's behind the leader at the desired headway (i.e. CF, car-following) and the speed of the leader, but no further than the GTU could have traveled at the desired speed during the time since the desired arrival. With multiple leaders, the leader that causes the most upstream following position is used.

Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Author:
Alexander Verbraeck, Peter Knoppers, Wouter Schakel
  • Constructor Details

    • CfRoomChecker

      public CfRoomChecker()
  • Method Details

    • canPlace

      public LaneBasedGtuGenerator.Placement canPlace(SortedSet<HeadwayGtu> leaders, LaneBasedGtuCharacteristics characteristics, org.djunits.value.vdouble.scalar.Duration since, LanePosition initialPosition) throws NetworkException, GtuException
      Return the maximum safe speed and position for a new GTU with the specified characteristics. Returns Placement.NO if there is no safe speed and position. This method might be called with an empty leader set such that the desired speed can be implemented.
      Specified by:
      canPlace in interface LaneBasedGtuGenerator.RoomChecker
      Parameters:
      leaders - SortedSet<HeadwayGtu>; leaders, usually 1, possibly more after a branch
      characteristics - LaneBasedGtuCharacteristics; characteristics of the proposed new GTU
      since - Duration; time since the GTU wanted to arrive
      initialPosition - LanePosition; initial position
      Returns:
      Speed; maximum safe speed, or null if a GTU with the specified characteristics cannot be placed at the current time
      Throws:
      NetworkException - this method may throw a NetworkException if it encounters an error in the network structure
      GtuException - on parameter exception
    • headwayFactor

      protected double headwayFactor(org.djunits.value.vdouble.scalar.Speed desiredSpeed, org.djunits.value.vdouble.scalar.Length desiredHeadway, org.djunits.value.vdouble.scalar.Speed generationSpeed, org.djunits.value.vdouble.scalar.Length generationHeadway, org.djunits.value.vdouble.scalar.Length leaderLength)
      Returns a situation dependent headway factor to deal with spillback.
      Parameters:
      desiredSpeed - Speed; desired speed
      desiredHeadway - Length; desired headway at desired speed
      generationSpeed - Speed; generation speed
      generationHeadway - Length; desired headway at generation speed
      leaderLength - Length; length of the leader
      Returns:
      situation dependent headway factor to deal with spillback