Skip to content

Model Inputs

Alex Bettinardi edited this page Feb 27, 2025 · 10 revisions

Level-of-Service Skims

Level-of-service matrices for auto and transit are created for each of five time periods between TAZs. Non-motorized skims are created from the all-streets network between MAZs and are not differentiated by time of day. Skim matrix files must be in OMX or CSV format for ActivitySim. We recommend packing the auto and transit skims into separate OMX files (auto_skims.omx and transit_skims.omx) and using CSV format for the MAZ skims.

Passenger Auto skims

Each auto skim table in the auto_skims.omx file is stratified by occupancy, value-of-time bin, and period. The naming convention is OCC_VOT_TABLE__PER where OCC is one of {DA,S2,S3}, VOT is one of {LOW, MED, HIGH}, TABLE is one of the auto skim tables shown below, and PERIOD is one of {EA, AM, MD, PM, EV}. Note that there are two underscores (“__”) before PERIOD; this is an ActivitySim requirement used to correctly index into skims in preprocessor and utility expressions.

Auto Skim Tables

Table Name Description
TIME Time (minutes) on congested path
DIST Distance (miles) on congested path
TOLL Toll cost ($2023 cents) on congested path
REL (Optional) Reliability on congested path

Truck Skims

To fully support truck submodels such as the agent-based version in use by Portland Metro, a truck_skims.omx file should contain distance, travel time, and tolls skims for each of the assigned truck classes. The typical truck submodel classes are LT—light trucks also known as light commercial vehicles; MD—medium trucks defined to be single-unit goods-bearing trucks; and HV—heavy trucks defined as multi-unit goods-bearing trucks. The LT or LCV category contains service vehicles, e.g. plumbers and gardeners, plus deliveries made by passenger cars or other light-duty vehicles, e.g. meal delivery firms. However, the LT class generally uses the passenger auto skims since such vehicles are not differentially affected by restrictions or toll policies. Skimming for the MD and HV separately is advantageous for truck submodels that can make use of the difference, e.g. by supporting scenario analysis with input network differences for those classes in route restrictions, weight limits, and tolls. However, many truck submodels only have one skim for MD and HV trucks combined. While not all truck submodels treat all individual model time periods (Portland Metro’s approach is to have a peak skim and an off-peak skim), to support those that do, another dimension of the truck skim OMX file could include breaking out the skims by time of day as in Passenger Auto skimming. A useful table naming convention would be CLASS_TABLE_PER where CLASS is one of {MD, HV}, TABLE is one of the skim types in the table below, and PER has the same options as in the Passenger skims or a reduced version of PK for peak and OP for off-peak. A reliability (REL) data element could be added to this structure if needed (or contemplated) by any of the Oregon MPO truck submodels.

Truck Skim Tables

Table Name Description
TIME Time (minutes) on congested path
DIST Distance (miles) on congested path
TOLL Toll cost ($2023 cents) on congested path

Transit skims

Each transit skim table in the transit_skims.omx file is stratified by access mode, egress mode, and period. The naming convention is ACC_TABLE_EGR__PER where ACC and EGR is one of {WLK, PNR, KNR, BIKE}, TABLE is one of the transit skim tables shown below, and PERIOD is one of {EA, AM, MD, PM, EV}. Note that there are two underscores (“__”) before PERIOD; this is an ActivitySim requirement used to correctly index into skims in preprocessor and utility expressions.

Transit Skim Tables

Table Name Description
IVT In-vehicle time (minutes)
BUSIVT In-vehicle time on bus (minutes)
BRTIVT In-vehicle time on bus-rapid transit (minutes)
LRTIVT In-vehicle time on light rail (minutes)
COMIVT In-vehicle time on commuter rail (minutes)
FWAIT First wait time (minutes)
XWAIT Transfer wait time (minutes)
XFERS Transfers
ACC Walk or drive access time (minutes)
EGR Walk or drive egress time (minutes)
AUX Auxiliary walk time (minutes)
FAR Fare ($2023 cents)

Non-motorized skims

