Class LmrsUtil
- java.lang.Object
-
- org.opentrafficsim.road.gtu.lane.tactical.util.lmrs.LmrsUtil
-
- All Implemented Interfaces:
LmrsParameters
public final class LmrsUtil extends Object implements LmrsParameters
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 Jul 26, 2016
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
-
Field Summary
Fields Modifier and Type Field Description static org.opentrafficsim.base.parameters.ParameterTypeAcceleration
BCRIT
Maximum critical deceleration, e.g.static org.opentrafficsim.base.parameters.ParameterTypeDuration
DT
Fixed model time step.static org.opentrafficsim.base.parameters.ParameterTypeDuration
T
Current car-following headway.static org.opentrafficsim.base.parameters.ParameterTypeDuration
TAU
Headway relaxation time.static org.opentrafficsim.base.parameters.ParameterTypeDuration
TMAX
Maximum car-following headway.static org.opentrafficsim.base.parameters.ParameterTypeDuration
TMIN
Minimum car-following headway.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static boolean
acceptLaneChange(LanePerception perception, org.opentrafficsim.base.parameters.Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm, double desire, Speed ownSpeed, Acceleration ownAcceleration, LateralDirectionality lat, GapAcceptance gapAcceptance, LaneChange laneChange)
Determine whether a lane change is acceptable (gap, lane markings, etc.).static SimpleOperationalPlan
determinePlan(LaneBasedGTU gtu, Time startTime, CarFollowingModel carFollowingModel, LaneChange laneChange, LmrsData lmrsData, LanePerception perception, Iterable<MandatoryIncentive> mandatoryIncentives, Iterable<VoluntaryIncentive> voluntaryIncentives)
Determines a simple representation of an operational plan.static Desire
getLaneChangeDesire(org.opentrafficsim.base.parameters.Parameters parameters, LanePerception perception, CarFollowingModel carFollowingModel, Iterable<MandatoryIncentive> mandatoryIncentives, Iterable<VoluntaryIncentive> voluntaryIncentives, Map<Class<? extends Incentive>,Desire> desireMap)
Determines lane change desire for the given GtU.(package private) static void
resetDesiredHeadway(org.opentrafficsim.base.parameters.Parameters params)
Resets value for T depending on level of lane change desire.(package private) static void
setDesiredHeadway(org.opentrafficsim.base.parameters.Parameters params, double desire)
Sets value for T depending on level of lane change desire.static Acceleration
singleAcceleration(Length distance, Speed followerSpeed, Speed leaderSpeed, double desire, org.opentrafficsim.base.parameters.Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm)
Determine acceleration from car-following with desire-adjusted headway.
-
-
-
Field Detail
-
DT
public static final org.opentrafficsim.base.parameters.ParameterTypeDuration DT
Fixed model time step.
-
TMIN
public static final org.opentrafficsim.base.parameters.ParameterTypeDuration TMIN
Minimum car-following headway.
-
T
public static final org.opentrafficsim.base.parameters.ParameterTypeDuration T
Current car-following headway.
-
TMAX
public static final org.opentrafficsim.base.parameters.ParameterTypeDuration TMAX
Maximum car-following headway.
-
TAU
public static final org.opentrafficsim.base.parameters.ParameterTypeDuration TAU
Headway relaxation time.
-
BCRIT
public static final org.opentrafficsim.base.parameters.ParameterTypeAcceleration BCRIT
Maximum critical deceleration, e.g. stop/go at traffic light.
-
-
Method Detail
-
determinePlan
public static SimpleOperationalPlan determinePlan(LaneBasedGTU gtu, Time startTime, CarFollowingModel carFollowingModel, LaneChange laneChange, LmrsData lmrsData, LanePerception perception, Iterable<MandatoryIncentive> mandatoryIncentives, Iterable<VoluntaryIncentive> voluntaryIncentives) throws GTUException, NetworkException, org.opentrafficsim.base.parameters.ParameterException, OperationalPlanException
Determines a simple representation of an operational plan.- Parameters:
gtu
- LaneBasedGTU; gtustartTime
- Time; start timecarFollowingModel
- CarFollowingModel; car-following modellaneChange
- LaneChange; lane change statuslmrsData
- LmrsData; LMRS dataperception
- LanePerception; perceptionmandatoryIncentives
- Iterable<MandatoryIncentive>; set of mandatory lane change incentivesvoluntaryIncentives
- Iterable<VoluntaryIncentive>; set of voluntary lane change incentives- Returns:
- simple operational plan
- Throws:
GTUException
- gtu exceptionNetworkException
- network exceptionorg.opentrafficsim.base.parameters.ParameterException
- parameter exceptionOperationalPlanException
- operational plan exception
-
getLaneChangeDesire
public static Desire getLaneChangeDesire(org.opentrafficsim.base.parameters.Parameters parameters, LanePerception perception, CarFollowingModel carFollowingModel, Iterable<MandatoryIncentive> mandatoryIncentives, Iterable<VoluntaryIncentive> voluntaryIncentives, Map<Class<? extends Incentive>,Desire> desireMap) throws org.opentrafficsim.base.parameters.ParameterException, GTUException, OperationalPlanException
Determines lane change desire for the given GtU. Mandatory desire is deduced as the maximum of a set of mandatory incentives, while voluntary desires are added. Depending on the level of mandatory lane change desire, voluntary desire may be included partially. If both are positive or negative, voluntary desire is fully included. Otherwise, voluntary desire is less considered within the range dSync < |mandatory| < dCoop. The absolute value is used as large negative mandatory desire may also dominate voluntary desire.- Parameters:
parameters
- Parameters; parametersperception
- LanePerception; perceptioncarFollowingModel
- CarFollowingModel; car-following modelmandatoryIncentives
- Iterable<MandatoryIncentive>; mandatory incentivesvoluntaryIncentives
- Iterable<VoluntaryIncentive>; voluntary incentivesdesireMap
- Map<Class<? extends Incentive>,Desire>; map where calculated desires are stored in- Returns:
- lane change desire for gtu
- Throws:
org.opentrafficsim.base.parameters.ParameterException
- if a parameter is not definedGTUException
- if there is no mandatory incentive, the model requires at least oneOperationalPlanException
- perception exception
-
acceptLaneChange
static boolean acceptLaneChange(LanePerception perception, org.opentrafficsim.base.parameters.Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm, double desire, Speed ownSpeed, Acceleration ownAcceleration, LateralDirectionality lat, GapAcceptance gapAcceptance, LaneChange laneChange) throws org.opentrafficsim.base.parameters.ParameterException, OperationalPlanException
Determine whether a lane change is acceptable (gap, lane markings, etc.).- Parameters:
perception
- LanePerception; perceptionparams
- Parameters; parameterssli
- SpeedLimitInfo; speed limit infocfm
- CarFollowingModel; car-following modeldesire
- double; level of lane change desireownSpeed
- Speed; own speedownAcceleration
- Acceleration; current car-following accelerationlat
- LateralDirectionality; lateral direction for synchronizationgapAcceptance
- GapAcceptance; gap-acceptance modellaneChange
- LaneChange; lane change- Returns:
- whether a gap is acceptable
- Throws:
org.opentrafficsim.base.parameters.ParameterException
- if a parameter is not definedOperationalPlanException
- perception exception
-
setDesiredHeadway
static void setDesiredHeadway(org.opentrafficsim.base.parameters.Parameters params, double desire) throws org.opentrafficsim.base.parameters.ParameterException
Sets value for T depending on level of lane change desire.- Parameters:
params
- Parameters; parametersdesire
- double; lane change desire- Throws:
org.opentrafficsim.base.parameters.ParameterException
- if T, TMIN or TMAX is not in the parameters
-
resetDesiredHeadway
static void resetDesiredHeadway(org.opentrafficsim.base.parameters.Parameters params) throws org.opentrafficsim.base.parameters.ParameterException
Resets value for T depending on level of lane change desire.- Parameters:
params
- Parameters; parameters- Throws:
org.opentrafficsim.base.parameters.ParameterException
- if T is not in the parameters
-
singleAcceleration
public static Acceleration singleAcceleration(Length distance, Speed followerSpeed, Speed leaderSpeed, double desire, org.opentrafficsim.base.parameters.Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm) throws org.opentrafficsim.base.parameters.ParameterException
Determine acceleration from car-following with desire-adjusted headway.- Parameters:
distance
- Length; distance from follower to leaderfollowerSpeed
- Speed; speed of followerleaderSpeed
- Speed; speed of leaderdesire
- double; level of lane change desireparams
- Parameters; parameterssli
- SpeedLimitInfo; speed limit infocfm
- CarFollowingModel; car-following model- Returns:
- acceleration from car-following
- Throws:
org.opentrafficsim.base.parameters.ParameterException
- if a parameter is not defined
-
-