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.
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.02112airport trip ends by employment = employment * 0.01486The trips are normalized by airport control total, which is observed or forecasted number of airport visitors saved inseatac_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 = 1HOV2 = 2HOV3+ = 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.