Skip to content

6.4 AuxiliaryFunctions

smart-fm edited this page Nov 9, 2018 · 11 revisions

1. Lane Utility functions

This model describes drivers’ choice of lane they would want to travel in. A driver chooses one of up to three alternatives: to stay in the current lane (CL) or to target changing either to the right lane (RL) or to the left lane (LL). The estimated systematic utilities of the current, right and left lane, respectively, for driver n at time t are given by:


where, d^e(t) is the distance from the position of vehicle n at time t to the point where it needs to be in a specific lane (i.e. its exit point from the freeway); δ^i(t) are dummy indicators of the number of lane changes required to follow the path (i=1 for one lane change required,...); v is an individual specific error term, which is assumed to be standard normally distributed in the population (the term β_13^lane*v should be added to all equations); EMU^RL(t) and EMU^LL(t) are right lane and left lane gap acceptance expected maximum utilities, respectively (the term β_14*EMU^lane(t) should be added for the LL and RL equations) - Note that this formula is not implemented in MITSIM; drivers' perception and awareness of path plan considerations is accounted for drivers who exit the freeway using the next off-ramp, as opposed to drivers who will use subsequent exits; as with the impact of the distance, explanatory variables are generated by interaction of a next-exit dummy variable with the number of lane changes required: the indicator variables δ^next(t) and δ^add(t) are therefore given by:


Flow chart for LCUtilityLeft, LCUtilityRight, and LCUtilityCurrent

The target lane choice probabilities are defined by a logit model and the details of its derivation along with of the above equations can be found in Toledo (2003); the speed (V^front(t)) and spacing (S^front(t)) of the front vehicle (only appearing in the utility of the current lane) capture the likely satisfaction of the driver with conditions in the current lane; δ^h(t) is a dummy variable that is equal to 1 if either lead or lag vehicles are heavy. The tailgating dummy variable δ^t(t) captures drivers' tendency to move out of their current lane if they are being tailgated, i.e, when gap behind is less or equal to 10m, and level of service is A, B or C; Levels of service definitions are based on densities; the variable d^lane(t) captures density conditions in an extended neighborhood in the target lane; the right-most lane dummy variable δ^(rm,lane)(t) captures the preference of freeway drivers to avoid the right-most lane because of the merging and weaving activity that takes place in that lane.

The above equations are integrated within the following functions: LCUtilityLeft, LCUtilityRight, and LCUtilityCurrent. The function isWrongLane finds which lane is correct for a vehicle and outputs the number of lane changes needed to reach it:

  • -n = number of lane changes to right required;
  • 0 = this lane is fine;
  • +n = number of lane changes to left required.

The 'correct lane' lane may not be the lane vehicle is in, but must be in the same link that vehicle is in. This function is used in a case statement to compute part of the utility function related to the terms d^e(t), δ^i(t), δ^next(t) and δ^add(t). In MITSIM this function is given by TS_Lane::isWrongLane. Finally, the formulation presented above (Toledo, 2003) was extended to account for when the vehicle ahead is a bus and there is a bus stop ahead. The utility function of the (left, right and current) lane has an additional variable (busAheadDummy) and parameter (β_15) that is set to 1 for disincentive to be applied in the utility. The value of all parameters of the lane utility functions are specified in the XML configuration file (see Section 6.6).

2. Event detection function

The function isThereBadEventAhead detects if the current lane is ending or if it has (or is connected downstream to a lane that has) a critical control device or incident. This could be a red light sign or active incident.


Flow chart for IsThereBadEventAhead

It returns:

  • -1 = bad event and requires a mandatory lane change
  • 0 = nothing serious
  • 1 = bad event and requires a discretionary lane change

The function call itself the function isThereBadEventInList that loops downstream control devices or incidents on a predefined lane and find if there is any event blocking the lane or requires a lane change. It returns:

  • -1 = bad event and requires a mandatory lane change
  • 0 = nothing serious
  • +1 = bad event and requires a discretionary lane change This function also updates the visibility distance and the distance to stop variable.

3. Check for nosing feasibility

The checkNosingFeasibility function is used by executeLaneChanging to check if a nosing is feasible or not, returning 1 if the vehicle can nose in or 0 otherwise.


Flow chart for check nosing feasibility

The feasibility of the nosing regime relies in the available gaps, the needed acceleration/deceleration, the nosing state of lead and lag vehicles on the target lane and the willingness to yield of the lag vehicle.

4. Willingness to yield

The function willYield is used by executeLaneChanging to check if a vehicle is willing to yield or not, returning TRUE if the vehicle is willing to yield or FALSE otherwise. The function depends on the predefined probabilities to yield to none, 1, 2 and 3 or more vehicles; these probabilities are specified in the parameter configuration XML file (see Section 6.6).

5. Nosing probability

The nosing probability function lcNosingProb, computes the probability of initiating a forced merging state (nosing) and draws an output boolean, with TRUE when the vehicle switches to a forced merging state, false otherwise.


where β0, β1 and β3 are predefined parameters in the configuration XML files; Δv is the relative speed between the subject vehicle and the lead vehicle on the target lane, RDI is the variable remaining distance impact, a function of the remaining distance to the point at which lane change must be completed by (dis2stop), which is used to capture the fact that the remaining distance does not impact a driver's merging behavior when it is greater than a certain threshold, while at small values, drivers become more concerned and hence more aggressive; gap is the total (lead + lag) gaps; and nlanes is a dummy variable equal to 1 if the current lane is not on the vehicle path, and 0 otherwise. This formulation was derived and modified from Ahmed (1999) (Chapter 6, Table 6.9). All needed parameters are specified in the parameter configuration XML file (see [Section 6.6] (https://github.com/smart-fm/simmobility-prod/wiki/6.6-LaneChangingParameters)).

Reference

  • Toledo, T. (2003). Integrated Driving Behavior Modeling. Phd. Thesis. Massachusetts Institute of Technology, Cambridge, USA, 2003.
  • Ahmed, K. (1999). Modeling Drivers’ Acceleration and Lane Changing Behavior. PhD Thesis. Massachusetts Institute of Technology, Cambridge, USA, 1999.
Clone this wiki locally