There are two non-motorized skim files, one for walk mode (maz_maz_walk.csv) and one for bike mode (maz_maz_bike.csv). Because these files contain non-motorized level of service, only MAZ-pairs within the maximum walk and bike distance are listed in the file. The maximum distances should be gleaned from survey data; typical maximum walk distance is 3-4 miles and maximum bike distance is 10-12 miles. Fields for each file are shown in the tables below.

MAZ_MAZ_WALK.CSV fields

Field Name Description
OMAZ Origin MAZ
DMAZ Destination MAZ
TIME Time
DISTANCE Distance

MAZ_MAZ_BIKE.CSV fields

Field Name Description
OMAZ Origin MAZ
DMAZ Destination MAZ
TIME*_BCL* Time by bicycle comfort level (BCL)
DISTANCE*_BCL* Distance by bicycle comfort level
LOGSUM*_BCL* Route choice logsum or utility on least-cost path by bicycle comfort level

Land-Use Data Inputs

Land-use data is specified in an MAZ data file, with one record per MAZ. Fields are shown below. The fields which can be calculated based on maintained MAZ or other data such as network information are identified as “(Calculated)”. Procedures to calculate these fields are described below.

Note that external MAZs should be created for external stations. Any facility crossing the area boundary (including freeways coded as two one way links) should be connected to one external TAZ and one external MAZ to represent all traffic into and out of the region at that crossing point. These MAZs are coded as EXTERNAL=1.

MAZ Land-use Data File

