-
Notifications
You must be signed in to change notification settings - Fork 0
Traffic Assignment
The Traffic Assignment process reads demand data created by the previously run SWIM modules and assigns it to the highway network. In the process, travel time, distance, and cost skims are created, as well as assignment results and reports. If a path-based assignment algorithm is chosen, then a version file holding the assignment paths is also saved, which can be used in later analyses (such as a select link analysis). The assignment is run for time periods PK, OP, PM, NT and then a daily is summed up from the results.
The inputs to this process are:
- swimNetworkAttributes.ver – SWIM network version file, which includes zone (i.e. alpha zones) data and main zones (i.e. beta zones) data.
- inpZMXFileNames.csv –SWIM demand matrices to be imported into VISUM.
- WorldZoneExternalStationDistances.csv – Provides distance between external stations and world markets. To/from distances for all possible external station and world market pairs are included. The file structure is: WorldMarket, ExternalStation, DistanceFromWorldMarket, DistanceToWorldMarket. In the traffic assignment module, this complete file is processed to keep only one world market for each external station and then used in updating beta zone level skims (distance and time = distance/speed) for external stations. The file processing includes following sequential steps: read the file, sort ascendingly by two fields (ExternalStation and WorldMarket), find records of duplicate ExternalStation, and keep only the first record for the duplicate ExternalStation records. While the code allows for multiple records for each external station - the input has now been cleaned to only have one record for each external station, which is the directed state. The ability to have multiple entries is legacy, so for users, just keep one record per external station.
- hwySkimMatrixNames.csv – Skim matrices to be exported to *.zmx files after running assignment
- pathBasedAssignmentSettings_Full.xml – VISUM procedures and settings to initialize the assignment, run a multi-class (auto and truck) path based highway assignment for all four time periods, and calculate required skim matrices for both time period assignments. Note that "use paths from assignment" is turned off in skimming in order to produce more stable and consistent skims, especially for toll cost.
- Demand matrix ZMX files – Eight demand matrix files in *.zmx format for running highway assignment - demand_matrix_|user class|_|time period|.zmx
- ta.properties – the property file specific to the TA module.
The outputs of this process are:
- swimNetworkAttributes.ver – VISUM version file which includes link assignment volumes for each time period + daily as user-defined attributes.
- |TimePeriod|_PATHS.ver – VISUM version file which includes time period assignment paths.
- Highway skim matrix ZMX files – Highway skim matrices in *.zmx format at alpha zone level, named as |time period|auto|matrix name|.zmx where matrix names are one of { time - congested auto time (minutes) dist - auto distance (miles) fftime - free-flow auto time (minutes) toll - auto toll cost (dollars)}
The scripts used in this process are:
- SWIM_VISUM_Main.py
The VDFs are defined in the VISUM assignment procedure (par) files under General Procedure Settings + PrT Settings + Volume delay functions. See the VDFs table for more info.
The link impedances are also specified in the VISUM assignment procedure (par) files under General Procedure Settings + PrT Settings + Impedances. The link impedances are:
- a = 1 * tCur + 1 * AUTO_COST (in seconds)
- d = 1 * tCur + 1 * TRUCK_COST (in seconds)
AUTO_COST and TRUCK_COST are calculated by the procedures as follows:
- TRUCK_COST (Peak) = (3600 / [NETWORK\VOT_TRUCK_PK] * [TOLL_PRTSYS(D)]) + (3600 * [NETWORK\AOC_TRUCK] / [NETWORK\VOT_TRUCK_PK] * [LENGTH])
- TRUCK_COST (Off Peak) = (3600 / [NETWORK\VOT_TRUCK_OP] * [TOLL_PRTSYS(D)]) + (3600 * [NETWORK\AOC_TRUCK] / [NETWORK\VOT_TRUCK_OP] * [LENGTH])
- AUTO_COST (Peak) = (3600 / [NETWORK\VOT_AUTO_PK] * [TOLL_PRTSYS(A)]) + (3600 * [NETWORK\AOC_AUTO] / [NETWORK\VOT_AUTO_PK] * [LENGTH])
- AUTO_COST (Off Peak) = (3600 / [NETWORK\VOT_AUTO_OP] * [TOLL_PRTSYS(A)]) + (3600 * [NETWORK\AOC_AUTO] / [NETWORK\VOT_AUTO_OP] * [LENGTH])
where:
- AOC_AUTO = 0.18 ($/mi) Auto Operating Costs for the Auto Mode
- VOT_AUTO_PK = 19.27 ($/hr) Value of Time for the Auto Mode for Peak Periods
- VOT_AUTO_OP = 12.82 ($/hr) Value of Time for the Auto Mode for Off-Peak Periods
- AOC_TRUCK = 0.75 ($/mi) Operating Costs for the Truck Mode
- VOT_TRUCK_PK = 39.00 ($/hr) Value of Time for the Truck Mode for Peak Periods
- VOT_TRUCK_OP = 39.00 ($/hr) Value of Time for the Truck Mode for Off-Peak Periods (there is currently no research to suggest that Truck VOT varies by time of day, but the option exists in the code to change it, if new time-of-day VOT information for Trucks is found or desired to be tested)
- 3600 converts values in hours to seconds (sec/hr) - Visum uses the units of seconds in the impedance calculation.
The above calculations use Metro VOT assumptions (2010 dollars): $39.00/hr for trucks, $19.27/hr for auto peak, and $12.82/hr for auto off-peak. For AOC, Auto uses 0.18, same as the input in the properties file. Truck AOC is based on an annual survey conducted by ATRI and reported in "An Analysis of the Operation Costs of Trucking: 2019 Update." The averaged Truck AOC includes fuel, repair & maintenance, and tires - total cost of approximately $0.75/mile (adjusted to 2010 dollars).
On Truck Value of time, reviewers should also be aware that the project conducted a fairly detailed literature review of what the value of time should be. That review is here. That literature review provided a wide range of truck values of time. While the review did return a slightly lower average value (noting that $39.25/hr is reported in 2018 dollars not the model 2010 dollars), the $39/hr value that has been developed for Metro model work is extremely close to the average value and is well within the reasonable range of values and makes for a very reasonable assumed VOT average value for truck traffic. In summary, the team opted for consistency in modeling VOT assumptions over choosing the precise average VOT value obtained from the literature review. The literature review was used to provide a reasonable range of possible values as opposed to providing the exact average to use.
The link CapPrT field is used by VISUM for assignment period total link capacity. The field is calculated in the procedure files as follows: |TimePeriod|_VOL_FACTOR * CAP_PER_HR * NUMLANES
Connector travel times are calculated by the procedures as 3600 * Length / 25.
The path-based assignment is set to 50 iterations with a relative gap of 0.0001.
Intrazonal skims are set to 0.5 * row minimum
- truckPCU = 1 #set in
SWIM_VISUM_Main.py
- truckDemandClass = "d" #set in
SWIM_VISUM_Main.py
- speed = 50.0/60.0 #speed (mi/min) to compute skims between world markets and external stations
SWIM-TLUMIP Model User Guide, version 2.5
- SI - SWIM Inputs
- NED - New Economic Demographics
- ALD - Aggregate Land Development
- AA - Activity Allocation
- POPSIMSPG - PopulationSim Synthetic Population Generator
- PT - Person Transport
- CT - Commercial Transport
- TA - Traffic Assignment
- TR - Transit Assignment
- SL - Select Link
- SWIM VIZ - Reporting DB