-
Notifications
You must be signed in to change notification settings - Fork 5
MSA Feedback
Travel demand models generally follow a sequential process wherein person travel demand is generated and then assigned to a network with fixed capacity. A key challenge associated with the sequential processing is that the congestion generated by assigning demand to the network is also an input to the models used to estimate demand. A generally accepted solution to this problem is to iterate the model system, where network level-of-service from assignment is "fed back" to demand generation. After network assignment, new travel time matrices are generated, the person travel models are re-run and new destination, modes, etc. are chosen and the trips are re-loaded onto the network. This process is repeated until an acceptable level of convergence is achieved. It is insufficient to simply feed back the congested skims, since the model system may oscillate between iterations and never converge. Using the warm start assignment method at each iteration of the model system, in Visum or other assignment package, is not mathematically guaranteed to reach convergence.
For SOABM, the Method of Successive Averages (MSA) is used to achieve convergence. The MSA method computes a new average solution at every iteration as a function of the number of iterations being carried out. The function is shown below:
New Solution = Previous Solution * (1 - 1/N) + Current Solution * (1/N)
where, N is the iteration count.
For the Visum-based SOABM, MSA feedback was implemented on link times. Link volumes and link times are read-only variables in Visum. Link volumes are computed by the assignment module and the link times are computed using a volume-delay function. Therefore, direct averaging of link volumes or times is not possible in Visum. However, MSA-averaged travel time skims can be computed from a user-defined MSA link time variable. Therefore the assignment-skimming process was updated to calculate MSA link times and compute shortest path skims. The implementation steps are as follows:
- Initial preparation
- Create link-level user-defined-attributes (UDA) to store previous iteration link times for each demand segment (DSeg) e.g., tCur_SOV, tCur_HOV2, etc.
- Initialize the travel time UDAs to zero for the first iteration
- For each iteration
- Perform assignment
- Run the existing skimming process for each DSeg. Visum assigns a sequential matrix number to each skim. These same skim numbers are used in CT-RAMP UECs. Therefore, the existing skimming process is run to generate skims with the same matrix numbers.
- For each DSeg:
- Compute MSA link times as:
t_MSA = t_previous * (1-1/iteration) + t_current * (1/iteration)
- Compute MSA generalized cost using
t_MSA
- Compute shortest path skims using MSA generalized cost. Compute
t_MSA
skim in addition to all other skims - Since all other skims already exist, they get overwritten by the skimming process
- Overwrite the
tCur
skim with the newly computedt_MSA
skim to be used by person travel demand process in next iteration
- Compute MSA link times as:
- Getting Started
- RunModel bat file
- Networks and Zone Data
- Auto Network Coding
- VDF Definition
- Transit Network Coding
- Non-motorized Network Coding
- Editing Land Use Data
- Running the Population Synthesizer
- Input Checker
- Analyzing Model Outputs
- Commercial Vehicle Model
- External Model
- Model Cost Inputs
- Value of Time
- Person Type Coding Logic
- MSA Feedback
- VMT Computation
- Shadow Pricing Mechanism
- Methodology for Developing TAZ Boundaries
- Methodology for Developing MAZ Boundaries
- Methodology for Developing TAPS
- Source of Land-Use Inputs
- Major University Model (Optional)
- Running Transit Everywhere Scenario
- Building the ABM Java Program
- Debugging ABM Python Code
- ABM Cleaning Protocol
- Updating to New Visum
- Troubleshooting and Debugging