Skip to content

TVPB Design

Ben Stabler edited this page Aug 6, 2020 · 27 revisions

Design specification for Support for Three Zone Systems and Transit Virtual Path Building

Example Data

There are two example data sets for testing:

  • ActivitySim TM1 example with a few small revisions for development of functionality but not performance testing since it isn't a full scale example.
    • Transform the TM1 TAZ-based model 25 zone inputs to a three-zone (MAZ, TAZ, TAP) set of inputs for software development. The 25 zones are downtown San Francisco and they are converted to 25 MAZs. Each TAZ is also converted to a TAP numbered 10000+. MAZs 1,2,3,4 are small and adjacent and assigned TAZ 2 and TAP 10002. MAZs 13,14,15 are small and adjacent and assigned TAZ 14 and TAP 10014. TAZs 1,3,4,13,15 are removed from the final data set. TAPs 10001,10003,10004,10013,10015 are removed from the final data set.
  • ActivitySim TM1 example with TM1 households reassigned to TM2 zones + using TM2 three zone system network LOS data for performance testing.
    • TM1 households are stochastically assigned to

Transit Virtual Path Builder

The user specifies a new file

# transit virtual path builder (tvpb.yaml)

DEMOGRAPHIC_SEGMENTS:
  high_income:
    CONSTANTS:
      c_ivt_high_income: -0.028
      c_cost_high_income: -0.00112
  low_income:
    CONSTANTS:
      c_ivt_low_income: -0.028
      c_cost_low_income: -0.00112

MAZ_TAP_MODES:
  walk:
    maz_taps_file: walk_maz_taps.csv
    SPEC: tvpb_walk_maz_tap.csv
    CHOOSER_COLUMNS:
      - walk_time
  drive:
    maz_taps_file: drive_maz_taps.csv
    SPEC: tvpb_drive_maz_tap.csv
    CHOOSER_COLUMNS:
      - drive_time
      - DIST

TAP_TAP_SETS:
  skims: tap_skims.omx
  tap_tap_sets:
    - fastest
    - cheapest
    - shortest
  PREPROCESSOR:
    SPEC: tvpb_tap_tap_annotate_choosers_preprocessor.csv
    DF: df

TVPB_SETTINGS:
  PATH_SETS:
    WTW:
      access: walk
      egress: walk
      max_best_paths_across_tap_sets: 3
      max_paths_for_logsum_per_tap_set: 1
      path_nesting_coefficient: 0.24
    DTW:
      access: drive
      egress: walk
      max_best_paths_across_tap_sets: 1
      max_paths_for_logsum_per_tap_set: 1
      path_nesting_coefficient: 0.24
    WTD:
      access: walk
      egress: drive
      max_best_paths_across_tap_sets: 1
      max_paths_for_logsum_per_tap_set: 1
      path_nesting_coefficient: 0.24
  CONSTANTS:
    c_wait: 1.5
    c_walk: 1.7
    c_drive: 1.5
    c_auto_operating_cost_per_mile: 18.29
    C_UNAVAILABLE: -999

revised tour mode choice model

  • tour mode choice expression file and trip mode choice expression file usage

  • los.get_tvpb_logsum_odt(DEMOGRAPHIC_SEGMENT, PATH_SETS), for example los.get_tvpb_logsum_odt("high_income", "WTW")

  • returns logsum of max_best_paths for all paths across all skims sets (consistent with the max_paths_for_logsum) for mode utility

  • if mode selected, also return the path id '<access_tap>-<tap_to_tap_set>-<egress_tap>', for example '1000-fastest-1010'

  • for walk in tour mode choice - los.get_tvpb_logsum_odt(DEMOGRAPHIC_SEGMENT, WTW) + los.get_tvpb_logsum_dot(DEMOGRAPHIC_SEGMENT, WTW)

  • for drive in tour mode choice - los.get_tvpb_logsum_odt(DEMOGRAPHIC_SEGMENT, DTW) + los.get_tvpb_logsum_dot(DEMOGRAPHIC_SEGMENT, WTD)

  • for walk in trip mode choice - los.get_tvpb_logsum_odt(DEMOGRAPHIC_SEGMENT, WTW)

  • for drive in trip mode choice - los.get_tvpb_logsum_odt(DEMOGRAPHIC_SEGMENT, DTW)

  • go ahead and get it working with relculating the best paths each time and then we can figure out what and when to pre-calculate, cache, etc.

  • note users should trim the set of taps for each maz to remove maz-tap pairs that serve the same transit lines

  • for example, transit line 5 serves MAZ 100 via TAP 1000 and TAP 1010 and TAP 1000 is closer to MAZ 100. Make

  • sure to remove the MAZ 100 to TAP 1010 entry from the MAZ to TAP file to avoid unnecessary calculations.

Clone this wiki locally