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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all \x3Cpre>\x3Ccode> blocks (function() { function addCopyButtons() { document.querySelectorAll('pre code').forEach(function(codeBlock) { if (codeBlock.parentElement.hasAttribute('data-copy-added')) return; codeBlock.parentElement.setAttribute('data-copy-added', 'true'); var btn = document.createElement('button'); btn.textContent = 'Copy'; btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;'; btn.onmouseover = function() { this.style.opacity = '1'; }; btn.onmouseout = function() { this.style.opacity = '0.7'; }; btn.onclick = function() { navigator.clipboard.writeText(codeBlock.textContent).then(function() { btn.textContent = 'Copied!'; setTimeout(function() { btn.textContent = 'Copy'; }, 1500); }); }; codeBlock.parentElement.style.position = 'relative'; codeBlock.parentElement.appendChild(btn); }); } addCopyButtons(); // Re-run on dynamic content var observer = new MutationObserver(addCopyButtons); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Model Inputs · OrMSC/SimOR Wiki · GitHub
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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
TIMETime (minutes) on congested path
DISTDistance (miles) on congested path
TOLLToll 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 NameDescription
IVTIn-vehicle time (minutes)
BUSIVTIn-vehicle time on bus (minutes)
BRTIVTIn-vehicle time on bus-rapid transit (minutes)
LRTIVTIn-vehicle time on light rail (minutes)
COMIVTIn-vehicle time on commuter rail (minutes)
FWAITFirst wait time (minutes)
XWAITTransfer wait time (minutes)
XFERSTransfers
ACCWalk or drive access time (minutes)
EGRWalk or drive egress time (minutes)
AUXAuxiliary walk time (minutes)
FARFare ($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 NameDescription
OMAZOrigin MAZ
DMAZDestination MAZ
TIMETime
DISTANCEDistance

MAZ_MAZ_BIKE.CSV fields

Field NameDescription
OMAZOrigin MAZ
DMAZDestination 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 NameDescription
MAZMicro-analysis zone number
TAZTransportation analysis zone number
BLKGRPCensus block group number
TRACTCensus tract number
PUMACensus Public Use Microdata Number
COUNTYCensus 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.
TOTNGQHHSTotal non-group quarters households
TOTGQHHSTotal group quarters households/population
TOTHHSTotal households
TOTPOPTotal population
EMP_NRMNatural resources and mining employment (NAICS 21)
EMP_CONConstruction employment (NAICS 23)
EMP_NHTMFGNon-high tech manufacturing employment (NAICS 31-33 except NAICS 334)
EMP_HTMFGHigh tech manufacturing employment (NAICS 334)
EMP_WTWholesale trade employment (NAICS 42)
EMP_TWUTransportation, warehousing, and utilities employment (NAICS 22, 48, 49)
EMP_RCSRetail Trade employment (NAICS 44-45,)
EMP_ IFRPBSInformation, finance, real estate, professional, and business service employment (NAICS 51-56)
EMP_HCSHealth care and social assistance employment (NAICS 62)
EMP_OSVOther service employment (NAICS 81)
EMP_GOVGovernment employment (no education, NAICS 92)
EMP_EDUEducation employment (NAICS 61)
EMP_AERArts, entertainment, and recreation employment (NAICS 71)
EMP_ACCAccommodations employment (721)
EMP_FSDFood services and drinking places employment (NAICS 722)
EMP_TOTTotal employment (Can be calculated from above fields)
ENROLL_K8Grades K-8 enrollment (public and private)
ENROLL_912Grades 9-12 enrollment (public and private)
ENROLL_COLLCollege enrollment (Can add fields to denote classroom space, university parking supply, and major university indicator if implementing the university travel model)
TERMTIMETerminal time (average minutes to walk to/from parked car)
PRKCST_HRHourly parking cost ($2023 cents)
PRKCST_DAYDaily parking cost ($2023 cents)
PRKCST_MNTHMonthly parking cost ($2023 cents)
PRKSPACESTotal parking spaces
ACRESSize of MAZ in acres (Can be calculated from MAZ shapefile)
ACTIVE_ACRESActive park acres (include urban parks, golf courses, basketball/tennis/pickleball courts)
OSPC_ACRESOpen space acres (include areas of open space with trail systems)
ESCOOACCTIMEE-scooter access time (average number of minutes to walk to a shared e-scooter, 9999 if not available)
EBIKEACCTIMEE-bike access time (average number of minutes to walk to a shared e-bike, 9999 if not available)
EXTERNAL1 if an external MAZ, else 0
EXT_WORK_SIZESize term for work tours at external MAZ (total resident work tours from SWIM at the external station)
EXT_NWRK_SIZESize 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

NameTypeDescription
HOUSEHOLD_IDIntegerUnique household ID number
SERIALNOIntegerPUMS household number
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
MAZIntegerHousehold MAZ ID
TAZIntegerHousehold TAZ ID
TYPEIntegerType of housing unit 1 = Household 2 = Institutional group quarters 3 = Noninstitutional group quarters
NPIntegerNumber of people in household
HHTIntegerThe 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
HHINCADJIntegerThe annual household income in dollars in the household, adjusted to the model base year ($2023)
WORKERSIntegerThe number of workers in the household

Synthetic persons (SYNTHETIC_PERSONS.CSV) file Fields

NameTypeDescription
HOUSEHOLD_IDIntegerHousehold ID number (must agree with household file)
PERSON_NUMIntegerPerson number in household (1…n where n is total number of persons in household)
PERSON_IDIntegerPerson ID number used as index (1…n where n is total number of persons in synthetic population)
PUMA_GEOIDIntegerHousehold PUMA Geographic ID
TAZIntegerHousehold TAZ ID
MAZIntegerHousehold MAZ ID
AGEPIntegerAge of person in years
SEXIntegerSex of person in household (1 = male, 2 = female)
WKHPIntegerUsual hours worked per week in past 12 months
WKWIntegerWeeks 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
ESRIntegerEmployment 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
SCHGIntegerSchool grade -9: Not in school 1: Preschool 2: Kindergarten 3-14: grades 1-12 15: Undergrad college 16: College beyond bachelor’s degree
MILIntegerMilitary 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
NAICSPIntegerNAICS ID of work occupation (Census Code)
INDPIntegerWork industry code (Census code)
OCCPIntegerWork occupation code (Census code)
OCCCATInteger1: 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
DDRSIntegerSelf-care difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEARIntegerHearing difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DEYEIntegerVision difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DOUTIntegerIndependent living difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DPHYIntegerAmbulatory difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
DREMIntegerCognitive difficulty (-9: N/A (Less than 5 years old), 1: Yes, 2: No
TOLLFACTORFloatA user-defined factor to be applied to skimmed toll values. Default should be 1.0.
FAREFACTORFloatA 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