Auxiliary Models - bellevuewa/BKRCast GitHub Wiki

The information below is valid for model commit #693038bf58447a6ff268b432b90b1afc4958a9b1 or earlier. For latest supplemental model documentation, please click this link.

Auxiliary models includes the following sections:
* Supplemental
* Trucks
* Update to Future Year

Supplemental

Supplemental models include external trips, group quarters and special generators. These trips are modeled in traditional 4-step trip model. External trips include internal-external, external-internal, and external-external trips. The first two types of external trip ends are estimated by trip generation model generation.py. The trip ends of externals-externals, internal-external, external-internal, group quarters and special generators are then balanced by generation.py, and distributed by distribution.py. OD matrices for supplemental passenger trips are then created.

More details can be found from PSRC 4K model documentation.

Below is a list of files residing in inputs\supplemental folder.

Name Type Description
generation Directory Inputs for supplemental trip generation
trips Directory Seed supplemental trips. These h5 files are copied to outputs/supplemental folder but then all files under this folder are deleted right before supplemental trip generation starts. The supplemental trip tables are actually generated from scratch. So these h5 files are not in use by BKRCast.
gravity_model.json File Gravity model coefficients by purpose, used in calculations of friction factors
inc_college_dict.json File
inc_k12_dict.json File
inc_size_workers_dict.json File
inc_veh_dict.json File
matrix_balancing_spec.json File
mode_dict.json File
purp_tod_dict.json File
time_dict.json File

Below is a list of files residing in inputs\supplemental\generation folder.

Name Type Description
external.csv File Productions and attractions for externals, being used in supplemental module (in new base year)
externals-2014.csv File backup of externals.csv used in 2014 base year model
pumshhxc_income-collegestudents.xlsx File PUMS household crossclassification data for college students
ensembles Directory
landuse Directory land use for trip model (for EI/IE/EE)
pums Directory PUMS household cross classification
rates Directory trips rates for EI/IE/EE
specialgenerators Directory Not used

Below is a list of files residing in inputs\supplemental\generation\ensembles folder.

Name Type Description
puma00.ens

Below is a list of files residing in inputs\supplemental\generation\landuse folder.

Name Type Description
tazdata.in File PSRC 4K model land use, being used in supplemental module.
tazdata_2014.in File 2014 PSRC 4K model land use, backup only
tazdata_2014.csv File 2014 4K model land use in csv in spreadsheet format

Below is a list of files residing in inputs\supplemental\generation\pums folder.

Name Type Description
pumshhxc_income-collegestudents.in File
pumshhxc_income-k12students.in File
pumshhxc_income-size-workers.in File
pumshhxc_income-size-workers-vehicles.in File

Below is a list of files residing in inputs\supplemental\generation\rates folder.

Name Type Description
hh_triprates.in File
nonhh_triprates.in File

The seed supplemental trips are used when run_skims_and_paths_seed_trips is set to True in input_configuration.py. In that case, BKRCast used DaySim seed trips and seed supplemental trips to assign an initial demand on the network and create an initial set of skims. The seed supplemental trips can be updated from a previous model run outputs.

While transferring PSRC's SoundCast model to BKRCast, the seed supplemental trips were converted from PSRC's 4k zone system to BKR's zone system using psrc2bkr_trips.py under psrc_to_bkrcast_scripts. The conversion is no longer required as the supplemental trips from a previous BKRCast run (outputs/supplemental/[tod].h5) can be used as seed supplemental trips for any new BKRCast run.

Supplemental trips are generated only once and it does not change through feedback loop.

Generation (generation.py)

Trip generation model only estimate internal-external and external-internal trips. Production and attraction trip ends by purpose (all region) are calculated by multiplying the cross-classification table (tazdata.in) and trip rate tables (hh_triprates.in and nonhh_triprates.in). The following purposes are modeled:

  • Home-based work (hbw)
  • Home-based college (col)
  • Home-based school (sch)
  • Home-based shop (hsp)
  • Home-based other (hbo)
  • Non-home-based work (wko)
  • Non-home-based other (oto)

tazdata.in

Column Name Description
101 PCTMF Pct MF - Not used
102 HH1 HH - income1
103 HH2 HH - income2
104 HH3 HH - income3
105 HH4 HH - income4
106 GQI Not used
107 GQN Not used
108 POP Population - Not used
109 RET1 Retail Employment
110 RET2 Not used
111 RET3 Not used
112 FIRES1 FIRES Employment
113 FIRES2 Not used
114 FIRES3 Not used
115 GOV1 Government Employment
116 GOV2 Not used
117 GOV3 Not used
118 EDU Education Employment
119 WTCU Not used
120 MANU Manufacturing + WTCU Employment
121 FTEUNIV College FTE
122 GQDORM Group Quarters - College Dorms
123 GQMILH Group Quarters - Military Housing
124 GQOTH Group Quarters - Other

