-
Notifications
You must be signed in to change notification settings - Fork 2
Model Outputs
ActivitySim outputs include a household file, a person file, a vehicle file, a tour file, and a trip file. Each file is attributed with unique IDs so that files can be linked to each other, some fields that are provided either in the input data from PopulationSim or derived from input attributes, and the choices made by each decision-maker in the ActivitySim model system. Additionally, ActivitySim creates both aggregate and disaggregate accessibilities.
The output household file (final_households.csv) is shown below. The table includes some of the attributes from the input household file and some derived attributes that are useful for summaries of data. Other attributes from input household data file created by PopulationSim can be appended to the table by merging with the PopulationSim output household data table by household_id. Outputs from household-level choice models are clearly indicated in the table. Outputs from person, tour, and trip level choice models can be appended to the household table by manipulating (summing, averaging, etc.) the results from those files and merging the resulting data table(s) with the household data by household_id.
| Field | Description |
|---|---|
| household_id | Household ID |
| home_MAZ | Household MAZ |
| home_TAZ | Household TAZ |
| GQ | Indicator for group quarters household (0,1) |
| income | Household income in dollars ($2023) |
| hhsize | Number of persons in household |
| HHT | Household dwelling unit type |
| num_workers | Number of workers in household |
| sample_rate | Sample rate for household |
| num_drivers | Number of licensed drivers in household |
| num_adults | Number of adults (age >= 18) in household |
| num_children | Number of children (age < 18) in household |
| auto_ownership | (Model output) Auto ownership |
| escooter_owner | (Model output) escooter ownership |
| ebike_owner | (Model output) ebike ownership |
| av_ownership | (Model output) AV ownership indicator (0,1) from AV ownership model |
| numAVowned | (Model output) Number of AVs owned from vehicle type choice model |
| workplace_location_accessibility | (Disaggregate accessibility output) Work location choice logsum |
| shopping_accessibility | (Disaggregate accessibility output) Shop destination choice logsum |
| othdiscr_accessibility | (Disaggregate accessibility output) Other discretionary choice logsum |
| num_travel_active | (Model output) Number of household members from CDAP with an active travel day (CDAP pattern M or N) |
| num_travel_active_adults | (Model output) Number of adults in household (age 18+) from CDAP with an active travel day (CDAP pattern M or N) |
| num_travel_active_children | (Model output) Number of children in household (age <18) from CDAP with an active travel day (CDAP pattern M or N) |
| school_escorting_outbound | (Model output) School escorting indicator (0,1) in outbound direction from school pickup/dropoff model |
| school_escorting_inbound | (Model output) School escorting indicator (0,1) in inbound direction from school pickup/dropoff model |
| school_escorting_outbound_cond | (Model output) School escorting indicator (0,1) in outbound direction from school pickup/dropoff conditional model |
| num_hh_joint_tours | (Model output) Number of fully joint tours from joint tour frequency/composition model |
| joint_tour_frequency_composition | (Model output) Joint tour frequency composition from joint tour frequency/composition model |
The output person file (final_persons.csv) is shown in below. Similar to the household file, the person file also contains some attributes of the input persons file and some derived attributes such as person type that are useful for data summaries. Also like the household file, outputs from person-level models including mobility models and tour frequency models are appended to the table. Other variables can be calculated and appended from merging tour and trip files by household_id and person_id if necessary.
| Field | Description |
|---|---|
| person_id | Person ID |
| household_id | Household ID |
| home_MAZ | Household MAZ |
| home_TAZ | Household TAZ |
| age | Age in years |
| PNUM | Person number in household (1…n where n is total persons in household) |
| sex | 1=male, 2=female |
| pemploy | |
| pstudent | |
| ptype | |
| educ | Educational attainment: 1 = No schooling completed 9 = High school graduate 13 = Bachelor's degree |
| naics_code | Census NAICS codes; 0 for unemployed |
| soc2 | Census SOC2 codes; 0 for unemployed |
| occupation | 0 unemployed; 1: Management, business, science, and arts; 2: Service; 3: Sales and office; 4: Natural resources, construction, and maintenance; 5: Production, transportation, and material moving; 6: Military specific occupations |
| is_adult | TRUE if age>18, else FALSE |
| is_student | TRUE if student, else FALSE |
| is_worker | TRUE if worker, else FALSE |
| time_factor_work | Simulated travel time sensitivity factor for work tours |
| time_factor_nonwork | Simulated travel time sensitivity factor for other tours |
| has_license | (Model output) TRUE if has a driver’s license, else FALSE |
| bike_comfort_level | (Model output) Bike comfort level 1: “No way no how”, 2: “Interested but concerned”, 3: “Enthused and confident”, 4: “Strong and fearless” |
| work_from_home | (Model output) TRUE if worker works from home, else FALSE |
| is_out_of_home_worker | (Model output) TRUE if worker has a usual out of home workplace else FALSE |
| is_external_worker | (Model output) TRUE if external worker, else FALSE |
| external_workplace_MAZ | (Model output) external station MAZ if external worker, else 0 |
| external_workplace_TAZ | (Model output) external station TAZ if external worker, else 0 |
| external_workplace_location_logsum | (Model output) work location choice logsum from external workplace location choice model, else 0 |
| external_workplace_modechoice_logsum | (Model output) work mode choice logsum from external workplace mode choice model, else 0 |
| school_MAZ | (Model output) school MAZ from school location choice model, else 0 |
| school_TAZ | (Model output) school TAZ from school location choice model, else 0 |
| school_location_logsum | (Model output) school location choice logsum from school location choice model, else 0 |
| school_modechoice_logsum | (Model output) school mode choice logsum from school mode choice model, else 0 |
| distance_to_school | (Model output) Distance from home to school in miles, else 0, using midday SOV medium value of time skim |
| workplace_MAZ | (Model output) work MAZ from work location choice model, else 0 |
| workplace_TAZ | (Model output) work TAZ from work location choice model, else 0 |
| workplace_location_logsum | (Model output) work location choice logsum from work location choice model, else 0 |
| workplace_modechoice_logsum | (Model output) work mode choice logsum from work mode choice model, else 0 |
| distance_to_work | (Model output) Distance from home to work in miles, else 0, using the midday SOV medium value of time skim |
| expected_daily_parkcost | (Model output) expected parking cost at work in cents ($2023) |
| transit_pass_subsidy | (Model output) 1 if transit pass is subsidized, else 0 |
| transit_pass_ownership | (Model output) 1 if owns a transit pass, else 0 |
| free_parking_at_work | (Model output) TRUE if has free parking at work, else FALSE |
| telecommute_frequency | (Model output) Days worker telecommutes per week, 0-4 |
| cdap_activity | (Model output) Daily activity pattern M: Mandatory, N: Non-mandatory, H: Home |
| mandatory_tour_frequency | (Model output) Mandatory tour frequency choice (0: no mandatory tours, 1: 1 work tour, 2: 2 work tours, 3: 1 school tour, 4: 2 school tours, 5: 1 work tour and 1 school tour |
| num_work_tours | (Model output) Number of work tours (0, 1, or 2) |
| num_school_tours | (Model output) Number of school tours (0, 1, or 2) |
| escorted_in_outbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if student is escorted in the outbound direction, else FASE |
| escorted_in_inbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if student is escorted in the inbound direction, else FASE |
| num_pure_escort_chap_tours | (Model output) Result from school pickup/dropoff model. Number of pure escort tours as chaperone |
| num_pure_escort_chap_outbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if performs a pure escort activity in the outbound direction, else FALSE |
| num_pure_escort_chap_inbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if performs a pure escort activity in the inbound direction, else FALSE |
| rideshare_escort_chap_outbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if performs a dropoff activity on a work tour in the outbound direction, else FALSE |
| rideshare_escort_chap_inbound_dir | (Model output) Result from school pickup/dropoff model. TRUE if performs a pickup activity on a work tour in the inbound direction, else FALSE |
| num_joint_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint tours |
| num_joint_shop_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint shop tours |
| num_joint_maint_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint maintenance tours |
| num_joint_eatout_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint eating out tours |
| num_joint_social_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint social tours |
| num_joint_discr_tours | (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint discretionary tours |
| non_mandatory_tour_frequency | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual non-mandatory tours |
| num_indiv_escort_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Number of individual escort tours |
| num_indiv_shop_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual shop tours |
| num_indiv_maint_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual maintenance tours |
| num_indiv_eatout_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual eating out tours |
| num_indiv_social_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual social tours |
| num_indiv_discr_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual discretionary tours |
| num_indiv_tours | (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual non-mandatory tours |
| num_atwork_subtours | (Model output) At-work subtour Frequency model results: Total at-work subtours |
| total_home_tours | (Model output) Total home-based tours |
| total_tours | (Model output) Total tours including mandatory tours, tours generated by the school pickup/dropoff model, joint tours, individual tours, and at-work subtours |
The output vehicle file (final_vehicles.csv) is shown below. This file has one record for each vehicle owned by each household. The file is created entirely from the vehicle type choice model.
| Field | Description |
|---|---|
| vehicle_id | Vehicle ID |
| household_id | Household ID |
| vehicle_num | Vehicle number from Vehicle Type Choice Model alternatives file |
| vehicle_type | A string field consisting of [Body type][age][fuel type] and an optional extension “_AV” if the vehicle is an autonomous vehicle |
| auto_operating_cost | Auto operating cost in cents ($2023) |
| range | Electric vehicle range in miles |
| MPG | Average miles per gallon or equivalent |
| KWH | Kilowatt hours of energy consumed |
The output tour file (final_tours.csv) is shown in below. The file has one record per tour; joint tours are also represented as one record per joint tour. In other words, there are at least two participants on each joint tour, but the joint tour is represented only once on the tour file. The tour_id field is unique in the tour file and can be used to join the tour file to any calculations made in the trip file.
| Field | Description |
|---|---|
| tour_id | Tour ID |
| person_id | Person ID |
| household_id | Household ID |
| parent_tour_id | Parent tour ID if this is a work-based subtour, else 0 |
| tour_category | The category string of the primary activity on the tour. “mandatory”, “joint”, “non_mandatory”, “atwork” |
| tour_type | Purpose string of the primary activity on the tour: For home-based tours, the purposes are: “work”, “school”, “escort”, “shopping”, “othmaint”, “eatout”, “social”, and “othdiscr”. For work-based subtours, the purposes are “business”, “eat”, and “maint”. |
| primary_purpose | Recoding of tour_type where all atwork subtours are identified as “atwork” regardless of destination purpose |
| tour_type_count | The total number of tours within the tour_type |
| tour_type_num | The sequential number of the tour within the tour_category. In other words if a person has 3 tours; 1 work tour and 2 non-mandatory tours, the tour_type_num would be 1 for the work tour, 1 for the first non-mandatory tour and 2 for the second non-mandatory tour. |
| number_of_participants | Number of participants on the tour for fully joint tours, else 1 |
| participant_IDs | A space-delimited string file listing IDs of each joint tour participant; blank for individual tours |
| origin_MAZ | MAZ number of tour origin |
| destination_MAZ | MAZ number of primary destination |
| origin_TAZ | TAZ number of tour origin |
| destination_TAZ | TAZ number of primary destination |
| start | Time period of departure from tour origin (1…48) |
| end | Time period of arrival back at tour origin (1…48) |
| duration | Duration of the tour including all activity episodes and travel in periods (1…48) |
| school_esc_outbound | For school tours where the child is being escorted according to the school pickup/dropoff model, this string field indicates the type of escorting in the outbound direction: “pure_escort” or “rideshare” |
| school_esc_inbound | For school tours where the child is being escorted according to the school pickup/dropoff model, this string field indicates the type of escorting in the inbound direction: “pure_escort” or “rideshare” |
| num_escortees | Number of children being escorted on this tour (max of outbound and inbound direction) |
| chaperone_ID_outbound | Tour ID of chaperone if child is escorted to school in outbound direction |
| chaperone_ID_inbound | Tour ID of chaperone if child is escorted to school in inbound direction |
| composition | Composition of tour if joint “adults”, “children” |
| is_external_tour | TRUE if primary destination activity is external to region, else FALSE |
| destination_logsum | Logsum from tour destination choice model |
| tour_mode | Tour mode string “DRIVEALONE”, “SHARED2”, “SHARED3”, “WALK”, “BIKE”, “ESCOOTER”, “EBIKE”, “WLKTRAN”, “PNRTRAN”, “KNRTRAN”, BIKTRAN”, “TAXI”, “TNC_SINGLE”, “TNC_POOLED”, “SCHBUS” |
| mode_choice_logsum | Logsum from tour mode choice model |
| selected_vehicle | Selected vehicle from vehicle type choice model; a string field consisting of [Body type][age][fuel type] and an optional extension “_AV” if the vehicle is an autonomous vehicle |
| atwork_subtour_frequency | At-work subtour frequency choice model result; a string field with the following values: “no_subtours”, “business1”, “business2”, “eat”, “eat_business”, “maint”, or blank for non-work tours. |
| atwork_subtours | Number of at-work subtours generated |
| stop_frequency | Stop frequency choice model result; a string value of the form [0…n]out_[0…n]in where the first number is the number of outbound stops and the second number is the number of inbound stops |
| stops_outbound | Number of outbound stops |
| stops_inbound | Number of inbound stops |
| VOT | Value of time for tour in dollars/hour ($2023) |
| time_sensitivity | Time sensitivity factor for trip |
[Helpful context provided from Joel Freedman, RSG on 5-8-25]
There are three main reasons for breaking out joint travel:
- More accurate household-level trip rates. Why? Consider how a trip-based model works. Trip rates are calculated at the household level and one of the explanatory variables is household size. Use of this variable implicitly accounts for the effects of household-level travel decisions based on the number of persons in the household. If we were to model everything at the person level in an activity-based model, the influence of one household members’ travel decisions on other household members can only be loosely considered via a household size interaction effect. We use models like CDAP and joint travel generation to get a more accurate depiction of person level travel by explicitly considering the travel decisions of other household members.
- More accurate mode choice elasticities. Why? Because most joint travel occurs because of household needs and joint activity participation, rather than as a mode choice decision. For example, going out to dinner, giving a child a ride to\from school, going to the park or a social event. These are not mode decisions like the choice between driving and transit. They are activity participation decisions. So treating them as if they were mode decisions (e.g. drive alone vs. shared ride) is likely to over-state the elasticity with respect to network level of service. Worsening auto times would probably over-state the reduction in joint travel and introducing an HOV lane would likely over-state the increase in joint travel.
- Explicit representation of auto availability. Ultimately if we want to model whether a household auto is available for a given travel episode, which is a worthwhile goal in AB modeling IMO, then we need an explicit representation of joint travel. Otherwise we can’t identify how many travel episodes there are explicitly, and we cant explicitly model whether a car is available for those episodes.
We account for probably around 85% of joint travel explicitly in ActivitySim, the two biggest components are:
- fully joint travel across household members for the purpose of engaging in joint activity participation across all activities on the tour (which could include parents traveling with children to watch them participate in sports events and so on, even when they aren’t actively participating in such events)
- partially joint travel for the purpose of dropping off children or picking up children from school
The remaining 15% is quite complicated – it includes dropping off or picking up household members at work or other locations not including school, and joint travel with non-household members. This travel is treated as if it were a mode choice decision.
The output trip file (final_trips.csv) is shown below. The file has one record per trip, with trips on joint tours also represented as one record which includes multiple participants. The trip_id field is unique. A number of tour fields are provided in the trip file in order to allow an analyst to summarize trip data more easily.
ActivitySim can be configured to write out travel data used in model calculations such as the times and costs experienced by travelers as a result of the choices they made. The SANDAG ActivitySim model was configured to write out this data and will be a good starting point for the Oregon models.. The data can be summarized to understand total VMT by person or household, fuel consumption, energy consumption, greenhouse gas emissions, total travel time expenditures, total travel cost expenditures, and so on. The data can also be annualized if desired. Annualization factors, energy consumption parameters, and greenhouse gas generation parameters would need to be developed and applied to the results. These data items are stored as additional fields in the output trip file shown in Table 37.
| Field | Description |
|---|---|
| trip_id | Trip ID |
| person_id | Person ID |
| household_id | Household ID |
| tour_id | Tour ID |
| vehicle_id | Vehicle ID if auto trip |
| outbound | TRUE if trip is in the outbound direction, else FALSE |
| trip_num | Sequential number of trip by direction (1…n where n is maximum trips on half-tour, e.g. max stops + 1) |
| primary_purpose | Primary purpose of tour (see tour table) |
| origin_MAZ | MAZ of trip origin |
| destination_MAZ | MAZ of trip destination |
| origin_TAZ | TAZ of trip origin |
| destination_TAZ | TAZ of trip destination |
| escort_participants | Space delimited string field listing person IDs of other children escorted on this trip, else null |
| chaperone_tour_ID | Tour ID of chaperone’s tour if trip is a child being escorted to or from school |
| school_escort_direction | String field indicating whether child is being dropped off at school (“outbound”) or picked up from school (“inbound”). “null” if not a child being picked up or dropped off. |
| destination_logsum | Logsum from trip destination choice model. -9 if destination is tour origin or primary destination. |
| depart | Departure time period (1…48) |
| trip_mode | Trip mode string “DRIVEALONE”, “SHARED2”, “SHARED3”, “WALK”, “BIKE”, “ESCOOTER”, “EBIKE”, “WLKTRAN”, “PNRTRAN”, “KNRTRAN”, BIKTRAN”, “TAXI”, “TNC_SINGLE”, “TNC_POOLED”, “SCHBUS” |
| mode_choice_logsum | Logsum from trip mode choice model |
| VOT | Value of time for trip in dollars per hour ($2023) |
| time_sensitivity | Time sensitivity factor for trip |
| parking_MAZ | Parking MAZ from parking location choice model, else -1 |
| parking_TAZ | Parking TAZ from parking location choice model, else -1 |
| trip_period | A string indicating the skim period for the trip (“EA”,”AM”,”MD”,”PM’,”EV”) |
| tour_participants | Number of joint tour participants if joint tour, else 1 |
| tour_participant_IDs | Space delimited string field of person IDs for each joint tour participant, else null |
| sample_rate | Sample rate for trip |
| trip_veh_body | Body type of vehicle used for trip, else “null” |
| trip_veh_age | Age of vehicle used for trip, else “null” |
| trip_veh_fueltype | Fuel type of vehicle used for trip, else “null” |
| origin_purpose | Origin purpose of trip (see primary purpose codes) |
| destination_purpose | Destination purpose of trip (see primary purpose codes) |
| auto_time | Time spent in autos on the trip (including any auto mode time, PNR and KNR access/egress time, time in taxi/TNC-single, TNC-shared, or school bus. TNC-shared time should account for TNC-shared time factor) |
| auto_distance | Distance traveled in autos on the trip (including any auto mode distance, PNR and KNR access/egress distance, distance in taxi/TNC-single, TNC-shared, or school bus. TNC-shared distance should account for TNC-shared time factor) |
| auto_tolls | Skimmed toll costs for auto modes on the trip (including any auto mode tolls, PNR and KNR access/egress tolls, tolls for taxi/TNC-single, TNC-shared, or school bus). Considers toll discount specified in input person file. |
| walk_time | Time spent walking (includes walk mode, transit walk access/egress/auxiliary, terminal time for auto trips, and walk time from parking zone to activity location zone) |
| walk_dist | Distance spent walking (includes walk mode, transit walk access/egress/auxiliary, distance calculated from terminal time, and distance from parking zone to activity location). |
| bike_logsum | Bicycle logsum used in trip mode choice model |
| bike_time | Bicycle time including bike mode time and bike-transit access/egress time |
| bike_distance | Bicycle distance including bike mode distance and distance calculated from bike-transit access/egress time |
| escooter_time | e-scooter time |
| escooter_distance | e-scooter distance |
| ebike_time | e-bike time |
| ebike_distance | e-bike distance |
| wait_time | Time spent waiting for transit (first wait + transfer wait), school bus, and ride-hail modes, as well as time spent accessing shared micromobility |
| parking_cost | Parking costs at trip origin and destination, calculated as one-half of the costs at each end, with subsidies considered. |
| auto_operating_cost | Auto operating cost for trip, including auto modes and PNR/KNR-transit auto operating costs |
| transit_fare | Transit fare (including discounts) paid for trip |
| ridehail_fare | Ride-hail fare paid for trip |
| micromobility_cost | Cost of using shared micromobility |
| MPG | Miles per gallon of vehicle used for trip |
| fuel_consumed | Fuel consumed for trip |