Pre-Trip Parking Choice#
Before a person agent departs on a single-occupancy vehicle (SOV) trip, the parking choice model evaluates available parking options near the trip’s destination and selects a parking facility. This decision is made during the activity planning phase and is implemented as a nested logit model with two nests: on-street parking and garage parking.
Choice Structure#
The figure below illustrates the nested logit choice structure, showing the two nests and their alternatives with key utility variables.
The parking choice model uses a two-level nested logit structure:
On-street nest: Contains a single representative on-street parking option (the best available on-street, metered, or location-based parking near the destination).
Garage nest: Contains multiple garage parking options near the destination, grouped under a single nest with an inclusive value (logsum) parameter $\lambda_G$.
If only one nest has available options, the model degenerates to a simple logit over the available alternatives. If no options exist in either nest, the parking choice returns no result and the vehicle will attempt to find parking en-route (see En-Route Parking Search).
Choice Set Generation#
The choice set is constructed dynamically for each trip:
On-Street Option#
The model searches for the nearest available on-street parking using the network’s spatial index, cycling through the following types in order of preference:
Unmetered on-street parking
Metered on-street parking
Generic location-based parking (fail-safe if data is unavailable)
For each candidate, the model checks:
The existing parking rules allow parking
The occupancy ratio is below 90%
The distance is within the configurable garage distance threshold
The first qualifying on-street option is added to the choice set.
Garage Options#
The model queries the spatial index for nearby garage facilities. Each candidate is filtered by:
Distance threshold: Must be within walking distance of the destination. If e-scooters are available at the garage, the threshold is extended proportionally (for e-scooter users) to the ratio of e-scooter speed to walking speed.
Cost threshold: Estimated cost must be below $1000.
Occupancy: Must be below 90% occupancy.
All qualifying garages are added as sub-alternatives under the garage nest.
Utility Specification#
The utility function differs for on-street and garage alternatives, but both incorporate trip attributes, person/household demographics, and destination land-use characteristics.
On-Street Utility#
$$ V_{OS} = \beta_0^{OS} + \beta_{dist}^{OS} \cdot d_{OS} + \beta_{fee}^{OS} \cdot c_{OS} + \beta_{pk}^{OS} \cdot \mathbb{1}{peak} + \beta{f}^{OS} \cdot \mathbb{1}{female} + \beta{hh}^{OS} \cdot hhsize + \beta_{urg}^{OS} \cdot \mathbb{1}{urgent} + \beta{age}^{OS} \cdot \mathbb{1}{age \geq 60} + \beta{emp}^{OS} \cdot \ln(1 + empdens) + \beta_{pop}^{OS} \cdot \ln(1 + popdens) $$
Garage Utility#
$$ V_{G} = \beta_{dist}^{G} \cdot d_{G} + \beta_{fee}^{G} \cdot c_{G} + \beta_{pk}^{G} \cdot \mathbb{1}{peak} + \beta{f}^{G} \cdot \mathbb{1}{female} + \beta{hh}^{G} \cdot hhsize + \beta_{urg}^{G} \cdot \mathbb{1}{urgent} + \beta{age}^{G} \cdot \mathbb{1}{age \geq 60} + \beta{emp}^{G} \cdot \ln(1 + empdens) + \beta_{pop}^{G} \cdot \ln(1 + popdens) $$
Where:
Variable |
Description |
|---|---|
$d_{OS}$, $d_G$ |
Distance from the destination to the parking option (km). For garages with e-scooters, the effective distance is reduced by the walk-to-bike speed ratio. |
$c_{OS}$, $c_G$ |
Estimated parking cost ($). On-street cost may come from the facility’s pricing rules or a scenario-level default hourly rate. |
$\mathbb{1}_{peak}$ |
Indicator for departure during peak hours (7–10 AM or 5–8 PM) |
$\mathbb{1}_{female}$ |
Indicator for female traveler |
$hhsize$ |
Household size |
$\mathbb{1}_{urgent}$ |
Indicator for urgent/mandatory activities (work, school, healthcare, personal business) |
$\mathbb{1}_{age \geq 60}$ |
Indicator for age 60 or above |
$empdens$, $popdens$ |
Employment and population density at the destination zone (per acre) |
Parameter Initialization#
All model parameters are read from an external options file under a dedicated parking choice model section. This allows calibration without recompilation. Parameters can also be exported to a JSON file for documentation and version control.
Choice Outcome and Reservation#
After evaluating utilities and applying the nested logit model, a parking alternative is selected probabilistically. If a garage is chosen, the model attempts to reserve a spot at the selected facility for the activity’s start time and duration. If the reservation fails (e.g., the facility filled up between choice and reservation), the choice is discarded and the person will rely on en-route parking search.
Choice Logging#
When parking choice logging is enabled in the scenario settings, detailed records of every parking choice event are written to the Parking_Choice_Records table in the demand database. Each record includes:
Person and choice event identifiers
All explanatory variables (demographics, land use, cost, distance)
The chosen alternative and whether it was successfully reserved
The number of garage alternatives available
Whether e-scooter access was available
These records enable post-hoc model validation, recalibration, and policy analysis.