Field Name Description
MAZ Micro-analysis zone number
TAZ Transportation analysis zone number
BLKGRP Census block group number
TRACT Census tract number
PUMA Census Public Use Microdata Number
COUNTY Census county number
DISTRICTXX (Optional) District field where xx is the number of districts. Used for application of district-level constants if necessary and/or for summaries of model results.
TOTNGQHHS Total non-group quarters households
TOTGQHHS Total group quarters households/population
TOTHHS Total households
TOTPOP Total population
EMP_NRM Natural resources and mining employment (NAICS 21)
EMP_CON Construction employment (NAICS 23)
EMP_NHTMFG Non-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFG High tech manufacturing employment (NAICS 334)
EMP_WT Wholesale trade employment (NAICS 42)
EMP_TWU Transportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCS Retail Trade employment (NAICS 44-45,)
EMP_ IFRPBS Information, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCS Health care and social assistance employment (NAICS 62)
EMP_OSV Other service employment (NAICS 81)
EMP_GOV Government employment (no education, NAICS 92)
EMP_EDU Education employment (NAICS 61)
EMP_AER Arts, entertainment, and recreation employment (NAICS 71)
EMP_ACC Accommodations employment (721)
EMP_FSD Food services and drinking places employment (NAICS 722)
EMP_TOT Total employment (Can be calculated from above fields)
ENROLL_K8 Grades K-8 enrollment (public and private)
ENROLL_912 Grades 9-12 enrollment (public and private)
ENROLL_COLL College enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIME Terminal time (average minutes to walk to/from parked car)
PRKCST_HR Hourly parking cost ($2023 cents)
PRKCST_DAY Daily parking cost ($2023 cents)
PRKCST_MNTH Monthly parking cost ($2023 cents)
PRKSPACES Total parking spaces
ACRES Size of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRES Active park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRES Open space acres (include areas of open space with trail systems)
ESCOOACCTIME E-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIME E-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL 1 if an external MAZ, else 0
EXT_WORK_SIZE Size term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZE Size term for non-work tours at external MAZ (total resident non-work tours from SWIM at the external station)
TOTINT (Calculated) Intersection count (total 3-way and 4-way intersections in MAZ): Note this can be calculated from the all-streets network. For future years, this can be updated based on application of intersection count/acres from other similar MAZs for greenfields.
EMPDEN (Calculated) Sum(EMP_TOT)/Sum(ACRES) for all MAZs within 0.5 miles of this MAZ
RETDEN (Calculated) Sum(EMP_RCS)/Sum(ACRES) for all MAZs within 0.5 miles of this MAZ
HHDEN (Calculated) Sum(TOTHHS)/Sum(ACRES) for all MAZs within 0.5 miles of this MAZ
POPDEN (Calculated) Sum(TOTPOP)/Sum(ACRES) for all MAZs within 0.5 miles of this MAZ
POPEMPDEN (Calculated) Sum(TOTPOP + EMP_TOT)/Sum(ACRES) for all MAZs within 0.5 miles of this MAZ
WLKTIME_BUS (Calculated from all-streets network) Walking time to local bus (9999 if not available)
WLKTIME_BRT (Calculated from all-streets network) Walking time to bus-rapid transit (9999 if not available)
WLKTIME_LRT (Calculated from all-streets network) Walking time to light-rail transit (9999 if not available)
WLKTIME_CR (Calculated from all-streets network) Walking time to commuter rail (9999 if not available)
EXPPRK_MNTH (Calculated) Expected average monthly parking cost from origin to all destinations ($2023 cents)
EXPPRK_DAY (Calculated) Expected average daily parking cost from origin to all destinations ($2023 cents)
EXPPRK_HR (Calculated) Expected average hourly parking cost from origin to all destinations ($2023 cents)
PARKAREA (Calculated) Parking constrained area code: 1: Constrained parking area (destinations in area have an expected cost and parking location choice model is applied. 2: Buffer area (free parking in area is included in expected cost for destinations in PARKAREA 1, but destinations in area do not have an expected cost and parking location choice model not applied), 3: Not parking constrained or buffer area (free unconstrained parking).
Built Form (not sure on naming) We need some indication for how walkable / comfortable the area is. In the past this has been intersection density in the base year, and a proxy for the future. I would like to see us use maybe something from Smart Location Database definitions, but open to different ideas here.
Calculated fields in MAZ data file

Density fields: These can be calculated by dividing the appropriate land-use field by area. They are calculated on a ‘floating’ basis by buffering around the MAZ and summing the land-use field and acreage for all MAZs within a ½ mile radius of the current MAZ (note that the current MAZ values are always included in the calculation despite how far the nearest MAZ may be from the current MAZ). The distance can be gleaned from the all-streets network using a shortest path by distance calculation, or the straight-line distance between MAZ centroid coordinates are required, which can also be calculated from the all-streets node layer. Other fields may be coded if useful in estimation.

Transit walk-time fields: These can be calculated from the all-streets network which has MAZ centroids and transit stop nodes in the network. The transit stop nodes should be updated at the start of a model run since the transit network coding could change between runs. The walk times are calculated by finding the distance to either the closest transit stop by type from the MAZ, or to the average of multiple stops. We suggest a 2.8 mile per hour walking speed to calculate time. These times are used as an override on the skimmed TAZ times.

Expected parking costs and park area: Parking costs (PRKCST_HR, PRKCST_DAY, PRKCST_MNTH) and parking spaces (PRKSPACES) are the actual cost of parking in the MAZ and the actual number of spaces in the MAZ. Expected parking cost fields (EXPPRK_HR, EXPPRK_DAY, EXPPRK_MNTH) are the average parking costs that a traveler might expect to pay when they park either in the MAZ or somewhere close to the MAZ and walk to the MAZ from their parking location. The parking cost equation is shown below, and graphically in the figure.

Parking Cost Graphic

Expected parking cost calculations should take into account the potential for parking for free to the extent that travelers seek out free on-street parking and walk to their destination which has an expected cost. This requires defining a ‘parking constrained area’ where MAZs in this area have a parking cost calculated for them, a ‘buffer area’ around the parking constrained area where MAZs have free on-street parking, and a ‘completely free’ area which includes all other MAZs. These parking areas are defined in the PARKAREA field as 1, 2, and 3. They can be manually coded in the MAZ file or calculated via automated geometric algorithm available in Python, as was recently done for SANDAG. The buffer area free parking calculation requires an estimate of on-street parking capacity per mile which is applied to links in the all-streets network.

Synthetic Population Inputs

Inputs to PopulationSim include seed household and person data files, geographic equivalency files, total households by MAZ, a set of control files for each geography for which controls are specified, a file that maps household and person attributes in the seed data to each control, and a yaml file with properties that control the PopulationSim run. The seed household file and person file for initial model implementation are generated directly from ACS 5-year (example, 2018-2022) Public Use Microdata files. The seed data can be updated to the most recent 5-year average for model calibration. Data for the PUMAs containing the region to be modeled are retained from the Oregon data files and the entire household and person file in CSV format is read into PopulationSim. This provides the user the option to merge any household and person attributes from the original PUMS data to the ActivitySim input or output household and person files if desired. PUMS household and person data file formats are available on the US Census website

The MAZ data file will be used for the input total households by MAZ and the geographic equivalencies for PopulationSim. A script will pre-process each set of controls such that the total households matches the household estimates by MAZ and that total population is consistent with distributions of households by household size at appropriate geographic levels.

There is one control file for each geographic level for which controls are specified. The controls are described here.

Synthetic Population Outputs

The tables below show ActivitySim household and person input files respectively. These files are created from PopulationSim and post-processing and contain the attributes of synthesized households and persons derived from the seed data, plus any additional fields coded by the user used in ActivitySim. For example, the user may wish to represent over-rides for certain choice models. These can be specified by adding fields noted as model outcomes at the household or person levels (specified in Table 33 and Table 34 respectively) and setting those fields to a user-specified value, then changing the ActivitySim configuration to use those fields from the input files rather than run the choice models that create those fields. We have also added two fields that allow the user to apply person-level factors to toll costs and transit fares. Their default value should be 1.0.

Synthetic households (synthetic_HHS.CSV) file Fields

Name Type Description
HOUSEHOLD_ID Integer Unique household ID number
SERIALNO Integer PUMS household number
PUMA_GEOID Integer Household PUMA Geographic ID
MAZ Integer Household MAZ ID
TAZ Integer Household TAZ ID
TYPE Integer Type of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NP Integer Number of people in household
HHT Integer The type of household - Census PUMS HHT variable: N/A: Not applicable (group quarters or vacant) 1: Married couple household 2: Other family household: Male householder, no spouse present 3: Other family household: Female householder, no spouse present 4: Nonfamily household: Male householder: Living alone 5: Nonfamily household: Male householder: Not living alone 6: Nonfamily household: Female householder: Living alone 7: Nonfamily household: Female householder: Not living alone
HHINCADJ Integer The annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERS Integer The number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

Name Type Description
HOUSEHOLD_ID Integer Household ID number (must agree with household file)
PERSON_NUM Integer Person number in household (1…n where n is total number of persons in household)
PERSON_ID Integer Person ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOID Integer Household PUMA Geographic ID
TAZ Integer Household TAZ ID
MAZ Integer Household MAZ ID
AGEP Integer Age of person in years
SEX Integer Sex of person in household (1 = male, 2 = female)
WKHP Integer Usual hours worked per week in past 12 months
WKW Integer Weeks worked during past 12 months -9: under 16 years old or did not work in past 12 months 1: 50-52 weeks worked 2: 48-49 weeks worked 3: 40-47 weeks worked 4: 27-39 weeks worked 5: 14-26 weeks worked 6: 13 or fewer weeks worked
ESR Integer Employment Status Recode -9: Under 16 years old 1: Civilian employed, at work 2: Civilian employed, employed but not at work 3: Unemployed 4: Armed forces, at work 5: Armed forces, employed but not at work 6: Not in labor force
SCHG Integer School grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MIL Integer Military Service -9: under 17 years old 1: On active duty 2: Active in past, but not currently 3: Only active for training in Reserves/National Guard 4: Never served in military
NAICSP Integer NAICS ID of work occupation (Census Code)
INDP Integer Work industry code (Census code)
OCCP Integer Work occupation code (Census code)
OCCCAT Integer 1: Management, business, science, and arts; 2: Service; 3: Sales and office; 4: Natural resources, construction, and maintenance; 5: Production, transportation, and material moving; 6: Military specific occupations
DDRS Integer Self-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEAR Integer Hearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYE Integer Vision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUT Integer Independent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHY Integer Ambulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREM Integer Cognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTOR Float A user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTOR Float A user-defined factor to be applied to transit fare (in addition to transit subsidy or transit pass factors). Default should be 1.0.

Go to Top

Clone this wiki locally