Mesoscopic Model#
The mesoscopic model is an adaption of the computationally efficient Link Transmission Model (LTM). The adaptation consists of tracking vehicles individually by enforcing that flows at any time-step should stick to integer numbers.
Model Description#
Where $T_1$ is the travel time in free-flow speed and $T_2$ is the travel time in the shockwave speed. The first term of demand is equivalent to all vehicles in the link that will have remained in the link for the free-flow travel time or more after the current step completion. In fact, POLARIS tracks each vehicle individually and compute that term by just counting those vehicles by looking into the entry step of each vehicle.
The adapted model entails other relationships, first is the upstream and downstream capacity:
And then the demand and supply change accordingly:
Node models: Link Inflows and Outflows#
The flow across links depends on the node models. For a trivial node with one upstream and one downstream connection, the minimum between demand and supply holds:
For diverge nodes, the FIFO discipline holds and it is done based on the (integer) demand of the upstream link and the (integer) supply of downstream links. Vehicles are checked in order and are released to the next link as long as the upstream and downstream links have remaining demand and supply greater or equal than one.
The merge model (that is, multiple upstream links and one downstream link) is trickier. The documentation is on the paper. That each link has a number of priority tokens proportional on the number of lanes. If one link has priority and do not use because of not having demand or uses it (i.e., one vehicle “used” that priority), the priority token moves to the next in the list. In this way, this model resembles a distribution that is proportional to the capacity.
Traffic Signal and More Complex Intersections#
For intersections with an arbitrary number of upstream and downstream links, the key dynamic derives from the merge model but with additional structures and rules, depending on the intersection control type. These intersections contain a conflicting map vector that signals whether a movement pair is conflicting. POLARIS builds this map based on the link direction and movement type (see Connections above). In addition, based on the intersection type there are three key scenario parameters:
"threshold_conflicting_signalized_seconds": 2.0,
"threshold_conflicting_all_stop_seconds": 4.0,
"threshold_conflicting_two_way_stop_seconds": 6.0
This means that if a movement with PERMITTED right of way conflicts with another movement that has protected right of way, it will be able to flow after the protected movement has no flow for more than < threshold_conflicting_signalized_seconds>. The behavior is similar for all-stop and two-way stops.
Signalized intersections are straightforward in three steps, one for each right of way type (PROTECTED, PERMITTED, STOP_PERMITTED). Protected movements do not require conflicting movement checks whereas the others are able to flow based on upstream demand and downstream supply but also respecting the conflicting map thresholds. Two-way stop is similar but with two steps. First the connections with no stop sign can flow. Later, the approaches with stop signs needs to respect the conflicting map clearance. Finally, all-stop must always respect the conflicting map clearance.
Further features#
Turn Movement Pockets: whenever vehicle has been in the link for the travel time, they are placed in a separate container for each connection/movement if the connection/movement has space for a new vehicle. The total pocket space is determined by the “pockets hold capacity”. These pockets serves as a link with capacity proportional to its number of lanes. Vehicles are processed in FIFO discipline and if one vehicle is not able to transfer to the connection/movement no vehicle that entered in the link after will be able to proceed, except though vehicles in some specific situation (see below).
Through vehicles “jump” into Turn Movement pocket: in some situations, especially on roads with more than 2 lanes in which right or left turn can only be performed by one lane, the FIFO discipline does not hold. For instance, if we have two lanes and one vehicle is not able to access the right movement pocket, it ends up blocking the right lane. This would not prevent vehicles from accessing the through movement pocket using the left lane. In these situations, it is assumed that the through pocket has a decrease in capacity proportional to one lane, but if the two conditions met the first vehicle heading the through movement pocket can proceed: (i) the vehicle is in the link for longer than free flow travel time; (ii) Had elapsed the minimum headway based on the decreased capacity. In that case the vehicle “jump” to the through pocket directly.
Automated vehicles: as a mesoscopic model with no inherent vehicle heterogeneity, there is no an inherent endogenous model for automated vehicles. Instead, automated vehicle is modeled based on a fundamental diagram that is modified according to the share of automated vehicles in the link. The share of automated vehicles are tracked by keeping a counter of how many automated vehicles entered the link. See Figure below.
Key parameters#
Num_vehicles_container_{type} (types=LOCAL, ARTERIAL, FREEWAY): the number of vehicles that fits in the movement container pocket by these attributes. A lower value for each pocket leads to a higher probability of pocket blockage and therefore increasing congestion. Note, however, that this usually do not have a drastic impact on overall speeds.
Threshold_conflicting_{type}_seconds (type=signalized, two_way_stop, all_stop) : explained above. Increasing the threshold leads to vehicles needing a higher gap to cross the intersection whenever it does not have a protected priority and therefore leading to higher congestion.
Jam density: Overall jam density is controlled by this parameter. Reducing it should lead to more queue spillbacks and increase congestion. Effect similar to the num_vehicles_container.
Capacity_{type} (type=local, arterial, freeway): capacity in vehicles/hour/lane on each road type; the shock-wave speed of the link changes accordingly. This sets the capacity of all road types (they can be set specifically for each link as total capacity for all lanes if the resulting capacity/hour/lane is higher than set in the scenario file). Increasing capacity should lead to reduced congestion.