Skip to content

Submodels

Brice Nichols edited this page Dec 31, 2024 · 7 revisions

In Soundcast, Daysim models estimate travel behavior for people living within the 4-county PSRC region. While this travel makes up the majority of all activity, there are other movements that must be included outside of the Daysim framework. The largest source of additional travel demand comes from freight movements in trucks, within and across the region and to points outside as well. Personal trips to/from external locations must also be considered separately since this places additional strain on roadways, especially on the region's edges and along through corridors like I-5. Special land use types like airports and a variety of military bases must also be considered in their own right. The following sections detail these supplemental submodels in Soundcast:

Though bicycle trips in the region are modeled by Daysim, the route choice is part of a separate submodel.

Technical Process for Supplemental Trips

A series of scripts manages different aspects of travel outside of resident travel produced from Daysim. These scripts are stored in scripts/supplemental and include the following:

  • create_ixxi_work_trips.py
  • generation.py
  • distribute_non_work_ixxi.py
  • create_airport_trips.py

These manage trips between internal and external zones, travel generated from airport visitors, and trip generation for medium and heavy trucks. This section discusses the technical details of the actions performed in each script. The flow of scripts is managed in run_soundcast.py within the functions accessibility_calcs and run_truck_supplemental.

create_ixxi_work_trips.py

The first script to be run is create_ixxi_work_trips.py, which is only run once. This script processes work-related travel for people living outside the region and working inside the region (external-internal) and vice versa (internal-external). Trip tables for each time-period are built from observed LEHD origin-destination tables taken from the “external_trip_distribution” table in the Soundcast inputs database. This table contains the number of trips by mode for external-internal and internal-external directions across all zones. The data is scaled based on the model year, using the “base_year_scaling” database table, which compares total trips in the model year to a base year total. The current exception to this scaling is I-5 at the Thurston/Pierce County line, which is not grown into future since this area is already at maximum capacity and network assignments become overloaded in future years. The resulting scaled internal-external and external-internal trip tables are exported to “outputs/supplemental/external_work_x.h5” for each time-period x.

This script is run up front because these trip tables are not sensitive to feedback and need to be run once only. This script also includes some other modifications, such as adding military personnel to Joint Base Lewis McChord in Pierce County. Parcel-level military jobs in this location are available in the database table “enlisted_personnel,” which are taken from Urbansim inputs. The data includes multiple entries for the same parcel which are aggregated to total jobs for each parcel and TAZ. For 2018, total jobs are 49,430, changing only slightly to 49,302 in 2050. Parcels are updated with these values in the government employment field (EMPGOV_P), adding them to any existing jobs in that field. These added jobs are logged in outputs/supplemental/military_jobs_added.csv. Since we are asserting military job locations in this process, we need to remove these trips from Daysim inputs, so Daysim choice models don’t try to place these jobs in places we already know they should be. The latter part of “create_ixxi_work_trips.py” updates the synthetic population file “hh_and_persons.h5” with this assumption. Additionally, a file called “psrc_worker_ixxifractions.dat” is computed that represents the fractions of jobs in each zone that are occupied for workers from external regions. These are used by Daysim to modify workplace location choices.

generation.py

This script and the remaining in this section are run every global iteration based on feedback from previous iterations. Generation.py uses PSRC’s old 4-step model to generate TAZ-level productions and attractions for trucks and travel to and from Sea-Tac International Airport for airport travelers. (Airport workers are managed through Daysim or external-internal travel described above). The script was ported directly from the old 4-step model (called 4k), with some additions to manage heavy trucks. Medium trucks are estimated using traditional methods, but heavy truck productions and attractions are grown from observed ATRI data. The input database table “heavy_trucks” supplies the number of productions and attractions for various internal zones, and these are scaled by employment changes in this script. Additionally, this script applies land-use restrictions for heavy trucks in zones without appropriate industrial uses, such as downtown Seattle that cannot accommodate combination semi-truck trips. distribute_non_work_ixxi.py

Once trip generation data is available, trips for non-work purpose are distributed as trip tables. Since, work trip tables are created directly in create_ixxi_work_trips.py, only the non-work purposes need to be dealt with at this stage. These trips are needed to ensure external station volumes match observed, and the number of trips generated is specified in calibration to ensure the model matches. The only trip purpose assigned is home-based shopping since these are relatively short trips and ensure not too much VMT is applied to the internal zones. Mode choice is asserted from the ixxi_mode_share table in the Soundcast database, likely taken from the LEHD LODES data for commute mode choice for internal-external workers. The results from this process are trip tables by time of day and mode stored in outputs/supplemental/external_non_work.h5.

create_airport_trips.py

The remaining use of data from generation.py is to create trips for airport travelers. This script borrows trip rates from studies of other airports around the U.S. to generate trips based on population and employment from zones around the airport. The result is a set of trips by time of day and mode, using time-of-day distributions and mode choice parameters from PSRC’s 4k model. These airport trips are all classified as home-based other and are added on top of non-work trips in outputs/supplemental/external_non_work.h5.

Clone this wiki locally