Skip to content

VMT Computation

Binny Paul edited this page Nov 30, 2020 · 9 revisions

VMT Computation

Vehicle Miles Traveled (VMT) is computed at the end of the ABM run and is reported in the ABM Visualizer. Typically, VMT is computed at link level using final link volumes from an assignment run. The link level VMT cannot be segmented by resident vs non-resident markets. Market specific aggregate VMTs are computed using trip tables for each market and distance skim. The VMT computed using trip tables and distance skims are approximation of link level VMT and its value depends on how the distance skims were calculated. The details of link and aggregate VMT calculation are described below:

Link-level VMT

The link-level VMT by time of day and Transport System (TSys) is reported in the Assignment/VMT tab of the ABM Visualizer. The link-level VMT is computed by the generate_html_inputs entry point of the Master_Runner.py script [look for compute VMT comment header on line 2553]. The script reads link lengths and link volumes by time of day and TSys from the highway assignment version file. VMT is computed as sum-product of link volumes and link distances.

Aggregate VMT

Aggregate VMT is computed for the following markets (important note - aggregate VMT uses distance skims which include connector distances, so aggregate VMT should be greater than link level VMT which does not include connectors).

Resident travel

The total residential VMT is computed by the SummarizeABM.R script [look for Compute aggregate resident VMT comment header on line 2264] from the CTRAMP trip list. The final period-wise distance skims are appended to the trips lists. Only auto trips are used to compute the VMT as follows:

Total Resident VMT = Sum(Auto Trip Distance/Vehicle Occupancy)

where, a vehicle occupancy of 3.33 is assumed for Shared Ride 3+ mode. The auto legs of the transit trips are also incorporated in the total resident VMT. The resident VMT is reported on the Overview page of the SOABM Visualizer.

When reviewing and considering residential VMT calculations, it is very important to consider multiple intricacies related to escort trips. For school escorting trips, since members of the same household travel in a household vehicle, only the driver's trip is counted towards VMT calculation to avoid double counting. The school escorting model does not produce fully joint tours, only partially joint tours. There are two types of ‘partially joint’ school escort tours – rider sharing and pure escorting. Under ride sharing, the driver is dropping off/picking up kids on the way to/from work (or university). Under pure escorting the driver is dropping off/picking up one or more kids on a tour with escort as the primary purpose. In CTRAMP output, both ride sharing and pure escorting show up as individual tours for both drivers and kids. For drivers it will be a mandatory tour (work/university) or an escort tour with school escorting in outbound or inbound leg. For kids, it will be a school tour with escort type in each direction. The individual tour file includes fields to identify school escorting type and driver person number in the outbound and inbound direction. The description of fields names can be found for the individual tour record on the wiki here:

  • escort_type_out
  • escort_type_in
  • driver_num_out
  • driver_num_in

In the individual trip file as well, the school escorting partially joint trips shows up for both driver and escorted kids. The individual trip table the relevant fields are:

  • Driver_pnum
  • orig_escort_stoptype
  • orig_escortee_pnum
  • dest_escort_stoptype
  • dest_escortee_pnum

When converting CTRAMP trip file to trip table for assignment, just counting the trip of the driver is sufficient since the escorted kids are travelling in the same vehicle. Therefore, in VMT calculations, only the driver school escorting trips are counted and not discounted by vehicle occupancy.

#For school escort trips, only chauffeur trips needs to be included with occupancy one
trips$num_travel[((trips$orig_escort_stoptype>0) | (trips$dest_escort_stoptype>0)) & (trips$person_num==trips$driver_pnum)] <- 1

# set distance for escortee trips to zero so they are not counted in VMT calculation
trips$vmt_dist[((trips$orig_escort_stoptype>0) | (trips$dest_escort_stoptype>0)) & (trips$person_num!=trips$driver_pnum)] <- 0

Trips from the joint table are part of FULLY joint tours which are generated at the household level. The model does not explicitly model partially joint trips, only individual person tours are generated. However, one or more trips on the these individual tours could be shared with a person from the same household or another household. This is accounted in the assignment by using occupancy factors for shared ride modes. The model does includes the school escorting module which explicitly models partially joint (ride sharing) and fully joint tours (pure escorting) involving member of the same household (a chauffeur and student). Since school escorting trips are modeled explicitly, tours/trips are produced at household level and need not be discounted by occupancy.

Commercial travel

The total VMT from the commercial travel is also computed by the SummarizeABM.R script [look for CVM trips and VMT comment header on line 72] using the trips tables from the Commercial Vehicle Model and period-wise distance skims. The commercial VMT is computed by vehicle type and time of day period as follows:

Total Commercial VMT [mode, tod] = Matrix Dot Product(CVM Trip Table[mode, tod], Distance Skim[tod])

The commercial VMT is reported on the Aggregate/CVM VMT tab of the ABM Visualizer.

External-internal travel

The total VMT from the external-internal travel is also computed by the SummarizeABM.R script [look for Ext trips and VMT comment header on line 124] using the trips tables from the External Model and period-wise distance skims. The external VMT is computed by vehicle type and time of day period as follows:

Total External VMT [mode, tod] = Matrix Dot Product(External Trip Table[mode, tod], Distance Skim[tod])

The external VMT is reported on the Aggregate/External VMT tab of the ABM Visualizer.

Clone this wiki locally