External Stations

There are 18 external stations are defined in BKRCast, same as in Soundcast. Below is the external locations. The handwritten numbers are BKR TAZ numbers used for external stations. The same table can be found in page 35 of PSRC 4K model documentation.
External_Stations

externals.csv

Column Description Values
taz BKRCast TAZ where external stations are located
hbwpro HBW production
colpro Home based collection production
hsppro Home based shopping production
hbopro Home based others production
schopro Home based school production
wkopro Work based others production
otopro Other based others production
empty1
hbwatt Home based work attraction
colatt Home based college attraction
hspatt Home based shopping attraction
hboatt Home based others attraction
schatt Home based school attraction
wkoatt Work based others attraction
otoatt Other based others attraction
empty2
hw1pro
hw2pro
hw3pro
hw4pro
hw1att
hw2att
hw3att
hw4att

Special Generators

No special generators are defined inside BKR area. Three HBO special generators and one airport special generator are defined in externals. The same table can be found in page 34 of PSRC 4K model documentation.
special generators
The special generators are hard coded in emme_configuration.py.

Airport special generator annual growth rate is from the Port of Seattle. HBO special generators (Seattle Center, Exhibition Center, and Tacoma Dome) assume the same growth rate as auto externals. Truck special generators assume the same growth rate as employment growth which is the same as truck externals.

Airport special generator annual growth rate:
2014 - 2020: 3.65%
2020 - 2030: 2.69%
2030 - 2040: 2.18%

Airport trips are assumed 75% home based and 25% work based.

Group Quarters

Group quarters include college dormitories, military, and others(retired homes).
The outcome from the cross classification model is a production/attraction (PA) table, with 24 columns representing productions and attractions, and 1359 rows representing each individual TAZ. Special generators are then added to this PA table. The table is balanced to production (except col which is balanced to attraction). Some placeholders, like park_and_ride and dummy zones, are then added to make it complete TAZ system. The final products from generation.py are exported to prod_att.csv and gp_prod_att.csv in outputs folder.

Distribution (distribution.py)

Cost and distance between an OD pair are calculated by averaging AM and PM skims. Friction factors are then calculated based on the skims, friction coefficients, auto operating cost and value of time.

Name Description
Fiction coefficients gravity_model.json
autoop (auto operating cost) 16.75
avotda (VOT) 0.0303

After distribution, only external and special generator trips (daily trips) are retained and further split by mode and time of day. The final trip tables are exported to h5 files in outputs\supplemental folder.

Trucks

Truck model is also implemented in traditional four step model format. This inputs\trucks folder contains input data and settings for the truck model. It is borrowed from PSRC's 4K model and modified to fit BKRCast condition. For details about this truck model, read PSRC 4K model documentation.

AM auto network is also used as truck model network. truck_model.py is called to generate truck trips, distribute trips to appropriate TAZs, and create OD matrices in four time periods. Three truck classes are modeled: light truck, medium truck and heavy truck.

The socioeconomic data (tazdata.in, cross classification table) in the truck model is consistent with the auto model, except that the employment data are further split into more categories by multiplying MANU or WTCU jobs by factors. The employment categories used in the truck model are as follows.

Employment Category Matrix Split Factor Factor Matrix Notes
Agriculture/Forestry/Fishing mo21(agffsh) agshar.in mo1 (agshar) mo'manu' * mo'agshar'
Mining mo22(mining) minshar.in mo2 (minshr) mo'manu' * mo'minshr'
Construction mo7(const) stored inconst.in
Manufacturing (products) mo23(manup) prodshar.in mo3 (prodsh) mo'manu' * mo'prodshar'
Manufacturing (equipment) mo24(manue) equipshar.in mo4 (eqshar) mo'manu' * mo'eqshar'
Transportation/Communication/utilities mo25(tcu) tchshar.in mo5 (tchshr) mo'wtcu' * mo'tcushr'
Wholesale mo25(whls) whlsshar.in mo6 (whlssh) mo'wtcu' * mo'whlssh'
Retail mo9(ret1)
FIRES mo12(fires)
Education and government mo29(govedu)

