Supplemental Model (updated in 2022) - bellevuewa/BKRCast GitHub Wiki

Supplemental module was updated in late 2022 to match Soundcast's implementation. The information below is valid for BKRCast commit #7b5f827f21b0da3abe4256d131217a0ad7b4c75b or later. For earlier documentation, please click this link. To read documentation of Soundcast's supplemental module, click here.

Soundcast uses soundcast_inputs.db file as a container to hold all inputs for supplemental module. For the purpose of easy access and easy edit, BKRCast uses csv files as inputs. Soundcast_inputs.db can be converted to BKRCast compatible format by export_soundcast_input_db_to_tables.py.

Files related to BKRCast's supplemental module are:

  • auto_externals_bkr.csv
  • base_year_scaling.csv (Need to update this file annually by adding total jobs and hhs in latest base year model)
  • bkr_zones.csv
  • enlisted_personnel_bkr.csv
  • external_trip_distribution_bkr.csv
  • externals_unadjusted_bkr.csv
  • gravity_model_coefficients.csv
  • group_quarters_bkr.csv
  • heavy_trucks_bkr.csv
  • ixxi_mode_share.csv
  • jblm_trips_bkr.csv
  • job_attractions.csv
  • job_productions.csv
  • mode_share_parameters.csv
  • psrc_zones_bkr.csv
  • rate_adjustments.csv
  • seatac_bkr.csv
  • special_generator_bkr.csv
  • time_of_day_factors_bkr.csv
  • truck_time_of_day_factors_bkr.csv

Daysim model only estimate travels inside the four counties (PSRC region). Trips across the PSRC region limit line are not included in the daysim estimate but they have to be included as internal-external (IX), external-internal(XI) and external-external trips (XX). In addition, truck trips, military trips and airport trips are important components but they are beyond the capability of Daysim model. These missing components are addressed through supplemental module.

PSRC implemented supplemental module to address these missing pieces, and it has been incorporated into BKRCast model platform. The supplemental module is implemented in five scripts.

scripts input files output files
create_ixxi_work_trips.py enlisted_personnel_bkr.csv, parcels_urbansim.txt, external_trip_distribution_bkr.csv, base_year_scaling.csv military_jobs_added.csv, external_work_tod.h5, ixxi_work_trips_summary.txt, bkr_worker_ixxifractions.dat
generation.py lu_type.csv, BKR_zones.csv, auto_externals_bkr.csv, enlisted_personnel_bkr, trip_rates.csv, group_quarters_bkr.csv, jblm_trips_bkr, heavy_trucks_bkr.csv, seatac_bkr.csv, special_generators_bkr.csv, hhs_and_persons.h5, job_attractions, job_productions.csv, externals_unadjusted_bkr.csv, rate_adjustments.csv 1_unadjusted_unbalanced.csv, 2_add_group_quarters.csv, 3_add_enlisted_personnel.csv, 4_add_special_generators.csv, 5_add_externals.csv, 6_adjust_trip_ends.csv, 7_balance_trip_ends.csv
distribute_non_work_ixxi.py gravity_model_coefficients.csv, 7_balance_trip_ends.csv, 6to9.h5, 1530to1830.h5, ixxi_mode_share.csv, external_non_work.h5,
create_airport_trips.py 6to9.h5, 1530to1830.h5, parcels_urbansim.txt, mode_choice_parameters.csv, time_of_day_factors_bkr.csv, hhs_and_persons.h5 mode_shares.h5, [tod].h5 (in outputs/supplemental), avg_mode_shares_origins.csv, airport_veh_trips.csv, airport_veh_trips_with_externals.csv, airport_veh_trips_by_tod.csv
truck_model.py truck_matrices.csv, 7_balanced_trip_ends.csv, districts19_ga.ens, truck_inputs.csv, [tod.h5], input_skims.txt, truck_time_of_day_factors_bkr.csv truck_trips.h5, truck_summary.csv

The following submodel components are included:

All trips generated by submodels will be automatically adjusted to match the model_year.

IX/XI/EE Trips

External Stations

Just like Soundcast, 18 external stations are defined in BKRCast. The table below are external locations.

PSRC TAZ BKRCastTAZ Location
3733 1511 I-5 to Olympia
3734 1512 SR 507 to Yelm
3735 1513 SR 7 to Morton
3736 1514 SR 706 to Longmire
3737 1515 SR 123 S. of Cayuse Pass
3738 1516 SR 410 E. of Cayuse Pass
3739 1517 I-90 @ Snoqualmie Pass
3740 1518 SR 2 to Stevens Pass
3741 1519 SR 92 to Monte Carlo
3742 1520 SR 530 N. of Darrington
3743 1521 SR 9 N. of Arlington
3744 1522 I-5 to Mount Vernon
3745 1523 SR 530 N. Stanwood
3746 1524 SR 532 to Camano Island
3747 1525 Ferry to Whidbey Island
3748 1526 Hood Canal Bridge
3749 1527 SR 3 to Belfair
3750 1528 SR 302 to Shelton

General methodology and daily counts at these locations can be found here.

IE/EI work trips

