Skip to content

Transit Assignment

Alex Bettinardi edited this page May 18, 2022 · 111 revisions

The Transit Assignment process reads transit demand data created by the previously run SWIM modules and assigns it to the transit network managed in the version file. In the process, the transit network skims are created (time, wait, cost, etc.) for PT, as well as assignment results and reports.

Only premium transit service is modeled with a network. The module does not have a local transit network. Instead, it calculates local transit in-vehicle time and out-of-vehicle time skims according to the California Statewide Travel Demand Model Local Transit Functions (LTF). SWIM builds transit connectors to the premium network using the LTF IVT and OVT skims from the zone centroid to the zone of the nearest X transit stops. Finally, it adjusts the intracity (SDT) skims so only the skimmed skims or the LTF skims are available for an OD pair.

The model steps under this module are:

  1. Calculate LTF zone attributes
  2. Calculate LTF local skims
  3. Build connectors to premium transit
  4. Intercity (LDT) transit assignment and skimming
  5. Intracity (SDT) transit assignment and skimming
  6. Calculate fare matrices
  7. Adjust skimmed SDT IVT and LTF IVT and OVT skims
  8. Write skim matrices to ZMX format for PT

The SWIM_VISUM_Main.py script does all the transit network processing, skimming, and assignment.

Inputs

The inputs to this process are:

  1. swimNetworkAttrributes.ver – SWIM network version file, which includes zone (i.e. alpha zones) data and main zones (i.e. beta zones) data. It also contains the highway network and simplified transit network (i.e. no local bus lines).
  2. transitSkimMatrixNames.csv – Skim matrices to be exported to *.zmx files after running transit assignment.
  3. losInfo.csv – Population and annual vehicle revenue miles available for each APTA transit service area that are used to compute the transit level of service measure for the LTFs. See LOS Info below.
  4. intercityrailAssignmentSettings.xml – VISUM procedures and settings to initialize the assignment, run a transit assignment for the intercity (LDT) mode for both peak and off-peak periods and calculate required skim matrices for both time period assignments.
  5. intracityrailAssignmentSettings.xml – VISUM procedures and settings to initialize the assignment, run a transit assignment for intracity (SDT) mode for both peak and off-peak periods and calculate required skim matrices for both time period assignments.
  6. Demand matrix ZMX files – Eight demand matrix files in *.zmx format for running highway and transit assignment - demand_matrix__.zmx
  7. tr.properties – the property file specific to the TR module.
  8. IntraCityTransitFares.csv – intracity district to district transit fares. See inputs fares below.
  9. SynPop_Taz_Summary.csv – TAZ level population and employment for calculating transit service areas

LOS Info

The LOS Info data comes from the annual APTA Public Transportation Fact Book. The APTA population and annual vehicle revenue miles available for each service area are used to compute the transit level of service measure for the LTFs.

  • Each model zone was assigned an APTA service area based on the service area name, see the zone attributes table SERVICEAREA field. Many zones in the model are not covered by an APTA service area.
  • The UZA Population and Annual Vehicle Revenue Miles (in thousands of miles) data is used by the model. Use the Excel version of Appendix B of the fact book to get the input values, and use totals by agency tab.
  • Zones without an APTA agency are assigned an area, population, employment, and P2E density of 0 for the LTF calculation below

To update the LOS info, first see if the model zone(s) is in an APTA service area. If it is, then set the service area for the model zone to the APTA service area name and then add the APTA service area data to the losInfo.csv file. If there is no service area defined in the losInfo.csv input file, new areas can be added to the file and then zonal coverages can be defined. If these steps are not done, then the LTF functions will return no transit for the zone.

Input Fares

Intracity (SDT) transit fares are looked-up using the model zone fare district attribute and the input zone district-to-district transit fare specified in IntraCityTransitFares.csv. If the fare district pair is not in the lookup file, then the fare is set to NA (99999). This effectively means that there is no transit coverage in zones not represented by a fare district pair, meaning that even though a zone may be identified as being within a transit service area the zone would not receive any transit trips because of the fare value of 99999. Therefore, even though the code treats service areas and fare coverage as separate inputs, in most applications the fare coverage and service area coverage should be identical. The fare districts are unrelated to the LOS info service areas used for the LTF calculations. The fare districts are used to set the intracity skim fare, whereas the service area is used as a measure of transit service quality when synthesizing IVT and OVT skims from highway skims as part of the LTF calculations.

Note that intercity (LDT) fares are calculated separately and are based on the distance function specified below.

To update the fares, make sure the model zone(s) are coded with zone fare districts that are also in the district-to-district transit fare input file. If the transit fare district pairs are not in the file, then the fares for the district pairs will be NA.

There are some examples where the fare district is not the same as the SERVICEAREA, which is why the code uses two separate (but coordinated) inputs. One example that was in use during the start year (2010) of SWIM is TriMet’s fareless district. Within the larger TriMet coverage area (all represented by one SERVICEAREA), were four fare districts; fareless, zone 1, zone 2, and zone 3. This is an example where a different set of zone coverages are needed for the fare system and the transit service coverage area. However, in this case the overall boundary of the TriMet fare system and the overall boundary of the TriMet area coverage should be identical. And in all cases, zones with transit coverage defined in the SERVICEAREA field should have a FARE area defined as well, so that the zone receives coverage (noting that all the zonal SERVICEAREAs need to be defined in losInfo.csv, and all zonal FARE areas need to be defined in IntraCityTransitFares.csv in order for transit to be represented for those zones).

Outputs

The outputs of this process are:

  1. Alpha zone transit skims in ZMX format, named as |time period|(sdt,ldt)|matrix name|.zmx, where matrix name is:
- Fwt - first wait time  (minutes)
- Twt - transfer wait time  (minutes)
- Ivt - in-vehicle travel time  (minutes)
- Brd - boardings (persons)
- Far - fare ($)
- Awk - access walk -- walk transit only
- Ewk - egress walk
- Xwk - transfer walk
- Ovt - out-of-vehicle time (LTF only) and is a surrogate for Fwt+Twt+Awk+Ewk+Xwk 
  1. swimNetworkAttributes_TR.ver - Peak and off-peak transit assignment output file.
  2. AllLinks.csv - The TR module saves VIZ DB link input table. The fields to save are specified in inputs\parameters\linkFieldNames.csv.

Model Steps

LTF Zone Variables

The LTF requires two zone variables:

  • P2E for calculating the out-of-vehicle time. The LTF procedure aggregates population and employment by service area to create the variable P2E density (Population + 2*Employment). It reads the SPG2 TAZ level summary data file for the current year.
  • Service area LOS info, which is computed as the Population Served / Annual Vehicle Service Miles (in thousands). A higher value of LOS reflects poorer transit service. The max LOS value for an OD pair is specified by the maxLOS parameter, which is currently set to the highest value for an urban area with transit service.

LTF Bus Skims

The local bus skims are calculated using the California STDM LTFs. The LTFs are only calculated for OD pairs with an auto travel time less than the specified max in order to avoid generating synthetic transit service for distant OD pairs. Fare is not skimmed, but calculated as below.

The settings for the LTF are:

  1. ivtParameters #LTF IVT function parameters array, peak and offpeak
  2. ovtParameters #LTF OVT function parameters array, peak and offpeak
  3. ivt_coeff = 1 #IVT coefficient for comparing LTF IVT to skimmed total utility
  4. ovt_coeff = 2 #OVT coefficient for comparing LTF OVT to skimmed total utility
  5. maxLOS = 300 #max transit service LOS info value if not available
  6. maxAutoTimeForLTF = 100 #cap on OD pairs to create a local transit option based on max auto time
  7. NA = 999999 #OD not available value in skim
  8. transferEqMin = 10 #number of minutes per transfer for calculating transit utility when comparing to LTF utility

Transit Connectors

Connectors to the premium transit network are built:

  • from each zone to the nearest X transit stops
  • and the connector travel time is set to
min [walk time, LTF time]
where LTF time = IVTcoeff * IVTLTF + OVTcoeff * OVTLTF
  • The procedure skips stops that serve air mode

The connector build settings are:

  1. numTransitConnectors = 2 #number of transit connectors per zone
  2. walkSpeed = 3 #connector walk speed in mph

Assignment and Skimming

Transit assignment and skimming is run for:

  • intercity dseg icr (tsys i,l,m,r,t,w,x) for LDT
  • intracity desg iclt (tsys l,r,w,x) for SDT

Both assignments use headway-based assignment with the following settings:

  1. Headway calculation - constant from time profile - PK_HEADWAY or OP_HEADWAY (sec)
  2. Assignment time interval is set to 0 to 24 and should not be changed.
  3. Using 'optimal strategies' for passenger information choice model
  4. Impedance weights are as follows:
    1. 1 * In-Vehicle Time
    2. 2 * Access Time
    3. 2 * Egress Time
    4. 2 * Walk Time
    5. 2 * Origin Wait Time
    6. 2 * Transfer Wait Time
    7. 10 minutes per transfer

The VISUM assignment procedure file settings are:

  1. General procedure settings + PuT Settings + Assignment: maximum walk time (access/egress time) is 30 minutes
  2. General procedure settings + PuT Settings + Assignment: walk links from/to connectors is force boardings/alighting at connected node (to prevent walk-all-the-way transit paths)
  3. General procedure settings + PuT Settings + Assignment + Skims : Intrazonal skims are set to 0.5 * row minimum

The peak and offpeak boardings by line are output to the VISUM field PTRIPSUNLINKED(AP). These do not sum to daily since they represent just one peak (am) and offpeak (midday).

The VISUM skims are post-processed as follows:

  • The skimmed NTR (number of transfers) skim is converted to number of boardings
  • OD pairs with the NA value are set to 0 for reading into the Java programs
  • Fare is not really skimmed, but calculated as below
  • The SDT skims are compared to the LTF skims and revised so only one set of skims is available to PT

Calculating the Final Fare Files

  • As noted above, Intracity (SDT) transit fares are looked-up using the model zone fare district attribute and the input zone district-to-district transit fares file.
  • Intercity (LDT) fares are calculated based on the following distance function. The function parameters are constants coded in the SWIM_VISUM_Main.py script. After finding LDT transit paths, the skimmed fare is 0 since there are no fares in the skimming procedures. The code then replaces all 0s with the distance calculated fare. If an OD pair was found to be not available, then the fare is set to NA ((99999).
fare ij = tripDist ij * (1.969 * tripDist ij ^ -0.4994)
  • The fares for intracity and intercity are independent of one another. The district level fares defined by the zone FARE attribute only apply to SDT (intercity) skimming and LTF process. The distance based calculation only applies to the LDT (intercity) skimming process. The FARE district information has no impact on LDT (intercity) transit fares, and the fare by distance formula has no impact on the fares for SDT (intercity and LTF) transit.

Adjust SDT and LTF skims

Only the skimmed SDT skims or the LTF skims are available for an OD pair. The method compares the skimmed SDT utility and the LTF utility and takes the best. The output IVT skim is set to either the skimmed IVT or the LTF IVT. The remaining skimmed skims (OWT, TWT, WKT, ACT, EGT, and NTR) are set to zero if the OVT skim is used, or vice versa if the skimmed option is the best.

Clone this wiki locally