Truck productions are then calculated by

  • Light: moltpro = 0.4102 * (moagffsh + momining + moconst) + 0.3466 * (momanup + momanue + motcu + mowhls) + 0.3281 * moretail + 0.1615 * (mofires + mogovedu) + 0.0928 * mohhlds
  • Medium: momtpro = 0.0889 * (moagffsh + momining) + 0.0998 * moconst + 0.0858 * (momanup + momanue) + 0.2079 * motcu + 0.2552 * mowhls + 0.1637 * moretail + 0.0434 * mofires + 0.0297 * mogovedu + 0.0358 * mohhlds
  • Heavy: mohtpro = 0.2366 * moagffsh + 0.3405 * momining + 0.0856 * moconst + 0.2661 * momanup + 0.0953 * momanue + 0.1075 * motcu + 0.1337 * mowhls + 0.0463 * moretail + 0.0000 * mofires + 0.0000 * mogovedu + 0.0000 * mohhlds

Truck attractions:

  • Light: moltatt = 1.3161 * moagffsh + 47.9052 * momining + 0.2585 * moconst + 0.2581 * (momanup + momanue) + 0.5082 * motcu + 0.1464 * mowhls + 0.0501 * moretail + 0.1591 * mofires + 0.0966 * mogovedu + 0.1732 * mohhlds
  • Medium: momtatt = 0.2831 * moagffsh + 14.8073 * momining + 0.0876 * moconst + 0.0538 * (momanup + momanue) + 0.0998 * motcu + 0.0352 * mowhls + 0.0123 * moretail + 0.0375 * mofires + 0.0160 * mogovedu + 0.0385 * mohhlds
  • Heavy: mohtatt = motruck * 0.0988 * moagffsh + 5.0897 * momining + 0.0290 * moconst + 0.0208 * (momanup + momanue) + 0.0378 * motcu + 0.0087 * mowhls + 0.0032 * moretail + 0.000 * mofires + 0.000 * mogovedu + 0.000 * mohhlds

Land use restrictions for heavy trucks are applied to zones without allowable industrial parcels in both production and attraction. Truck special generators are then added to attraction. Both production and attraction are then further adjusted by a set of factors, which is defined in input_configuration.py.

Truck Type Adjustment Factor
ltpro 0.544
mtpro 0.545
htpro 0.530
ltatt 0.749
mtatt 0.75
htatt 1.0

Attractions are balanced to productions. Impedance for three classes are calculated based on matrices from inputs/4k. Trip tables are balanced and converted to OD format.

Annual external medium and heavy truck trips are converted to daily and then added to medium and heavy truck trip tables respectively. Medium and heavy trucks are converted to passenger vehicles by:

  • 1 medium = 1.5 passenger cars
  • 1 heavy = 2 passenger cars

Time of day are applied to daily truck trip table.

Class AM MD PM NI
Light 0.194 0.346 0.240 0.220
Medium 0.208 0.417 0.204 0.171
Heavy 0.209 0.468 0.189 0.134

Final truck matrices are exported to auto.h5 in inputs/4k folder.

Update to a Future Year

Supplemental Trips

When creating a future year model, we should also update supplemental trips. Follow the following steps.

  1. Update tazdata.in file and externals.csv file. Use the utility tool update_externals.py.
    Use the following annual growth rate for external stations (external.csv).
    2014 - 2025: 1.14%
    2025 - 2040: 0.77%

The aggregation from parcel file to 4K land use format (tazdata.in) is as follows.

  • Retail = EMPFOO_P + EMPRET_P
  • FIRES = EMPMED_P + EMPOFC_P + EMPSVC_P
  • GOV = EMPGOV_P
  • EDU = EMPEDU_P
  • IND = EMPIND_P + EMPOTH_P
  1. Change HORIZON_YEAR variable to appropriate year.
    All special generators in auto model will be automatically updated based on the following growth rates.
    Airport special generator annual growth rate:
    2014 - 2020: 3.65%
    2020 - 2030: 2.69%
    2030 - 2040: 2.18%

  2. Group quarters are not updated at this time. We will update it when data becomes available.
    Future projection can be reached by using these annual growth factors.

Trucks

Follow the following steps to update the truck model.

  1. Overwrite tazdata.in in truck folder with updated one from supplemental trip module.
  2. Update truck externals with the following annual growth rates. Truck annual growth rate:
    2014 - 2025: 1.37%
    2025 - 2040: 1.48%
    These are external files:
File
medium_truck_ei.in
medium_truck_ie.in
medium_truck_ee.in
heavy_truck_ei.in
heavy_truck_ie.in
heavy_truck_ee.in
  1. Update truck special generators using the following annual growth rates. These rates are the same as truck externals.
    Truck annual growth rate:
    2014 - 2025: 1.37%
    2025 - 2040: 1.48%
    These are truck special generators:
File
special_gen_light_trucks.in
special_gen_medium_trucks.in
special_gen_heavy_trucks.in
  1. Other input files may need update as well, subject to data availability.
    These files are employment split factor files, truck time of day factors, gravity model coefficients, and truck operating cost.