Interal-external (IE) and external-internal (EI) work trips are given in the input file external_trip_distribution_bkr.csv, which was generated fromLEHD data 2014 by PSRC and reproduced to fit BKRCast specification. But trips are one directional from internal TAZ to external. The trips for the other direction can be calculated by transposing the trip table.

The IE/EI trips will be scaled to model_year by a scaling factor, which is calculated by the ratio of model_year's total jobs over that of 2014. The model_year's total jobs and hhs are saved in the input file base_year_scaling.csv. The scaled EI/IE work trip tables by SOV, HOV2, and HOV3 are exported to external_work_tod_.h5, where tod is time of day in the selection of 'am, md, pm or ni'.

Percent of workers in each TAZ that do not work in the region and percent of jobs in each TAZ that are occupied by workers from external are also calculated and exported to file bkr_workers_ixxifractions.dat, which will be used in daysim's workplace location choice model.

IE/EI/EE non-work trips

Other non-work purpose of trip productions and attractions at each external station are given in the file auto_externals_bkr.csv, and are adjusted by annual simple growth rate of 0.0096.

Non-work trips are distributed through a gravity model. We use averaged AM and PM generalized cost skim of SOV toll income level 2 as cost skim; and averaged AM and PM distance skim of SOV toll income level 1 as distance skim; to calculate friction matrices and then OD trip tables. Trip tables are further split into different modes using the following mode split. All non-work trips are assumed to be home based shopping trips.

Major parameters:

  • auto operating cost: 16.75
  • auto VOT drive alone: 0.0303

gravity mode coefficients:

purpose coefficient_value
col -0.1382
hbo -0.1423
sch -0.229
hsp -0.2223
hw1 -0.0858
hw2 -0.0775
hw3 -0.074
hw4 -0.0629
oto -0.1493
wko -0.091
mode ixxi_mode_share split
sov 0.8
hov2 0.13
hov3 0.07

Military Trips

Total military jobs in model_year by parcel and adds them to government jobs and total jobs by parcel as well. The newly added military jobs are exported to military_job_added.csv in outputs\supplemental folder.

Enlisted personnel are given in file enlisted_personnel_bkr.csv separated by year. Trip attraction of different purposes are calculated by multiplying jobs with trip rates.

Group Quarters

Three types of group quarters are given in input file group_quarters_bkr.csv: dormitory, military, and others. Number of people in each type are adjusted by annual simple growth rate of 0.0034. Trip productions of each purpose are calculated by multiplying production trip rate.

Special Generators

Three HBO special generators are defined in externals, but no special generators are defined inside BKR area. The same table can be found in page 34 of PSRC 4K model documentation.
special generators

Trips by special generators are given in input file special_generators_bkr.csv, and are adjusted by annual simple growth rate of 0.0135.

Airport

Airport trips consists of two parts: trips generated by population and trips generated by employments. Click here to see documentation of airport model in Soundcast.

  • airport trip ends (HBO) by population = population * 0.02112
  • airport trip ends by employment = employment * 0.01486 The trips are normalized by airport control total, which is observed or forecasted number of airport visitors saved in seatac_bkr.csv.

Skims of SOV, HOV2, and HOV3 toll with income level 2 are used to calculate mode utility and mode share. It assumes all distance skims are generated HBO trips and auto operating cost for HBO is 16.75. The trip tables are further split into different auto modes and transit submodes, with the following vehicle occupancy assumptions:

  • SOV = 1
  • HOV2 = 2
  • HOV3+ = 3.5

External non-work trips (from distribute_non_work_ixxi.py), and external work trips (SOV, HOV2, and HOV3, from create_ixxi_work_trips.py) are then added to the airport trips, which are then further split into different time of day by multiplying time of day factors.

time_of_day mode value
1530to1830 hov 0.232
1530to1830 sov 0.1755
1530to1830 transit 0.21775
1830to6 hov 0.241
1830to6 sov 0.284
1830to6 transit 0.24175
6to9 hov 0.174
6to9 sov 0.17
6to9 transit 0.17
9to1530 hov 0.35
9to1530 sov 0.3715
9to1530 transit 0.3715

Trucks

Refer to Soundcast's wiki page for technical details.

Heavy truck production and attraction are given in file heavy_truck_bkr.csv, and are adjusted by annual simple growth rate of 0.0135. Heavy truck is only allowed access in the following appropriate industrial use: agriculture, forest, industrial, military, mining, warehousing. These land uses are defined in lu_type.csv.

Operating cost for medium and heavy trucks are set to 99 cents per mile in 2010, and the cost is adjusted by annual simple growth rate of 0.015.

Truck(medium and heavy trucks) daily generalized cost skim is computed by averaging am and pm truck generalized cost skims, and daily distance skim is by averaging am and pm distance skims. Both cost and distance are used in calculating impedance.

Light trucks is no longer included in the truck model. Instead, their activities are now covered by recent travel surveys. Light truck becomes part of daysim modeling.

Truck impedance is calculated using the following equation:
impedance = exp(distribution_coeff * (generated_cost + distance * operating_cost + value_of_time)

The truck daily od matrices are convertd to passenger vehicles by applying the following vehicle equivalency factors:

  • delivery truck = 1.5
  • medium truck = 1.5
  • heavy truck = 2.5

Daily od matrices are then split into different time of day by applying truck TOD factors. Summary are exported to truck_summary.csv.