diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5302ac4..c4edf9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,15 @@ jobs: uv pip install -e . --no-deps uv pip list + # Clone the ActivitySim visualizer and build its virtual environment + - name: Set up ActivitySim visualizer + run: | + mkdir -p $GITHUB_WORKSPACE/ext_dependencies + cd $GITHUB_WORKSPACE/ext_dependencies + git clone --branch main https://github.com/RSGInc/activitysim_visualizer.git + cd activitysim_visualizer + uv sync + # Run the test - name: Run Metro cropped example test run: | diff --git a/README.md b/README.md index 5813bd4..8d1b2fd 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Before running the model, make sure the following are available: `sandag_parking` is not required for a typical model run. It is only needed when preparing land use inputs that require expected parking costs. In that workflow, it can be run once to generate the parking cost input file used by the preprocessor. - If permissions errors arise, try running the setup with Administrator privileges. The Visum Python package install in particular may require elevated permissions. + **If permissions errors arise, try running the setup with Administrator privileges. The Visum Python package install in particular may require elevated permissions.** 2. **Place the Visum version file** diff --git a/resident/configs/accessibility.yaml b/resident/configs/accessibility.yaml index 13b96c2..34ba094 100644 --- a/resident/configs/accessibility.yaml +++ b/resident/configs/accessibility.yaml @@ -1,2 +1,3 @@ # columns from land_use table to add to df land_use_columns: ['EMP_RET', 'EMP_TOTAL', 'TOTHHS', 'walk_dist_local_bus'] +explicit_chunk: 0.2 \ No newline at end of file diff --git a/resident/configs/annotate_households.csv b/resident/configs/annotate_households.csv index 11792cf..4f7c442 100644 --- a/resident/configs/annotate_households.csv +++ b/resident/configs/annotate_households.csv @@ -26,4 +26,5 @@ number of retired adults in the household,num_retired_adults,"_PERSON_COUNT('pty ,num_hh_in_zone,"reindex(households.groupby('home_zone_id').size(), households.home_zone_id)" #,multiple_auto_hh_in_zone,"reindex_i(df.groupby('home_zone_id').multiple_auto_hh.sum(), df.index)" #,multiple_auto_hh_in_zone_share,multiple_auto_hh_in_zone/num_hh_in_zone -hh owns an ebike,ebike_owner,"rng.random_for_df(households)[:,0] < ebikeownership" \ No newline at end of file +hh owns an ebike,ebike_owner,"rng.random_for_df(households)[:,0] < ebikeownership" +Retired Adults Only Households,retired_adults_only_hh,(households.hhsize > 0) & (households.hhsize == num_retired_adults) diff --git a/resident/configs/annotate_persons.csv b/resident/configs/annotate_persons.csv index c92ca12..53dc48e 100644 --- a/resident/configs/annotate_persons.csv +++ b/resident/configs/annotate_persons.csv @@ -11,20 +11,20 @@ employment status type,pemploy,"pd.Series(np.zeros(len(persons)), index=persons. ,pemploy,"np.where((persons.age >= 16) & ((persons.ESR == 3) | (persons.ESR == 6)), PEMPLOY_NOT, pemploy)" ,pemploy,"np.where((persons.age>=16) & (persons.ESR != 3) & (persons.ESR != 6) & (persons.WKHP >= 35) & (persons.WKW >= 1) & (persons.WKW <= 4), PEMPLOY_FULL, pemploy)" student category,pstudent,"pd.Series(np.zeros(len(persons)), index=persons.index)" -,pstudent,"np.where((pemploy == 1) & (persons.age >= 16), PSTUDENT_NOT, pstudent)" -,pstudent,"np.where((pemploy == 1) & (persons.age < 16), PSTUDENT_GRADE_OR_HIGH, pstudent)" +,pstudent,"np.where((pemploy == PEMPLOY_FULL) & (persons.age >= 16), PSTUDENT_NOT, pstudent)" +,pstudent,"np.where((pemploy == PEMPLOY_FULL) & (persons.age < 16), PSTUDENT_GRADE_OR_HIGH, pstudent)" ,pstudent,"np.where((persons.SCHG < 1) & (persons.age >= 16), PSTUDENT_NOT, pstudent)" ,pstudent,"np.where((persons.SCHG < 1) & (persons.age < 16), PSTUDENT_GRADE_OR_HIGH, pstudent)" -,pstudent,"np.where((persons.SCHG >= 15) & (persons.age >= 16) & (pemploy != 1), PSTUDENT_UNIVERSITY, pstudent)" -,pstudent,"np.where((persons.SCHG >= 15) & (persons.age < 16) & (pemploy != 1), PSTUDENT_GRADE_OR_HIGH, pstudent)" -,pstudent,"np.where((persons.age <= 19) & (pemploy != 1) & (persons.SCHG >=1) & (persons.SCHG<=14), PSTUDENT_GRADE_OR_HIGH, pstudent)" -,pstudent,"np.where((persons.age > 19) & (pemploy != 1) & (persons.SCHG >=1) & (persons.SCHG<=14), PSTUDENT_UNIVERSITY, pstudent)" +,pstudent,"np.where((persons.SCHG >= 15) & (persons.age >= 16), PSTUDENT_UNIVERSITY, pstudent)" +,pstudent,"np.where((persons.SCHG >= 15) & (persons.age < 16), PSTUDENT_GRADE_OR_HIGH, pstudent)" +,pstudent,"np.where((persons.age <= 19) & (persons.SCHG >=1) & (persons.SCHG<=14), PSTUDENT_GRADE_OR_HIGH, pstudent)" +,pstudent,"np.where((persons.age > 19) & (persons.SCHG >=1) & (persons.SCHG<=14), PSTUDENT_UNIVERSITY, pstudent)" ,pstudent,"np.where(pstudent == 0, 3, pstudent)" person type,ptype,"pd.Series(PTYPE_NONWORK, index=persons.index)" ,ptype,"np.where(persons.age >= 65, PTYPE_RETIRED, ptype)" ,ptype,"np.where(pemploy == 2, PTYPE_PART, ptype)" ,ptype,"np.where(pemploy == 1, PTYPE_FULL, ptype)" -,ptype,"np.where((persons.age >= 5) & ((persons.age < 18) | ((persons.age == 18) & (pstudent == 1))), PTYPE_SCHOOL, ptype)" +,ptype,"np.where(((persons.age >= 5) & (persons.age < 18)) | (persons.age.isin([18,19]) & (pstudent == PSTUDENT_GRADE_OR_HIGH)), PTYPE_SCHOOL, ptype)" ,ptype,"np.where(persons.age < 5, PTYPE_PRESCHOOL, ptype)" ,ptype,"np.where(pstudent == 2, PTYPE_UNIVERSITY, ptype)" is_student,is_student,"np.isin(pstudent, [PSTUDENT_GRADE_OR_HIGH, PSTUDENT_UNIVERSITY])" diff --git a/resident/configs/constants.yaml b/resident/configs/constants.yaml index d737ae9..dfe461a 100644 --- a/resident/configs/constants.yaml +++ b/resident/configs/constants.yaml @@ -330,4 +330,4 @@ OpVTCr: 0.1442 # model region constants KNR_available: True # SKATS does not have KNR, so set to False in configs_skats/constants.yaml model_region_name: "Metro" -MSA_POP: 2500000 # used in vehicle type choice model \ No newline at end of file +MSA_POP: 2500000 # used in vehicle type choice model diff --git a/resident/configs/disaggregate_accessibility.yaml b/resident/configs/disaggregate_accessibility.yaml index 425c141..e180708 100644 --- a/resident/configs/disaggregate_accessibility.yaml +++ b/resident/configs/disaggregate_accessibility.yaml @@ -93,7 +93,7 @@ CREATE_TABLES: 2: "N" occupation: # occupation codes 1: 1 # Management Occupations - 2: -1 # Non-worker + 2: 999 # Non-worker PROTO_TOURS: index_col: proto_tour_id diff --git a/resident/configs/external_non_mandatory_identification.yaml b/resident/configs/external_non_mandatory_identification.yaml index c2a882b..e60d4fc 100644 --- a/resident/configs/external_non_mandatory_identification.yaml +++ b/resident/configs/external_non_mandatory_identification.yaml @@ -9,3 +9,5 @@ LOGIT_TYPE: MNL EXTERNAL_COL_NAME: is_external_tour # set to True if not external but CHOOSER_FILTER_COLUMN_NAME is True INTERNAL_COL_NAME: is_internal_tour + +EXTERNAL_TOUR_ALT: 0 \ No newline at end of file diff --git a/resident/configs/external_worker_identification.csv b/resident/configs/external_worker_identification.csv index 9a22070..6e26b59 100644 --- a/resident/configs/external_worker_identification.csv +++ b/resident/configs/external_worker_identification.csv @@ -1,14 +1,14 @@ -Label,Description,Expression,work_external,work_internal -util_dist_to_nearest_ext_station,Distance to nearest external station,dist_to_external_zone,coef_dist_to_nearest_ext_station, -util_size_of_nearest_ext_station,Size of nearest external station,"@np.log1p(reindex(land_use.EXTERNAL,df.closest_external_zone))",coef_size_of_nearest_ext_station, -util_dist_lt_2p5,Distance less than 2.5 miles,"@np.where(df.dist_to_external_zone<2.5,1,0)",coef_dist_lt_2p5, -util_part_time,Part time worker,"@np.where(df.pemploy == 2,1,0)",coef_part_time, -util_inc_lt15,Household Income less than $15k,@(df.income<15000),coef_inc_lt15, -util_inc_15_25,Household income $15k-$25k,@(df.income>=15000) & (df.income<25000) ,coef_inc_15_25, -util_inc_25_50,Household Income $25k-$50k,@(df.income>=25000) & (df.income<50000) ,coef_inc_25_50, -util_inc_150_250,Household Income $150k-$50k,@(df.income>=150000) * (df.income<250000) ,coef_inc_150_250, -util_inc_250plus,Household Income $250k+,@(df.income>=250000),coef_inc_250plus, -util_asc,Alternative-specific constant for external worker,1,asc_external_worker, -util_global_switch,Global switch to have everything internal,@NO_EXTERNAL,-999, -util_2016,Constant for pre-COVID conditions,@PRE_COVID,asc_external_2016, -util_calib,Constant for calibration,1,0.35, +Label,Description,Expression,work_internal,work_external +util_dist_to_nearest_ext_station,Distance to nearest external station,dist_to_external_zone,,coef_dist_to_nearest_ext_station +util_size_of_nearest_ext_station,Size of nearest external station,"@np.log1p(reindex(land_use.EXTERNAL,df.closest_external_zone))",,coef_size_of_nearest_ext_station +util_dist_lt_2p5,Distance less than 2.5 miles,"@np.where(df.dist_to_external_zone<2.5,1,0)",,coef_dist_lt_2p5 +util_part_time,Part time worker,"@np.where(df.pemploy == 2,1,0)",,coef_part_time +util_inc_lt15,Household Income less than $15k,@(df.income<15000),,coef_inc_lt15 +util_inc_15_25,Household income $15k-$25k,@(df.income>=15000) & (df.income<25000) ,,coef_inc_15_25 +util_inc_25_50,Household Income $25k-$50k,@(df.income>=25000) & (df.income<50000) ,,coef_inc_25_50 +util_inc_150_250,Household Income $150k-$50k,@(df.income>=150000) * (df.income<250000) ,,coef_inc_150_250 +util_inc_250plus,Household Income $250k+,@(df.income>=250000),,coef_inc_250plus +util_asc,Alternative-specific constant for external worker,1,,asc_external_worker +util_global_switch,Global switch to have everything internal,@NO_EXTERNAL,,-999 +util_2016,Constant for pre-COVID conditions,@PRE_COVID,,asc_external_2016 +util_calib,Constant for calibration,1,,0.35 diff --git a/resident/configs/external_worker_identification.yaml b/resident/configs/external_worker_identification.yaml index e9660b6..fc81619 100644 --- a/resident/configs/external_worker_identification.yaml +++ b/resident/configs/external_worker_identification.yaml @@ -4,6 +4,8 @@ COEFFICIENTS: external_worker_identification_coeffs.csv LOGIT_TYPE: MNL +EXTERNAL_WORKER_ALT: 1 + # boolean column to filter choosers (True means keep) # will only expose these people to the model CHOOSER_FILTER_COLUMN_NAME: is_out_of_home_worker diff --git a/resident/configs/joint_tour_frequency_composition.csv b/resident/configs/joint_tour_frequency_composition.csv index 8a1bb7b..be23d9d 100644 --- a/resident/configs/joint_tour_frequency_composition.csv +++ b/resident/configs/joint_tour_frequency_composition.csv @@ -21,7 +21,7 @@ util_constant_for_2_visiting_tour,Constant for 2 visiting tour,@df.social==2,coe util_constant_for_1_visiting_tour,Constant for 1 visiting tour,@df.social==2,coef_constant_for_1_visiting_tour util_1_visiting_and_1_discretionary_tour,1 Visiting and 1 Discretionary Tour,@((df.social==1) & (df.othdiscr==1)),coef_1_visiting_and_1_discretionary_tour util_constant_for_2_discretionary_tour,Constant for 2 discretionary tour,othdiscr==2,coef_constant_for_2_discretionary_tour -util_constant_for_2_discretionary_tour,Constant for 2 discretionary tour,othdiscr==1,coef_constant_for_1_discretionary_tour +util_constant_for_1_discretionary_tour,Constant for 1 discretionary tour,othdiscr==1,coef_constant_for_1_discretionary_tour util_number_of_active_full_time_workers_shopping,Number of Active Full time workers /Shopping,num_travel_active_full_time_workers * shopping,coef_number_of_active_full_time_workers_shopping util_number_of_active_nonworkers_shopping,Number of Active Non-workers /Shopping,num_travel_active_non_workers * shopping,coef_number_of_active_nonworkers_shopping util_number_of_active_pre_driving_age_school_children_shopping,Number of Active Pre- Driving Age School Children /Shopping,num_travel_active_pre_driving_age_school_kids * shopping,coef_number_of_active_pre_driving_age_school_children_shopping diff --git a/resident/configs/logging.yaml b/resident/configs/logging.yaml index 71162f1..9342be6 100644 --- a/resident/configs/logging.yaml +++ b/resident/configs/logging.yaml @@ -46,12 +46,12 @@ logging: class: logging.Formatter # format: '%(levelname)s - %(name)s - %(message)s' format: '%(levelname)s - %(message)s' - datefmt: '%d/%m/%Y %H:%M:%S' + datefmt: '%Y-%m-%dT%H:%M:%S%z' fileFormatter: class: logging.Formatter format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' - datefmt: '%d/%m/%Y %H:%M:%S' + datefmt: '%Y-%m-%dT%H:%M:%S%z' elapsedFormatter: (): activitysim.core.tracing.ElapsedTimeFormatter diff --git a/resident/configs/non_mandatory_tour_destination.csv b/resident/configs/non_mandatory_tour_destination.csv index 116360a..754a4db 100644 --- a/resident/configs/non_mandatory_tour_destination.csv +++ b/resident/configs/non_mandatory_tour_destination.csv @@ -71,4 +71,4 @@ util_joint_0_2_ASC,joint tours in 0_2bin calibration constant,"@(_DIST.between(0 util_joint_2_5_ASC,joint tours in 2_5bin calibration constant,"@(_DIST.between(2,5)) * (df.get('tour_category', default=False) == 'joint')",,coef_abm3_dist_2_5jointmaint_asc,coef_abm3_dist_2_5jointdisc_asc,coef_abm3_dist_2_5jointmaint_asc,coef_abm3_dist_2_5jointdisc_asc,coef_abm3_dist_2_5jointdisc_asc util_joint_5_10_ASC,joint tours in 5_10bin calibration constant,"@(_DIST.between(5,10)) * (df.get('tour_category', default=False) == 'joint')",,coef_abm3_dist_5_10jointmaint_asc,coef_abm3_dist_5_10jointdisc_asc,coef_abm3_dist_5_10jointmaint_asc,coef_abm3_dist_5_10jointdisc_asc,coef_abm3_dist_5_10jointdisc_asc util_joint_10_30_ASC,joint tours in 10_30bin calibration constant,"@(_DIST.between(10,30)) * (df.get('tour_category', default=False) == 'joint')",,coef_abm3_dist_10_30jointmaint_asc,coef_abm3_dist_10_30jointdisc_asc,coef_abm3_dist_10_30jointmaint_asc,coef_abm3_dist_10_30jointdisc_asc,coef_abm3_dist_10_30jointdisc_asc -util_indiv_dist_ASC,indiv tours in distance calibration constant,"@(_DIST) * (df.get('tour_category', default=False) == 'joint')",,0.10,,0.10,, \ No newline at end of file +util_joint_dist_ASC,indiv tours in distance calibration constant,"@(_DIST) * (df.get('tour_category', default=False) == 'joint')",,0.10,,0.10,, \ No newline at end of file diff --git a/resident/configs/non_mandatory_tour_destination.yaml b/resident/configs/non_mandatory_tour_destination.yaml index f8daa2c..6813065 100644 --- a/resident/configs/non_mandatory_tour_destination.yaml +++ b/resident/configs/non_mandatory_tour_destination.yaml @@ -3,6 +3,7 @@ SPEC: non_mandatory_tour_destination.csv COEFFICIENTS: non_mandatory_tour_destination_coefficients.csv SAMPLE_SIZE: 30 +ESTIMATION_SAMPLE_SIZE: 30 SIZE_TERM_SELECTOR: non_mandatory diff --git a/resident/configs/non_mandatory_tour_frequency_alternatives.csv b/resident/configs/non_mandatory_tour_frequency_alternatives.csv index 8cda1b4..690e8c0 100644 --- a/resident/configs/non_mandatory_tour_frequency_alternatives.csv +++ b/resident/configs/non_mandatory_tour_frequency_alternatives.csv @@ -201,4 +201,5 @@ escort,shopping,othmaint,eatout,social,othdiscr 2,1,1,0,1,1 2,1,2,1,0,0 2,0,2,1,1,0 +2,0,2,0,1,1 2,1,1,1,1,0 diff --git a/resident/configs/non_mandatory_tour_scheduling.yaml b/resident/configs/non_mandatory_tour_scheduling.yaml index 1850c12..f18da06 100644 --- a/resident/configs/non_mandatory_tour_scheduling.yaml +++ b/resident/configs/non_mandatory_tour_scheduling.yaml @@ -30,6 +30,7 @@ SIMULATE_CHOOSER_COLUMNS: - num_non_escort_tours - num_add_shop_maint_tours - num_add_soc_discr_tours + - retired_adults_only_hh LOGSUM_SETTINGS: tour_mode_choice.yaml diff --git a/resident/configs/school_escorting.yaml b/resident/configs/school_escorting.yaml index b4524a9..b038dee 100644 --- a/resident/configs/school_escorting.yaml +++ b/resident/configs/school_escorting.yaml @@ -12,6 +12,8 @@ ALTS: school_escorting_alts.csv LOGIT_TYPE: MNL +ESCORTEE_AGE_CUTOFF: 19 + NUM_ESCORTEES: 3 NUM_CHAPERONES: 2 diff --git a/resident/configs/school_location.csv b/resident/configs/school_location.csv index 4ac1362..04ab1f2 100644 --- a/resident/configs/school_location.csv +++ b/resident/configs/school_location.csv @@ -2,7 +2,7 @@ Label,Description,Expression,university,highschool,gradeschool,preschool local_dist,,"_DIST@skims[('SOV_M_DIST', 'MD')]",1,1,1,1 dest_college_enroll,total the destination TAZ (summed over MAZs and df index is dest_TAZ),"_dCOLLEGEENROLL@reindex(land_use.groupby('TAZ').COLLEGEENROLL.sum(), df.index)",1,1,1,1 util_mode_choice_logsum,Mode choice logsum,mode_choice_logsum,coef_mclogsum_univ,coef_mclogsum_hsch,coef_mclogsum_gs,coef_mclogsum_ps -util_Distance,Distance,@_DIST.clip(upper=50),coef_dist_univ,coef_dist_hsch,coef_dist_gs,coef_dist_ps +util_Distance,Distance,@_DIST.clip(upper=50).fillna(0),coef_dist_univ,coef_dist_hsch,coef_dist_gs,coef_dist_ps util_log_Distance,log_Distance,@np.log(_DIST.clip(upper=50)+1),coef_lndist_univ,coef_zero,coef_zero,coef_lndist_ps util_Distance_squareroot,Squareroot of distance,@_DIST.clip(upper=50)**0.5,coef_sqrtdist_univ,coef_sqrtdist_hsch,coef_sqrtdist_gs,coef_sqrtdist_ps util_Distance_squared,Distance_squared,@_DIST.clip(upper=50)**2,coef_sqrddist_univ,coef_sqrddist_hsch,coef_sqrddist_gs,coef_sqrddist_ps @@ -11,10 +11,10 @@ util_Distance_worker_univ,Distance for a worker_university specific,"@np.where(d util_Distance_largeuniversity_univ,Distance for large university enrollment,"@np.where(_dCOLLEGEENROLL>5000, _DIST.clip(upper=50), 0)",coef_univenrol_dist_univ,coef_zero,coef_zero,coef_zero util_Distance _lowincome_prek,Distance - low income,"@np.where(df.income<60000, _DIST.clip(upper=50), 0)",coef_zero,coef_zero,coef_zero,coef_lowincdist_ps util_Distance - age03_prek,Distance - age 0 to 3,"@np.where(df.age<3,_DIST.clip(upper=50),0)",coef_zero,coef_zero,coef_zero,coef_age03dist_ps -util_LoggedSize,Logged Size variable - University specific,@df['size_term'].apply(np.log1p),coef_lnSize,coef_lnSize,coef_lnSize,coef_lnSize +util_LoggedSize,Logged Size variable - University specific,@df['size_term'].fillna(0).apply(np.log1p),coef_lnSize,coef_lnSize,coef_lnSize,coef_lnSize util_no_attractions,no attractions if logged university size is zero,@df['size_term']==0,-999,-999,-999,-999 util_sample_of_corrections_factor,Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1,1,1,1 -util_sp_utility_adjustment,shadow price utility adjustment,@df['shadow_price_utility_adjustment'],1,1,1, +util_sp_utility_adjustment,shadow price utility adjustment,@df['shadow_price_utility_adjustment'].fillna(0),1,1,1, #,,,,,, util_ABM2calibration_0-1miles,ABM2 calibration_0-1miles,@(_DIST<1),coef_zero,coef_abmcalib_01miles,coef_abmcalib_01miles,coef_abmcalib_01miles util_ABM2calibration_1-2miles,ABM2 calibration_1-2miles,@(_DIST<2) * (_DIST>=1),coef_zero,coef_abmcalib_12miles,coef_abmcalib_12miles,coef_abmcalib_12miles diff --git a/resident/configs/school_location.yaml b/resident/configs/school_location.yaml index 7c3c2b1..6ff92cd 100644 --- a/resident/configs/school_location.yaml +++ b/resident/configs/school_location.yaml @@ -1,5 +1,5 @@ SAMPLE_SIZE: 30 -ESTIMATION_SAMPLE_SIZE: 10 +ESTIMATION_SAMPLE_SIZE: 30 SIMULATE_CHOOSER_COLUMNS: - home_zone_id diff --git a/resident/configs/tour_mode_choice.yaml b/resident/configs/tour_mode_choice.yaml index 326e9de..cc1d12d 100644 --- a/resident/configs/tour_mode_choice.yaml +++ b/resident/configs/tour_mode_choice.yaml @@ -78,6 +78,7 @@ LOGSUM_CHOOSER_COLUMNS: - age - SEX - auto_ownership + - num_drivers - num_adults - ptype - number_of_participants diff --git a/resident/configs/tour_mode_choice_annotate_choosers_preprocessor.csv b/resident/configs/tour_mode_choice_annotate_choosers_preprocessor.csv index b0bb02b..055ce6d 100644 --- a/resident/configs/tour_mode_choice_annotate_choosers_preprocessor.csv +++ b/resident/configs/tour_mode_choice_annotate_choosers_preprocessor.csv @@ -45,7 +45,7 @@ treat tours as work if tour_type not yet decided,tour_type,"df.get('tour_type', popempdenpermi calculated in preprocessor and input via landuse file,_origin_density_measure,"reindex(land_use.popempdenpermi, df[orig_col_name])" ,_dest_density_measure,"reindex(land_use.popempdenpermi, df[dest_col_name])" ,origin_density,"pd.cut(_origin_density_measure, bins=[-np.inf, 500, 2000, 5000, 15000, np.inf], labels=[5, 4, 3, 2, 1]).astype(int)" -,dest_density,"pd.cut(_dest_density_measure, bins=[-np.inf, 500, 2000, 5000, 15000, np.inf], labels=[5, 4, 3, 2, 1]).astype(int)" +,dest_density,"pd.cut(_dest_density_measure.fillna(0), bins=[-np.inf, 500, 2000, 5000, 15000, np.inf], labels=[5, 4, 3, 2, 1]).astype(int)" ,origin_zone_taxi_wait_time_mean,"origin_density.map({k: v for k, v in Taxi_waitTime_mean.items()})" ,origin_zone_taxi_wait_time_sd,"origin_density.map({k: v for k, v in Taxi_waitTime_sd.items()})" ,dest_zone_taxi_wait_time_mean,"dest_density.map({k: v for k, v in Taxi_waitTime_mean.items()})" diff --git a/resident/configs/transit_pass_subsidy.csv b/resident/configs/transit_pass_subsidy.csv index 780c03a..b03a879 100644 --- a/resident/configs/transit_pass_subsidy.csv +++ b/resident/configs/transit_pass_subsidy.csv @@ -20,3 +20,7 @@ util_availability,Availability of transit pass,transit_subsidy_available==False, util_ft_ASC,ptype_ft calibration constant,@df.ptype == 1,0,coef_ft_asc util_pt_ASC,ptype_pt calibration constant,@df.ptype == 2,0,coef_pt_asc util_un_ASC,ptype_un calibration constant,@df.ptype == 3,0,coef_un_asc +util_transit_ivt_home_to_work_walk_peak,Walk-transit home to work peak availability,@df.transit_ivt_home_to_work_walk_peak.fillna(0),0,coef_transit_ivt_home_to_work_walk_peak +util_transit_ivt_home_to_work_drive_peak,Drive-transit home to work peak availability,@df.transit_ivt_home_to_work_drive_peak.fillna(0),0,coef_transit_ivt_home_to_work_drive_peak +util_transit_ivt_home_to_school_walk_peak,Walk-transit home to school peak availability,@df.transit_ivt_home_to_school_walk_peak.fillna(0),0,coef_transit_ivt_home_to_school_walk_peak +util_transit_ivt_home_to_school_drive_peak,Drive-transit home to school peak availability,@df.transit_ivt_home_to_school_drive_peak.fillna(0),0,coef_transit_ivt_home_to_school_drive_peak diff --git a/resident/configs/transit_pass_subsidy_coefficients.csv b/resident/configs/transit_pass_subsidy_coefficients.csv index a7b3539..acc37fd 100644 --- a/resident/configs/transit_pass_subsidy_coefficients.csv +++ b/resident/configs/transit_pass_subsidy_coefficients.csv @@ -21,3 +21,7 @@ coef_unavailable,-999.0,F coef_ft_asc,-0.240,F coef_pt_asc,-0.250,F coef_un_asc,0.30,F +coef_transit_ivt_home_to_work_walk_peak,0,F +coef_transit_ivt_home_to_work_drive_peak,0,F +coef_transit_ivt_home_to_school_walk_peak,0,F +coef_transit_ivt_home_to_school_drive_peak,0,F \ No newline at end of file diff --git a/resident/configs/transit_pass_subsidy_preprocessor.csv b/resident/configs/transit_pass_subsidy_preprocessor.csv index a467db7..e14fe04 100644 --- a/resident/configs/transit_pass_subsidy_preprocessor.csv +++ b/resident/configs/transit_pass_subsidy_preprocessor.csv @@ -1,5 +1,7 @@ Description,Target,Expression -,_transit_ivt_home_to_work_walk_peak,"skim_dict.lookup(persons.home_zone_id, persons.workplace_zone_id, ('WTW_TIV', 'AM'))" -,_transit_ivt_home_to_work_drive_peak,"skim_dict.lookup(persons.home_zone_id, persons.workplace_zone_id, ('KTW_TIV', 'AM')) if KNR_available else 0" -,transit_subsidy_available,((_transit_ivt_home_to_work_walk_peak > 0) | (_transit_ivt_home_to_work_drive_peak > 0)) & (persons.workplace_zone_id > 0) +,transit_ivt_home_to_work_walk_peak,"skim_dict.lookup(persons.home_zone_id, persons.workplace_zone_id, ('WTW_TIV', 'AM'))" +,transit_ivt_home_to_work_drive_peak,"skim_dict.lookup(persons.home_zone_id, persons.workplace_zone_id, ('KTW_TIV', 'AM')) if KNR_available else 0" +,transit_ivt_home_to_school_walk_peak,"skim_dict.lookup(persons.home_zone_id, persons.school_zone_id, ('WTW_TIV', 'AM'))" +,transit_ivt_home_to_school_drive_peak,"skim_dict.lookup(persons.home_zone_id, persons.school_zone_id, ('KTW_TIV', 'AM')) if KNR_available else 0" +,transit_subsidy_available,persons.is_worker ,trn_wk_access_hh,"np.where(persons.workplace_zone_id > 0, reindex(accessibility.trPkHH, persons.workplace_zone_id), 0)" \ No newline at end of file diff --git a/resident/configs/trip_destination.csv b/resident/configs/trip_destination.csv index db222c6..8dfa800 100644 --- a/resident/configs/trip_destination.csv +++ b/resident/configs/trip_destination.csv @@ -10,42 +10,42 @@ util_sizeterm,size term,"@np.log1p(size_terms.get(df.dest_taz, df.purpose))",coe util_Sampleofalternativescorrectionfactor,Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",coef_one,coef_one,coef_one,coef_one,coef_one,coef_one,coef_one,coef_one,coef_one,coef_one util_Modechoicelogsum,Mode choice logsum,od_logsum + dp_logsum,coef_mode_choice_logsum_mandatory,coef_mode_choice_logsum_mandatory,coef_mode_choice_logsum_mandatory,coef_mode_choice_logsum_maint,coef_mode_choice_logsum_maint,coef_mode_choice_logsum_maint,coef_mode_choice_logsum_discr,coef_mode_choice_logsum_discr,coef_mode_choice_logsum_discr,coef_mode_choice_logsum_discr #,,,,,,,,,,,, -util_DistanceDeviationLinearRelative,Distance Deviation Linear - Relative,"@np.minimum((_dist_dev)/_op_DIST, 100)",,,,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr -util_DistanceDeviationLinearAbsolute,Distance Deviation Linear - Absolute,@(_dist_dev),coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr +util_dist_dev_LinearRelative,Distance Deviation Linear - Relative,"@np.minimum((_dist_dev)/_op_DIST, 100)",,,,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_maint,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr,coef_DistanceDeviationLinearRelative_discr +util_dist_dev_LinearAbsolute,Distance Deviation Linear - Absolute,@(_dist_dev),coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_mandatory,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_maint,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr,coef_DistanceDeviationLinearAbsolute_discr util_LogofDistanceRelativeDeviation,Log of Distance Relative Deviation,"@np.where((_dist_dev > 0), np.log(np.minimum((_dist_dev)/_op_DIST, 100)), 0)",,,,coef_LogofDistanceRelativeDeviation_maint,coef_LogofDistanceRelativeDeviation_maint,coef_LogofDistanceRelativeDeviation_maint,coef_LogofDistanceRelativeDeviation_discr,coef_LogofDistanceRelativeDeviation_discr,coef_LogofDistanceRelativeDeviation_discr,coef_LogofDistanceRelativeDeviation_discr util_LogofDistanceAbsoluteDeviation,Log of Distance Absolute Deviation,"@(_dist_dev_logged)",coef_LogofDistanceAbsoluteDeviation_mandatory,coef_LogofDistanceAbsoluteDeviation_mandatory,coef_LogofDistanceAbsoluteDeviation_mandatory,coef_LogofDistanceAbsoluteDeviation_maint,coef_LogofDistanceAbsoluteDeviation_maint,coef_LogofDistanceAbsoluteDeviation_maint,coef_LogofDistanceAbsoluteDeviation_discr,coef_LogofDistanceAbsoluteDeviation_discr,coef_LogofDistanceAbsoluteDeviation_discr,coef_LogofDistanceAbsoluteDeviation_discr -util_DistanceDeviationsquaredRelative,Distance Deviation squared - Relative,"@np.power(np.minimum((_dist_dev)/_op_DIST, 100),2)",,,,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr -util_DistanceDeviationsquaredAbsolute,Distance Deviation squared - Absolute,"@np.power(_dist_dev,2)",coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr -util_DistanceDeviation2ndstopofhalftour,Distance Deviation - 2nd stop of half tour,@(df.trip_num==2) * (_dist_dev),coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr -util_DistanceDeviation3rdmorestoponhalftour,Distance Deviation - 3rd+ stop on half tour,@(df.trip_num>2) * (_dist_dev),coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr -util_DistanceDeviationNumberofStopsonthehalftour,Distance Deviation - Number of Stops on the half-tour,"@np.minimum(_dist_dev,7.0)*df.trip_count",coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr -util_DistanceDeviationwalkbiketour,Distance Deviation - walk/bike tour,nonmotorTour * (_dist_dev),coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr -util_DistanceDeviationworkstoppurpose,Distance Deviation - work stop purpose,workStop *_dist_dev,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr -util_DistanceDeviationuniversitystoppurpose,Distance Deviation - university stop purpose,"@df.univStop * np.minimum(_dist_dev,5.0)",coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr -util_DistanceDeviationmaintenancestoppurpose,Distance Deviation - maintenance stop purpose,othmainStop * _dist_dev,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr -util_DistanceDeviationdiscretionarystoppurpose,Distance Deviation - discretionary stop purpose,"@df.discStop * np.minimum(_dist_dev,8.0)",coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr -util_DistanceDeviationshoppingstoppurpose,Distance Deviation - shopping stop purpose,shopStop *_dist_dev,,,,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr -util_DistanceDeviationeatoutstoppurpose,Distance Deviation - eatout stop purpose,eatStop *_dist_dev,,,,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr -util_DistanceDeviationsocialstoppurpose,Distance Deviation - social stop purpose,socStop * _dist_dev,,,,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr -util_DistanceDeviationworkstoppurpose_log,Distance Deviation - work stop purpose,workStop * _dist_dev_logged,coef_DistanceDeviationworkstoppurpose,coef_DistanceDeviationworkstoppurpose,coef_DistanceDeviationworkstoppurpose,,,,,,, -util_DistanceDeviationshoppingstoppurpose_log,Distance Deviation - shopping stop purpose,shopStop * _dist_dev_logged,coef_DistanceDeviationshoppingstoppurpose_mandatory,coef_DistanceDeviationshoppingstoppurpose_mandatory,coef_DistanceDeviationshoppingstoppurpose_mandatory,,,,,,, -util_DistanceDeviationsocialvisitingstoppurpose_log,Distance Deviation - socialvisiting stop purpose,socStop * _dist_dev_logged,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,,,,,,, -util_DistanceDeviationSchool,Distance Deviation - School Tour purpose,schoolTour * _dist_dev,coef_DistanceDeviationSchool_mandatory,coef_DistanceDeviationSchool_mandatory,coef_DistanceDeviationSchool_mandatory,,,,,,, -util_DistanceDeviationUniversity,Distance Deviation - University Tour purpose,univTour * _dist_dev,coef_DistanceDeviationUniversity_mandatory,coef_DistanceDeviationUniversity_mandatory,coef_DistanceDeviationUniversity_mandatory,,,,,,, -util_DistanceDeviationShopping,Distance Deviation - Shopping Tour purpose,shopTour * _dist_dev,,,,coef_DistanceDeviationothmaint_maint,coef_DistanceDeviationothmaint_maint,coef_DistanceDeviationothmaint_maint,,,, -util_DistanceDeviationOthMaint,Distance Deviation - Other maintenanceTour purpose,othmainTour * _dist_dev,,,,coef_DistanceDeviationshopping_maint,coef_DistanceDeviationshopping_maint,coef_DistanceDeviationshopping_maint,,,, -util_DistanceDeviationDiscr,Distance Deviation - DiscTour purpose,discTour * _dist_dev,,,,,,,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint -util_DistanceDeviationAtwork,Distance Deviation - AtworkTour purpose,atworkTour * _dist_dev,,,,,,,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint -util_DistanceDeviationIncomeLessthan60k,"Distance Deviation - Income Less than $60,000","@(df.income_trips<60000) * np.minimum(_dist_dev,13.0)",coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr -util_DistanceDeviationFemale,Distance Deviation - Female,(female & (is_joint==0)) * (_dist_dev),coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr -util_DistanceDeviationAgebetween35and54years,Distance Deviation - Age between 35 and 54 years,"@(df.age_trips.between(35,54)*df.is_joint==0) * (_dist_dev)",coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr -util_DistanceDeviationAgeover54years,Distance Deviation - Age over 54 years,@(df.age_trips>54) * (df.is_joint==0) * (_dist_dev),coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr +util_dist_dev_squaredRelative,Distance Deviation squared - Relative,"@np.power(np.minimum((_dist_dev)/_op_DIST, 100),2)",,,,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_maint,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr,coef_DistanceDeviationsquaredRelative_discr +util_dist_dev_squaredAbsolute,Distance Deviation squared - Absolute,"@np.power(_dist_dev,2)",coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_mandatory,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_maint,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr,coef_DistanceDeviationsquaredAbsolute_discr +util_dist_dev_2ndstopofhalftour,Distance Deviation - 2nd stop of half tour,@(df.trip_num==2) * (_dist_dev),coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_mandatory,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_maint,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr,coef_DistanceDeviation2ndstopofhalftour_discr +util_dist_dev_3rdmorestoponhalftour,Distance Deviation - 3rd+ stop on half tour,@(df.trip_num>2) * (_dist_dev),coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_mandatory,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_maint,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr,coef_DistanceDeviation3rdmorestoponhalftour_discr +util_dist_dev_NumberofStopsonthehalftour,Distance Deviation - Number of Stops on the half-tour,"@np.minimum(_dist_dev,7.0)*df.trip_count",coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_mandatory,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_maint,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr,coef_DistanceDeviationNumberofStopsonthehalftour_discr +util_dist_dev_walkbiketour,Distance Deviation - walk/bike tour,nonmotorTour * (_dist_dev),coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_mandatory,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_maint,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr,coef_DistanceDeviationwalkbiketour_discr +util_dist_dev_workstoppurpose,Distance Deviation - work stop purpose,workStop *_dist_dev,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_mandatory,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_maint,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr,coef_DistanceDeviationworkstoppurpose_discr +util_dist_dev_universitystoppurpose,Distance Deviation - university stop purpose,"@df.univStop * np.minimum(_dist_dev,5.0)",coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_mandatory,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_maint,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr,coef_DistanceDeviationuniversitystoppurpose_discr +util_dist_dev_maintenancestoppurpose,Distance Deviation - maintenance stop purpose,othmainStop * _dist_dev,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_mandatory,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_maint,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr,coef_DistanceDeviationmaintenancestoppurpose_discr +util_dist_dev_discretionarystoppurpose,Distance Deviation - discretionary stop purpose,"@df.discStop * np.minimum(_dist_dev,8.0)",coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_mandatory,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_maint,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr,coef_DistanceDeviationdiscretionarystoppurpose_discr +util_dist_dev_shoppingstoppurpose,Distance Deviation - shopping stop purpose,shopStop *_dist_dev,,,,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_maint,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr,coef_DistanceDeviationshoppingstoppurpose_discr +util_dist_dev_eatoutstoppurpose,Distance Deviation - eatout stop purpose,eatStop *_dist_dev,,,,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_maint,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr,coef_DistanceDeviationeatoutstoppurpose_discr +util_dist_dev_socialstoppurpose,Distance Deviation - social stop purpose,socStop * _dist_dev,,,,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_maint,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr,coef_DistanceDeviationsocialstoppurpose_discr +util_dist_dev_workstoppurpose_log,Distance Deviation - work stop purpose,workStop * _dist_dev_logged,coef_DistanceDeviationworkstoppurpose,coef_DistanceDeviationworkstoppurpose,coef_DistanceDeviationworkstoppurpose,,,,,,, +util_dist_dev_shoppingstoppurpose_log,Distance Deviation - shopping stop purpose,shopStop * _dist_dev_logged,coef_DistanceDeviationshoppingstoppurpose_mandatory,coef_DistanceDeviationshoppingstoppurpose_mandatory,coef_DistanceDeviationshoppingstoppurpose_mandatory,,,,,,, +util_dist_dev_socialvisitingstoppurpose_log,Distance Deviation - socialvisiting stop purpose,socStop * _dist_dev_logged,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,coef_DistanceDeviationsocialvisitingstoppurpose_mandatory,,,,,,, +util_dist_dev_School,Distance Deviation - School Tour purpose,schoolTour * _dist_dev,coef_DistanceDeviationSchool_mandatory,coef_DistanceDeviationSchool_mandatory,coef_DistanceDeviationSchool_mandatory,,,,,,, +util_dist_dev_University,Distance Deviation - University Tour purpose,univTour * _dist_dev,coef_DistanceDeviationUniversity_mandatory,coef_DistanceDeviationUniversity_mandatory,coef_DistanceDeviationUniversity_mandatory,,,,,,, +util_dist_dev_Shopping,Distance Deviation - Shopping Tour purpose,shopTour * _dist_dev,,,,coef_DistanceDeviationothmaint_maint,coef_DistanceDeviationothmaint_maint,coef_DistanceDeviationothmaint_maint,,,, +util_dist_dev_OthMaint,Distance Deviation - Other maintenanceTour purpose,othmainTour * _dist_dev,,,,coef_DistanceDeviationshopping_maint,coef_DistanceDeviationshopping_maint,coef_DistanceDeviationshopping_maint,,,, +util_dist_dev_Maint,Distance Deviation - Maint purpose,othmainTour * _dist_dev,,,,,,,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint,coef_DistanceDeviationdiscr_maint +util_dist_dev_Atwork,Distance Deviation - AtworkTour purpose,atworkTour * _dist_dev,,,,,,,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint,coef_DistanceDeviationatwork_maint +util_dist_dev_IncomeLessthan60k,"Distance Deviation - Income Less than $60,000","@(df.income_trips<60000) * np.minimum(_dist_dev,13.0)",coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_mandatory,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_maint,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr,coef_DistanceDeviationIncomeLessthan60k_discr +util_dist_dev_Female,Distance Deviation - Female,(female & (is_joint==0)) * (_dist_dev),coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_mandatory,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_maint,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr,coef_DistanceDeviationFemale_discr +util_dist_dev_Agebetween35and54years,Distance Deviation - Age between 35 and 54 years,"@(df.age_trips.between(35,54)*df.is_joint==0) * (_dist_dev)",coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_mandatory,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_maint,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr,coef_DistanceDeviationAgebetween35and54years_discr +util_dist_dev_Ageover54years,Distance Deviation - Age over 54 years,@(df.age_trips>54) * (df.is_joint==0) * (_dist_dev),coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_mandatory,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_maint,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr,coef_DistanceDeviationAgeover54years_discr util_DistanceRatio,Distance Ratio,(_nd_DIST)/ (_nd_DIST + _dp_DIST),coef_DistanceRatio_mandatory,coef_DistanceRatio_mandatory,coef_DistanceRatio_mandatory,coef_DistanceRatio_maint,coef_DistanceRatio_maint,coef_DistanceRatio_maint,coef_DistanceRatio_discr,coef_DistanceRatio_discr,coef_DistanceRatio_discr,coef_DistanceRatio_discr util_DistanceRatioFirstOutboundStop,Distance Ratio - First Outbound Stop,@(df.trip_num==1)*(df.outbound) * ((_nd_DIST)/ (_nd_DIST + _dp_DIST)),coef_DistanceRatioFirstOutboundStop_mandatory,coef_DistanceRatioFirstOutboundStop_mandatory,coef_DistanceRatioFirstOutboundStop_mandatory,coef_DistanceRatioFirstOutboundStop_maint,coef_DistanceRatioFirstOutboundStop_maint,coef_DistanceRatioFirstOutboundStop_maint,coef_DistanceRatioFirstOutboundStop_discr,coef_DistanceRatioFirstOutboundStop_discr,coef_DistanceRatioFirstOutboundStop_discr,coef_DistanceRatioFirstOutboundStop_discr util_DistanceRatioFirstInboundStop,Distance Ratio - First Inbound Stop,@(df.trip_num==1)*(df.outbound==0) * ((_nd_DIST)/ (_nd_DIST + _dp_DIST)),coef_DistanceRatioFirstInboundStop_mandatory,coef_DistanceRatioFirstInboundStop_mandatory,coef_DistanceRatioFirstInboundStop_mandatory,coef_DistanceRatioFirstInboundStop_maint,coef_DistanceRatioFirstInboundStop_maint,coef_DistanceRatioFirstInboundStop_maint,coef_DistanceRatioFirstInboundStop_discr,coef_DistanceRatioFirstInboundStop_discr,coef_DistanceRatioFirstInboundStop_discr,coef_DistanceRatioFirstInboundStop_discr util_DistanceRatioMandatoryOutboundTour,Distance Ratio - Mandatory Outbound Tour,(outbound)* mandTour * ((_nd_DIST)/ (_nd_DIST + _dp_DIST)),coef_DistanceRatioMandatoryOutboundTour_mandatory,coef_DistanceRatioMandatoryOutboundTour_mandatory,coef_DistanceRatioMandatoryOutboundTour_mandatory,,,,,,, util_DistanceRatioMandatoryInboundTour,Distance Ratio - Mandatory Inbound Tour,(outbound==0) * mandTour * ((_nd_DIST)/ (_nd_DIST + _dp_DIST)),coef_DistanceRatioMandatoryInboundTour_mandatory,coef_DistanceRatioMandatoryInboundTour_mandatory,coef_DistanceRatioMandatoryInboundTour_mandatory,,,,,,, -util_DistanceDeviationSquareWork,Distance Deviation Square - Work Tour purpose,"@df.workTour * np.power(_dist_dev,2)",coef_DistanceDeviationSquareWork_mandatory,coef_DistanceDeviationSquareWork_mandatory,coef_DistanceDeviationSquareWork_mandatory,,,,,,, -util_DistanceDeviationSocial,Distance Deviation SocialTour purpose,socTour * _dist_dev,,,,,,,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr -util_DistanceDeviationDiscr,Distance Deviation DiscrTour purpose,discTour * _dist_dev,,,,,,,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr -util_DistanceDeviationAtwork_calibration,Distance Deviation - AtworkTour purpose,atworkTour * _dist_dev,,,,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib +util_dist_dev_SquareWork,Distance Deviation Square - Work Tour purpose,"@df.workTour * np.power(_dist_dev,2)",coef_DistanceDeviationSquareWork_mandatory,coef_DistanceDeviationSquareWork_mandatory,coef_DistanceDeviationSquareWork_mandatory,,,,,,, +util_dist_dev_Social,Distance Deviation SocialTour purpose,socTour * _dist_dev,,,,,,,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr +util_dist_dev_Discr,Distance Deviation DiscrTour purpose,discTour * _dist_dev,,,,,,,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr,coef_DistanceDeviationDiscr +util_dist_dev_Atwork_calibration,Distance Deviation - AtworkTour purpose,atworkTour * _dist_dev,,,,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib,coef_DistanceDeviationatwork_calib diff --git a/resident/configs/workplace_location.yaml b/resident/configs/workplace_location.yaml index 7ae8604..8e4e448 100644 --- a/resident/configs/workplace_location.yaml +++ b/resident/configs/workplace_location.yaml @@ -1,5 +1,5 @@ SAMPLE_SIZE: 30 -ESTIMATION_SAMPLE_SIZE: 10 +ESTIMATION_SAMPLE_SIZE: 30 SIMULATE_CHOOSER_COLUMNS: - income_segment diff --git a/resident/configs_estimation/destination_choice_size_terms.csv b/resident/configs_estimation/destination_choice_size_terms.csv new file mode 100644 index 0000000..6026c35 --- /dev/null +++ b/resident/configs_estimation/destination_choice_size_terms.csv @@ -0,0 +1,38 @@ +model_selector,segment,TOTHHS,TOTPOP,EMP_NRM,EMP_CON,EMP_MFG,EMP_WT,EMP_TWU,EMP_RET,EMP_IFRPBS,EMP_HCS,EMP_OSV,EMP_GOV,EMP_EDU,EMP_AER,EMP_AFS,EMP_TOTAL,ENROLLGRADEKto8,ENROLLGRADE9to12,COLLEGEENROLL,PARKATTRACT,ACRES,EXTERNAL +workplace,mngt_busi_sci_health,0,0,0.023150473,0.105478261,0.033921273,0.520588696,0.019155288,0.063194096,1,0.12997306,0.101893393,0.357056089,0.046020203,0.044384337,0.014582422,0,0,0,0,0,0,0 +workplace,services,0,0,0.011768937,0.051276887,0.174045033,1,0.206618229,0.914135674,0.494698223,0.170534494,0.142953744,0.337702324,0.048183584,0.052183296,0.031177613,0,0,0,0,0,0,0 +workplace,sales_retail,0,0,0.03214445,0.013782902,0.002031041,0.064277161,0.007689779,0.04669046,0.477412008,0.145096152,0.403566649,0.565075489,0.264904083,0.154746531,0.079950222,0,0,0,0,0,0,0 +workplace,nat_res_cnstr_maint,0,0,0.114467809,1,0.019444044,0.053921216,0.042038744,0.057720006,0.149701138,0.007849633,0.160935475,0.137710644,0.014673052,0.021406453,0.007723607,0,0,0,0,0,0,0 +workplace,prod_trans_move,0,0,0.044941354,0.059838173,0.160289782,0.055761149,0.692090573,0.577996613,0.289719626,0.051119614,0.300100358,0.169102427,0.010851157,0.045537226,0.039515775,0,0,0,0,0,0,0 +workplace,missing,0,0,0.03214445,0.013782902,0.002031041,0.064277161,0.007689779,0.04669046,0.477412008,0.145096152,0.403566649,0.565075489,0.264904083,0.154746531,0.079950222,0,0,0,0,0,0,0 +school,preschool,0,0.1888,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0 +school,gradeschool,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 +school,highschool,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 +school,university,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +non_mandatory,escort,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0.1,0.001,0.001 +non_mandatory,shopping,0.01,0,0,0,0,0,0,1,0.1,0,0,0,0,0,0,0,0,0,0,0.1,0.001,0.001 +non_mandatory,othmaint,0.01,0,0.1,0.1,0.1,0.1,0.1,1.60296,0.42255,0.42255,0.1,0.24001,0.1,0.1,0.1,0,0,0,0,0.1,0.001,0.001 +non_mandatory,eatout,0.5512,0,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,1,0,0,0,0,0.1,0.001,0.001 +non_mandatory,social,0.3006,0,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0.1,0.001,0.001 +non_mandatory,othdiscr,0.04333,0,0,0,0,0.004465,0,0.042025,0.004465,0,1,0.005953,0,0.20337,0.03453,0,0.03167,0.05136,0.02258,3.71685,0.001,0.001 +atwork,atwork,0,0,0.1,0.1,0.1,0.1,0.1,0.104,0.0145,0.1,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0.001,0.001 +trip,work,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +trip,escort,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0.1,0,0 +trip,shopping,0.000001,0,0,0,0,0,0,0.375,0,0,0,0,0,0,0,0.0001,0,0,0,0.1,0,0 +trip,othmaint,0.000001,0,0,0,0,0,0,1.2379255,0.025,1.464014,0,0.661904,0,0,0,0.0001,0,0,0,0.1,0,0 +trip,eatout,0.010162,0,0,0,0,0,0,0.0689145,0,0,0,0,0,0,0,0,0,0,0,0.1,0,0 +trip,social,0.495249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1,0,0 +trip,othdiscr,0.027342,0,0,0,0,0,0,0.0194215,0,0,1,0,0,0.473744,0.092343,0,0,0,0,3.71685,0,0 +trip,univ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 +trip,school,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0 +# needed for estimation mode as school can be chosen as an intermediate trip destination,,,,,,,,,,,,,,,,,,,,,,, +#trip,gradeschool,0,,,,,,,,,,,,,,,,,,,,, +#trip,highschool,0,,,,,,,,,,,,,,,,,,,,, +external_workplace,external_workplace,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_nonwork,external_nonwork,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,escort,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,shopping,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,othmaint,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,eatout,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,social,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +external_non_mandatory,othdiscr,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 diff --git a/resident/configs_estimation/estimation.yaml b/resident/configs_estimation/estimation.yaml new file mode 100644 index 0000000..b27f3b8 --- /dev/null +++ b/resident/configs_estimation/estimation.yaml @@ -0,0 +1,120 @@ +EDB_FILETYPE: parquet # options: csv, pkl, parquet +DELETE_MP_SUBDIRS: True + +enable: True + +bundles: + - license_holding_status + - bike_comfort + - auto_ownership + - work_from_home + - external_worker_identification + - external_workplace_location + - school_location + - workplace_location + - vehicle_type_choice + - transit_pass_subsidy + - transit_pass_ownership + - free_parking + - telecommute_frequency + - cdap + - mandatory_tour_frequency + - mandatory_tour_scheduling_work + - mandatory_tour_scheduling_school + - mandatory_tour_scheduling_univ + - school_escorting + - joint_tour_frequency_composition + - external_joint_tour_identification + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - external_non_mandatory_identification + - external_non_mandatory_destination + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling_escort + - non_mandatory_tour_scheduling_shopping + - non_mandatory_tour_scheduling_eatout + - non_mandatory_tour_scheduling_othdiscr + - non_mandatory_tour_scheduling_othmaint + - non_mandatory_tour_scheduling_social + - vehicle_allocation + # - park_and_ride_lot_choice + - tour_mode_choice + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_scheduling + - trip_mode_choice + +# - atwork_subtour_mode_choice subtours.tour_mode + +survey_tables: + households: + file_name: override_households.csv + index_col: household_id + persons: + file_name: override_persons.csv + index_col: person_id + tours: + file_name: override_tours.csv + index_col: tour_id + joint_tour_participants: + file_name: override_joint_tour_participants.csv + index_col: participant_id + trips: + file_name: override_trips.csv + index_col: trip_id + +estimation_table_types: + license_holding_status: simple_simulate + bike_comfort: simple_simulate + work_from_home: simple_simulate + external_worker_identification: simple_simulate + external_workplace_location: interaction_sample_simulate + school_location: interaction_sample_simulate + workplace_location: interaction_sample_simulate + transit_pass_subsidy: simple_simulate + transit_pass_ownership: simple_simulate + auto_ownership: simple_simulate + vehicle_type_choice: interaction_simulate + transponder_ownership: simple_simulate + free_parking: simple_simulate + telecommute_frequency: simple_simulate + cdap: cdap_simulate + mandatory_tour_frequency: simple_simulate + mandatory_tour_scheduling_work: interaction_sample_simulate + mandatory_tour_scheduling_school: interaction_sample_simulate + mandatory_tour_scheduling_univ: interaction_sample_simulate + school_escorting: interaction_simulate + joint_tour_frequency_composition: interaction_simulate + external_joint_tour_identification: simple_simulate + joint_tour_participation: simple_simulate + joint_tour_destination: interaction_sample_simulate + joint_tour_scheduling: interaction_sample_simulate + non_mandatory_tour_frequency: interaction_simulate + external_non_mandatory_identification: simple_simulate + non_mandatory_tour_destination: interaction_sample_simulate + external_non_mandatory_destination: interaction_sample_simulate + # non_mandatory_tour_scheduling: interaction_sample_simulate + non_mandatory_tour_scheduling_escort: interaction_sample_simulate + non_mandatory_tour_scheduling_shopping: interaction_sample_simulate + non_mandatory_tour_scheduling_eatout: interaction_sample_simulate + non_mandatory_tour_scheduling_othdiscr: interaction_sample_simulate + non_mandatory_tour_scheduling_othmaint: interaction_sample_simulate + non_mandatory_tour_scheduling_social: interaction_sample_simulate + vehicle_allocation: simple_simulate + tour_mode_choice: simple_simulate + atwork_subtour_frequency: simple_simulate + atwork_subtour_destination: interaction_sample_simulate + atwork_subtour_scheduling: interaction_sample_simulate + atwork_subtour_mode_choice: simple_simulate + stop_frequency: simple_simulate + trip_purpose: simple_probabilistic + trip_destination: interaction_sample_simulate + trip_scheduling: simple_probabilistic + trip_mode_choice: simple_simulate diff --git a/resident/configs_estimation/logging.yaml b/resident/configs_estimation/logging.yaml new file mode 100644 index 0000000..fd83f2b --- /dev/null +++ b/resident/configs_estimation/logging.yaml @@ -0,0 +1,60 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: NOTSET + handlers: [console] + + loggers: + + activitysim: + level: INFO + handlers: [console, logfile] + propagate: false + + sharrow: + level: INFO + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: + get_log_file_path: 'activitysim.log' + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: elapsedFormatter + level: INFO + + formatters: + + simpleFormatter: + class: logging.Formatter + # format: '%(levelname)s - %(name)s - %(message)s' + format: '%(levelname)s - %(message)s' + datefmt: '%Y-%m-%dT%H:%M:%S%z' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%Y-%m-%dT%H:%M:%S%z' + + elapsedFormatter: + (): activitysim.core.tracing.ElapsedTimeFormatter + format: '[{elapsedTime}] {levelname:s}: {message:s}' + style: '{' + datefmt: '%Y-%m-%dT%H:%M:%S%z' \ No newline at end of file diff --git a/resident/configs_estimation/settings.yaml b/resident/configs_estimation/settings.yaml new file mode 100644 index 0000000..5e99556 --- /dev/null +++ b/resident/configs_estimation/settings.yaml @@ -0,0 +1,149 @@ + +inherit_settings: True + +# assume enough RAM to not chunk +chunk_training_mode: disabled + +# input tables +# input tables +input_table_list: + - tablename: households + filename: override_households.csv + index_col: household_id + - tablename: persons + filename: override_persons.csv + index_col: person_id + - tablename: land_use + filename: land_use.csv + index_col: zone_id + rename_columns: + MAZ: zone_id + drop_columns: + - i1 + - i2 + - i3 + - i4 + - i5 + - i6 + - i7 + - i8 + - i9 + - hs + - hs_sf + - hs_mf + - hs_mh + - hh_sf + - hh_mf + - hh_mh + - zip09 + - luz_id + +write_raw_tables: False + +fail_fast: True + +use_shadow_pricing: False + +multiprocess: False +num_processes: 10 + +# turn writing of sample_tables on and off for all models +# (if True, tables will be written if DEST_CHOICE_SAMPLE_TABLE_NAME is specified in individual model settings) +want_dest_choice_sample_tables: False + +# number of households to simulate +trace_hh_id: 123446633 +households_sample_size: 0 + +resume_after: trip_scheduling + +models: + ### mp_init_proto_pop (single process) + - transit_lot_connectivity + - initialize_proto_population # Separate step so proto tables can be split for multiprocess. + ### mp_disaggregate_accessibility + - compute_disaggregate_accessibility + ### mp_initialize_hhs (single process) + - initialize_landuse + - initialize_households + ### mp_accessibility + - compute_accessibility + ### mp_households + - license_holding_status + - bike_comfort + - av_ownership + - auto_ownership_simulate + - work_from_home + - external_worker_identification + - external_workplace_location + - school_location + - workplace_location + - vehicle_type_choice + - adjust_auto_operating_cost + - transit_pass_subsidy + - transit_pass_ownership + - free_parking + - telecommute_frequency + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - school_escorting + - joint_tour_frequency_composition + - external_joint_tour_identification + - joint_tour_participation + - joint_tour_destination + - external_joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - external_non_mandatory_identification + - non_mandatory_tour_destination + - external_non_mandatory_destination + - non_mandatory_tour_scheduling + - vehicle_allocation + - park_and_ride_lot_choice + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice + - parking_location + ### mp_summarize (single process) + - write_data_dictionary + - track_skim_usage + - write_trip_matrices + - write_tables + +multiprocess_steps: + - name: mp_init_proto_pop + begin: transit_lot_connectivity + - name: mp_disaggregate_accessibility + num_processes: 10 + begin: compute_disaggregate_accessibility + slice: + tables: + - proto_households + - proto_persons + - proto_tours + - name: mp_initialize_hhs + begin: initialize_landuse + - name: mp_accessibility + begin: compute_accessibility + num_processes: 10 + slice: + tables: + - accessibility + exclude: True # this is needed so landuse (i.e. destinations) doesn't get split + - name: mp_households + begin: license_holding_status + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary \ No newline at end of file diff --git a/resident/configs_estimation/trip_mode_choice.csv b/resident/configs_estimation/trip_mode_choice.csv new file mode 100644 index 0000000..2a4b16c --- /dev/null +++ b/resident/configs_estimation/trip_mode_choice.csv @@ -0,0 +1,207 @@ +Label,Description,Expression,DRIVEALONE,SHARED2,SHARED3,WALK,BIKE,WALK_TRANSIT,PNR_TRANSIT,KNR_TRANSIT,BIKE_TRANSIT,TAXI,TNC_SINGLE,TNC_SHARED,SCH_BUS,EBIKE,ESCOOTER +#,Drive alone,,,,,,,,,,,,,,,, +util_DRIVEALONEFREE_Unavailable,Drive alone - Unavailable,sov_available == False,-30,,,,,,,,,,,,,, +util_Drive alone - In-vehicle time,Drive alone - In-vehicle time,(da_time_skims) * autoIVTFactor * time_factor,coef_ivt,,,,,,,,,,,,,, +util_Drive alone - cost,Drive alone - cost,"@(df.auto_op_cost * df.autoCPMFactor * df.da_dist_skims + df.da_cost_skims)*100/(np.maximum(df.income,1000)**df.income_exponent)",coef_income,,,,,,,,,,,,,, +util_Drive alone - Parking cost ,Drive alone - Parking cost ,"@(df.parkingCost * df.autoParkingCostFactor)*100/(np.maximum(df.income,1000)**df.income_exponent)",coef_income,,,,,,,,,,,,,, +util_Drive alone - Terminal Time,Drive alone - Terminal Time,(oTermTime + dTermTime) * autoTermTimeFactor * time_factor,coef_acctime,,,,,,,,,,,,,, +#,Shared ride2,,,,,,,,,,,,,,,, +util_sr2_available,sr2 available,sr2_available == False,,-30,,,,,,,,,,,,, +util_sr2_tourbike_disadvantage,sr2 tourbike disadvantage,tourBike,,-30,,,,,,,,,,,,, +util_Shared ride 2 - In -vehicle time,Shared ride 2 - In -vehicle time,(s2_time_skims) * autoIVTFactor * time_factor,,coef_ivt,,,,,,,,,,,,, +util_Shared ride 2 - cost,Shared ride 2 - cost,"@((df.auto_op_cost * df.autoCPMFactor * df.s2_dist_skims) + df.s2_cost_skims)*100/(np.maximum(df.income,1000)**df.income_exponent)",,coef_income,,,,,,,,,,,,, +util_Shared ride 2 - Parking cost ,Shared ride 2 - Parking cost ,"@(df.parkingCost * df.autoParkingCostFactor * np.where(df.is_joint,1,df.costFactorS2))*100/(np.maximum(df.income,1000)**df.income_exponent)",,coef_income,,,,,,,,,,,,, +util_Shared ride 2 Terminal Time - acc,Shared ride 2 - Terminal Time ,(oTermTime + dTermTime) * autoTermTimeFactor * time_factor,,coef_acctime,,,,,,,,,,,,, +util_Shared ride 2 _Two_person_household,Shared ride 2 - Two person household,@(df.hhsize == 2),,coef_size2_sr2,,,,,,,,,,,,, +util_Shared ride 2 _Three_person_household,Shared ride 2 - Three person household,@(df.hhsize == 3),,coef_size3_sr2,,,,,,,,,,,,, +util_Shared ride 2 _Four+_person_household,Shared ride 2 - Four plus person household,@(df.hhsize > 3),,coef_size4p_sr2,,,,,,,,,,,,, +util_Shared ride 2 - Female,Shared ride 2 - female,@(df.female == 1),,coef_female_sr2,,,,,,,,,,,,, +#,Shared ride 3,,,,,,,,,,,,,,,, +util_sr3_available,sr3 available,sr3_available == False,,,-30,,,,,,,,,,,, +util_sr3_tourbike_disadvantage,sr3 tourbike disadvantage,tourBike,,,-30,,,,,,,,,,,, +util_Shared ride 3 - In -vehicle time,Shared ride 3 - In -vehicle time,(s3_time_skims) * autoIVTFactor * time_factor,,,coef_ivt,,,,,,,,,,,, +util_Shared ride 3 - Cost ,Shared ride 3 - cost,"@(df.auto_op_cost * df.s3_dist_skims * df.autoCPMFactor + df.s3_cost_skims)*100/(np.maximum(df.income,1000)**df.income_exponent)",,,coef_income,,,,,,,,,,,, +util_Shared ride 3 - Parking cost ,Shared ride 3 - Parking cost ,"@(df.parkingCost * df.autoParkingCostFactor * np.where(df.is_joint,1,df.costFactorS3))*100/(np.maximum(df.income,1000)**df.income_exponent)",,,coef_income,,,,,,,,,,,, +util_Shared ride 3 - Terminal Time,Shared ride 3 - Terminal Time,(oTermTime + dTermTime) * autoTermTimeFactor * time_factor,,,coef_acctime,,,,,,,,,,,, +util_Shared ride 3 - Two_person_household,Shared ride 3 - Two person household,@(df.hhsize == 2),,,coef_size2_sr3p,,,,,,,,,,,, +util_Shared ride 3 - Three_person_household,Shared ride 3 - Three person household,@(df.hhsize == 3),,,coef_size3_sr3p,,,,,,,,,,,, +util_Shared ride 3 - Four+_person_household,Shared ride 3 - Four plus person household,@(df.hhsize > 3),,,coef_size4p_sr3p,,,,,,,,,,,, +util_Shared ride 3 - Female,Shared ride 3 - female,@(df.female == 1),,,coef_female_sr3p,,,,,,,,,,,, +#,Walk,,,,,,,,,,,,,,,, +#,school escorting can force longer walk trips so not turning off completely if walk tour,,,,,,,,,,,,,,,, +util_Walk - Unavailable,Walk - Unavailable,(walkAvailable == 0) & (tourWalk == 0),,,,-30,,,,,,,,,,, +util_Walk - Unavailable - walkTour,Walk - Unavailable - Walk Tour,(walkAvailable == 0) & (tourWalk == 1),,,,-20,,,,,,,,,,, +util_Walk - Female,Walk - Female,@df.female,,,,coef_female_nmot,,,,,,,,,,, +util_Walk - time,Walk - time - clipped for really long walk trips to avoid zero probs,@(df.walk_time_skims * df.time_factor).clip(upper=1000),,,,coef_walkTime,,,,,,,,,,, +util_Walk - Origin Mix,Walk - Origin Mix,oMix,,,,coef_oMix_nmot,,,,,,,,,,, +util_Walk - Origin Intersection Density,Walk - Origin Intersection Density,oTotInt,,,,coef_oIntDen_nmot,,,,,,,,,,, +util_Walk - Destination Employment Density,Walk - Destination Employment Density,dEmpDen,,,,coef_dEmpDen_nmot,,,,,,,,,,, +util_Walk - Age 1-5 (school only),Walk - Age 1-6,"@df.age.between(1,5)",,,,coef_age1to5_nmot,,,,,,,,,,, +util_Walk - Age 6-12 (school only),Walk - Age 6-13,"@df.age.between(6,12)",,,,coef_age6to12_nmot,,,,,,,,,,, +util_Walk - Age 13-15 (school only),Walk - Age 13-16,"@df.age.between(13,15)",,,,coef_age13to15_nmot,,,,,,,,,,, +#,Bike,,,,,,,,,,,,,,,, +util_BIKE_Mode unavailable,Bike - Mode unavailable unless on bike tour,@(df.tourBike == 0)|(df.bike_time <= 0),,,,,-30,,,,,,,,,, +util_BIKE_Female - bike,Bike - Female,@df.female,,,,,coef_female_nmot,,,,,,,,,, +util_BIKE_Bike - logsum,Bike - logsum clipped to allow for long bike trips on school escort tours,@df.bike_logsum.clip(lower=-100),,,,,coef_bikeLogsum,,,,,,,,,, +#,WALK_TRANSIT,,,,,,,,,,,,,,,, +util_WalkTransit_Unavailable,WalkTransit_Available,walk_transit_available == False,,,,,,-30,,,,,,,,, +util_WALK_TRANSIT_In_vehicle_time,WALK_TRANSIT - In-vehicle time,@(odt_skims['WTW_TIV']) * df.time_factor,,,,,,coef_ivt,,,,,,,,, +util_WALK_TRANSIT_iwait_time,WALK_TRANSIT - wait time,@(odt_skims['WTW_FWT']) * df.time_factor,,,,,,coef_wait,,,,,,,,, +util_WALK_TRANSIT_transfer_wait_time,WALK_TRANSIT - transfer wait time,@(odt_skims['WTW_XWT'])* df.time_factor,,,,,,coef_xwait,,,,,,,,, +util_WALK_TRANSIT_Walk_access_time,WALK_TRANSIT - Walk time,@(df.walk_transit_walk_time) * df.time_factor,,,,,,coef_acctime,,,,,,,,, +util_WALK_TRANSIT_transfer_walk_time,WALK_TRANSIT - transfer walk time,@(odt_skims['WTW_AUX'])* df.time_factor,,,,,,coef_xwalk,,,,,,,,, +util_WALK_TRANSIT_transfers_penalty,WALK_TRANSIT - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WTW_XFR'], a_min=None,a_max=4))) * df.time_factor",,,,,,coef_xfer,,,,,,,,, +util_WALK_TRANSIT_fare,WALK_TRANSIT - Fare,"@df.transitSubsidyPassDiscount*df.get('TRANSIT_FF', 1)*(odt_skims['fare'])*100*df.number_of_participants/(np.maximum(df.income,1000)**df.income_exponent)",,,,,,coef_income,,,,,,,,, +util_WALK_TRANSIT - Female,WALK_TRANSIT - Female,@(df.female),,,,,,coef_female_tran,,,,,,,,, +util_WALK_TRANSIT - Origin Mix,WALK_TRANSIT - Origin Mix,oMix,,,,,,coef_oMix_wTran,,,,,,,,, +util_WALK_TRANSIT - Origin Intersection Density,WALK_TRANSIT - Origin Intersection Density,oTotInt,,,,,,coef_oIntDen_wTran,,,,,,,,, +util_WALK_TRANSIT - Destination Employment Density,WALK_TRANSIT - Destination Employment Density,dEmpDen,,,,,,coef_dEmpDen_wTran,,,,,,,,, +#,PNR_TRANSIT,,,,,,,,,,,,,,,, +# currently not allowing stops on PnR in stop frequency and enforcing symmetry for trip mode with below availability condition,,,,,,,,,,,,,,,,, +util_is_PNR_transit,Only allowed to take PNR transit on PNR tours,tourPNR,-30,-30,-30,-30,-30,-30,,-30,-30,-30,-30,-30,-30,-30, +#,KNR_TRANSIT,,,,,,,,,,,,,,,, +util_KNR_TRANSIT_OUT_Unavailable,KNR_TRANSIT - Unavailable,(knr_transit_available == False)|(KNR_implemented_and_available==0),,,,,,,,-30,,,,,,, +util_KNR_TRANSIT_OUT_In_vehicle_time,KNR_TRANSIT_OUT - In-vehicle time,@(df.ktw_ivt) * df.time_factor * df.outbound,,,,,,,,coef_ivt,,,,,,, +util_KNR_TRANSIT_OUT_iwait_time,KNR_TRANSIT_OUT - First iwait time,@(df.ktw_fwt) * df.time_factor * df.outbound,,,,,,,,coef_wait,,,,,,, +util_KNR_TRANSIT_OUT_transfer_wait_time,KNR_TRANSIT_OUT - transfer wait time,@(df.ktw_xwt) * df.time_factor * df.outbound,,,,,,,,coef_xwait,,,,,,, +util_KNR_TRANSIT_OUT_number_of_transfers,KNR_TRANSIT_OUT - number of transfers,"@(-23+23*np.exp(0.414*np.clip(df.ktw_xfr, a_min=None,a_max=4))) * df.time_factor * df.outbound",,,,,,,,coef_xferdrive,,,,,,, +util_KNR_TRANSIT_OUT_KNR_time,KNR_TRANSIT_OUT - KNR time,@(df.ktw_acc) * df.time_factor * df.outbound,,,,,,,,coef_acctime,,,,,,, +util_KNR_TRANSIT_OUT_Walk_time,KNR_TRANSIT_OUT - Walk egress time (at attraction end),@df.knr_transit_walk_time_out * df.time_factor * df.outbound,,,,,,,,coef_acctime,,,,,,, +util_KNR_TRANSIT_OUT_Walk_other_time,KNR_TRANSIT_OUT - Walk other time,@(df.ktw_aux) * df.time_factor * df.outbound,,,,,,,,coef_xwalk,,,,,,, +util_KNR_TRANSIT_OUT_Fare,KNR_TRANSIT_OUT - Fare,"@df.transitSubsidyPassDiscount*df.get('TRANSIT_FF', 1)*(odt_skims['fare'])*100*df.number_of_participants/(np.maximum(df.income,1000)**df.income_exponent) * df.outbound",,,,,,,,coef_income,,,,,,, +util_KNR_TRANSIT_OUT_drive_cost,KNR_TRANSIT_OUT - drive cost,"@(df.auto_op_cost * df.autoCPMFactor * df.ktw_drive_dist )*100*df.outbound/(np.maximum(df.income,1000)**df.income_exponent)",,,,,,,,coef_income,,,,,,, +util_KNR_TRANSIT_INB_In_vehicle_time,KNR_TRANSIT_INB - In-vehicle time,@(df.wtk_tiv) * df.time_factor * ~df.outbound,,,,,,,,coef_ivt,,,,,,, +util_KNR_TRANSIT_INB_iwait_time,KNR_TRANSIT_INB - First iwait time,@(df.wtk_fwt) * df.time_factor * ~df.outbound,,,,,,,,coef_wait,,,,,,, +util_KNR_TRANSIT_INB_transfer_wait_time,KNR_TRANSIT_INB - transfer wait time,@(df.wtk_xwt) * df.time_factor * ~df.outbound,,,,,,,,coef_xwait,,,,,,, +util_KNR_TRANSIT_INB_number_of_transfers,KNR_TRANSIT_INB - number of transfers,"@(-23+23*np.exp(0.414*np.clip(df.wtk_xfr, a_min=None,a_max=4))) * df.time_factor * ~df.outbound",,,,,,,,coef_xferdrive,,,,,,, +util_KNR_TRANSIT_INB_KNR_time,KNR_TRANSIT_INB - KNR time,@(df.wtk_egr) * df.time_factor * ~df.outbound,,,,,,,,coef_acctime,,,,,,, +util_KNR_TRANSIT_INB_Walk_time,KNR_TRANSIT_INB - Walk access time,@df.knr_transit_walk_time_inb * df.time_factor * df.outbound,,,,,,,,coef_acctime,,,,,,, +util_KNR_TRANSIT_INB_Walk_other_time,KNR_TRANSIT_INB - Walk other time,@(df.wtk_aux) * df.time_factor * ~df.outbound,,,,,,,,coef_xwalk,,,,,,, +util_KNR_TRANSIT_INB_Fare,KNR_TRANSIT_INB - Fare ,"@df.transitSubsidyPassDiscount*df.get('TRANSIT_FF', 1)*(odt_skims['fare'])*100*df.number_of_participants/(np.maximum(df.income,1000)**df.income_exponent) * ~df.outbound",,,,,,,,coef_income,,,,,,, +util_KNR_TRANSIT_INB_drive_cost,KNR_TRANSIT_INB - drive cost,"@(df.auto_op_cost * df.autoCPMFactor * df.wtk_drive_dist)*100*~df.outbound/(np.maximum(df.income,1000)**df.income_exponent)",,,,,,,,coef_income,,,,,,, +util_KNR_TRANSIT - Female,KNR_LOC - Female,@(df.female),,,,,,,,coef_female_tran,,,,,,, +util_KNR_TRANSIT - Destination Employment Density,KNR_LOC - Destination Employment Density,dEmpDen,,,,,,,,coef_dEmpDen_dTran,,,,,,, +#,BIKE_TRANSIT,,,,,,,,,,,,,,,, +util_BIKE_TRANSIT_Unavailable,BIKE_TRANSIT_Available,bike_transit_available == False | (BNR_available==0),,,,,,,,,-30,,,,,, +util_BIKE_TRANSIT_OUT_In_vehicle_time,BIKE_TRANSIT_OUT - In-vehicle time,@(df.ktw_ivt) * df.time_factor * df.outbound,,,,,,,,,coef_ivt,,,,,, +util_BIKE_TRANSIT_OUT_iwait_time,BIKE_TRANSIT_OUT - First iwait time,@(df.ktw_fwt) * df.time_factor * df.outbound,,,,,,,,,coef_wait,,,,,, +util_BIKE_TRANSIT_OUT_transfer_wait_time,BIKE_TRANSIT_OUT - transfer wait time,@(df.ktw_xwt) * df.time_factor * df.outbound,,,,,,,,,coef_xwait,,,,,, +util_BIKE_TRANSIT_OUT_number_of_transfers,BIKE_TRANSIT_OUT - number of transfers,"@(-23+23*np.exp(0.414*np.clip(df.ktw_xfr, a_min=None,a_max=4))) * df.time_factor * df.outbound",,,,,,,,,coef_xferdrive,,,,,, +util_BIKE_TRANSIT_OUT_bike_time,BIKE_TRANSIT_OUT - BIKE time,@(df.ktw_drive_dist * 60/10) * df.time_factor * df.outbound,,,,,,,,,coef_acctime,,,,,, +util_BIKE_TRANSIT_OUT_Walk_time,BIKE_TRANSIT_OUT - Walk egress time (at attraction end),@df.knr_transit_walk_time_out * df.time_factor * df.outbound,,,,,,,,,coef_acctime,,,,,, +util_BIKE_TRANSIT_OUT_Walk_other_time,BIKE_TRANSIT_OUT - Walk other time,@(df.ktw_aux) * df.time_factor * df.outbound,,,,,,,,,coef_xwalk,,,,,, +util_BIKE_TRANSIT_OUT_Fare,BIKE_TRANSIT_OUT - Fare,"@df.transitSubsidyPassDiscount*df.get('TRANSIT_FF', 1)*(odt_skims['fare'])*100*df.number_of_participants/(np.maximum(df.income,1000)**df.income_exponent) * df.outbound",,,,,,,,,coef_income,,,,,, +util_BIKE_TRANSIT_INB_In_vehicle_time,BIKE_TRANSIT_INB - In-vehicle time,@(df.wtk_tiv) * df.time_factor * ~df.outbound,,,,,,,,,coef_ivt,,,,,, +util_BIKE_TRANSIT_INB_iwait_time,BIKE_TRANSIT_INB - First iwait time,@(df.wtk_fwt) * df.time_factor * ~df.outbound,,,,,,,,,coef_wait,,,,,, +util_BIKE_TRANSIT_INB_transfer_wait_time,BIKE_TRANSIT_INB - transfer wait time,@(df.wtk_xwt) * df.time_factor * ~df.outbound,,,,,,,,,coef_xwait,,,,,, +util_BIKE_TRANSIT_INB_number_of_transfers,BIKE_TRANSIT_INB - number of transfers,"@(-23+23*np.exp(0.414*np.clip(df.wtk_xfr, a_min=None,a_max=4))) * df.time_factor * ~df.outbound",,,,,,,,,coef_xferdrive,,,,,, +util_BIKE_TRANSIT_INB_bike_time,BIKE_TRANSIT_INB - BIKE time,@(df.wtk_drive_dist * 60/10) * df.time_factor * ~df.outbound,,,,,,,,,coef_acctime,,,,,, +util_BIKE_TRANSIT_INB_Walk_time,BIKE_TRANSIT_INB - Walk egress time,@df.knr_transit_walk_time_inb * df.time_factor * df.outbound,,,,,,,,,coef_acctime,,,,,, +util_BIKE_TRANSIT_INB_Walk_other_time,BIKE_TRANSIT_INB - Walk other time,@(df.wtk_aux) * df.time_factor * ~df.outbound,,,,,,,,,coef_xwalk,,,,,, +util_BIKE_TRANSIT_INB_Fare,BIKE_TRANSIT_INB - Fare ,"@df.transitSubsidyPassDiscount*df.get('TRANSIT_FF', 1)*(odt_skims['fare'])*100*df.number_of_participants/(np.maximum(df.income,1000)**df.income_exponent) * ~df.outbound",,,,,,,,,coef_income,,,,,, +util_BIKE_TRANSIT - Female,BIKE_TRANSIT - Female,@(df.female),,,,,,,,,coef_female_tran,,,,,, +util_BIKE_TRANSIT - Origin Mix,BIKE_TRANSIT - Origin Mix,oMix,,,,,,,,,coef_oMix_wTran,,,,,, +util_BIKE_TRANSIT - Origin Intersection Density,BIKE_TRANSIT - Origin Intersection Density,oTotInt,,,,,,,,,coef_oIntDen_wTran,,,,,, +util_BIKE_TRANSIT - Destination Employment Density,BIKE_TRANSIT - Destination Employment Density,dEmpDen,,,,,,,,,coef_dEmpDen_wTran,,,,,, +#,Taxi,,,,,,,,,,,,,,,, +util_Taxi_Unavailable,Taxi - Unavailable,RideHail_available==0,,,,,,,,,,-30,,,,, +util_Taxi - In-vehicle time,Taxi - In-vehicle time,(s2_time_skims) * time_factor,,,,,,,,,,coef_ivt,,,,, +util_Taxi - Wait time,Taxi - Wait time,origTaxiWaitTime * time_factor,,,,,,,,,,coef_wait,,,,, +util_Taxi - Fare,Taxi - Fare,"@(((Taxi_baseFare + df.s2_dist_skims * Taxi_costPerMile + df.s2_time_skims * Taxi_costPerMinute) + df.s2_cost_skims))*100 / (np.maximum(df.income,1000)**df.income_exponent)",,,,,,,,,,coef_income,,,,, +#,TNC Single,,,,,,,,,,,,,,,, +util_TNC Single_Unavailable,TNC Single - Unavailable,RideHail_available==0,,,,,,,,,,,-30,,,, +util_TNC Single - In-vehicle time,TNC Single - In-vehicle time,(s2_time_skims) * time_factor,,,,,,,,,,,coef_ivt,,,, +util_TNC Single - Wait time,TNC Single - Wait time,origSingleTNCWaitTime * time_factor,,,,,,,,,,,coef_wait,,,, +util_TNC Single - Cost,TNC Single - Cost,"@((np.maximum(TNC_single_baseFare + df.s2_dist_skims * TNC_single_costPerMile + df.s2_time_skims * TNC_single_costPerMinute, TNC_single_costMinimum) + df.s2_cost_skims))*100 / (np.maximum(df.income,1000)**df.income_exponent)",,,,,,,,,,,coef_income,,,, +#,TNC Shared,,,,,,,,,,,,,,,, +util_TNC Shared - In-vehicle time,TNC Shared - In-vehicle time,@(df.s3_time_skims * TNC_shared_IVTFactor) * df.time_factor,,,,,,,,,,,,coef_ivt,,, +util_TNC Shared - Wait time,TNC Shared - Wait time,@(df.origSharedTNCWaitTime) * df.time_factor,,,,,,,,,,,,coef_wait,,, +util_TNC Shared - Cost,TNC Shared - Cost,"@(np.maximum(TNC_shared_baseFare + df.s3_dist_skims * TNC_shared_costPerMile + df.s3_time_skims * TNC_shared_costPerMinute, TNC_shared_costMinimum) + df.s3_cost_skims)*100 / (np.maximum(df.income,1000)**df.income_exponent)",,,,,,,,,,,,coef_income,,, +#,School bus,,,,,,,,,,,,,,,, +util_School Bus - Unavailable,School Bus - Unavailable,SCHBUS_available==0,,,,,,,,,,,,,-30,, +util_School Bus - In-vehicle Time at 20 miles per hour,School Bus - In-vehicle Time at 20 miles per hour,(da_dist_skims)* 3 * time_factor,,,,,,,,,,,,,coef_ivt,, +util_School Bus - Wait Time (asserted),School Bus - Wait Time (asserted),10 * time_factor,,,,,,,,,,,,,coef_wait,, +util_School Bus - Walk Time (asserted),School Bus - Walk Time (asserted),10 * time_factor,,,,,,,,,,,,,coef_acctime,, +util_School Bus - Age 6 to 12,School Bus - Age 6 to 12,@(df.age > 5) * (df.age < 13),,,,,,,,,,,,,coef_age6to12_schb,, +#,Ebike,,,,,,,,,,,,,,,, +util_Ebike - Unavailable,Ebike - Unavailable,ebike_time > 0,,,,,,,,,,,,,,-30, +util_ebike_long_access,unavailable if access time > threshold and not micromobility tour,@((df.ebikeAccessTime > microAccessThreshold) | df.moreThanMaxEBikeDistance) & ~df.tourEbike,,,,,,,,,,,,,,-30, +util_ebike_long_access_microTour,Decrease ebike if access time > threshold but tour is ebike,@((df.ebikeAccessTime > microAccessThreshold) | df.moreThanMaxEBikeDistance) & df.tourEbike,,,,,,,,,,,,,,-20, +util_ebike_ivt,Ebike utility for in-vehicle time,@(df.ebike_time * df.time_factor),,,,,,,,,,,,,,coef_ivt, +util_ebike_access,Ebike utility for access time time,@((((~df.ebike_owner) | (~df.tourEbike)) * (ebikeRentTime + df.ebikeAccessTime)))*df.time_factor,,,,,,,,,,,,,,coef_acctime, +util_ebike_cost_inb,Ebike utility for inbound cost,@(((~df.ebike_owner) | (~df.tourEbike)) * ((ebikeFixedCost + ebikeVarCost*df.ebike_time)*100/df.cost_sensitivity)),,,,,,,,,,,,,,coef_income, +#,Escooter,,,,,,,,,,,,,,,, +util_Escooter - Unavailable,Escooter - Unavailable,(escooter_time > 0),,,,,,,,,,,,,,,-30 +util_escooter_long_access,unavailable if access time or dist > threshold and not micromobility tour,@((df.escooterAccessTime > microAccessThreshold) | df.moreThanMaxEScooterDistance) & ~df.tourEscooter,,,,,,,,,,,,,,,-30 +util_escooter_long_access_microTour,Decrease escooter if access time or dist > threshold but tour is escooter,@((df.escooterAccessTime > microAccessThreshold) | df.moreThanMaxEScooterDistance) & df.tourEscooter,,,,,,,,,,,,,,,-20 +util_escooter_ivt,Escooter utility for in-vehicle time,@(df.escooter_time)*df.time_factor,,,,,,,,,,,,,,,coef_ivt +util_escooter_access,Escooter utility for access time,@(escooterRentTime + df.escooterAccessTime) *df.time_factor,,,,,,,,,,,,,,,coef_acctime +util_escooter_cost_inb,Escooter utility for inbound cost,@(escooterFixedCost + escooterVarCost*df.escooter_time)*100/df.cost_sensitivity,,,,,,,,,,,,,,,coef_income +#,indiv tour ASCs,,,,,,,,,,,,,,,, +util_calib_numberofparticipan,abm 2+ calibration,(numberOfParticipantsInJointTour<=2)&(jointTour==1),,,coef_calib_numberofparticipants_SHARED3,,,,,,,,,,,, +util_calib_KNR Transit - Distance Parameter,abm 2+ calibration,"@df.c_ivt*5*np.maximum((10-df.da_dist_skims),0)*0.5",,,,,,,,coef_calib_civt5max10sovdistski_KNR_TRANSIT,coef_calib_civt5max10sovdistski_TNC_TRANSIT,,,,,, +util_calib_Walk-Transit - Distance Parameter,abm 2+ calibration,"@df.c_ivt*np.maximum((200+(-133*df.da_dist_skims)),0)*0.5",,,,,,coef_calib_civtmax200133sovdist_WALK_TRANSIT,,,,,,,,, +util_calib_PNR-Transit - Distance Parameter,abm 2+ calibration,"@df.c_ivt*np.maximum((45+(-2.5*df.da_dist_skims)),0)*0.5",,,,,,,coef_calib_civtmax4525sovdistsk_PNR_TRANSIT,,,,,,,, +util_calib_esctour1,abm 2+ calibration,tour_type=='escort',,,,coef_calib_esctour1_WALK,,,,,,,,,,, +#,,,,,,,,,,,,,,,,, +util_calib_tourda,abm 2+ calibration,tourDA,,coef_calib_tourda_SHARED2,coef_calib_tourda_SHARED3,coef_calib_tourda_WALK,coef_calib_tourda_BIKE,coef_calib_tourda_WALK_TRANSIT,coef_calib_tourda_PNR_TRANSIT,coef_calib_tourda_KNR_TRANSIT,coef_calib_tourda_TNC_TRANSIT,coef_calib_tourda_TAXI,coef_calib_tourda_TNC_SINGLE,coef_calib_tourda_TNC_SHARED,coef_calib_tourda_SCH_BUS,-30,-30 +util_calib_tours2,abm 2+ calibration,tourS2,coef_calib_tours2_DRIVEALONE,coef_calib_tours2_SHARED2,coef_calib_tours2_SHARED3,coef_calib_tours2_WALK,coef_calib_tours2_BIKE,coef_calib_tours2_WALK_TRANSIT,coef_calib_tours2_PNR_TRANSIT,coef_calib_tours2_KNR_TRANSIT,coef_calib_tours2_TNC_TRANSIT,coef_calib_tours2_TAXI,coef_calib_tours2_TNC_SINGLE,coef_calib_tours2_TNC_SHARED,coef_calib_tours2_SCH_BUS,0,0 +util_calib_tours3,abm 2+ calibration,tourS3,coef_calib_tours3_DRIVEALONE,coef_calib_tours3_SHARED2,coef_calib_tours3_SHARED3,coef_calib_tours3_WALK,coef_calib_tours3_BIKE,coef_calib_tours3_WALK_TRANSIT,coef_calib_tours3_PNR_TRANSIT,coef_calib_tours3_KNR_TRANSIT,coef_calib_tours3_TNC_TRANSIT,coef_calib_tours3_TAXI,coef_calib_tours3_TNC_SINGLE,coef_calib_tours3_TNC_SHARED,coef_calib_tours3_SCH_BUS,0,0 +util_calib_tourwalk,abm 2+ calibration,tourWalk,coef_calib_tourwalk_DRIVEALONE,coef_calib_tourwalk_SHARED2,coef_calib_tourwalk_SHARED3,0,coef_calib_tourwalk_BIKE,coef_calib_tourwalk_WALK_TRANSIT,coef_calib_tourwalk_PNR_TRANSIT,coef_calib_tourwalk_KNR_TRANSIT,coef_calib_tourwalk_TNC_TRANSIT,coef_calib_tourwalk_TAXI,coef_calib_tourwalk_TNC_SINGLE,coef_calib_tourwalk_TNC_SHARED,coef_calib_tourwalk_SCH_BUS,-30,-30 +util_calib_tourbike,abm 2+ calibration,tourBike,coef_calib_tourbike_DRIVEALONE,coef_calib_tourbike_SHARED2,coef_calib_tourbike_SHARED3,coef_calib_tourbike_WALK,coef_calib_tourbike_BIKE,coef_calib_tourbike_WALK_TRANSIT,coef_calib_tourbike_PNR_TRANSIT,coef_calib_tourbike_KNR_TRANSIT,coef_calib_tourbike_TNC_TRANSIT,coef_calib_tourbike_TAXI,coef_calib_tourbike_TNC_SINGLE,coef_calib_tourbike_TNC_SHARED,coef_calib_tourbike_SCH_BUS,-30,-30 +util_calib_tourwtran,abm 2+ calibration,tourWTran,coef_calib_tourwtran_DRIVEALONE,coef_calib_tourwtran_SHARED2,coef_calib_tourwtran_SHARED3,coef_calib_tourwtran_WALK,coef_calib_tourwtran_BIKE,coef_calib_tourwtran_WALK_TRANSIT,coef_calib_tourwtran_PNR_TRANSIT,coef_calib_tourwtran_KNR_TRANSIT,coef_calib_tourwtran_TNC_TRANSIT,coef_calib_tourwtran_TAXI,coef_calib_tourwtran_TNC_SINGLE,coef_calib_tourwtran_TNC_SHARED,coef_calib_tourwtran_SCH_BUS,0,0 +util_calib_tourpnr,abm 2+ calibration,tourPNR,coef_calib_tourpnr_DRIVEALONE,coef_calib_tourpnr_SHARED2,coef_calib_tourpnr_SHARED3,coef_calib_tourpnr_WALK,coef_calib_tourpnr_BIKE,coef_calib_tourpnr_WALK_TRANSIT,coef_calib_tourpnr_PNR_TRANSIT,coef_calib_tourpnr_KNR_TRANSIT,coef_calib_tourpnr_TNC_TRANSIT,coef_calib_tourpnr_TAXI,coef_calib_tourpnr_TNC_SINGLE,coef_calib_tourpnr_TNC_SHARED,coef_calib_tourpnr_SCH_BUS,-30,-30 +util_calib_tourknr,abm 2+ calibration,tourKNR,coef_calib_tourknr_DRIVEALONE,coef_calib_tourknr_SHARED2,coef_calib_tourknr_SHARED3,coef_calib_tourknr_WALK,coef_calib_tourknr_BIKE,coef_calib_tourknr_WALK_TRANSIT,coef_calib_tourknr_PNR_TRANSIT,coef_calib_tourknr_KNR_TRANSIT,coef_calib_tourknr_TNC_TRANSIT,coef_calib_tourknr_TAXI,coef_calib_tourknr_TNC_SINGLE,coef_calib_tourknr_TNC_SHARED,coef_calib_tourknr_SCH_BUS,-30,-30 +util_calib_tourtnr,abm 2+ calibration,tourBNR,coef_calib_tourtnr_DRIVEALONE,0,0,0,coef_calib_tourtnr_BIKE,0,coef_calib_tourtnr_PNR_TRANSIT,0,0,0,0,0,coef_calib_tourtnr_SCH_BUS,-30,-30 +util_calib_tourmaas,abm 2+ calibration,tourMaaS,coef_calib_tourmaas_DRIVEALONE,coef_calib_tourmaas_SHARED2,coef_calib_tourmaas_SHARED3,coef_calib_tourmaas_WALK,coef_calib_tourmaas_BIKE,coef_calib_tourmaas_WALK_TRANSIT,coef_calib_tourmaas_PNR_TRANSIT,coef_calib_tourmaas_KNR_TRANSIT,coef_calib_tourmaas_TNC_TRANSIT,coef_calib_tourmaas_TAXI,coef_calib_tourmaas_TNC_SINGLE,coef_calib_tourmaas_TNC_SHARED,coef_calib_tourmaas_TNC_SCH_BUS,0,0 +util_calib_tourschbus,abm 2+ calibration,tourSchBus,coef_calib_tourschbus_DRIVEALONE,coef_calib_tourschbus_SHARED2,coef_calib_tourschbus_SHARED3,coef_calib_tourschbus_WALK,coef_calib_tourschbus_BIKE,coef_calib_tourschbus_WALK_TRANSIT,coef_calib_tourschbus_PNR_TRANSIT,coef_calib_tourschbus_KNR_TRANSIT,coef_calib_tourschbus_TNC_TRANSIT,coef_calib_tourschbus_TAXI,coef_calib_tourschbus_TNC_SINGLE,coef_calib_tourschbus_TNC_SHARED,0,-30,-30 +util_availability_tourebike,,tourEbike,-30,-30,-30,0,-30,-30,-30,-30,-30,-30,-30,-30,-30,0,-30 +util_availability_tourescooter,,tourEscooter,-30,-30,-30,0,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,0 +#,,,,,,,,,,,,,,,,, +util_calib_jointtour1,abm 2+ calibration,jointTour==1,0,0,0,coef_calib_jointtour1_WALK,0,coef_calib_jointtour1_WALK_TRANSIT,coef_calib_jointtour1_PNR_TRANSIT,coef_calib_jointtour1_KNR_TRANSIT,coef_calib_jointtour1_TNC_TRANSIT,0,0,0,0,, +util_calib_tourbikejointtour0,abm 2+ calibration,tourBike*(jointTour==0),coef_calib_tourbikejointtour0_DRIVEALONE,coef_calib_tourbikejointtour0_SHARED2,coef_calib_tourbikejointtour0_SHARED3,coef_calib_tourbikejointtour0_WALK,coef_calib_tourbikejointtour0_BIKE,coef_calib_tourbikejointtour0_WALK_TRANSIT,coef_calib_tourbikejointtour0_PNR_TRANSIT,coef_calib_tourbikejointtour0_KNR_TRANSIT,coef_calib_tourbikejointtour0_TNC_TRANSIT,coef_calib_tourbikejointtour0_TAXI,coef_calib_tourbikejointtour0_TNC_SINGLE,coef_calib_tourbikejointtour0_TNC_SHARED,0,, +util_calib_tourbikejointtour1,abm 2+ calibration,tourBike*(jointTour==1),0,0,0,0,coef_calib_tourbikejointtour1_BIKE,0,0,0,0,coef_calib_tourbikejointtour1_TAXI,coef_calib_tourbikejointtour1_TNC_SINGLE,coef_calib_tourbikejointtour1_TNC_SHARED,0,, +util_calib_tourdajointtour0,abm 2+ calibration,tourDA*(jointTour==0),coef_calib_tourdajointtour0_DRIVEALONE,coef_calib_tourdajointtour0_SHARED2,coef_calib_tourdajointtour0_SHARED3,coef_calib_tourdajointtour0_WALK,coef_calib_tourdajointtour0_BIKE,coef_calib_tourdajointtour0_WALK_TRANSIT,coef_calib_tourdajointtour0_PNR_TRANSIT,coef_calib_tourdajointtour0_KNR_TRANSIT,coef_calib_tourdajointtour0_TNC_TRANSIT,coef_calib_tourdajointtour0_TAXI,coef_calib_tourdajointtour0_TNC_SINGLE,coef_calib_tourdajointtour0_TNC_SHARED,0,, +util_calib_tourdajointtour1,abm 2+ calibration,tourDA*(jointTour==1),0,coef_calib_tourdajointtour1_SHARED2,coef_calib_tourdajointtour1_SHARED3,coef_calib_tourdajointtour1_WALK,coef_calib_tourdajointtour1_BIKE,coef_calib_tourdajointtour1_WALK_TRANSIT,coef_calib_tourdajointtour1_PNR_TRANSIT,coef_calib_tourdajointtour1_KNR_TRANSIT,coef_calib_tourdajointtour1_TNC_TRANSIT,coef_calib_tourdajointtour1_TAXI,coef_calib_tourdajointtour1_TNC_SINGLE,coef_calib_tourdajointtour1_TNC_SHARED,0,, +util_calib_tourknrjointtour0,abm 2+ calibration,tourKNR*(jointTour==0),coef_calib_tourknrjointtour0_DRIVEALONE,coef_calib_tourknrjointtour0_SHARED2,coef_calib_tourknrjointtour0_SHARED3,coef_calib_tourknrjointtour0_WALK,coef_calib_tourknrjointtour0_BIKE,coef_calib_tourknrjointtour0_WALK_TRANSIT,coef_calib_tourknrjointtour0_PNR_TRANSIT,coef_calib_tourknrjointtour0_KNR_TRANSIT,coef_calib_tourknrjointtour0_TNC_TRANSIT,coef_calib_tourknrjointtour0_TAXI,coef_calib_tourknrjointtour0_TNC_SINGLE,coef_calib_tourknrjointtour0_TNC_SHARED,0,, +util_calib_tourknrjointtour1,abm 2+ calibration,tourKNR*(jointTour==1),coef_calib_tourknrjointtour1_DRIVEALONE,0,0,0,coef_calib_tourknrjointtour1_BIKE,0,coef_calib_tourknrjointtour1_PNR_TRANSIT,0,coef_calib_tourknrjointtour1_TNC_TRANSIT,coef_calib_tourknrjointtour1_TAXI,coef_calib_tourknrjointtour1_TNC_SINGLE,coef_calib_tourknrjointtour1_TNC_SHARED,0,, +util_calib_tourknrtotstops0,abm 2+ calibration,tourKNR*(totStops==0),coef_calib_tourknrtotstops0_DRIVEALONE,coef_calib_tourknrtotstops0_SHARED2,coef_calib_tourknrtotstops0_SHARED3,coef_calib_tourknrtotstops0_WALK,coef_calib_tourknrtotstops0_BIKE,coef_calib_tourknrtotstops0_WALK_TRANSIT,coef_calib_tourknrtotstops0_PNR_TRANSIT,0,0,0,0,0,0,, +util_calib_tourknrtotstops>0,abm 2+ calibration,tourKNR*(totStops>0),coef_calib_tourknrtotstopsm0_DRIVEALONE,0,0,0,coef_calib_tourknrtotstopsm0_BIKE,0,coef_calib_tourknrtotstopsm0_PNR_TRANSIT,0,0,0,0,0,0,, +util_calib_tourknrfirstofmult,abm 2+ calibration,tourKNR*firstOfMultipleTrips,coef_calib_tourknrfirstofmultip_DRIVEALONE,0,0,0,coef_calib_tourknrfirstofmultip_BIKE,0,coef_calib_tourknrfirstofmultip_PNR_TRANSIT,0,0,0,0,0,0,, +util_calib_tourknrlastofmulti,abm 2+ calibration,tourKNR*lastofMultipleTrips,coef_calib_tourknrlastofmultipl_DRIVEALONE,0,0,0,coef_calib_tourknrlastofmultipl_BIKE,0,coef_calib_tourknrlastofmultipl_PNR_TRANSIT,0,0,0,0,0,0,, +util_calib_tourebikejointtour0,,tourEbike*(jointTour==0),,,,coef_calib_tourebikejointtour0_WALK,,,,,,,,,,coef_calib_tourebikejointtour0_EBIKE, +util_calib_tourebikejointtour1,,tourEbike*(jointTour==1),,,,coef_calib_tourebikejointtour1_WALK,,,,,,,,,,coef_calib_tourebikejointtour1_EBIKE, +util_calib_tourescooterjointtour0,,tourEscooter*(jointTour==0),,,,coef_calib_tourescooterjointtour0_WALK,,,,,,,,,,,coef_calib_tourescooterjointtour0_ESCOOTER +util_calib_tourescooterjointtour1,,tourEscooter*(jointTour==1),,,,coef_calib_tourescooterjointtour1_WALK,,,,,,,,,,,coef_calib_tourescooterjointtour1_ESCOOTER +#,,,,,,,,,,,,,,,,, +util_calib_tourmaasjointtour0,abm 2+ calibration,tourMaaS*(jointTour==0),0,coef_calib_tourmaasjointtour0_SHARED2,coef_calib_tourmaasjointtour0_SHARED3,coef_calib_tourmaasjointtour0_WALK,0,0,0,0,0,coef_calib_tourmaasjointtour0_TAXI,coef_calib_tourmaasjointtour0_TNC_SINGLE,coef_calib_tourmaasjointtour0_TNC_SHARED,0,, +util_calib_tourmaasjointtour1,abm 2+ calibration,tourMaaS*(jointTour==1),0,coef_calib_tourmaasjointtour1_SHARED2,coef_calib_tourmaasjointtour1_SHARED3,coef_calib_tourmaasjointtour1_WALK,0,0,0,0,0,0,coef_calib_tourmaasjointtour1_TNC_SINGLE,coef_calib_tourmaasjointtour1_TNC_SHARED,0,, +util_calib_tourpnrjointtour0,abm 2+ calibration,tourPNR*(jointTour==0),coef_calib_tourpnrjointtour0_DRIVEALONE,coef_calib_tourpnrjointtour0_SHARED2,coef_calib_tourpnrjointtour0_SHARED3,coef_calib_tourpnrjointtour0_WALK,coef_calib_tourpnrjointtour0_BIKE,coef_calib_tourpnrjointtour0_WALK_TRANSIT,coef_calib_tourpnrjointtour0_PNR_TRANSIT,coef_calib_tourpnrjointtour0_KNR_TRANSIT,coef_calib_tourpnrjointtour0_TNC_TRANSIT,coef_calib_tourpnrjointtour0_TAXI,coef_calib_tourpnrjointtour0_TNC_SINGLE,coef_calib_tourpnrjointtour0_TNC_SHARED,0,, +util_calib_tourpnrjointtour1,abm 2+ calibration,tourPNR*(jointTour==1),0,0,0,0,coef_calib_tourpnrjointtour1_BIKE,0,0,coef_calib_tourpnrjointtour1_KNR_TRANSIT,coef_calib_tourpnrjointtour1_TNC_TRANSIT,coef_calib_tourpnrjointtour1_TAXI,coef_calib_tourpnrjointtour1_TNC_SINGLE,coef_calib_tourpnrjointtour1_TNC_SHARED,0,, +util_calib_tourpnrtotstops0,abm 2+ calibration,tourPNR*(totStops==0),coef_calib_tourpnrtotstops0_DRIVEALONE,coef_calib_tourpnrtotstops0_SHARED2,coef_calib_tourpnrtotstops0_SHARED3,coef_calib_tourpnrtotstops0_WALK,coef_calib_tourpnrtotstops0_BIKE,coef_calib_tourpnrtotstops0_WALK_TRANSIT,0,coef_calib_tourpnrtotstops0_KNR_TRANSIT,coef_calib_tourpnrtotstops0_TNC_TRANSIT,0,0,0,0,, +util_calib_tourpnrtotstops>0,abm 2+ calibration,tourPNR*(totStops>0),0,0,0,0,coef_calib_tourpnrtotstopsm0_BIKE,coef_calib_tourpnrtotstopsm0_WALK_TRANSIT,0,coef_calib_tourpnrtotstopsm0_KNR_TRANSIT,coef_calib_tourpnrtotstopsm0_TNC_TRANSIT,0,0,0,0,, +util_calib_tourpnrfirstofmult,abm 2+ calibration,tourPNR*firstOfMultipleTrips,0,0,0,0,coef_calib_tourpnrfirstofmultip_BIKE,0,0,coef_calib_tourpnrfirstofmultip_KNR_TRANSIT,coef_calib_tourpnrfirstofmultip_TNC_TRANSIT,0,0,0,0,, +util_calib_tourpnrlastofmulti,abm 2+ calibration,tourPNR*lastofMultipleTrips,0,0,0,0,coef_calib_tourpnrlastofmultipl_BIKE,0,0,coef_calib_tourpnrlastofmultipl_KNR_TRANSIT,coef_calib_tourpnrlastofmultipl_TNC_TRANSIT,0,0,0,0,, +util_calib_tours2jointtour0,abm 2+ calibration,tourS2*(jointTour==0),coef_calib_tours2jointtour0_DRIVEALONE,coef_calib_tours2jointtour0_SHARED2,coef_calib_tours2jointtour0_SHARED3,coef_calib_tours2jointtour0_WALK,coef_calib_tours2jointtour0_BIKE,coef_calib_tours2jointtour0_WALK_TRANSIT,coef_calib_tours2jointtour0_PNR_TRANSIT,coef_calib_tours2jointtour0_KNR_TRANSIT,coef_calib_tours2jointtour0_TNC_TRANSIT,coef_calib_tours2jointtour0_TAXI,coef_calib_tours2jointtour0_TNC_SINGLE,coef_calib_tours2jointtour0_TNC_SHARED,0,, +util_calib_tours2jointtour1,abm 2+ calibration,tourS2*(jointTour==1),coef_calib_tours2jointtour1_DRIVEALONE,coef_calib_tours2jointtour1_SHARED2,coef_calib_tours2jointtour1_SHARED3,coef_calib_tours2jointtour1_WALK,coef_calib_tours2jointtour1_BIKE,coef_calib_tours2jointtour1_WALK_TRANSIT,coef_calib_tours2jointtour1_PNR_TRANSIT,coef_calib_tours2jointtour1_KNR_TRANSIT,coef_calib_tours2jointtour1_TNC_TRANSIT,coef_calib_tours2jointtour1_TAXI,coef_calib_tours2jointtour1_TNC_SINGLE,coef_calib_tours2jointtour1_TNC_SHARED,0,, +#,,,,,,,,,,,,,,,,, +util_calib_tours2totstops0,abm 2+ calibration,tourS2*(totStops==0),coef_calib_tours2totstops0_DRIVEALONE,0,coef_calib_tours2totstops0_SHARED3,coef_calib_tours2totstops0_WALK,coef_calib_tours2totstops0_BIKE,coef_calib_tours2totstops0_WALK_TRANSIT,coef_calib_tours2totstops0_PNR_TRANSIT,coef_calib_tours2totstops0_KNR_TRANSIT,coef_calib_tours2totstops0_TNC_TRANSIT,0,0,0,0,, +util_calib_tours2firstofmulti,abm 2+ calibration,tourS2*firstOfMultipleTrips,coef_calib_tours2firstofmultipl_DRIVEALONE,0,coef_calib_tours2firstofmultipl_SHARED3,coef_calib_tours2firstofmultipl_WALK,coef_calib_tours2firstofmultipl_BIKE,coef_calib_tours2firstofmultipl_WALK_TRANSIT,coef_calib_tours2firstofmultipl_PNR_TRANSIT,coef_calib_tours2firstofmultipl_KNR_TRANSIT,coef_calib_tours2firstofmultipl_TNC_TRANSIT,0,0,0,0,, +util_calib_tours2lastofmultip,abm 2+ calibration,tourS2*lastofMultipleTrips,coef_calib_tours2lastofmultiple_DRIVEALONE,0,coef_calib_tours2lastofmultiple_SHARED3,coef_calib_tours2lastofmultiple_WALK,coef_calib_tours2lastofmultiple_BIKE,coef_calib_tours2lastofmultiple_WALK_TRANSIT,coef_calib_tours2lastofmultiple_PNR_TRANSIT,coef_calib_tours2lastofmultiple_KNR_TRANSIT,coef_calib_tours2lastofmultiple_TNC_TRANSIT,0,0,0,0,, +util_calib_tours3jointtour0,abm 2+ calibration,tourS3*(jointTour==0),coef_calib_tours3jointtour0_DRIVEALONE,coef_calib_tours3jointtour0_SHARED2,coef_calib_tours3jointtour0_SHARED3,coef_calib_tours3jointtour0_WALK,coef_calib_tours3jointtour0_BIKE,coef_calib_tours3jointtour0_WALK_TRANSIT,coef_calib_tours3jointtour0_PNR_TRANSIT,coef_calib_tours3jointtour0_KNR_TRANSIT,coef_calib_tours3jointtour0_TNC_TRANSIT,coef_calib_tours3jointtour0_TAXI,coef_calib_tours3jointtour0_TNC_SINGLE,coef_calib_tours3jointtour0_TNC_SHARED,0,, +util_calib_tours3jointtour1,abm 2+ calibration,tourS3*(jointTour==1),coef_calib_tours3jointtour1_DRIVEALONE,coef_calib_tours3jointtour1_SHARED2,coef_calib_tours3jointtour1_SHARED3,coef_calib_tours3jointtour1_WALK,coef_calib_tours3jointtour1_BIKE,coef_calib_tours3jointtour1_WALK_TRANSIT,coef_calib_tours3jointtour1_PNR_TRANSIT,coef_calib_tours3jointtour1_KNR_TRANSIT,coef_calib_tours3jointtour1_TNC_TRANSIT,coef_calib_tours3jointtour1_TAXI,coef_calib_tours3jointtour1_TNC_SINGLE,coef_calib_tours3jointtour1_TNC_SHARED,0,, +util_calib_tours3totstops0,abm 2+ calibration,tourS3*(totStops==0),coef_calib_tours3totstops0_DRIVEALONE,coef_calib_tours3totstops0_SHARED2,0,coef_calib_tours3totstops0_WALK,coef_calib_tours3totstops0_BIKE,coef_calib_tours3totstops0_WALK_TRANSIT,coef_calib_tours3totstops0_PNR_TRANSIT,coef_calib_tours3totstops0_KNR_TRANSIT,coef_calib_tours3totstops0_TNC_TRANSIT,0,0,0,0,, +util_calib_tours3autodeficien,abm 2+ calibration,tourS3*autoDeficientHH,0,coef_calib_tours3autodeficienth_SHARED2,0,0,0,0,0,0,0,0,0,0,0,, +util_calib_tours3firstofmulti,abm 2+ calibration,tourS3*firstOfMultipleTrips,coef_calib_tours3firstofmultipl_DRIVEALONE,coef_calib_tours3firstofmultipl_SHARED2,0,coef_calib_tours3firstofmultipl_WALK,coef_calib_tours3firstofmultipl_BIKE,coef_calib_tours3firstofmultipl_WALK_TRANSIT,coef_calib_tours3firstofmultipl_PNR_TRANSIT,coef_calib_tours3firstofmultipl_KNR_TRANSIT,coef_calib_tours3firstofmultipl_TNC_TRANSIT,0,0,0,0,, +util_calib_tours3lastofmultip,abm 2+ calibration,tourS3*lastofMultipleTrips,coef_calib_tours3lastofmultiple_DRIVEALONE,coef_calib_tours3lastofmultiple_SHARED2,0,coef_calib_tours3lastofmultiple_WALK,coef_calib_tours3lastofmultiple_BIKE,coef_calib_tours3lastofmultiple_WALK_TRANSIT,coef_calib_tours3lastofmultiple_PNR_TRANSIT,coef_calib_tours3lastofmultiple_KNR_TRANSIT,coef_calib_tours3lastofmultiple_TNC_TRANSIT,0,0,0,0,, +util_calib_tours3zeroautohh,abm 2+ calibration,tourS3*zeroAutoHH,0,coef_calib_tours3zeroautohh_SHARED2,0,0,0,0,0,0,0,0,0,0,0,, +#,,,,,,,,,,,,,,,,, +util_calib_tourwtranjointtour0,abm 2+ calibration,tourWTran*(jointTour==0),coef_calib_tourwtranjointtour0_DRIVEALONE,coef_calib_tourwtranjointtour0_SHARED2,coef_calib_tourwtranjointtour0_SHARED3,coef_calib_tourwtranjointtour0_WALK,coef_calib_tourwtranjointtour0_BIKE,coef_calib_tourwtranjointtour0_WALK_TRANSIT,coef_calib_tourwtranjointtour0_PNR_TRANSIT,coef_calib_tourwtranjointtour0_KNR_TRANSIT,coef_calib_tourwtranjointtour0_TNC_TRANSIT,0,coef_calib_tourwtranjointtour0_TNC_SINGLE,coef_calib_tourwtranjointtour0_TNC_SHARED,0,, +util_calib_tourwtranjointtour1,abm 2+ calibration,tourWTran*(jointTour==1),coef_calib_tourwtranjointtour1_DRIVEALONE,coef_calib_tourwtranjointtour1_SHARED2,coef_calib_tourwtranjointtour1_SHARED3,coef_calib_tourwtranjointtour1_WALK,coef_calib_tourwtranjointtour1_BIKE,coef_calib_tourwtranjointtour1_WALK_TRANSIT,coef_calib_tourwtranjointtour1_PNR_TRANSIT,coef_calib_tourwtranjointtour1_KNR_TRANSIT,coef_calib_tourwtranjointtour1_TNC_TRANSIT,coef_calib_tourwtranjointtour1_TAXI,coef_calib_tourwtranjointtour1_TNC_SINGLE,coef_calib_tourwtranjointtour1_TNC_SHARED,0,, +util_calib_tourwtrantotstops0,abm 2+ calibration,tourWTran*(totStops==0),coef_calib_tourwtrantotstops0_DRIVEALONE,coef_calib_tourwtrantotstops0_SHARED2,coef_calib_tourwtrantotstops0_SHARED3,coef_calib_tourwtrantotstops0_WALK,coef_calib_tourwtrantotstops0_BIKE,0,coef_calib_tourwtrantotstops0_PNR_TRANSIT,coef_calib_tourwtrantotstops0_KNR_TRANSIT,coef_calib_tourwtrantotstops0_TNC_TRANSIT,0,0,0,coef_calib_tourwtrantotstops0_SCH_BUS,, +#,,,,,,,,,,,,,,,,, +util_calib_tourwtranfirstofmu,abm 2+ calibration,tourWTran*firstOfMultipleTrips,coef_calib_tourwtranfirstofmult_DRIVEALONE,coef_calib_tourwtranfirstofmult_SHARED2,coef_calib_tourwtranfirstofmult_SHARED3,coef_calib_tourwtranfirstofmult_WALK,coef_calib_tourwtranfirstofmult_BIKE,0,coef_calib_tourwtranfirstofmult_PNR_TRANSIT,coef_calib_tourwtranfirstofmult_KNR_TRANSIT,coef_calib_tourwtranfirstofmult_TNC_TRANSIT,0,0,0,coef_calib_tourwtranfirstofmult_SCH_BUS,, +util_calib_tourwtranlastofmul,abm 2+ calibration,tourWTran*lastofMultipleTrips,coef_calib_tourwtranlastofmulti_DRIVEALONE,coef_calib_tourwtranlastofmulti_SHARED2,coef_calib_tourwtranlastofmulti_SHARED3,coef_calib_tourwtranlastofmulti_WALK,coef_calib_tourwtranlastofmulti_BIKE,0,coef_calib_tourwtranlastofmulti_PNR_TRANSIT,coef_calib_tourwtranlastofmulti_KNR_TRANSIT,coef_calib_tourwtranlastofmulti_TNC_TRANSIT,0,0,0,coef_calib_tourwtranlastofmulti_SCH_BUS,, +util_calib_tourwtranzeroautoh,abm 2+ calibration,tourWTran*zeroAutoHH,0,0,0,coef_calib_tourwtranzeroautohh_WALK,0,0,0,0,0,0,0,0,0,, +util_calib_tourwalkjointtour0,abm 2+ calibration,tourWalk*(jointTour==0),coef_calib_tourwalkjointtour0_DRIVEALONE,coef_calib_tourwalkjointtour0_SHARED2,coef_calib_tourwalkjointtour0_SHARED3,coef_calib_tourwalkjointtour0_WALK,coef_calib_tourwalkjointtour0_BIKE,coef_calib_tourwalkjointtour0_WALK_TRANSIT,coef_calib_tourwalkjointtour0_PNR_TRANSIT,coef_calib_tourwalkjointtour0_KNR_TRANSIT,coef_calib_tourwalkjointtour0_TNC_TRANSIT,coef_calib_tourwalkjointtour0_TAXI,coef_calib_tourwalkjointtour0_TNC_SINGLE,coef_calib_tourwalkjointtour0_TNC_SHARED,0,, +util_calib_tourwalkjointtour1,abm 2+ calibration,tourWalk*(jointTour==1),coef_calib_tourwalkjointtour1_DRIVEALONE,coef_calib_tourwalkjointtour1_SHARED2,coef_calib_tourwalkjointtour1_SHARED3,0,coef_calib_tourwalkjointtour1_BIKE,coef_calib_tourwalkjointtour1_WALK_TRANSIT,coef_calib_tourwalkjointtour1_PNR_TRANSIT,coef_calib_tourwalkjointtour1_KNR_TRANSIT,coef_calib_tourwalkjointtour1_TNC_TRANSIT,coef_calib_tourwalkjointtour1_TAXI,coef_calib_tourwalkjointtour1_TNC_SINGLE,coef_calib_tourwalkjointtour1_TNC_SHARED,0,, diff --git a/resident/configs_estimation/trip_mode_choice_coefficients.csv b/resident/configs_estimation/trip_mode_choice_coefficients.csv new file mode 100644 index 0000000..92c90eb --- /dev/null +++ b/resident/configs_estimation/trip_mode_choice_coefficients.csv @@ -0,0 +1,1432 @@ +coefficient_name,value,constrain +coef_zero,0.0,T +coef_one,1.0,T +coef_nest_root,1.0,T +coef_nest_AUTO,0.5,T +coef_nest_NONMOTORIZED,0.5,T +coef_nest_MICROMOBILITY,0.5,T +coef_nest_TRANSIT,0.5,T +coef_nest_RIDEHAIL,0.5,T +coef_nest_SCHOOL_BUS,0.5,T +coef_unavailable,-30.0,T +#,0.0, +coef_ivt_work,-0.032,F +coef_ivt_univ,-0.032,F +coef_ivt_school,-0.02,F +coef_ivt_maint,-0.034,F +coef_ivt_disc,-0.03,F +coef_ivt_atwork,-0.064,F +coef_rel_work,-0.384,F +coef_rel_univ,-0.384,F +coef_rel_school,-0.24,F +coef_rel_maint,-0.408,F +coef_rel_disc,-0.36,F +coef_rel_atwork,-0.768,F +coef_income_work,-1.25,F +coef_income_univ,-0.524,F +coef_income_school,-0.524,F +coef_income_maint,-0.524,F +coef_income_disc,-0.524,F +coef_income_atwork,-0.524,F +coef_walktime_work,-0.0848,F +coef_walktime_univ,-0.0848,F +coef_walktime_school,-0.053,F +coef_walktime_maint,-0.0901,F +coef_walktime_disc,-0.0795,F +coef_walktime_atwork,-0.1696,F +coef_wait_work,-0.048,F +coef_wait_univ,-0.048,F +coef_wait_school,-0.03,F +coef_wait_maint,-0.051,F +coef_wait_disc,-0.045,F +coef_wait_atwork,-0.096,F +coef_xwait_work,-0.064,F +coef_xwait_univ,-0.064,F +coef_xwait_school,-0.04,F +coef_xwait_maint,-0.068,F +coef_xwait_disc,-0.06,F +coef_xwait_atwork,-0.128,F +coef_xfer_work,-0.048,F +coef_xfer_univ,-0.048,F +coef_xfer_school,-0.03,F +coef_xfer_maint,-0.051,F +coef_xfer_disc,-0.045,F +coef_xfer_atwork,-0.096,F +coef_xferdrive_work,-0.064,F +coef_xferdrive_univ,-0.064,F +coef_xferdrive_school,-0.04,F +coef_xferdrive_maint,-0.068,F +coef_xferdrive_disc,-0.06,F +coef_xferdrive_atwork,-0.128,F +coef_acctime_work,-0.064,F +coef_acctime_univ,-0.064,F +coef_acctime_school,-0.04,F +coef_acctime_maint,-0.068,F +coef_acctime_disc,-0.06,F +coef_acctime_atwork,-0.128,F +coef_xwalk_work,-0.064,F +coef_xwalk_univ,-0.064,F +coef_xwalk_school,-0.04,F +coef_xwalk_maint,-0.068,F +coef_xwalk_disc,-0.06,F +coef_xwalk_atwork,-0.128,F +#,0.0, +coef_oMix_nmot_work,0.22519,F +coef_oMix_wTran_work,0.0,F +coef_oIntDen_nmot_work,0.0,F +coef_oIntDen_wTran_work,0.0,F +coef_dEmpDen_nmot_work,0.0,F +coef_dEmpDen_wTran_work,0.0,F +coef_dEmpDen_dTran_work,0.02512,F +coef_female_sr2_work,0.2743,F +coef_female_sr3p_work,0.0718,F +coef_female_tran_work,1.0624,F +coef_female_nmot_work,-1.1033,F +coef_size2_sr2_work,0.0,F +coef_size2_sr3p_work,0.0,F +coef_size3_sr2_work,0.0,F +coef_size3_sr3p_work,0.0,F +coef_size4p_sr2_work,0.0,F +coef_size4p_sr3p_work,0.0,F +coef_bikeLogsum_work,0.06717,F +#,0.0, +coef_oMix_nmot_univ,0.0,F +coef_oMix_wTran_univ,0.0,F +coef_oIntDen_nmot_univ,0.0,F +coef_oIntDen_wTran_univ,0.0,F +coef_dEmpDen_nmot_univ,0.0,F +coef_dEmpDen_wTran_univ,0.0,F +coef_dEmpDen_dTran_univ,0.0,F +coef_female_sr2_univ,-0.7308,F +coef_female_sr3p_univ,-1.11759,F +coef_female_tran_univ,0.0,F +coef_female_nmot_univ,0.0,F +coef_size2_sr2_univ,0.0,F +coef_size2_sr3p_univ,0.0,F +coef_size3_sr2_univ,0.0,F +coef_size3_sr3p_univ,0.0,F +coef_size4p_sr2_univ,0.0,F +coef_size4p_sr3p_univ,0.0,F +coef_bikeLogsum_univ,0.06717,F +#,0.0, +coef_oMix_nmot_school,0.0,F +coef_oMix_wTran_school,0.0,F +coef_oIntDen_nmot_school,0.0,F +coef_oIntDen_wTran_school,0.0,F +coef_dEmpDen_nmot_school,0.0,F +coef_dEmpDen_wTran_school,0.0,F +coef_dEmpDen_dTran_school,0.0,F +coef_female_sr2_school,0.0,F +coef_female_sr3p_school,0.0,F +coef_female_tran_school,0.0,F +coef_female_nmot_school,0.0,F +coef_age1to5_nmot_school,-1.711,F +coef_age6to12_nmot_school,-0.762,F +coef_age13to15_nmot_school,-0.312,F +coef_age6to12_schb_school,0.0,F +coef_size2_sr2_school,0.0,F +coef_size2_sr3p_school,0.0,F +coef_size3_sr2_school,0.0,F +coef_size3_sr3p_school,0.0,F +coef_size4p_sr2_school,0.0,F +coef_size4p_sr3p_school,0.0,F +coef_bikeLogsum_school,0.06717,F +#,0.0, +coef_oMix_nmot_maint,0.0,F +coef_oMix_wTran_maint,0.0,F +coef_oIntDen_nmot_maint,0.0,F +coef_oIntDen_wTran_maint,0.0,F +coef_dEmpDen_nmot_maint,0.093,F +coef_dEmpDen_wTran_maint,0.0,F +coef_dEmpDen_dTran_maint,0.0,F +coef_female_sr2_maint,0.0,F +coef_female_sr3p_maint,0.0,F +coef_female_tran_maint,0.0,F +coef_female_nmot_maint,0.0,F +coef_size2_sr2_maint,0.0,F +coef_size2_sr3p_maint,0.0,F +coef_size3_sr2_maint,-0.416,F +coef_size3_sr3p_maint,0.792,F +coef_size4p_sr2_maint,-0.444,F +coef_size4p_sr3p_maint,0.424,F +coef_bikeLogsum_maint,0.06717,F +#,0.0, +coef_oMix_nmot_disc,0.275,F +coef_oMix_wTran_disc,0.0,F +coef_oIntDen_nmot_disc,0.0,F +coef_oIntDen_wTran_disc,0.0,F +coef_dEmpDen_nmot_disc,0.0,F +coef_dEmpDen_wTran_disc,0.0,F +coef_dEmpDen_dTran_disc,0.0,F +coef_female_sr2_disc,0.0,F +coef_female_sr3p_disc,0.0,F +coef_female_tran_disc,-2.736,F +coef_female_nmot_disc,0.0,F +coef_size2_sr2_disc,0.0,F +coef_size2_sr3p_disc,0.0,F +coef_size3_sr2_disc,0.958,F +coef_size3_sr3p_disc,0.695,F +coef_size4p_sr2_disc,0.958,F +coef_size4p_sr3p_disc,0.695,F +coef_bikeLogsum_disc,0.06717,F +#,0.0, +coef_oMix_nmot_atwork,0.0,F +coef_oMix_wTran_atwork,0.0,F +coef_oIntDen_nmot_atwork,0.0,F +coef_oIntDen_wTran_atwork,0.0,F +coef_dEmpDen_nmot_atwork,0.0,F +coef_dEmpDen_wTran_atwork,0.0,F +coef_dEmpDen_dTran_atwork,0.0,F +coef_female_sr2_atwork,0.0,F +coef_female_sr3p_atwork,0.0,F +coef_female_tran_atwork,0.0,F +coef_female_nmot_atwork,0.0,F +coef_size2_sr2_atwork,0.0,F +coef_size2_sr3p_atwork,0.0,F +coef_size3_sr2_atwork,0.0,F +coef_size3_sr3p_atwork,0.0,F +coef_size4p_sr2_atwork,0.0,F +coef_size4p_sr3p_atwork,0.0,F +coef_bikeLogsum_atwork,0.06717,F +coef_walkTime_atwork,-0.15926,F +#,0.0, +coef_calib_civt5max10sovdistski_KNR_TRANSIT_work,1.0,F +coef_calib_civt5max10sovdistski_TNC_TRANSIT_work,1.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_work,1.0,F +coef_calib_civtmax4525sovdistsk_PNR_TRANSIT_work,1.0,F +coef_calib_tourbike_DRIVEALONE_work,-30.0,F +coef_calib_tourbike_SHARED2_work,0.0,F +coef_calib_tourbike_SHARED3_work,0.0,F +coef_calib_tourbike_WALK_work,-44.0,F +coef_calib_tourbike_BIKE_work,-0.3227686816960651,F +coef_calib_tourbike_WALK_TRANSIT_work,-30.0,F +coef_calib_tourbike_PNR_TRANSIT_work,-30.0,F +coef_calib_tourbike_KNR_TRANSIT_work,-30.0,F +coef_calib_tourbike_TNC_TRANSIT_work,-30.0,F +coef_calib_tourbike_TAXI_work,-30.0,F +coef_calib_tourbike_TNC_SINGLE_work,-30.0,F +coef_calib_tourbike_TNC_SHARED_work,-30.0,F +coef_calib_tourda_SHARED2_work,-30.0,F +coef_calib_tourda_SHARED3_work,-30.0,F +coef_calib_tourda_WALK_work,-30.0,F +coef_calib_tourda_BIKE_work,-30.0,F +coef_calib_tourda_WALK_TRANSIT_work,-30.0,F +coef_calib_tourda_PNR_TRANSIT_work,-30.0,F +coef_calib_tourda_KNR_TRANSIT_work,-30.0,F +coef_calib_tourda_TNC_TRANSIT_work,-30.0,F +coef_calib_tourda_TAXI_work,-30.0,F +coef_calib_tourda_TNC_SINGLE_work,-30.0,F +coef_calib_tourda_TNC_SHARED_work,-30.0,F +coef_calib_tourknr_DRIVEALONE_work,-3996.0,F +coef_calib_tourknr_SHARED2_work,3.206724072,F +coef_calib_tourknr_SHARED3_work,2.371212584,F +coef_calib_tourknr_WALK_work,3.88459523,F +coef_calib_tourknr_BIKE_work,-30.0,F +coef_calib_tourknr_WALK_TRANSIT_work,15.5746,F +coef_calib_tourknr_PNR_TRANSIT_work,-30.0,F +coef_calib_tourknr_KNR_TRANSIT_work,1.1644205853617382,F +coef_calib_tourknr_TNC_TRANSIT_work,-30.0,F +coef_calib_tourknrtotstops0_DRIVEALONE_work,-30.0,F +coef_calib_tourknrtotstops0_SHARED2_work,-1.0,F +coef_calib_tourknrtotstops0_SHARED3_work,-1.0,F +coef_calib_tourknrtotstops0_WALK_work,-1.0,F +coef_calib_tourknrtotstops0_BIKE_work,-30.0,F +coef_calib_tourknrtotstops0_WALK_TRANSIT_work,-1.0,F +coef_calib_tourknrtotstops0_PNR_TRANSIT_work,-30.0,F +coef_calib_tourknrfirstofmultip_DRIVEALONE_work,-30.0,F +coef_calib_tourknrfirstofmultip_BIKE_work,-30.0,F +coef_calib_tourknrfirstofmultip_PNR_TRANSIT_work,-30.0,F +coef_calib_tourknrlastofmultipl_DRIVEALONE_work,-30.0,F +coef_calib_tourknrlastofmultipl_BIKE_work,-30.0,F +coef_calib_tourknrlastofmultipl_PNR_TRANSIT_work,-30.0,F +coef_calib_tourmaas_DRIVEALONE_work,-30.0,F +coef_calib_tourmaas_SHARED2_work,-29.26,F +coef_calib_tourmaas_SHARED3_work,-23.83,F +coef_calib_tourmaas_WALK_work,-20.71,F +coef_calib_tourmaas_BIKE_work,-30.0,F +coef_calib_tourmaas_WALK_TRANSIT_work,-30.0,F +coef_calib_tourmaas_PNR_TRANSIT_work,-30.0,F +coef_calib_tourmaas_KNR_TRANSIT_work,-30.0,F +coef_calib_tourmaas_TNC_TRANSIT_work,-30.0,F +coef_calib_tourmaas_TAXI_work,-28.06,F +coef_calib_tourmaas_TNC_SINGLE_work,2.787820012666538,F +coef_calib_tourmaas_TNC_SHARED_work,-7.11,F +coef_calib_tourpnr_DRIVEALONE_work,2.306054249,F +coef_calib_tourpnr_SHARED2_work,2.109169591,F +coef_calib_tourpnr_SHARED3_work,1.526,F +coef_calib_tourpnr_WALK_work,0.92600338,F +coef_calib_tourpnr_BIKE_work,-3996.0,F +coef_calib_tourpnr_WALK_TRANSIT_work,8.109380657,F +coef_calib_tourpnr_PNR_TRANSIT_work,0.6683276501380512,F +coef_calib_tourpnr_KNR_TRANSIT_work,-30.0,F +coef_calib_tourpnr_TNC_TRANSIT_work,-30.0,F +coef_calib_tourpnr_TAXI_work,-30.0,F +coef_calib_tourpnr_TNC_SINGLE_work,-30.0,F +coef_calib_tourpnr_TNC_SHARED_work,-30.0,F +coef_calib_tourpnrtotstops0_DRIVEALONE_work,-10.0,F +coef_calib_tourpnrtotstops0_SHARED2_work,-30.0,F +coef_calib_tourpnrtotstops0_SHARED3_work,-30.0,F +coef_calib_tourpnrtotstops0_WALK_work,-30.0,F +coef_calib_tourpnrtotstops0_BIKE_work,-30.0,F +coef_calib_tourpnrtotstops0_WALK_TRANSIT_work,-30.0,F +coef_calib_tourpnrtotstops0_KNR_TRANSIT_work,-30.0,F +coef_calib_tourpnrtotstops0_TNC_TRANSIT_work,-30.0,F +coef_calib_tourpnrfirstofmultip_BIKE_work,-30.0,F +coef_calib_tourpnrfirstofmultip_KNR_TRANSIT_work,-30.0,F +coef_calib_tourpnrfirstofmultip_TNC_TRANSIT_work,-30.0,F +coef_calib_tourpnrlastofmultipl_BIKE_work,-30.0,F +coef_calib_tourpnrlastofmultipl_KNR_TRANSIT_work,-30.0,F +coef_calib_tourpnrlastofmultipl_TNC_TRANSIT_work,-30.0,F +coef_calib_tours2_DRIVEALONE_work,1.7593561940559026,F +coef_calib_tours2_SHARED2_work,1.0508543549194378,F +coef_calib_tours2_SHARED3_work,-30.0,F +coef_calib_tours2_WALK_work,1.9299711755116555,F +coef_calib_tours2_BIKE_work,-30.0,F +coef_calib_tours2_WALK_TRANSIT_work,-30.0,F +coef_calib_tours2_PNR_TRANSIT_work,-30.0,F +coef_calib_tours2_KNR_TRANSIT_work,-30.0,F +coef_calib_tours2_TNC_TRANSIT_work,-30.0,F +coef_calib_tours2_TAXI_work,-30.0,F +coef_calib_tours2_TNC_SINGLE_work,-30.0,F +coef_calib_tours2_TNC_SHARED_work,-30.0,F +coef_calib_tours2totstops0_DRIVEALONE_work,-3.2003,F +coef_calib_tours2totstops0_SHARED3_work,-30.0,F +coef_calib_tours2totstops0_WALK_work,-3.2003,F +coef_calib_tours2totstops0_BIKE_work,-30.0,F +coef_calib_tours2totstops0_WALK_TRANSIT_work,-30.0,F +coef_calib_tours2totstops0_PNR_TRANSIT_work,-30.0,F +coef_calib_tours2totstops0_KNR_TRANSIT_work,-30.0,F +coef_calib_tours2totstops0_TNC_TRANSIT_work,-30.0,F +coef_calib_tours2firstofmultipl_DRIVEALONE_work,-3.0147,F +coef_calib_tours2firstofmultipl_SHARED3_work,-30.0,F +coef_calib_tours2firstofmultipl_WALK_work,-3.0147,F +coef_calib_tours2firstofmultipl_BIKE_work,-30.0,F +coef_calib_tours2firstofmultipl_WALK_TRANSIT_work,-30.0,F +coef_calib_tours2firstofmultipl_PNR_TRANSIT_work,-30.0,F +coef_calib_tours2firstofmultipl_KNR_TRANSIT_work,-30.0,F +coef_calib_tours2firstofmultipl_TNC_TRANSIT_work,-30.0,F +coef_calib_tours2lastofmultiple_DRIVEALONE_work,-2.0599,F +coef_calib_tours2lastofmultiple_SHARED3_work,-30.0,F +coef_calib_tours2lastofmultiple_WALK_work,-2.0599,F +coef_calib_tours2lastofmultiple_BIKE_work,-30.0,F +coef_calib_tours2lastofmultiple_WALK_TRANSIT_work,-30.0,F +coef_calib_tours2lastofmultiple_PNR_TRANSIT_work,-30.0,F +coef_calib_tours2lastofmultiple_KNR_TRANSIT_work,-30.0,F +coef_calib_tours2lastofmultiple_TNC_TRANSIT_work,-30.0,F +coef_calib_tours3_DRIVEALONE_work,2.065041397538226,F +coef_calib_tours3_SHARED2_work,1.3212585379251784,F +coef_calib_tours3_SHARED3_work,1.4561122694539546,F +coef_calib_tours3_WALK_work,-6.474446872498466,F +coef_calib_tours3_BIKE_work,-30.0,F +coef_calib_tours3_WALK_TRANSIT_work,-30.0,F +coef_calib_tours3_PNR_TRANSIT_work,-30.0,F +coef_calib_tours3_KNR_TRANSIT_work,-30.0,F +coef_calib_tours3_TNC_TRANSIT_work,-30.0,F +coef_calib_tours3_TAXI_work,-30.0,F +coef_calib_tours3_TNC_SINGLE_work,-30.0,F +coef_calib_tours3_TNC_SHARED_work,-30.0,F +coef_calib_tours3totstops0_DRIVEALONE_work,-2.2614,F +coef_calib_tours3totstops0_SHARED2_work,-2.2614,F +coef_calib_tours3totstops0_WALK_work,-2.2614,F +coef_calib_tours3totstops0_BIKE_work,-30.0,F +coef_calib_tours3totstops0_WALK_TRANSIT_work,-30.0,F +coef_calib_tours3totstops0_PNR_TRANSIT_work,-30.0,F +coef_calib_tours3totstops0_KNR_TRANSIT_work,-30.0,F +coef_calib_tours3totstops0_TNC_TRANSIT_work,-30.0,F +coef_calib_tours3firstofmultipl_DRIVEALONE_work,-1.8752,F +coef_calib_tours3firstofmultipl_SHARED2_work,-1.8752,F +coef_calib_tours3firstofmultipl_WALK_work,-1.8752,F +coef_calib_tours3firstofmultipl_BIKE_work,-30.0,F +coef_calib_tours3firstofmultipl_WALK_TRANSIT_work,-30.0,F +coef_calib_tours3firstofmultipl_PNR_TRANSIT_work,-30.0,F +coef_calib_tours3firstofmultipl_KNR_TRANSIT_work,-30.0,F +coef_calib_tours3firstofmultipl_TNC_TRANSIT_work,-30.0,F +coef_calib_tours3lastofmultiple_DRIVEALONE_work,-1.611,F +coef_calib_tours3lastofmultiple_SHARED2_work,-1.611,F +coef_calib_tours3lastofmultiple_WALK_work,-1.611,F +coef_calib_tours3lastofmultiple_BIKE_work,-30.0,F +coef_calib_tours3lastofmultiple_WALK_TRANSIT_work,-30.0,F +coef_calib_tours3lastofmultiple_PNR_TRANSIT_work,-30.0,F +coef_calib_tours3lastofmultiple_KNR_TRANSIT_work,-30.0,F +coef_calib_tours3lastofmultiple_TNC_TRANSIT_work,-30.0,F +coef_calib_tourtnr_DRIVEALONE_work,-30.0,F +coef_calib_tourtnr_BIKE_work,-30.0,F +coef_calib_tourtnr_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwtran_DRIVEALONE_work,-3.915145738127669,F +coef_calib_tourwtran_SHARED2_work,-2.7208261492167063,F +coef_calib_tourwtran_SHARED3_work,-4.6518099156093395,F +coef_calib_tourwtran_WALK_work,-2.801049007072627,F +coef_calib_tourwtran_BIKE_work,-30.0,F +coef_calib_tourwtran_WALK_TRANSIT_work,1.05215339432953,F +coef_calib_tourwtran_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwtran_KNR_TRANSIT_work,-30.0,F +coef_calib_tourwtran_TNC_TRANSIT_work,-30.0,F +coef_calib_tourwtran_TAXI_work,-9.690000000000001,F +coef_calib_tourwtran_TNC_SINGLE_work,32.98207726381463,F +coef_calib_tourwtran_TNC_SHARED_work,-8.690000000000001,F +coef_calib_tourwtrantotstops0_DRIVEALONE_work,-30.0,F +coef_calib_tourwtrantotstops0_SHARED2_work,-1.6562,F +coef_calib_tourwtrantotstops0_SHARED3_work,-1.6562,F +coef_calib_tourwtrantotstops0_WALK_work,-1.6562,F +coef_calib_tourwtrantotstops0_BIKE_work,-30.0,F +coef_calib_tourwtrantotstops0_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwtrantotstops0_KNR_TRANSIT_work,-30.0,F +coef_calib_tourwtrantotstops0_TNC_TRANSIT_work,-30.0,F +coef_calib_tourwtranfirstofmult_DRIVEALONE_work,-30.0,F +coef_calib_tourwtranfirstofmult_BIKE_work,-30.0,F +coef_calib_tourwtranfirstofmult_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwtranfirstofmult_KNR_TRANSIT_work,-30.0,F +coef_calib_tourwtranfirstofmult_TNC_TRANSIT_work,-30.0,F +coef_calib_tourwtranlastofmulti_DRIVEALONE_work,-30.0,F +coef_calib_tourwtranlastofmulti_BIKE_work,-30.0,F +coef_calib_tourwtranlastofmulti_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwtranlastofmulti_KNR_TRANSIT_work,-30.0,F +coef_calib_tourwtranlastofmulti_TNC_TRANSIT_work,-30.0,F +coef_calib_tourwalk_DRIVEALONE_work,-30.0,F +coef_calib_tourwalk_SHARED2_work,-30.0,F +coef_calib_tourwalk_SHARED3_work,-30.0,F +coef_calib_tourwalk_BIKE_work,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_work,-30.0,F +coef_calib_tourwalk_PNR_TRANSIT_work,-30.0,F +coef_calib_tourwalk_KNR_TRANSIT_work,-30.0,F +coef_calib_tourwalk_TNC_TRANSIT_work,-30.0,F +coef_calib_tourwalk_TAXI_work,-30.0,F +coef_calib_tourwalk_TNC_SINGLE_work,-30.0,F +coef_calib_tourwalk_TNC_SHARED_work,-30.0,F +coef_calib_civt5max10sovdistski_KNR_TRANSIT_univ,1.0,F +coef_calib_civt5max10sovdistski_TNC_TRANSIT_univ,1.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_univ,1.0,F +coef_calib_civtmax4525sovdistsk_PNR_TRANSIT_univ,1.0,F +coef_calib_tourbike_DRIVEALONE_univ,-30.0,F +coef_calib_tourbike_SHARED2_univ,0.0,F +coef_calib_tourbike_SHARED3_univ,0.0,F +coef_calib_tourbike_WALK_univ,-1.156683606924339,F +coef_calib_tourbike_BIKE_univ,-1.3630686198359863,F +coef_calib_tourbike_WALK_TRANSIT_univ,-30.0,F +coef_calib_tourbike_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourbike_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourbike_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourbike_TAXI_univ,-30.0,F +coef_calib_tourbike_TNC_SINGLE_univ,-30.0,F +coef_calib_tourbike_TNC_SHARED_univ,-30.0,F +coef_calib_tourda_SHARED2_univ,-30.0,F +coef_calib_tourda_SHARED3_univ,-30.0,F +coef_calib_tourda_WALK_univ,-30.0,F +coef_calib_tourda_BIKE_univ,-30.0,F +coef_calib_tourda_WALK_TRANSIT_univ,-30.0,F +coef_calib_tourda_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourda_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourda_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourda_TAXI_univ,-30.0,F +coef_calib_tourda_TNC_SINGLE_univ,-30.0,F +coef_calib_tourda_TNC_SHARED_univ,-30.0,F +coef_calib_tourknr_DRIVEALONE_univ,-30.0,F +coef_calib_tourknr_SHARED2_univ,1.5968,F +coef_calib_tourknr_SHARED3_univ,0.1427,F +coef_calib_tourknr_WALK_univ,2.186,F +coef_calib_tourknr_BIKE_univ,-30.0,F +coef_calib_tourknr_WALK_TRANSIT_univ,84.7542,F +coef_calib_tourknr_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourknr_KNR_TRANSIT_univ,0.7790842015177633,F +coef_calib_tourknr_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourknrtotstops0_DRIVEALONE_univ,-30.0,F +coef_calib_tourknrtotstops0_SHARED2_univ,-1.0002,F +coef_calib_tourknrtotstops0_SHARED3_univ,-1.0002,F +coef_calib_tourknrtotstops0_WALK_univ,-1.0002,F +coef_calib_tourknrtotstops0_BIKE_univ,-30.0,F +coef_calib_tourknrtotstops0_WALK_TRANSIT_univ,-1.0002,F +coef_calib_tourknrtotstops0_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourknrfirstofmultip_DRIVEALONE_univ,-30.0,F +coef_calib_tourknrfirstofmultip_BIKE_univ,-30.0,F +coef_calib_tourknrfirstofmultip_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourknrlastofmultipl_DRIVEALONE_univ,-30.0,F +coef_calib_tourknrlastofmultipl_BIKE_univ,-30.0,F +coef_calib_tourknrlastofmultipl_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourmaas_DRIVEALONE_univ,-30.0,F +coef_calib_tourmaas_WALK_univ,6.45,F +coef_calib_tourmaas_BIKE_univ,-30.0,F +coef_calib_tourmaas_WALK_TRANSIT_univ,-30.0,F +coef_calib_tourmaas_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourmaas_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourmaas_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourmaas_TAXI_univ,-1.35,F +coef_calib_tourmaas_TNC_SINGLE_univ,3.9912848911170227,F +coef_calib_tourmaas_TNC_SHARED_univ,-0.8600000000000001,F +coef_calib_tourpnr_DRIVEALONE_univ,-9.6624,F +coef_calib_tourpnr_SHARED2_univ,-8.4295,F +coef_calib_tourpnr_SHARED3_univ,-9.1428,F +coef_calib_tourpnr_WALK_univ,-30.0,F +coef_calib_tourpnr_BIKE_univ,-30.0,F +coef_calib_tourpnr_WALK_TRANSIT_univ,-30.0,F +coef_calib_tourpnr_PNR_TRANSIT_univ,-4.598436349478694,F +coef_calib_tourpnr_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourpnr_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourpnr_TAXI_univ,-30.0,F +coef_calib_tourpnr_TNC_SINGLE_univ,-30.0,F +coef_calib_tourpnr_TNC_SHARED_univ,-30.0,F +coef_calib_tourpnrtotstops0_DRIVEALONE_univ,-1.0002,F +coef_calib_tourpnrtotstops0_SHARED2_univ,-1.0002,F +coef_calib_tourpnrtotstops0_SHARED3_univ,-1.0002,F +coef_calib_tourpnrtotstops0_WALK_univ,-1.0002,F +coef_calib_tourpnrtotstops0_BIKE_univ,-30.0,F +coef_calib_tourpnrtotstops0_WALK_TRANSIT_univ,-1.0002,F +coef_calib_tourpnrtotstops0_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourpnrtotstops0_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourpnrfirstofmultip_BIKE_univ,-30.0,F +coef_calib_tourpnrfirstofmultip_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourpnrfirstofmultip_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourpnrlastofmultipl_BIKE_univ,-30.0,F +coef_calib_tourpnrlastofmultipl_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourpnrlastofmultipl_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours2_DRIVEALONE_univ,-1.0467106607934311,F +coef_calib_tours2_SHARED2_univ,-0.9345649530318371,F +coef_calib_tours2_SHARED3_univ,-30.0,F +coef_calib_tours2_WALK_univ,-5.474015479736969,F +coef_calib_tours2_BIKE_univ,-30.0,F +coef_calib_tours2_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours2_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours2_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours2_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours2_TAXI_univ,-30.0,F +coef_calib_tours2_TNC_SINGLE_univ,-30.0,F +coef_calib_tours2_TNC_SHARED_univ,-30.0,F +coef_calib_tours2totstops0_DRIVEALONE_univ,-3.2105,F +coef_calib_tours2totstops0_SHARED3_univ,-30.0,F +coef_calib_tours2totstops0_WALK_univ,-3.2105,F +coef_calib_tours2totstops0_BIKE_univ,-30.0,F +coef_calib_tours2totstops0_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours2totstops0_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours2totstops0_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours2totstops0_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours2firstofmultipl_DRIVEALONE_univ,-1.2971,F +coef_calib_tours2firstofmultipl_SHARED3_univ,-30.0,F +coef_calib_tours2firstofmultipl_WALK_univ,-1.2971,F +coef_calib_tours2firstofmultipl_BIKE_univ,-30.0,F +coef_calib_tours2firstofmultipl_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours2firstofmultipl_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours2firstofmultipl_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours2firstofmultipl_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours2lastofmultiple_DRIVEALONE_univ,-0.7345,F +coef_calib_tours2lastofmultiple_SHARED3_univ,-30.0,F +coef_calib_tours2lastofmultiple_WALK_univ,-0.7345,F +coef_calib_tours2lastofmultiple_BIKE_univ,-30.0,F +coef_calib_tours2lastofmultiple_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours2lastofmultiple_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours2lastofmultiple_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours2lastofmultiple_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours3_DRIVEALONE_univ,-0.4966596160422635,F +coef_calib_tours3_SHARED2_univ,-0.7052619965484133,F +coef_calib_tours3_SHARED3_univ,-0.8015588902246543,F +coef_calib_tours3_WALK_univ,-9.331800000000001,F +coef_calib_tours3_BIKE_univ,-30.0,F +coef_calib_tours3_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours3_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours3_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours3_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours3_TAXI_univ,-30.0,F +coef_calib_tours3_TNC_SINGLE_univ,-30.0,F +coef_calib_tours3_TNC_SHARED_univ,-30.0,F +coef_calib_tours3totstops0_DRIVEALONE_univ,-1.893,F +coef_calib_tours3totstops0_SHARED2_univ,-1.893,F +coef_calib_tours3totstops0_WALK_univ,-1.893,F +coef_calib_tours3totstops0_BIKE_univ,-30.0,F +coef_calib_tours3totstops0_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours3totstops0_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours3totstops0_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours3totstops0_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours3firstofmultipl_DRIVEALONE_univ,-1.7826,F +coef_calib_tours3firstofmultipl_SHARED2_univ,-1.7826,F +coef_calib_tours3firstofmultipl_WALK_univ,-1.7826,F +coef_calib_tours3firstofmultipl_BIKE_univ,-30.0,F +coef_calib_tours3firstofmultipl_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours3firstofmultipl_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours3firstofmultipl_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours3firstofmultipl_TNC_TRANSIT_univ,-30.0,F +coef_calib_tours3lastofmultiple_DRIVEALONE_univ,-1.1489,F +coef_calib_tours3lastofmultiple_SHARED2_univ,-1.1489,F +coef_calib_tours3lastofmultiple_WALK_univ,-1.1489,F +coef_calib_tours3lastofmultiple_BIKE_univ,-30.0,F +coef_calib_tours3lastofmultiple_WALK_TRANSIT_univ,-30.0,F +coef_calib_tours3lastofmultiple_PNR_TRANSIT_univ,-30.0,F +coef_calib_tours3lastofmultiple_KNR_TRANSIT_univ,-30.0,F +coef_calib_tours3lastofmultiple_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourtnr_DRIVEALONE_univ,-30.0,F +coef_calib_tourtnr_BIKE_univ,-30.0,F +coef_calib_tourtnr_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtran_DRIVEALONE_univ,-6.689857452657601,F +coef_calib_tourwtran_SHARED2_univ,-6.341063912284481,F +coef_calib_tourwtran_SHARED3_univ,-6.479108855088794,F +coef_calib_tourwtran_WALK_univ,1.1152453787942982,F +coef_calib_tourwtran_BIKE_univ,-30.0,F +coef_calib_tourwtran_WALK_TRANSIT_univ,0.09439231570910812,F +coef_calib_tourwtran_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtran_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtran_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourwtran_TAXI_univ,-6.69,F +coef_calib_tourwtran_TNC_SINGLE_univ,22.94,F +coef_calib_tourwtran_TNC_SHARED_univ,-7.69,F +coef_calib_tourwtrantotstops0_DRIVEALONE_univ,-30.0,F +coef_calib_tourwtrantotstops0_BIKE_univ,-30.0,F +coef_calib_tourwtrantotstops0_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtrantotstops0_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtrantotstops0_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourwtranfirstofmult_DRIVEALONE_univ,-30.0,F +coef_calib_tourwtranfirstofmult_SHARED2_univ,0.4204,F +coef_calib_tourwtranfirstofmult_SHARED3_univ,0.4204,F +coef_calib_tourwtranfirstofmult_WALK_univ,0.4204,F +coef_calib_tourwtranfirstofmult_BIKE_univ,-30.0,F +coef_calib_tourwtranfirstofmult_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtranfirstofmult_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtranfirstofmult_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourwtranlastofmulti_DRIVEALONE_univ,-30.0,F +coef_calib_tourwtranlastofmulti_BIKE_univ,-30.0,F +coef_calib_tourwtranlastofmulti_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtranlastofmulti_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourwtranlastofmulti_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourwalk_DRIVEALONE_univ,-30.0,F +coef_calib_tourwalk_SHARED2_univ,-30.0,F +coef_calib_tourwalk_SHARED3_univ,-30.0,F +coef_calib_tourwalk_BIKE_univ,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_univ,-30.0,F +coef_calib_tourwalk_PNR_TRANSIT_univ,-30.0,F +coef_calib_tourwalk_KNR_TRANSIT_univ,-30.0,F +coef_calib_tourwalk_TNC_TRANSIT_univ,-30.0,F +coef_calib_tourwalk_TAXI_univ,-30.0,F +coef_calib_tourwalk_TNC_SINGLE_univ,-30.0,F +coef_calib_tourwalk_TNC_SHARED_univ,-30.0,F +coef_calib_civtebikeownershipma_BIKE_school,1.0,F +coef_calib_civt5max10sovdistski_KNR_TRANSIT_school,1.0,F +coef_calib_civt5max10sovdistski_TNC_TRANSIT_school,1.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_school,1.0,F +coef_calib_civtmax4525sovdistsk_PNR_TRANSIT_school,1.0,F +coef_calib_tourbike_DRIVEALONE_school,-30.0,F +coef_calib_tourbike_SHARED2_school,0.0,F +coef_calib_tourbike_SHARED3_school,0.0,F +coef_calib_tourbike_WALK_school,-17.252948252633765,F +coef_calib_tourbike_BIKE_school,-16.603217615727758,F +coef_calib_tourbike_WALK_TRANSIT_school,-30.0,F +coef_calib_tourbike_PNR_TRANSIT_school,-30.0,F +coef_calib_tourbike_KNR_TRANSIT_school,-30.0,F +coef_calib_tourbike_TNC_TRANSIT_school,-30.0,F +coef_calib_tourbike_TAXI_school,-30.0,F +coef_calib_tourbike_TNC_SINGLE_school,-30.0,F +coef_calib_tourbike_TNC_SHARED_school,-30.0,F +coef_calib_tourbike_SCH_BUS_school,-30.0,F +coef_calib_tourda_SHARED2_school,-30.0,F +coef_calib_tourda_SHARED3_school,-30.0,F +coef_calib_tourda_WALK_school,-30.0,F +coef_calib_tourda_BIKE_school,-30.0,F +coef_calib_tourda_WALK_TRANSIT_school,-30.0,F +coef_calib_tourda_PNR_TRANSIT_school,-30.0,F +coef_calib_tourda_KNR_TRANSIT_school,-30.0,F +coef_calib_tourda_TNC_TRANSIT_school,-30.0,F +coef_calib_tourda_TAXI_school,-30.0,F +coef_calib_tourda_TNC_SINGLE_school,-30.0,F +coef_calib_tourda_TNC_SHARED_school,-30.0,F +coef_calib_tourda_SCH_BUS_school,-30.0,F +coef_calib_tourknr_DRIVEALONE_school,-30.0,F +coef_calib_tourknr_SHARED2_school,-1.7329,F +coef_calib_tourknr_SHARED3_school,-1.18,F +coef_calib_tourknr_WALK_school,4.8676,F +coef_calib_tourknr_BIKE_school,-30.0,F +coef_calib_tourknr_WALK_TRANSIT_school,24.9347,F +coef_calib_tourknr_PNR_TRANSIT_school,-30.0,F +coef_calib_tourknr_KNR_TRANSIT_school,-27.4507,F +coef_calib_tourknr_TAXI_school,-30.0,F +coef_calib_tourknr_TNC_SINGLE_school,-30.0,F +coef_calib_tourknr_TNC_SHARED_school,-30.0,F +coef_calib_tourknr_SCH_BUS_school,-30.0,F +coef_calib_tourpnr_DRIVEALONE_school,-2.9471,F +coef_calib_tourpnr_SHARED2_school,-1.5651,F +coef_calib_tourpnr_SHARED3_school,-2.419,F +coef_calib_tourpnr_WALK_school,-30.0,F +coef_calib_tourpnr_BIKE_school,-30.0,F +coef_calib_tourpnr_WALK_TRANSIT_school,-30.0,F +coef_calib_tourpnr_KNR_TRANSIT_school,-30.0,F +coef_calib_tourpnr_TNC_TRANSIT_school,-30.0,F +coef_calib_tourpnr_TAXI_school,-30.0,F +coef_calib_tourpnr_TNC_SINGLE_school,-30.0,F +coef_calib_tourpnr_TNC_SHARED_school,-30.0,F +coef_calib_tourpnr_SCH_BUS_school,-30.0,F +coef_calib_tours2_DRIVEALONE_school,-30.0,F +coef_calib_tours2_SHARED2_school,-5.44528416304262,F +coef_calib_tours2_SHARED3_school,-30.0,F +coef_calib_tours2_WALK_school,-8.768360236119591,F +coef_calib_tours2_BIKE_school,-30.0,F +coef_calib_tours2_WALK_TRANSIT_school,-30.0,F +coef_calib_tours2_PNR_TRANSIT_school,-30.0,F +coef_calib_tours2_KNR_TRANSIT_school,-30.0,F +coef_calib_tours2_TNC_TRANSIT_school,-30.0,F +coef_calib_tours2_TAXI_school,-30.0,F +coef_calib_tours2_TNC_SINGLE_school,-30.0,F +coef_calib_tours2_TNC_SHARED_school,-30.0,F +coef_calib_tours2_SCH_BUS_school,-30.0,F +coef_calib_tours3_DRIVEALONE_school,-30.0,F +coef_calib_tours3_SHARED2_school,-3.260738776679035,F +coef_calib_tours3_SHARED3_school,-2.893606747836543,F +coef_calib_tours3_WALK_school,-2.682750615187065,F +coef_calib_tours3_BIKE_school,-30.0,F +coef_calib_tours3_WALK_TRANSIT_school,-30.0,F +coef_calib_tours3_PNR_TRANSIT_school,-30.0,F +coef_calib_tours3_KNR_TRANSIT_school,-30.0,F +coef_calib_tours3_TNC_TRANSIT_school,-30.0,F +coef_calib_tours3_TAXI_school,-30.0,F +coef_calib_tours3_TNC_SINGLE_school,-30.0,F +coef_calib_tours3_TNC_SHARED_school,-30.0,F +coef_calib_tours3_SCH_BUS_school,-30.0,F +coef_calib_tourschbus_DRIVEALONE_school,-30.0,F +coef_calib_tourschbus_SHARED2_school,-30.0,F +coef_calib_tourschbus_SHARED3_school,-30.0,F +coef_calib_tourschbus_WALK_school,-30.0,F +coef_calib_tourschbus_BIKE_school,-30.0,F +coef_calib_tourschbus_WALK_TRANSIT_school,-30.0,F +coef_calib_tourschbus_PNR_TRANSIT_school,-30.0,F +coef_calib_tourschbus_KNR_TRANSIT_school,-30.0,F +coef_calib_tourschbus_TNC_TRANSIT_school,-30.0,F +coef_calib_tourschbus_TAXI_school,-30.0,F +coef_calib_tourschbus_TNC_SINGLE_school,-30.0,F +coef_calib_tourschbus_TNC_SHARED_school,-30.0,F +coef_calib_tourwtran_DRIVEALONE_school,-10.0,F +coef_calib_tourwtran_SHARED2_school,-5.014717325674122,F +coef_calib_tourwtran_SHARED3_school,-2.5893694543407273,F +coef_calib_tourwtran_WALK_school,-13.1126,F +coef_calib_tourwtran_BIKE_school,-30.0,F +coef_calib_tourwtran_WALK_TRANSIT_school,-1.0648104626473114,F +coef_calib_tourwtran_PNR_TRANSIT_school,-30.0,F +coef_calib_tourwtran_KNR_TRANSIT_school,-30.0,F +coef_calib_tourwtran_TNC_TRANSIT_school,-30.0,F +coef_calib_tourwtran_TAXI_school,-30.0,F +coef_calib_tourwtran_TNC_SINGLE_school,-30.0,F +coef_calib_tourwtran_TNC_SHARED_school,-30.0,F +coef_calib_tourwtran_SCH_BUS_school,-30.0,F +coef_calib_tourwtrantotstops0_DRIVEALONE_school,-30.0,F +coef_calib_tourwtrantotstops0_SHARED2_school,-1.706,F +coef_calib_tourwtrantotstops0_SHARED3_school,-1.706,F +coef_calib_tourwtrantotstops0_WALK_school,-1.706,F +coef_calib_tourwtrantotstops0_BIKE_school,-30.0,F +coef_calib_tourwtrantotstops0_PNR_TRANSIT_school,-30.0,F +coef_calib_tourwtrantotstops0_KNR_TRANSIT_school,-30.0,F +coef_calib_tourwtrantotstops0_TNC_TRANSIT_school,-30.0,F +coef_calib_tourwtrantotstops0_SCH_BUS_school,-30.0,F +coef_calib_tourwtranfirstofmult_DRIVEALONE_school,-30.0,F +coef_calib_tourwtranfirstofmult_SHARED2_school,0.921,F +coef_calib_tourwtranfirstofmult_SHARED3_school,0.921,F +coef_calib_tourwtranfirstofmult_WALK_school,0.921,F +coef_calib_tourwtranfirstofmult_BIKE_school,-30.0,F +coef_calib_tourwtranfirstofmult_PNR_TRANSIT_school,-30.0,F +coef_calib_tourwtranfirstofmult_KNR_TRANSIT_school,-30.0,F +coef_calib_tourwtranfirstofmult_TNC_TRANSIT_school,-30.0,F +coef_calib_tourwtranfirstofmult_SCH_BUS_school,-30.0,F +coef_calib_tourwtranlastofmulti_DRIVEALONE_school,-30.0,F +coef_calib_tourwtranlastofmulti_SHARED2_school,1.58,F +coef_calib_tourwtranlastofmulti_SHARED3_school,1.58,F +coef_calib_tourwtranlastofmulti_WALK_school,1.58,F +coef_calib_tourwtranlastofmulti_BIKE_school,-30.0,F +coef_calib_tourwtranlastofmulti_PNR_TRANSIT_school,-30.0,F +coef_calib_tourwtranlastofmulti_KNR_TRANSIT_school,-30.0,F +coef_calib_tourwtranlastofmulti_TNC_TRANSIT_school,-30.0,F +coef_calib_tourwtranlastofmulti_SCH_BUS_school,-30.0,F +coef_calib_tourwalk_DRIVEALONE_school,-30.0,F +coef_calib_tourwalk_SHARED2_school,-30.0,F +coef_calib_tourwalk_SHARED3_school,-30.0,F +coef_calib_tourwalk_BIKE_school,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_school,-30.0,F +coef_calib_tourwalk_PNR_TRANSIT_school,-30.0,F +coef_calib_tourwalk_KNR_TRANSIT_school,-30.0,F +coef_calib_tourwalk_TNC_TRANSIT_school,-30.0,F +coef_calib_tourwalk_TAXI_school,-30.0,F +coef_calib_tourwalk_TNC_SINGLE_school,-30.0,F +coef_calib_tourwalk_TNC_SHARED_school,-30.0,F +coef_calib_tourwalk_SCH_BUS_school,-30.0,F +coef_calib_numberofparticipants_SHARED3_maint,-0.11,F +coef_calib_civtebikeownershipma_BIKE_maint,1.0,F +coef_calib_civt5max10sovdistski_KNR_TRANSIT_maint,1.0,F +coef_calib_civt5max10sovdistski_TNC_TRANSIT_maint,1.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_maint,1.0,F +coef_calib_civtmax4525sovdistsk_PNR_TRANSIT_maint,1.0,F +coef_calib_esctour1_WALK_maint,-1.27,F +coef_calib_jointtour1_WALK_maint,-1.669,F +coef_calib_jointtour1_WALK_TRANSIT_maint,-0.824,F +coef_calib_jointtour1_PNR_TRANSIT_maint,-1.629,F +coef_calib_jointtour1_KNR_TRANSIT_maint,-1.629,F +coef_calib_jointtour1_TNC_TRANSIT_maint,-1.629,F +coef_calib_tourbike_DRIVEALONE_maint,-30.0,F +coef_calib_tourbike_SHARED2_maint,0.0,F +coef_calib_tourbike_SHARED3_maint,0.0,F +coef_calib_tourbike_WALK_maint,-20.0,F +coef_calib_tourbike_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourbike_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourbike_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourbike_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourbikejointtour0_DRIVEALONE_maint,-30.0,F +coef_calib_tourbikejointtour0_SHARED2_maint,0.0,F +coef_calib_tourbikejointtour0_SHARED3_maint,0.0,F +coef_calib_tourbikejointtour0_WALK_maint,-30.0,F +coef_calib_tourbikejointtour0_BIKE_maint,-10.500258951012205,F +coef_calib_tourbikejointtour0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourbikejointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourbikejointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourbikejointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourbikejointtour0_TAXI_maint,-30.0,F +coef_calib_tourbikejointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tourbikejointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tourbikejointtour1_BIKE_maint,-0.31,F +coef_calib_tourbikejointtour1_TAXI_maint,-30.0,F +coef_calib_tourbikejointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tourbikejointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tourda_SHARED2_maint,-30.0,F +coef_calib_tourda_SHARED3_maint,-30.0,F +coef_calib_tourda_WALK_maint,-30.0,F +coef_calib_tourda_BIKE_maint,-30.0,F +coef_calib_tourda_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourda_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourda_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourda_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour0_DRIVEALONE_maint,0.32660647324783104,F +coef_calib_tourdajointtour0_SHARED2_maint,-30.0,F +coef_calib_tourdajointtour0_SHARED3_maint,-30.0,F +coef_calib_tourdajointtour0_WALK_maint,-30.0,F +coef_calib_tourdajointtour0_BIKE_maint,-30.0,F +coef_calib_tourdajointtour0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour0_TAXI_maint,-30.0,F +coef_calib_tourdajointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tourdajointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tourdajointtour1_SHARED2_maint,-30.0,F +coef_calib_tourdajointtour1_SHARED3_maint,-30.0,F +coef_calib_tourdajointtour1_WALK_maint,-30.0,F +coef_calib_tourdajointtour1_BIKE_maint,-30.0,F +coef_calib_tourdajointtour1_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour1_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour1_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourdajointtour1_TAXI_maint,-30.0,F +coef_calib_tourdajointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tourdajointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tourknr_DRIVEALONE_maint,-30.0,F +coef_calib_tourknr_BIKE_maint,-30.0,F +coef_calib_tourknr_WALK_TRANSIT_maint,2.159,F +coef_calib_tourknr_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourknrjointtour0_DRIVEALONE_maint,-30.0,F +coef_calib_tourknrjointtour0_SHARED2_maint,8.6939,F +coef_calib_tourknrjointtour0_SHARED3_maint,8.8007,F +coef_calib_tourknrjointtour0_WALK_maint,-4.3153,F +coef_calib_tourknrjointtour0_BIKE_maint,-30.0,F +coef_calib_tourknrjointtour0_WALK_TRANSIT_maint,7.390431703,F +coef_calib_tourknrjointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourknrjointtour0_KNR_TRANSIT_maint,0.5605618505808558,F +coef_calib_tourknrjointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourknrjointtour0_TAXI_maint,-30.0,F +coef_calib_tourknrjointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tourknrjointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tourknrjointtour1_DRIVEALONE_maint,-30.0,F +coef_calib_tourknrjointtour1_BIKE_maint,-30.0,F +coef_calib_tourknrjointtour1_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourknrjointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourknrjointtour1_TAXI_maint,-30.0,F +coef_calib_tourknrjointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tourknrjointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tourknrtotstops0_DRIVEALONE_maint,-30.0,F +coef_calib_tourknrtotstops0_SHARED2_maint,-10.0,F +coef_calib_tourknrtotstops0_SHARED3_maint,-10.0,F +coef_calib_tourknrtotstops0_WALK_maint,-30.0,F +coef_calib_tourknrtotstops0_BIKE_maint,-30.0,F +coef_calib_tourknrtotstops0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourknrtotstops0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourknrtotstopsm0_DRIVEALONE_maint,-30.0,F +coef_calib_tourknrtotstopsm0_BIKE_maint,-30.0,F +coef_calib_tourknrtotstopsm0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourmaas_DRIVEALONE_maint,-30.0,F +coef_calib_tourmaas_BIKE_maint,-30.0,F +coef_calib_tourmaas_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourmaas_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourmaas_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourmaas_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourmaas_TAXI_maint,-2.3,F +coef_calib_tourmaas_TNC_SINGLE_maint,0.73,F +coef_calib_tourmaas_TNC_SHARED_maint,-1.3,F +coef_calib_tourmaasjointtour0_SHARED2_maint,-30.12,F +coef_calib_tourmaasjointtour0_SHARED3_maint,-31.55,F +coef_calib_tourmaasjointtour0_WALK_maint,-26.14,F +coef_calib_tourmaasjointtour0_TAXI_maint,6.404988840099761,F +coef_calib_tourmaasjointtour0_TNC_SINGLE_maint,1.4695282807200076,F +coef_calib_tourmaasjointtour0_TNC_SHARED_maint,-4.02,F +coef_calib_tourmaasjointtour1_SHARED2_maint,1.92,F +coef_calib_tourmaasjointtour1_WALK_maint,-2.69,F +coef_calib_tourmaasjointtour1_TNC_SINGLE_maint,-25.2,F +coef_calib_tourmaasjointtour1_TNC_SHARED_maint,2.04,F +coef_calib_tourpnr_BIKE_maint,-30.0,F +coef_calib_tourpnr_WALK_TRANSIT_maint,1.584,F +coef_calib_tourpnr_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourpnr_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourpnrjointtour0_DRIVEALONE_maint,-6.8467,F +coef_calib_tourpnrjointtour0_SHARED2_maint,-7.3704,F +coef_calib_tourpnrjointtour0_SHARED3_maint,-11.0441,F +coef_calib_tourpnrjointtour0_WALK_maint,-9.9546,F +coef_calib_tourpnrjointtour0_BIKE_maint,-30.0,F +coef_calib_tourpnrjointtour0_WALK_TRANSIT_maint,-8.4007,F +coef_calib_tourpnrjointtour0_PNR_TRANSIT_maint,-1.4144786765104174,F +coef_calib_tourpnrjointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourpnrjointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourpnrjointtour0_TAXI_maint,-30.0,F +coef_calib_tourpnrjointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tourpnrjointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tourpnrjointtour1_BIKE_maint,-30.0,F +coef_calib_tourpnrjointtour1_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourpnrjointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourpnrjointtour1_TAXI_maint,-30.0,F +coef_calib_tourpnrjointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tourpnrjointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tourpnrtotstops0_DRIVEALONE_maint,-10.0,F +coef_calib_tourpnrtotstops0_SHARED2_maint,-30.0,F +coef_calib_tourpnrtotstops0_SHARED3_maint,-30.0,F +coef_calib_tourpnrtotstops0_WALK_maint,-30.0,F +coef_calib_tourpnrtotstops0_BIKE_maint,-30.0,F +coef_calib_tourpnrtotstops0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourpnrtotstops0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourpnrtotstops0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourpnrtotstopsm0_BIKE_maint,-30.0,F +coef_calib_tourpnrtotstopsm0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourpnrtotstopsm0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourpnrtotstopsm0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours2_DRIVEALONE_maint,-0.656,F +coef_calib_tours2_SHARED3_maint,-30.0,F +coef_calib_tours2_WALK_maint,-2.2366,F +coef_calib_tours2_BIKE_maint,-30.0,F +coef_calib_tours2_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours2_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours2_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours2_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour0_DRIVEALONE_maint,1.3106952326448469,F +coef_calib_tours2jointtour0_SHARED2_maint,1.0037024718823004,F +coef_calib_tours2jointtour0_SHARED3_maint,-30.0,F +coef_calib_tours2jointtour0_WALK_maint,1.0962594370533987,F +coef_calib_tours2jointtour0_BIKE_maint,-30.0,F +coef_calib_tours2jointtour0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour0_TAXI_maint,-30.0,F +coef_calib_tours2jointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tours2jointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tours2jointtour1_DRIVEALONE_maint,0.0861,F +coef_calib_tours2jointtour1_SHARED3_maint,-30.0,F +coef_calib_tours2jointtour1_WALK_maint,-7.078424660896279,F +coef_calib_tours2jointtour1_BIKE_maint,-30.0,F +coef_calib_tours2jointtour1_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour1_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour1_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours2jointtour1_TAXI_maint,-30.0,F +coef_calib_tours2jointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tours2jointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tours3_DRIVEALONE_maint,-0.452,F +coef_calib_tours3_WALK_maint,-1.5731,F +coef_calib_tours3_BIKE_maint,-30.0,F +coef_calib_tours3_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours3_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours3_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours3_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour0_DRIVEALONE_maint,1.1044212959375723,F +coef_calib_tours3jointtour0_SHARED2_maint,0.8563886856236229,F +coef_calib_tours3jointtour0_SHARED3_maint,0.5094228907551963,F +coef_calib_tours3jointtour0_WALK_maint,0.44039869543269305,F +coef_calib_tours3jointtour0_BIKE_maint,-30.0,F +coef_calib_tours3jointtour0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour0_TAXI_maint,-30.0,F +coef_calib_tours3jointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tours3jointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tours3jointtour1_DRIVEALONE_maint,-0.1811,F +coef_calib_tours3jointtour1_SHARED2_maint,23.11576844,F +coef_calib_tours3jointtour1_SHARED3_maint,-0.11240160385167762,F +coef_calib_tours3jointtour1_WALK_maint,-3.1775819454987086,F +coef_calib_tours3jointtour1_BIKE_maint,-30.0,F +coef_calib_tours3jointtour1_WALK_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour1_PNR_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour1_KNR_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tours3jointtour1_TAXI_maint,-30.0,F +coef_calib_tours3jointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tours3jointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_tours3autodeficienth_SHARED2_maint,-0.324,F +coef_calib_tours3zeroautohh_SHARED2_maint,-1.469,F +coef_calib_tourtnr_DRIVEALONE_maint,-30.0,F +coef_calib_tourtnr_BIKE_maint,-30.0,F +coef_calib_tourtnr_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtran_DRIVEALONE_maint,-10.0,F +coef_calib_tourwtran_SHARED2_maint,-3.437,F +coef_calib_tourwtran_SHARED3_maint,-4.71,F +coef_calib_tourwtran_WALK_maint,2.848,F +coef_calib_tourwtran_BIKE_maint,-30.0,F +coef_calib_tourwtran_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtran_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtran_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour0_DRIVEALONE_maint,-30.0,F +coef_calib_tourwtranjointtour0_SHARED2_maint,-2.859522433166758,F +coef_calib_tourwtranjointtour0_SHARED3_maint,-2.7038682724988528,F +coef_calib_tourwtranjointtour0_WALK_maint,-7.4494210899125815,F +coef_calib_tourwtranjointtour0_BIKE_maint,-30.0,F +coef_calib_tourwtranjointtour0_WALK_TRANSIT_maint,-1.1214609100489512,F +coef_calib_tourwtranjointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour0_TNC_SINGLE_maint,34.31241802020134,F +coef_calib_tourwtranjointtour0_TNC_SHARED_maint,-10.41,F +coef_calib_tourwtranjointtour1_DRIVEALONE_maint,-30.0,F +coef_calib_tourwtranjointtour1_SHARED2_maint,-5.437101753,F +coef_calib_tourwtranjointtour1_SHARED3_maint,-18.95675834,F +coef_calib_tourwtranjointtour1_WALK_maint,-21.494345343,F +coef_calib_tourwtranjointtour1_BIKE_maint,-30.0,F +coef_calib_tourwtranjointtour1_WALK_TRANSIT_maint,-19.642763791,F +coef_calib_tourwtranjointtour1_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour1_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour1_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwtranjointtour1_TAXI_maint,-8.28,F +coef_calib_tourwtranjointtour1_TNC_SINGLE_maint,-2.95,F +coef_calib_tourwtranjointtour1_TNC_SHARED_maint,-9.280000000000001,F +coef_calib_tourwtrantotstops0_DRIVEALONE_maint,-30.0,F +coef_calib_tourwtrantotstops0_SHARED2_maint,-1.5218,F +coef_calib_tourwtrantotstops0_SHARED3_maint,-1.5218,F +coef_calib_tourwtrantotstops0_WALK_maint,-1.5218,F +coef_calib_tourwtrantotstops0_BIKE_maint,-30.0,F +coef_calib_tourwtrantotstops0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtrantotstops0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtrantotstops0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwtranfirstofmult_DRIVEALONE_maint,-30.0,F +coef_calib_tourwtranfirstofmult_SHARED2_maint,-1.477,F +coef_calib_tourwtranfirstofmult_SHARED3_maint,-1.477,F +coef_calib_tourwtranfirstofmult_WALK_maint,-1.477,F +coef_calib_tourwtranfirstofmult_BIKE_maint,-30.0,F +coef_calib_tourwtranfirstofmult_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranfirstofmult_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwtranfirstofmult_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwtranzeroautohh_WALK_maint,1.424,F +coef_calib_tourwalk_DRIVEALONE_maint,-30.0,F +coef_calib_tourwalk_SHARED2_maint,-30.0,F +coef_calib_tourwalk_SHARED3_maint,-30.0,F +coef_calib_tourwalk_BIKE_maint,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourwalk_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwalk_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwalk_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwalkjointtour0_DRIVEALONE_maint,-30.0,F +coef_calib_tourwalkjointtour0_SHARED2_maint,-30.0,F +coef_calib_tourwalkjointtour0_SHARED3_maint,-30.0,F +coef_calib_tourwalkjointtour0_WALK_maint,1.6462845772761598,F +coef_calib_tourwalkjointtour0_BIKE_maint,-30.0,F +coef_calib_tourwalkjointtour0_WALK_TRANSIT_maint,-30.0,F +coef_calib_tourwalkjointtour0_PNR_TRANSIT_maint,-30.0,F +coef_calib_tourwalkjointtour0_KNR_TRANSIT_maint,-30.0,F +coef_calib_tourwalkjointtour0_TNC_TRANSIT_maint,-30.0,F +coef_calib_tourwalkjointtour0_TAXI_maint,-30.0,F +coef_calib_tourwalkjointtour0_TNC_SINGLE_maint,-30.0,F +coef_calib_tourwalkjointtour0_TNC_SHARED_maint,-30.0,F +coef_calib_tourwalkjointtour1_TAXI_maint,-30.0,F +coef_calib_tourwalkjointtour1_TNC_SINGLE_maint,-30.0,F +coef_calib_tourwalkjointtour1_TNC_SHARED_maint,-30.0,F +coef_calib_civtebikeownershipma_BIKE_disc,1.0,F +coef_calib_civt5max10sovdistski_KNR_TRANSIT_disc,1.0,F +coef_calib_civt5max10sovdistski_TNC_TRANSIT_disc,1.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_disc,1.0,F +coef_calib_civtmax4525sovdistsk_PNR_TRANSIT_disc,1.0,F +coef_calib_tourbike_DRIVEALONE_disc,-30.0,F +coef_calib_tourbike_SHARED2_disc,0.0,F +coef_calib_tourbike_SHARED3_disc,0.0,F +coef_calib_tourbike_WALK_disc,-20.0,F +coef_calib_tourbike_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourbike_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourbike_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourbike_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourbikejointtour0_DRIVEALONE_disc,-30.0,F +coef_calib_tourbikejointtour0_SHARED2_disc,-30.0,F +coef_calib_tourbikejointtour0_SHARED3_disc,-30.0,F +coef_calib_tourbikejointtour0_WALK_disc,-30.0,F +coef_calib_tourbikejointtour0_BIKE_disc,-2.8371334245691715,F +coef_calib_tourbikejointtour0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourbikejointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourbikejointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourbikejointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourbikejointtour0_TAXI_disc,-30.0,F +coef_calib_tourbikejointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tourbikejointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tourbikejointtour1_BIKE_disc,-1.55,F +coef_calib_tourbikejointtour1_TAXI_disc,-30.0,F +coef_calib_tourbikejointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tourbikejointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tourda_SHARED2_disc,-30.0,F +coef_calib_tourda_SHARED3_disc,-30.0,F +coef_calib_tourda_WALK_disc,-30.0,F +coef_calib_tourda_BIKE_disc,-30.0,F +coef_calib_tourda_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourda_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourda_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourda_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour0_DRIVEALONE_disc,0.05046829276861734,F +coef_calib_tourdajointtour0_SHARED2_disc,-30.0,F +coef_calib_tourdajointtour0_SHARED3_disc,-30.0,F +coef_calib_tourdajointtour0_WALK_disc,-30.0,F +coef_calib_tourdajointtour0_BIKE_disc,-30.0,F +coef_calib_tourdajointtour0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour0_TAXI_disc,-30.0,F +coef_calib_tourdajointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tourdajointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tourdajointtour1_SHARED2_disc,-30.0,F +coef_calib_tourdajointtour1_SHARED3_disc,-30.0,F +coef_calib_tourdajointtour1_WALK_disc,-30.0,F +coef_calib_tourdajointtour1_BIKE_disc,-30.0,F +coef_calib_tourdajointtour1_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourdajointtour1_TAXI_disc,-30.0,F +coef_calib_tourdajointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tourdajointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tourknrjointtour0_DRIVEALONE_disc,-30.0,F +coef_calib_tourknrjointtour0_SHARED2_disc,0.7499,F +coef_calib_tourknrjointtour0_SHARED3_disc,1.4961,F +coef_calib_tourknrjointtour0_WALK_disc,0.4389,F +coef_calib_tourknrjointtour0_BIKE_disc,-30.0,F +coef_calib_tourknrjointtour0_WALK_TRANSIT_disc,46.2844,F +coef_calib_tourknrjointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourknrjointtour0_KNR_TRANSIT_disc,1.82463921614539,F +coef_calib_tourknrjointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourknrjointtour0_TAXI_disc,-30.0,F +coef_calib_tourknrjointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tourknrjointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tourknrjointtour1_DRIVEALONE_disc,-30.0,F +coef_calib_tourknrjointtour1_BIKE_disc,-30.0,F +coef_calib_tourknrjointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourknrjointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourknrtotstops0_DRIVEALONE_disc,-30.0,F +coef_calib_tourknrtotstops0_SHARED2_disc,-10.0,F +coef_calib_tourknrtotstops0_SHARED3_disc,-10.0,F +coef_calib_tourknrtotstops0_WALK_disc,-30.0,F +coef_calib_tourknrtotstops0_BIKE_disc,-30.0,F +coef_calib_tourknrtotstops0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourknrtotstops0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourknrtotstopsm0_DRIVEALONE_disc,-30.0,F +coef_calib_tourknrtotstopsm0_BIKE_disc,-30.0,F +coef_calib_tourknrtotstopsm0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourmaas_DRIVEALONE_disc,-30.0,F +coef_calib_tourmaas_BIKE_disc,-30.0,F +coef_calib_tourmaas_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourmaas_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourmaas_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourmaas_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourmaas_TAXI_disc,0.02,F +coef_calib_tourmaas_TNC_SINGLE_disc,2.53,F +coef_calib_tourmaas_TNC_SHARED_disc,1.02,F +coef_calib_tourmaasjointtour0_SHARED2_disc,-1.37,F +coef_calib_tourmaasjointtour0_SHARED3_disc,-0.77,F +coef_calib_tourmaasjointtour0_WALK_disc,1.77,F +coef_calib_tourmaasjointtour0_TAXI_disc,3.2847189567147628,F +coef_calib_tourmaasjointtour0_TNC_SINGLE_disc,-4.197345793267215,F +coef_calib_tourmaasjointtour0_TNC_SHARED_disc,-2.27,F +coef_calib_tourmaasjointtour1_SHARED2_disc,-0.14,F +coef_calib_tourmaasjointtour1_SHARED3_disc,-0.01,F +coef_calib_tourmaasjointtour1_WALK_disc,2.44,F +coef_calib_tourmaasjointtour1_TNC_SINGLE_disc,-27.82,F +coef_calib_tourpnrjointtour0_DRIVEALONE_disc,-6.6205,F +coef_calib_tourpnrjointtour0_SHARED2_disc,-0.8124,F +coef_calib_tourpnrjointtour0_SHARED3_disc,-0.4849,F +coef_calib_tourpnrjointtour0_WALK_disc,1.0992,F +coef_calib_tourpnrjointtour0_BIKE_disc,-30.0,F +coef_calib_tourpnrjointtour0_WALK_TRANSIT_disc,10.1369,F +coef_calib_tourpnrjointtour0_PNR_TRANSIT_disc,-0.7682535395283122,F +coef_calib_tourpnrjointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourpnrjointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourpnrjointtour0_TAXI_disc,-30.0,F +coef_calib_tourpnrjointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tourpnrjointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tourpnrjointtour1_BIKE_disc,-30.0,F +coef_calib_tourpnrjointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourpnrjointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourpnrjointtour1_TAXI_disc,-30.0,F +coef_calib_tourpnrjointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tourpnrjointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tourpnrtotstops0_DRIVEALONE_disc,-10.0,F +coef_calib_tourpnrtotstops0_SHARED2_disc,-30.0,F +coef_calib_tourpnrtotstops0_SHARED3_disc,-30.0,F +coef_calib_tourpnrtotstops0_WALK_disc,-30.0,F +coef_calib_tourpnrtotstops0_BIKE_disc,-30.0,F +coef_calib_tourpnrtotstops0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourpnrtotstops0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourpnrtotstops0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourpnrtotstopsm0_BIKE_disc,-30.0,F +coef_calib_tourpnrtotstopsm0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourpnrtotstopsm0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourpnrtotstopsm0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours2_DRIVEALONE_disc,-0.688,F +coef_calib_tours2_SHARED3_disc,-30.0,F +coef_calib_tours2_WALK_disc,1.854,F +coef_calib_tours2_BIKE_disc,-30.0,F +coef_calib_tours2_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours2_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours2_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours2_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour0_DRIVEALONE_disc,1.3711251281897145,F +coef_calib_tours2jointtour0_SHARED2_disc,0.5534376307334923,F +coef_calib_tours2jointtour0_SHARED3_disc,-30.0,F +coef_calib_tours2jointtour0_WALK_disc,-2.5572214336369505,F +coef_calib_tours2jointtour0_BIKE_disc,-30.0,F +coef_calib_tours2jointtour0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour0_TAXI_disc,-30.0,F +coef_calib_tours2jointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tours2jointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tours2jointtour1_DRIVEALONE_disc,-0.0787,F +coef_calib_tours2jointtour1_SHARED2_disc,0.006192950906288385,F +coef_calib_tours2jointtour1_SHARED3_disc,-30.0,F +coef_calib_tours2jointtour1_WALK_disc,-3.508924660896279,F +coef_calib_tours2jointtour1_BIKE_disc,-30.0,F +coef_calib_tours2jointtour1_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours2jointtour1_TAXI_disc,-30.0,F +coef_calib_tours2jointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tours2jointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tours2totstops0_DRIVEALONE_disc,-3.241,F +coef_calib_tours2totstops0_SHARED3_disc,-30.0,F +coef_calib_tours2totstops0_WALK_disc,-3.241,F +coef_calib_tours2totstops0_BIKE_disc,-30.0,F +coef_calib_tours2totstops0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours2totstops0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours2totstops0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours2totstops0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours2firstofmultipl_DRIVEALONE_disc,0.807,F +coef_calib_tours2firstofmultipl_SHARED3_disc,-30.0,F +coef_calib_tours2firstofmultipl_WALK_disc,0.807,F +coef_calib_tours2firstofmultipl_BIKE_disc,-30.0,F +coef_calib_tours2firstofmultipl_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours2firstofmultipl_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours2firstofmultipl_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours2firstofmultipl_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours3_DRIVEALONE_disc,-1.73,F +coef_calib_tours3_SHARED2_disc,-1.247,F +coef_calib_tours3_WALK_disc,0.878,F +coef_calib_tours3_BIKE_disc,-30.0,F +coef_calib_tours3_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours3_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours3_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours3_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour0_DRIVEALONE_disc,1.5214985313922953,F +coef_calib_tours3jointtour0_SHARED2_disc,0.4519608857673781,F +coef_calib_tours3jointtour0_SHARED3_disc,0.7339852484782727,F +coef_calib_tours3jointtour0_WALK_disc,0.899554825327642,F +coef_calib_tours3jointtour0_BIKE_disc,-30.0,F +coef_calib_tours3jointtour0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour0_TAXI_disc,-30.0,F +coef_calib_tours3jointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tours3jointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tours3jointtour1_DRIVEALONE_disc,-0.1763,F +coef_calib_tours3jointtour1_SHARED2_disc,22.85936844,F +coef_calib_tours3jointtour1_WALK_disc,-1.4200819454987088,F +coef_calib_tours3jointtour1_BIKE_disc,-30.0,F +coef_calib_tours3jointtour1_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours3jointtour1_TAXI_disc,-30.0,F +coef_calib_tours3jointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tours3jointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tours3totstops0_DRIVEALONE_disc,-1.773,F +coef_calib_tours3totstops0_SHARED2_disc,-1.773,F +coef_calib_tours3totstops0_WALK_disc,-1.773,F +coef_calib_tours3totstops0_BIKE_disc,-30.0,F +coef_calib_tours3totstops0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours3totstops0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours3totstops0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours3totstops0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tours3firstofmultipl_DRIVEALONE_disc,0.397,F +coef_calib_tours3firstofmultipl_SHARED2_disc,0.397,F +coef_calib_tours3firstofmultipl_WALK_disc,0.397,F +coef_calib_tours3firstofmultipl_BIKE_disc,-30.0,F +coef_calib_tours3firstofmultipl_WALK_TRANSIT_disc,-30.0,F +coef_calib_tours3firstofmultipl_PNR_TRANSIT_disc,-30.0,F +coef_calib_tours3firstofmultipl_KNR_TRANSIT_disc,-30.0,F +coef_calib_tours3firstofmultipl_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourtnr_DRIVEALONE_disc,-30.0,F +coef_calib_tourtnr_BIKE_disc,-30.0,F +coef_calib_tourtnr_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtran_DRIVEALONE_disc,-7.0,F +coef_calib_tourwtran_SHARED2_disc,-6.223,F +coef_calib_tourwtran_SHARED3_disc,-6.0,F +coef_calib_tourwtran_WALK_disc,2.418,F +coef_calib_tourwtran_BIKE_disc,-30.0,F +coef_calib_tourwtran_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtran_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtran_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour0_DRIVEALONE_disc,-30.0,F +coef_calib_tourwtranjointtour0_SHARED2_disc,-6.0,F +coef_calib_tourwtranjointtour0_SHARED3_disc,-6.0,F +coef_calib_tourwtranjointtour0_WALK_disc,-9.820499722690379,F +coef_calib_tourwtranjointtour0_BIKE_disc,-30.0,F +coef_calib_tourwtranjointtour0_WALK_TRANSIT_disc,-5.634512572937531,F +coef_calib_tourwtranjointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour0_TNC_SINGLE_disc,27.74,F +coef_calib_tourwtranjointtour1_DRIVEALONE_disc,-30.0,F +coef_calib_tourwtranjointtour1_SHARED3_disc,-14.95676,F +coef_calib_tourwtranjointtour1_WALK_disc,-27.2353935,F +coef_calib_tourwtranjointtour1_BIKE_disc,-30.0,F +coef_calib_tourwtranjointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwtranjointtour1_TAXI_disc,-8.33,F +coef_calib_tourwtranjointtour1_TNC_SINGLE_disc,-4.53,F +coef_calib_tourwtranjointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_tourwtrantotstops0_DRIVEALONE_disc,-30.0,F +coef_calib_tourwtrantotstops0_SHARED2_disc,-3.06,F +coef_calib_tourwtrantotstops0_SHARED3_disc,-3.06,F +coef_calib_tourwtrantotstops0_WALK_disc,-3.06,F +coef_calib_tourwtrantotstops0_BIKE_disc,-30.0,F +coef_calib_tourwtrantotstops0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtrantotstops0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtrantotstops0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwtranfirstofmult_DRIVEALONE_disc,-30.0,F +coef_calib_tourwtranfirstofmult_SHARED2_disc,-3.045,F +coef_calib_tourwtranfirstofmult_SHARED3_disc,-3.045,F +coef_calib_tourwtranfirstofmult_WALK_disc,-3.045,F +coef_calib_tourwtranfirstofmult_BIKE_disc,-30.0,F +coef_calib_tourwtranfirstofmult_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranfirstofmult_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwtranfirstofmult_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwalk_DRIVEALONE_disc,-30.0,F +coef_calib_tourwalk_SHARED2_disc,-30.0,F +coef_calib_tourwalk_SHARED3_disc,-30.0,F +coef_calib_tourwalk_BIKE_disc,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourwalk_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalk_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalk_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour0_DRIVEALONE_disc,-30.0,F +coef_calib_tourwalkjointtour0_SHARED2_disc,-30.0,F +coef_calib_tourwalkjointtour0_SHARED3_disc,-30.0,F +coef_calib_tourwalkjointtour0_WALK_disc,1.1284402519937065,F +coef_calib_tourwalkjointtour0_BIKE_disc,-30.0,F +coef_calib_tourwalkjointtour0_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour0_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour0_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour0_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour0_TAXI_disc,-30.0,F +coef_calib_tourwalkjointtour0_TNC_SINGLE_disc,-30.0,F +coef_calib_tourwalkjointtour0_TNC_SHARED_disc,-30.0,F +coef_calib_tourwalkjointtour1_DRIVEALONE_disc,-30.0,F +coef_calib_tourwalkjointtour1_SHARED2_disc,-30.0,F +coef_calib_tourwalkjointtour1_SHARED3_disc,-30.0,F +coef_calib_tourwalkjointtour1_BIKE_disc,-30.0,F +coef_calib_tourwalkjointtour1_WALK_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour1_PNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour1_KNR_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour1_TNC_TRANSIT_disc,-30.0,F +coef_calib_tourwalkjointtour1_TAXI_disc,-30.0,F +coef_calib_tourwalkjointtour1_TNC_SINGLE_disc,-30.0,F +coef_calib_tourwalkjointtour1_TNC_SHARED_disc,-30.0,F +coef_calib_civtmax200133sovdist_WALK_TRANSIT_atwork,1.0,F +coef_calib_tourbike_DRIVEALONE_atwork,-30.0,F +coef_calib_tourbike_SHARED2_atwork,0.0,F +coef_calib_tourbike_SHARED3_atwork,0.0,F +coef_calib_tourbike_WALK_atwork,-5.5897134151007,F +coef_calib_tourbike_BIKE_atwork,-5.36914703002003,F +coef_calib_tourbike_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tourbike_TAXI_atwork,-30.0,F +coef_calib_tourbike_TNC_SINGLE_atwork,-30.0,F +coef_calib_tourbike_TNC_SHARED_atwork,-30.0,F +coef_calib_tourda_SHARED2_atwork,-30.0,F +coef_calib_tourda_SHARED3_atwork,-30.0,F +coef_calib_tourda_WALK_atwork,-30.0,F +coef_calib_tourda_BIKE_atwork,-30.0,F +coef_calib_tourda_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tourda_TAXI_atwork,-30.0,F +coef_calib_tourda_TNC_SINGLE_atwork,-30.0,F +coef_calib_tourda_TNC_SHARED_atwork,-30.0,F +coef_calib_tourmaas_DRIVEALONE_atwork,-30.0,F +coef_calib_tourmaas_SHARED2_atwork,-3.54,F +coef_calib_tourmaas_SHARED3_atwork,0.69,F +coef_calib_tourmaas_WALK_atwork,-0.63,F +coef_calib_tourmaas_BIKE_atwork,-30.0,F +coef_calib_tourmaas_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tourmaas_PNR_TRANSIT_atwork,-30.0,F +coef_calib_tourmaas_KNR_TRANSIT_atwork,-30.0,F +coef_calib_tourmaas_TNC_TRANSIT_atwork,-30.0,F +coef_calib_tourmaas_TAXI_atwork,-26.12,F +coef_calib_tourmaas_TNC_SINGLE_atwork,-26.04,F +coef_calib_tourmaas_TNC_SHARED_atwork,-2.79,F +coef_calib_tours2_DRIVEALONE_atwork,0.6104330884578978,F +coef_calib_tours2_SHARED2_atwork,0.48830207806157105,F +coef_calib_tours2_SHARED3_atwork,-30.0,F +coef_calib_tours2_WALK_atwork,0.35561239430716407,F +coef_calib_tours2_BIKE_atwork,-30.0,F +coef_calib_tours2_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tours2_TAXI_atwork,-30.0,F +coef_calib_tours2_TNC_SINGLE_atwork,-30.0,F +coef_calib_tours2_TNC_SHARED_atwork,-30.0,F +coef_calib_tours2totstops0_DRIVEALONE_atwork,-1.4142,F +coef_calib_tours2totstops0_SHARED3_atwork,-30.0,F +coef_calib_tours2totstops0_WALK_atwork,-1.4142,F +coef_calib_tours2totstops0_BIKE_atwork,-30.0,F +coef_calib_tours2totstops0_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tours3_DRIVEALONE_atwork,1.332060563581082,F +coef_calib_tours3_SHARED2_atwork,-0.2241990970061125,F +coef_calib_tours3_SHARED3_atwork,1.7126980827937628,F +coef_calib_tours3_WALK_atwork,-5.916021459074802,F +coef_calib_tours3_BIKE_atwork,-30.0,F +coef_calib_tours3_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tours3_TAXI_atwork,-30.0,F +coef_calib_tours3_TNC_SINGLE_atwork,-30.0,F +coef_calib_tours3_TNC_SHARED_atwork,-30.0,F +coef_calib_tours3totstops0_DRIVEALONE_atwork,-1.7313,F +coef_calib_tours3totstops0_SHARED2_atwork,-1.7313,F +coef_calib_tours3totstops0_WALK_atwork,-1.7313,F +coef_calib_tours3totstops0_BIKE_atwork,-30.0,F +coef_calib_tours3totstops0_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tourtnr_DRIVEALONE_atwork,-30.0,F +coef_calib_tourtnr_BIKE_atwork,-30.0,F +coef_calib_tourtnr_PNR_TRANSIT_atwork,-30.0,F +coef_calib_tourwtran_DRIVEALONE_atwork,-20.0,F +coef_calib_tourwtran_SHARED2_atwork,-22.0,F +coef_calib_tourwtran_SHARED3_atwork,-22.0,F +coef_calib_tourwtran_WALK_atwork,-9.7479,F +coef_calib_tourwtran_BIKE_atwork,-30.0,F +coef_calib_tourwtran_WALK_TRANSIT_atwork,-13.489559480821685,F +coef_calib_tourwtran_TNC_SINGLE_atwork,-0.02,F +coef_calib_tourwalk_DRIVEALONE_atwork,-30.0,F +coef_calib_tourwalk_SHARED2_atwork,-30.0,F +coef_calib_tourwalk_SHARED3_atwork,-30.0,F +coef_calib_tourwalk_BIKE_atwork,-30.0,F +coef_calib_tourwalk_WALK_TRANSIT_atwork,-30.0,F +coef_calib_tourwalk_TAXI_atwork,-30.0,F +coef_calib_tourwalk_TNC_SINGLE_atwork,-30.0,F +coef_calib_tourwalk_TNC_SHARED_atwork,-30.0,F +coef_calib_tourebikejointtour0_WALK_disc,0.0,F +coef_calib_tourebikejointtour0_WALK_maint,0.0,F +coef_calib_tourebikejointtour1_WALK_disc,0.0,F +coef_calib_tourebikejointtour1_WALK_maint,0.0,F +coef_calib_tourebikejointtour0_EBIKE_disc,0.0,F +coef_calib_tourebikejointtour0_EBIKE_maint,0.020409266,F +coef_calib_tourebikejointtour1_EBIKE_disc,0.0,F +coef_calib_tourebikejointtour1_EBIKE_maint,0.0,F +coef_calib_tourescooterjointtour0_WALK_disc,0.0,F +coef_calib_tourescooterjointtour0_WALK_maint,0.0,F +coef_calib_tourescooterjointtour1_WALK_disc,0.0,F +coef_calib_tourescooterjointtour1_WALK_maint,0.0,F +coef_calib_tourescooterjointtour0_ESCOOTER_disc,0.0,F +coef_calib_tourescooterjointtour0_ESCOOTER_maint,0.0,F +coef_calib_tourescooterjointtour1_ESCOOTER_disc,-28.0,F +coef_calib_tourescooterjointtour1_ESCOOTER_maint,-28.0,F +coef_calib_flexfleet,7.5,F diff --git a/resident/configs_visualizer/.gitignore b/resident/configs_visualizer/.gitignore new file mode 100644 index 0000000..02365f6 --- /dev/null +++ b/resident/configs_visualizer/.gitignore @@ -0,0 +1,2 @@ +artifacts/* +logs/* \ No newline at end of file diff --git a/resident/configs_visualizer/metro_cropped.yaml b/resident/configs_visualizer/metro_cropped.yaml new file mode 100644 index 0000000..17576a5 --- /dev/null +++ b/resident/configs_visualizer/metro_cropped.yaml @@ -0,0 +1,521 @@ +# ActivitySim Visualizer starter configuration +# +# Copy this file to local_config.yaml, then: +# 1. Replace the two run directories below. +# 2. Confirm the zone settings match your model. +# 3. Run: uv run activitysim-viz --config local_config.yaml +# +# Standard ActivitySim final_* CSV or Parquet files work without other changes. +# For other input types or advanced options, start at wiki/00-home.md. + +name: Metro Cropped Output +root: artifacts + +# Summarize prepares raw inputs automatically when no valid prepared cache +# exists, then the dashboard opens at http://localhost:5006. +pipeline: + steps: + - prepare + - skimjoin + # - segment + - summarize # will automatically overwrite summaries with a stale cache + - dashboard + dashboard_mode: export + refresh: [] + +# These are the default ActivitySim file stems. Edit only names that differ in +# your model outputs; the visualizer accepts either .csv or .parquet files. +files: + households: final_households + persons: final_persons + tours: final_tours + trips: final_trips + vehicles: final_vehicles + joint_tour_participants: final_joint_tour_participants + land_use: final_land_use + +fallback_files: + land_use: resident/model_data/metro/data_cropped/land_use.csv +# Required: replace these example directories. Add or remove runs as needed. +runs: + - dir: resident/outputs/test + label: Cropped Outputs + hh_weight_col: hh_weight + person_weight_col: person_weight + +# Confirm these fields before the first run. For a TAZ-only model, keep +# use_maz false. For a MAZ/TAZ model, set it to true and name both columns. +zones: + use_maz: true + maz_col: [MAZ, zone_id] + taz_col: TAZ + +columns: + household_id: [household_id, hh_id] + trip_id: [trip_id, linked_trip_id] + trip_mode: [trip_mode, linked_trip_mode] + trip_num: [trip_num, linked_trip_num] + ptype: ptype # person type column in persons file + hhsize: hhsize # HH size column in households file + auto_ownership: auto_ownership # vehicle count column in households file + num_workers: num_workers # workers per HH in households file + num_adults: num_adults # adults per HH in households file + # income_segment: [income_segment, income_broad] # OPTIONAL household income segment/level column for trip enrichment + # Prefer a readable purpose column per run. Some survey-style outputs store + # numeric codes in primary_purpose/tour_purpose and labels in tour_type. + tour_purpose: [primary_purpose, tour_type, purpose] + # sample_rate: sample_rate # OPTIONAL override; if omitted, code auto-detects + # a households column literally named 'sample_rate'. + # finalweight = 1/sample_rate (unless explicit run weight columns are provided) + # school_esc_outbound: [school_esc_outbound, out_escort_type] + # school_esc_inbound: [school_esc_inbound, inb_escort_type] + +prepare: + category_mappings: + raw_statewide_survey: + persons: + has_license: + source: can_drive + output_type: boolean + preserve_unmapped: false + mapping: + 1: true + 3: false + 995: false + transit_pass_ownership: + source: transit_pass + output_type: boolean + preserve_unmapped: false + mapping: + 1: false + 3: false + 4: false + 7: true + 8: true + 9: true + 995: null + telecommute_frequency: + source: telework_freq + preserve_unmapped: false + mapping: + 1: 4_days_week + 2: 4_days_week + 3: 4_days_week + 4: 3_days_week + 5: 2_days_week + 6: 1_day_week + 7: No_Telecommute + 8: No_Telecommute + 995: null + 996: null + work_from_home: + source: job_type + output_type: boolean + preserve_unmapped: false + mapping: + 1: false + 2: false + 3: true + 4: false + 5: false + 995: null + day: + cdap_activity: + source: daily_activity_pattern + preserve_unmapped: false + mapping: + 1: M + 2: N + 3: H + tours: + tour_mode: + mapping: &raw_statewide_tour_modes + 1: SCHOOLBUS + 2: WALK + 3: WALK_TRANSIT + 4: PNR_TRANSIT + 5: KNR_TRANSIT + 6: BIKE_TRANSIT + 7: BIKE + 8: EBIKE + 9: ESCOOTER + 10: TAXI + 11: TNC_SINGLE + 12: TNC_SHARED + 13: SOV + 14: HOV2 + 15: HOV3 + 16: OTHER + 995: MISSING + tour_purpose: + mapping: + -1: othdiscr + 1: loop + 2: work + 3: othmaint + 4: school + 5: othmaint + 6: escort + 7: shopping + 8: eatout + 9: social + 10: othmaint + 12: othdiscr + 13: othdiscr + 14: loop + 995: null + tour_category: + mapping: + 1: mandatory + 2: non_mandatory + 3: atwork + 4: joint + trips: + trip_mode: + source: linked_trip_mode + mapping: *raw_statewide_tour_modes + trip_purpose: + source: d_purpose_category + mapping: + -1: othdiscr + 1: home + 2: work + 3: othmaint + 4: school + 5: othmaint + 6: escort + 7: shopping + 8: eatout + 9: social + 10: othmaint + 12: othdiscr + 13: othdiscr + 14: home + 995: null + regional_filtered_attributed: + day: + cdap_activity: + source: daily_activity_pattern + preserve_unmapped: false + mapping: + 1: M + 2: N + 3: H + output: + file_format: parquet + validation: + relationship_checks: warn + distance_skim: + file: ../../model_data/metro/data_cropped/autoSkims__MD.omx # path relative to run directory, or absolute + matrix: SOV_H_DIST__MD + non_motorized_distance_skim: + file: ../model_data/metro/data_cropped/maz_maz_walk.csv + matrix: null + time_periods: + network_los_file: ../configs/network_los.yaml + trip_period_number_column: depart + tour_start_period_number_column: start + tour_end_period_number_column: end + auto_sufficiency_basis: licensed_drivers # licensed_drivers | workers | adults + vot_bins: + source_column: income_segment + output_column: vot_bin + fallback_value: M + mappings: + raw_statewide_survey: + 1: L + 2: L + 3: M + 4: M + 5: H + 6: H + 995: M + 999: M + survey: + 1: L + 2: L + 3: M + 4: M + 5: H + 6: H + 999: M + override: + 1: L + 2: L + 3: M + 4: M + 5: H + 6: H + 999: M + estimation: + 1: L + 2: L + 3: M + 4: M + 5: H + 6: H + 999: M + + +skimjoin: + # Create optional long-form trip/tour tables with skim values for alternate modes. + create_hypothetical_skim_tables: true + defaults: + config_path: metro_skimjoin_config.yaml + skim_files: + - '../model_data/metro/data_cropped/*.omx' + - ../model_data/metro/data_cropped/maz_stop_walk.csv + - ../model_data/metro/data_cropped/maz_maz_walk.csv + - ../model_data/metro/data_cropped/bike_maz_logsums_commute.csv + - ../model_data/metro/data_cropped/bike_maz_logsums_noncommute.csv + network_los_file: ../configs/network_los.yaml + + + +summarize: + weighting_modes: [unweighted, weighted] + pnr_tour_modes: + - PNR_TRANSIT + # OPTIONAL summary-time grouping for outputs with a tour_purpose dimension + # group_joint_tour_purposes: true + # group_atwork_tour_purposes: true + # group_school_tour_purposes: true + # Controls additional mapped geography aggregations only. Summaries may still + # emit all_geographies totals, and native prepared home geographies such as + # home_taz, home_county, and home_mpo can appear when those columns exist. + geography: + enabled: true + # Configured mappings create columns such as home_geo__school_district, + # work_geo__county, or land_use_geo__district. + aggregations: + regional_district: + source_zone_system: maz + file: ../model_data/metro/data_cropped/land_use.csv + zone_id_col: MAZ + geography_col: DISTRICT9 + school_district_k8: + source_zone_system: maz + file: ../model_data/metro/data_cropped/land_use.csv + zone_id_col: MAZ + geography_col: DIST_Kto8 + school_district_9_12: + source_zone_system: maz + file: ../model_data/metro/data_cropped/land_use.csv + zone_id_col: MAZ + geography_col: DIST_9to12 + +dashboard: + title: "Metro Cropped Output Visualizer" + # logo: ../assets/metro_logo.png + enable_maz_geographies: false + live: + pages: + - overview + - long_term_choices + - daily_travel + - joint_travel + - tour_summaries + - trip_summaries + - skim_summaries + # - validation: + # - traffic + # - transit + # - vmt + # - regional_validation + + +# Summary-affecting regrouping/normalization belongs under summarize.category_normalization. +# Cosmetic labels and ordering belong under display.labels. +display: + bar_hover_mode: all # closest | all + density_hover_mode: all # closest | all + labels: + person_type: + mapping: + all_person_types: All Person Types + 1: Full-time worker + 2: Part-time worker + 3: University student + 4: Non-worker adult + 5: Retired + 6: Student + 7: Preschool + + transit_subsidy: + mapping: + 0: No subsidy + 1: Discounted + 2: Free + + license_holding_status: + mapping: + has_license: Has License + no_license: No License + + transit_pass_ownership_status: + mapping: + has_transit_pass: Has Transit Pass + no_transit_pass: No Transit Pass + + telecommute_frequency: + mapping: + 1_day_week: 1 Day per Week + 2_days_week: 2 Days per Week + 3_days_week: 3 Days per Week + 2_3_days_week: 2-3 Days per Week + 4_days_week: 4+ Days per Week + No_Telecommute: No Telecommute + + mode: + mapping: + SOV: Drive Alone + HOV2: Shared Ride 2 + HOV3: Shared Ride 3+ + WALK: Walk + BIKE: Bike + EBIKE: E-Bike + ESCOOTER: E-Scooter + WALK_TRANSIT: Walk-Transit + BIKE_TRANSIT: Bike-Transit + PNR_TRANSIT: PNR-Transit + KNR_TRANSIT: KNR-Transit + TAXI: Taxi + TNC_SINGLE: TNC-Single + TNC_SHARED: TNC-Pool + SCHOOLBUS: School Bus + + + # escort: + # mapping: + # not_escorted: No Escort + # pure_escort: Pure Escort + # ride_share: Ride Share + # 0: No Escort + # 1: Pure Escort + # 2: Ride Share + # "": No Escort + + tour_purpose: + mapping: + all_tour_purposes: All Tour Purposes + work: Work + school: School + joint: Joint + escort: Escort + shopping: Shopping + othmaint: Other Maintenance + eatout: Eat Out + social: Social + othdiscr: Other Discretionary + atwork: At-Work + loop: Loop + + trip_purpose: + mapping: + home: Home + work: Work + school: School + escort: Escort + shopping: Shopping + othmaint: Other Maintenance + eatout: Eat Out + social: Social + othdiscr: Other Discretionary + loop: Loop + + stop_purpose: + mapping: + work: Work + school: School + escort: Escort + shopping: Shopping + othmaint: Other Maintenance + eatout: Eat Out + social: Social + othdiscr: Other Discretionary + + tour_composition: + mapping: + adults: Adults + mixed: Mixed + children: Children + + tour_category: + mapping: + mandatory: Mandatory + joint: Joint + non_mandatory: Non-Mandatory + atwork: At-Work + + atwork_subtour_frequency_category: + mapping: + no_subtours: None + eat: 1 Eating Out + business1: 1 Business + maint: 1 Maintenance + business2: 2 Business + eat_business: 1 Eating Out + 1 Business + + geography: + mapping: + all_geographies: All Geographies + county: County + home_county: County + home_mpo: MPO + home_taz: TAZ + district: District + taz: TAZ + maz: MAZ + school_district: School District + + mandatory_tour_frequency: + # mapping: + # work1: Work + # school1: School + # work2: 2 Work + # school2: 2 School + # work_and_school: 1 Work + 1 School + mapping: + 1: Work + 3: School + 2: 2 Work + 4: 2 School + 5: 1 Work + 1 School + + daily_activity_pattern: + mapping: + M : Mandatory + N : Non-Mandatory + H : At-Home + + facility_type: + mapping: + 1: "Interstate" + 3: "Principal Arterial" + 4: "Minor Arterial" + 5: "Major Collector" + 6: "Minor Collector" + 7: "Local Road" + 30: "Ramp" + 998: "Bike/Walk" + + commercial_vehicle_type: + mapping: + car: Car + su: Single-Unit Truck + mu: Multi-Unit Truck + + # run_colors: + # - "#298c8c" # Teal + # - "#a00000" # Red + # - "#b8b8b8" # Light gray + # - "#384860" # Dark blue-gray + # - "#ff7f0e" # Orange + # - "#1f77b4" + # - "#ff7f0e" + # - "#2ca02c" + # - "#d62728" + # - "#9467bd" + # - "#8c564b" + # - "#e377c2" + # - "#7f7f7f" diff --git a/resident/configs_visualizer/metro_skimjoin_config.yaml b/resident/configs_visualizer/metro_skimjoin_config.yaml new file mode 100644 index 0000000..a560c9c --- /dev/null +++ b/resident/configs_visualizer/metro_skimjoin_config.yaml @@ -0,0 +1,474 @@ +activitysim: + trip_mode_column: trip_mode + trip_id_column: trip_id + tour_mode_column: tour_mode + tour_id_column: tour_id + outbound_column: outbound + + +defaults: + origin: OTAZ + destination: DTAZ + output_prefix: skim_ + sentinel_values: + - 9999 + - 999999 + +zone_mapping: + lookup_name: ZONE + file_lookup_names: + fares.omx: ZONE + 'bike_taz_logsums_*.omx': ZONE + missing_zone_policy: error + +dimensions: + PERIOD: + source_columns: + trip_source_column: trip_period + outbound_tour_source_column: start_period + inbound_tour_source_column: first_inbound_trip_period + VOT: + source_columns: + trip_source_column: vot_bin + outbound_tour_source_column: vot_bin + inbound_tour_source_column: vot_bin + values: + L: L + M: M + H: H + BIKE_PURPOSE: + source_columns: + trip_source_column: tour_purpose + outbound_tour_source_column: tour_purpose + inbound_tour_source_column: tour_purpose + values: + work: commute + school: commute + univ: commute + atwork: noncommute + business: noncommute + eat: noncommute + eatout: noncommute + escort: noncommute + loop: noncommute + maint: noncommute + othdiscr: noncommute + othmaint: noncommute + shopping: noncommute + social: noncommute + +ignore_modes: + - ESCOOTER + - MISSING + - OTHER + +modes: + SOV: + output_prefix: skim_auto_ + time: "SOV_{VOT}_TIME__{PERIOD}" + cost: "SOV_{VOT}_COST__{PERIOD}" + distance: "SOV_{VOT}_DIST__{PERIOD}" + HOV2: + output_prefix: skim_auto_ + time: "SR2_{VOT}_TIME__{PERIOD}" + cost: "SR2_{VOT}_COST__{PERIOD}" + distance: "SR2_{VOT}_DIST__{PERIOD}" + HOV3: + output_prefix: skim_auto_ + time: "SR3_{VOT}_TIME__{PERIOD}" + cost: "SR3_{VOT}_COST__{PERIOD}" + distance: "SR3_{VOT}_DIST__{PERIOD}" + KNR_TRANSIT: + output_prefix: skim_ + segment_on: outbound + segments: + true: + auto_time: "KTW_ACC__{PERIOD}" + auto_distance: "KTW_TDD__{PERIOD}" + transit_auxiliary_walk_time: "KTW_AUX__{PERIOD}" + transit_brt_ivtt: "KTW_BRT__{PERIOD}" + transit_bus_ivtt: "KTW_BUS__{PERIOD}" + transit_commuter_rail_ivtt: "KTW_CRT__{PERIOD}" + walk_time: "KTW_EGR__{PERIOD}" + transit_first_wait_time: "KTW_FWT__{PERIOD}" + transit_light_rail_ivtt: "KTW_LRT__{PERIOD}" + transit_tiv: "KTW_TIV__{PERIOD}" + transit_num_transfers: "KTW_XFR__{PERIOD}" + transit_transfer_wait_time: "KTW_XWT__{PERIOD}" + transit_fare: "fare__{PERIOD}" + d_maz_stop_walk_bus: + output: skim_transit_d_maz_stop_walk_bus + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_local_bus + d_maz_stop_walk_premium: + output: skim_transit_d_maz_stop_walk_premium + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_premium_transit + false: + walk_time: "WTK_ACC__{PERIOD}" + transit_auxiliary_walk_time: "WTK_AUX__{PERIOD}" + transit_brt_ivtt: "WTK_BRT__{PERIOD}" + transit_bus_ivtt: "WTK_BUS__{PERIOD}" + transit_commuter_rail_ivtt: "WTK_CRT__{PERIOD}" + auto_time: "WTK_EGR__{PERIOD}" + auto_distance: "WTK_TDD__{PERIOD}" + transit_first_wait_time: "WTK_FWT__{PERIOD}" + transit_light_rail_ivtt: "WTK_LRT__{PERIOD}" + transit_tiv: "WTK_TIV__{PERIOD}" + transit_num_transfers: "WTK_XFR__{PERIOD}" + transit_transfer_wait_time: "WTK_XWT__{PERIOD}" + transit_fare: "fare__{PERIOD}" + o_maz_stop_walk_bus: + output: skim_transit_o_maz_stop_walk_bus + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_local_bus + o_maz_stop_walk_premium: + output: skim_transit_o_maz_stop_walk_premium + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_premium_transit + PNR_TRANSIT: + output_prefix: skim_ + segment_on: outbound + segments: + true: + auto_time: + matrix: "SOV_{VOT}_TIME__{PERIOD}" + origin: OTAZ + destination: pnr_taz + auto_distance: + matrix: "SOV_{VOT}_DIST__{PERIOD}" + origin: OTAZ + destination: pnr_taz + auto_cost: + matrix: "SOV_{VOT}_COST__{PERIOD}" + origin: OTAZ + destination: pnr_taz + access_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_ACC__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_auxiliary_walk_time: + matrix: "WTW_AUX__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_brt_ivtt: + matrix: "WTW_BRT__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_bus_ivtt: + matrix: "WTW_BUS__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_commuter_rail_ivtt: + matrix: "WTW_CRT__{PERIOD}" + origin: pnr_taz + destination: DTAZ + egress_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_EGR__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_first_wait_time: + matrix: "WTW_FWT__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_light_rail_ivtt: + matrix: "WTW_LRT__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_tiv: + matrix: "WTW_TIV__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_num_transfers: + matrix: "WTW_XFR__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_transfer_wait_time: + matrix: "WTW_XWT__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_fare: + matrix: "fare__{PERIOD}" + origin: pnr_taz + destination: DTAZ + transit_o_maz_stop_walk_bus: + output: skim_transit_o_maz_stop_walk_bus + lookup: key + key_column: pnr_zone_id + matrix: maz_stop_walk__walk_dist_local_bus + transit_d_maz_stop_walk_bus: + output: skim_transit_d_maz_stop_walk_bus + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_local_bus + transit_o_maz_stop_walk_premium: + output: skim_transit_o_maz_stop_walk_premium + lookup: key + key_column: pnr_zone_id + matrix: maz_stop_walk__walk_dist_premium_transit + transit_d_maz_stop_walk_premium: + output: skim_transit_d_maz_stop_walk_premium + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_premium_transit + false: + auto_time: + matrix: "SOV_{VOT}_TIME__{PERIOD}" + origin: pnr_taz + destination: DTAZ + auto_distance: + matrix: "SOV_{VOT}_DIST__{PERIOD}" + origin: pnr_taz + destination: DTAZ + auto_cost: + matrix: "SOV_{VOT}_COST__{PERIOD}" + origin: pnr_taz + destination: DTAZ + access_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_ACC__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_auxiliary_walk_time: + matrix: "WTW_AUX__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_brt_ivtt: + matrix: "WTW_BRT__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_bus_ivtt: + matrix: "WTW_BUS__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_commuter_rail_ivtt: + matrix: "WTW_CRT__{PERIOD}" + origin: OTAZ + destination: pnr_taz + egress_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_EGR__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_first_wait_time: + matrix: "WTW_FWT__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_light_rail_ivtt: + matrix: "WTW_LRT__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_tiv: + matrix: "WTW_TIV__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_num_transfers: + matrix: "WTW_XFR__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_transfer_wait_time: + matrix: "WTW_XWT__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_fare: + matrix: "fare__{PERIOD}" + origin: OTAZ + destination: pnr_taz + transit_o_maz_stop_walk_bus: + output: skim_transit_o_maz_stop_walk_bus + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_local_bus + transit_d_maz_stop_walk_bus: + output: skim_transit_d_maz_stop_walk_bus + lookup: key + key_column: pnr_zone_id + matrix: maz_stop_walk__walk_dist_local_bus + transit_o_maz_stop_walk_premium: + output: skim_transit_o_maz_stop_walk_premium + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_premium_transit + transit_d_maz_stop_walk_premium: + output: skim_transit_d_maz_stop_walk_premium + lookup: key + key_column: pnr_zone_id + matrix: maz_stop_walk__walk_dist_premium_transit + + SCHOOLBUS: + output_prefix: skim_ + access_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_ACC__{PERIOD}" + transit_auxiliary_walk_time: "WTW_AUX__{PERIOD}" + transit_bus_ivtt: "WTW_BUS__{PERIOD}" + egress_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_EGR__{PERIOD}" + transit_first_wait_time: "WTW_FWT__{PERIOD}" + transit_o_maz_stop_walk_bus: + output: skim_transit_o_maz_stop_walk_bus + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_local_bus + fallbacks: + - matrix: "WTW_ACC__{PERIOD}" + origin: OTAZ + destination: DTAZ + transit_d_maz_stop_walk_bus: + output: skim_transit_d_maz_stop_walk_bus + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_local_bus + fallbacks: + - matrix: "WTW_EGR__{PERIOD}" + origin: OTAZ + destination: DTAZ + TAXI: + output_prefix: skim_auto_ + time: "SOV_{VOT}_TIME__{PERIOD}" + cost: "SOV_{VOT}_COST__{PERIOD}" + distance: "SOV_{VOT}_DIST__{PERIOD}" + TNC_SHARED: + output_prefix: skim_auto_ + time: "SR2_{VOT}_TIME__{PERIOD}" + cost: "SR2_{VOT}_COST__{PERIOD}" + distance: "SR2_{VOT}_DIST__{PERIOD}" + TNC_SINGLE: + output_prefix: skim_auto_ + time: "SOV_{VOT}_TIME__{PERIOD}" + cost: "SOV_{VOT}_COST__{PERIOD}" + distance: "SOV_{VOT}_DIST__{PERIOD}" + WALK: + output_prefix: skim_walk_ + distance: + origin: o_maz + destination: d_maz + matrix: maz_maz_walk__DISTWALK + fallbacks: + - matrix: WLK_DIST + origin: OTAZ + destination: DTAZ + maz_walk_actual: + output: skim_walk_maz_actual + origin: o_maz + destination: d_maz + matrix: maz_maz_walk__actual + WALK_TRANSIT: + output_prefix: skim_ + access_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_ACC__{PERIOD}" + transit_auxiliary_walk_time: "WTW_AUX__{PERIOD}" + transit_brt_ivtt: "WTW_BRT__{PERIOD}" + transit_bus_ivtt: "WTW_BUS__{PERIOD}" + transit_commuter_rail_ivtt: "WTW_CRT__{PERIOD}" + egress_walk_time: + output: skim_walk_time + combine: sum + matrix: "WTW_EGR__{PERIOD}" + transit_first_wait_time: "WTW_FWT__{PERIOD}" + transit_light_rail_ivtt: "WTW_LRT__{PERIOD}" + transit_tiv: "WTW_TIV__{PERIOD}" + transit_num_transfers: "WTW_XFR__{PERIOD}" + transit_transfer_wait_time: "WTW_XWT__{PERIOD}" + transit_fare: "fare__{PERIOD}" + transit_o_maz_stop_walk_bus: + output: skim_transit_o_maz_stop_walk_bus + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_local_bus + transit_d_maz_stop_walk_bus: + output: skim_transit_d_maz_stop_walk_bus + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_local_bus + transit_o_maz_stop_walk_premium: + output: skim_transit_o_maz_stop_walk_premium + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_premium_transit + transit_d_maz_stop_walk_premium: + output: skim_transit_d_maz_stop_walk_premium + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_premium_transit + BIKE: + output_prefix: skim_bike_ + distance: + origin: o_maz + destination: d_maz + matrix: "bike_maz_logsums_{BIKE_PURPOSE}__distance_{BIKE_PURPOSE}" + fallbacks: + - matrix: "bike_taz_logsums_{BIKE_PURPOSE}.omx::distance_{BIKE_PURPOSE}" + origin: OTAZ + destination: DTAZ + logsum: + origin: o_maz + destination: d_maz + matrix: "bike_maz_logsums_{BIKE_PURPOSE}__logsum_{BIKE_PURPOSE}" + fallbacks: + - matrix: "bike_taz_logsums_{BIKE_PURPOSE}.omx::logsum_{BIKE_PURPOSE}" + origin: OTAZ + destination: DTAZ + EBIKE: + output_prefix: skim_bike_ + distance: + origin: o_maz + destination: d_maz + matrix: "bike_maz_logsums_{BIKE_PURPOSE}__distance_{BIKE_PURPOSE}" + fallbacks: + - matrix: "bike_taz_logsums_{BIKE_PURPOSE}.omx::distance_{BIKE_PURPOSE}" + origin: OTAZ + destination: DTAZ + BIKE_TRANSIT: + output_prefix: skim_ + bike_o_maz_stop_distance_bus: + output: skim_bike_transit_distance_bus + combine: sum + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_local_bus + bike_d_maz_stop_distance_bus: + output: skim_bike_transit_distance_bus + combine: sum + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_local_bus + bike_o_maz_stop_distance_premium: + output: skim_bike_transit_distance_premium + combine: sum + lookup: key + key_column: o_maz + matrix: maz_stop_walk__walk_dist_premium_transit + bike_d_maz_stop_distance_premium: + output: skim_bike_transit_distance_premium + combine: sum + lookup: key + key_column: d_maz + matrix: maz_stop_walk__walk_dist_premium_transit + transit_auxiliary_walk_time: "WTW_AUX__{PERIOD}" + transit_brt_ivtt: "WTW_BRT__{PERIOD}" + transit_bus_ivtt: "WTW_BUS__{PERIOD}" + transit_commuter_rail_ivtt: "WTW_CRT__{PERIOD}" + transit_first_wait_time: "WTW_FWT__{PERIOD}" + transit_light_rail_ivtt: "WTW_LRT__{PERIOD}" + transit_tiv: "WTW_TIV__{PERIOD}" + transit_num_transfers: "WTW_XFR__{PERIOD}" + transit_transfer_wait_time: "WTW_XWT__{PERIOD}" + transit_fare: "fare__{PERIOD}" + + diff --git a/resident/extensions/external_identification.py b/resident/extensions/external_identification.py index 3800a04..66d1c4b 100644 --- a/resident/extensions/external_identification.py +++ b/resident/extensions/external_identification.py @@ -38,6 +38,9 @@ class ExternalIdentificationSettings(LogitComponentSettings, extra="forbid"): preprocessor: PreprocessorSettings | None = None + EXTERNAL_WORKER_ALT: int | None = 0 + EXTERNAL_TOUR_ALT: int | None = 0 + def determine_closest_external_station( state, choosers, skim_dict, origin_col="home_zone_id" @@ -183,7 +186,7 @@ def external_worker_identification( if external_col_name is not None: persons[external_col_name] = ( - (choices == 0).reindex(persons.index).fillna(False).astype(bool) + (choices == model_settings.EXTERNAL_WORKER_ALT).reindex(persons.index).fillna(False).astype(bool) ) if internal_col_name is not None: persons[internal_col_name] = persons[filter_col] & ~persons[external_col_name] @@ -277,12 +280,10 @@ def set_external_tour_variables(state, tours, choices, model_settings, trace_lab if external_col_name is not None: tours[external_col_name] = ( - (choices == 0).reindex(tours.index).fillna(False).astype(bool) + (choices == model_settings.EXTERNAL_TOUR_ALT).reindex(tours.index).fillna(False).astype(bool) ) if internal_col_name is not None: - tours[internal_col_name] = ( - (choices == 1).reindex(tours.index).fillna(True).astype(bool) - ) + tours[internal_col_name] = ~tours[external_col_name] # - annotate tours table if "annotate_tours" in model_settings: @@ -304,7 +305,7 @@ def external_non_mandatory_identification( network_los: los.Network_LOS, model_settings: ExternalIdentificationSettings | None = None, model_settings_file_name: str = "external_non_mandatory_identification.yaml", - trace_label: str = "external_non_mandatory_identification", + trace_label: str = "external_non_mandatory_tour_identification", trace_hh_id: bool = False, ) -> None: """ diff --git a/resident/extensions/external_location_choice.py b/resident/extensions/external_location_choice.py index 0b3ee8e..c5c087b 100644 --- a/resident/extensions/external_location_choice.py +++ b/resident/extensions/external_location_choice.py @@ -57,7 +57,7 @@ def external_school_location( estimator = estimation.manager.begin_estimation(state, "external_school_location") if estimator: - write_estimation_specs(estimator, model_settings, model_settings_file_name) + write_estimation_specs(state, estimator, model_settings, model_settings_file_name) persons_df = iterate_location_choice( state=state, @@ -106,7 +106,7 @@ def external_workplace_location( state, "external_workplace_location" ) if estimator: - write_estimation_specs(estimator, model_settings, model_settings_file_name) + write_estimation_specs(state, estimator, model_settings, model_settings_file_name) persons_df = iterate_location_choice( state=state, diff --git a/resident/model_data/metro/crop_metro_data.ipynb b/resident/model_data/metro/crop_metro_data.ipynb index e561ea1..5256d3c 100644 --- a/resident/model_data/metro/crop_metro_data.ipynb +++ b/resident/model_data/metro/crop_metro_data.ipynb @@ -57,8 +57,9 @@ "\n", "]\n", "maz_skim_file = \"maz_maz_walk.csv\"\n", + "maz_stop_skim_file = \"maz_stop_walk.csv\"\n", "taz_bike_logsums = \"taz_logsums_BIKE_AM.omx\"\n", - "maz_bike_logsums = pd.read_csv(os.path.join(input_folder,\"maz_logsums_BIKE_AM.csv\"))\n", + "maz_bike_logsums = pd.read_csv(os.path.join(input_folder,\"bike_maz_logsums.csv\"))\n", "\n", "# optional since this can take a while (actually only about 1 minute!)\n", "CROP_SKIMS = True\n", @@ -194,7 +195,13 @@ " cropped_maz_maz_walk = maz_maz_walk[maz_maz_walk['OMAZ'].isin(cropped_landuse.MAZ) & maz_maz_walk['DMAZ'].isin(cropped_landuse.MAZ)]\n", " # FIXME this should be renamed in the maz-maz walk creation script\n", " maz_maz_walk.rename(columns={'DISTWALK': 'WLK_DIST'}, inplace=True)\n", - " cropped_maz_maz_walk.to_csv(os.path.join(output_folder, maz_skim_file), index=False)" + " cropped_maz_maz_walk.to_csv(os.path.join(output_folder, maz_skim_file), index=False)\n", + "\n", + " # crop maz-stop walk skim\n", + " maz_stop_walk = pd.read_csv(os.path.join(input_skim_folder, maz_stop_skim_file))\n", + " cropped_maz_stop_walk = maz_stop_walk[maz_stop_walk['maz'].isin(cropped_landuse.MAZ)]\n", + " # FIXME this should be renamed in the maz-maz walk creation script\n", + " cropped_maz_stop_walk.to_csv(os.path.join(output_folder, maz_stop_skim_file), index=False)" ] }, { diff --git a/resident/model_data/metro/data_cropped/maz_stop_walk.csv b/resident/model_data/metro/data_cropped/maz_stop_walk.csv new file mode 100644 index 0000000..42222c4 --- /dev/null +++ b/resident/model_data/metro/data_cropped/maz_stop_walk.csv @@ -0,0 +1,647 @@ +maz,walk_dist_local_bus,walk_dist_premium_transit +1,0.06,0.526 +2,0.0,0.61 +3,0.106,0.572 +4,0.049,0.655 +5,0.0,0.587 +6,0.112,0.699 +7,0.079,0.666 +8,0.152,0.746 +9,0.14,0.737 +10,0.189,0.784 +11,0.091,0.699 +12,0.163,0.771 +13,0.115,0.723 +14,0.163,0.771 +15,0.016,0.705 +16,0.164,0.815 +17,0.066,0.787 +18,0.116,0.837 +19,0.062,0.831 +20,0.11,0.8 +21,0.11,0.8 +22,0.126,0.436 +23,0.049,0.272 +24,0.502,0.971 +25,0.139,0.799 +26,0.148,1.041 +27,0.152,0.821 +28,0.068,0.902 +29,0.243,1.108 +30,0.292,1.186 +31,0.1,0.992 +32,0.139,0.799 +33,0.098,0.875 +34,0.048,0.883 +35,0.195,1.059 +36,0.195,1.059 +37,0.148,0.944 +38,0.107,0.89 +39,0.129,0.771 +40,0.115,0.853 +41,0.051,0.834 +42,0.046,0.829 +43,0.176,0.722 +44,0.061,0.754 +45,0.046,0.829 +46,0.144,0.672 +47,0.098,0.705 +48,0.109,0.575 +49,0.098,0.705 +50,0.098,0.705 +51,0.109,0.575 +52,0.049,0.659 +53,0.071,0.681 +54,0.0,0.625 +55,0.0,0.722 +56,0.0,0.785 +57,0.048,0.673 +58,0.049,0.766 +59,0.049,0.862 +60,0.093,0.716 +61,0.097,0.812 +62,0.097,0.905 +63,0.097,0.746 +64,0.145,0.843 +65,0.146,0.936 +66,0.121,0.77 +67,0.194,0.887 +68,0.146,0.98 +69,0.163,0.812 +70,0.189,0.931 +71,0.097,1.024 +72,0.241,0.877 +73,0.095,0.731 +74,0.19,0.826 +75,0.332,0.968 +76,0.098,0.694 +77,0.195,0.791 +78,0.294,0.932 +79,0.098,0.694 +80,0.195,0.742 +81,0.245,0.884 +82,0.098,0.645 +83,0.195,0.835 +84,0.145,0.601 +85,0.147,0.698 +86,0.147,0.791 +87,0.098,0.553 +88,0.098,0.649 +89,0.097,0.742 +90,0.0,0.625 +91,0.0,0.722 +92,0.0,0.785 +93,0.545,1.195 +94,0.431,1.067 +95,0.392,1.126 +96,0.388,1.031 +97,0.392,1.126 +98,0.339,0.983 +99,0.343,1.078 +100,0.29,0.935 +101,0.294,1.03 +102,0.241,0.89 +103,0.246,0.985 +104,0.192,0.841 +105,0.197,0.936 +106,0.063,0.881 +107,0.099,1.009 +108,0.362,1.171 +109,0.284,1.12 +110,0.244,1.08 +111,0.196,1.128 +112,0.196,1.128 +113,0.196,1.035 +114,0.147,1.084 +115,0.129,1.116 +116,0.147,0.986 +117,0.098,1.035 +118,0.05,1.129 +119,0.051,1.057 +120,0.049,1.082 +121,0.05,1.129 +122,0.214,1.164 +123,0.063,0.881 +124,0.099,1.009 +125,0.051,1.057 +126,0.0,1.108 +127,0.0,1.158 +128,0.191,1.005 +129,0.212,999999.0 +130,0.146,1.055 +131,0.096,1.105 +132,0.048,1.153 +133,0.049,1.201 +134,0.107,999999.0 +135,0.191,1.005 +136,0.195,1.1 +137,0.171,1.176 +138,0.242,1.036 +139,0.244,1.131 +140,0.171,1.176 +141,0.197,1.091 +142,0.292,1.174 +143,0.193,999999.0 +144,0.197,1.091 +145,0.292,1.157 +146,0.244,1.234 +147,0.244,1.234 +148,0.141,0.722 +149,0.047,0.692 +150,0.057,0.75 +151,0.0,0.645 +152,0.051,0.703 +153,0.233,0.627 +154,0.041,0.676 +155,0.053,0.592 +156,0.0,0.652 +157,0.0,0.652 +158,0.266,0.644 +159,0.152,0.564 +160,0.057,0.597 +161,0.242,0.654 +162,0.276,0.688 +163,0.057,0.435 +164,0.0,0.469 +165,0.0,0.378 +166,0.091,0.379 +167,0.086,0.374 +168,0.09,0.378 +169,0.048,0.147 +170,0.049,0.147 +171,0.048,0.071 +172,0.049,0.515 +173,0.0,0.417 +174,0.0,0.37 +175,0.0,0.322 +176,0.0,0.275 +177,0.044,0.228 +178,0.059,0.654 +179,0.0,0.538 +180,0.048,0.49 +181,0.092,0.446 +182,0.141,0.419 +183,0.188,0.372 +184,0.12,0.304 +185,0.216,0.171 +186,0.188,0.372 +187,0.141,0.419 +188,0.092,0.468 +189,0.047,0.513 +190,0.0,0.56 +191,0.039,0.647 +192,0.254,0.467 +193,0.193,0.579 +194,0.161,0.56 +195,0.113,0.608 +196,0.065,0.656 +197,0.0,0.721 +198,0.271,0.226 +199,0.301,0.42 +200,0.285,0.487 +201,0.239,0.533 +202,0.193,0.579 +203,0.145,0.627 +204,0.1,0.672 +205,0.05,0.722 +206,0.0,0.807 +207,0.098,0.532 +208,0.0,0.674 +209,0.038,0.687 +210,0.134,0.622 +211,0.0,0.674 +212,0.038,0.687 +213,0.175,0.663 +214,0.087,0.736 +215,0.041,0.715 +216,0.23,0.578 +217,0.265,0.667 +218,0.169,0.754 +219,0.135,0.784 +220,0.098,0.758 +221,0.125,0.794 +222,0.169,0.754 +223,0.218,0.706 +224,0.265,0.667 +225,0.313,0.624 +226,0.1,0.658 +227,0.0,0.664 +228,0.045,0.619 +229,0.093,0.572 +230,0.141,0.524 +231,0.188,0.478 +232,0.05,0.516 +233,0.0,0.539 +234,0.0,0.37 +235,0.092,0.447 +236,0.126,0.4 +237,0.044,0.228 +238,0.234,0.435 +239,0.0,0.119 +240,0.406,0.617 +241,0.214,0.426 +242,0.0,0.64 +243,0.045,0.681 +244,0.142,0.551 +245,0.049,0.644 +246,0.093,0.503 +247,0.0,0.596 +248,0.093,0.454 +249,0.0,0.547 +250,0.187,0.236 +251,0.266,0.34 +252,0.141,0.41 +253,0.048,0.503 +254,0.212,0.31 +255,0.142,0.407 +256,0.097,0.455 +257,0.049,0.0 +258,0.093,0.142 +259,0.212,0.31 +260,0.096,0.434 +261,0.049,0.5 +262,0.0,0.174 +263,0.096,0.434 +264,0.0,0.53 +265,0.251,0.348 +266,0.192,0.364 +267,0.124,0.298 +268,0.216,0.39 +269,0.093,0.483 +270,0.0,0.576 +271,0.167,999999.0 +272,0.065,999999.0 +273,0.048,999999.0 +274,0.098,999999.0 +275,0.077,999999.0 +276,0.147,999999.0 +277,0.149,999999.0 +278,0.19,999999.0 +279,0.05,999999.0 +280,0.098,999999.0 +281,0.142,999999.0 +282,0.116,999999.0 +283,0.091,999999.0 +284,0.14,999999.0 +285,0.049,999999.0 +286,0.049,999999.0 +287,0.0,999999.0 +288,0.055,999999.0 +289,0.091,999999.0 +290,0.123,999999.0 +291,0.048,1.13 +292,0.0,1.083 +293,0.097,1.179 +294,0.049,1.132 +295,0.147,1.229 +296,0.1,1.183 +297,0.169,999999.0 +298,0.19,999999.0 +299,0.213,999999.0 +300,0.121,0.877 +301,0.268,0.696 +302,0.268,0.696 +303,0.314,0.65 +304,0.192,0.714 +305,0.046,0.662 +306,0.094,0.616 +307,0.135,0.482 +308,0.373,0.801 +309,0.22,1.016 +310,0.249,0.679 +311,0.049,999999.0 +312,0.027,999999.0 +313,0.153,999999.0 +314,0.027,999999.0 +315,0.208,1.25 +316,0.214,1.122 +317,0.153,999999.0 +318,0.176,999999.0 +319,0.221,1.24 +320,0.259,1.199 +321,0.214,1.122 +322,0.119,1.029 +323,0.19,1.052 +324,0.149,999999.0 +325,0.225,999999.0 +326,0.279,1.158 +327,0.271,1.114 +328,0.0,1.149 +329,0.107,1.198 +330,0.052,1.097 +331,0.1,1.049 +332,0.166,1.021 +333,0.35,1.12 +334,0.172,0.976 +335,0.147,0.866 +336,0.145,0.761 +337,0.093,0.709 +338,0.063,0.724 +339,0.0,0.664 +340,0.596,0.892 +341,0.5,0.937 +342,0.591,0.846 +343,0.453,0.929 +344,0.5,0.8 +345,0.41,0.886 +346,0.498,0.758 +347,0.5,0.8 +348,0.448,0.698 +349,0.363,0.944 +350,0.396,0.646 +351,0.363,0.944 +352,0.448,0.698 +353,0.446,0.961 +354,0.43,0.774 +355,0.405,0.986 +356,0.359,0.792 +357,0.359,0.792 +358,0.341,0.84 +359,0.248,0.711 +360,0.311,0.966 +361,0.2,0.663 +362,0.156,0.712 +363,0.311,0.966 +364,0.107,0.761 +365,0.167,999999.0 +366,0.341,1.097 +367,0.167,999999.0 +368,0.266,1.172 +369,0.341,1.097 +370,0.413,1.025 +371,0.12,999999.0 +372,0.366,1.016 +373,0.22,1.162 +374,0.251,1.045 +375,0.323,0.973 +376,0.073,1.223 +377,0.173,1.123 +378,0.245,1.011 +379,0.074,1.182 +380,0.111,1.19 +381,0.308,1.075 +382,0.17,1.131 +383,0.274,1.041 +384,0.171,1.241 +385,0.356,1.041 +386,0.119,999999.0 +387,0.149,1.23 +388,0.219,1.193 +389,0.262,1.143 +390,0.311,1.092 +391,0.356,1.041 +392,0.311,0.996 +393,0.198,1.181 +394,0.198,1.131 +395,0.198,1.08 +396,0.244,1.029 +397,0.198,0.983 +398,0.149,1.133 +399,0.149,1.084 +400,0.149,1.032 +401,0.147,1.031 +402,0.149,0.935 +403,0.146,1.178 +404,0.1,1.13 +405,0.1,1.078 +406,0.099,0.984 +407,0.049,999999.0 +408,0.0,1.23 +409,0.05,1.128 +410,0.098,1.08 +411,0.051,1.032 +412,0.319,1.161 +413,0.071,999999.0 +414,0.171,999999.0 +415,0.24,1.233 +416,0.118,999999.0 +417,0.217,999999.0 +418,0.24,1.233 +419,0.319,999999.0 +420,0.218,999999.0 +421,0.366,1.241 +422,0.146,999999.0 +423,0.146,999999.0 +424,0.37,1.196 +425,0.046,999999.0 +426,0.324,1.151 +427,0.167,999999.0 +428,0.341,1.097 +429,0.045,0.608 +430,0.02,999999.0 +431,0.052,0.752 +432,0.085,0.648 +433,0.106,0.584 +434,0.368,0.965 +435,0.122,0.41 +436,0.406,1.076 +437,0.406,1.076 +438,0.501,1.171 +439,0.451,1.123 +440,0.545,1.155 +441,0.407,1.168 +442,0.545,1.063 +443,0.499,1.109 +444,0.612,1.069 +445,0.661,1.02 +446,0.682,0.917 +447,0.681,0.912 +448,0.63,0.861 +449,0.525,0.756 +450,0.544,0.762 +451,0.425,0.656 +452,0.544,0.762 +453,0.288,1.185 +454,0.454,1.153 +455,0.549,1.017 +456,0.459,1.107 +457,0.549,1.017 +458,0.549,1.017 +459,0.412,1.063 +460,0.55,0.939 +461,0.623,0.854 +462,0.647,0.961 +463,0.53,0.761 +464,0.525,0.756 +465,0.596,0.892 +466,0.467,0.698 +467,0.38,0.611 +468,0.406,0.617 +469,0.506,0.982 +470,0.596,0.892 +471,0.612,0.862 +472,0.566,0.816 +473,0.438,0.688 +474,0.378,0.628 +475,0.323,0.554 +476,0.295,0.506 +477,0.323,0.573 +478,0.38,0.611 +479,0.273,0.523 +480,0.45,0.7 +481,0.144,0.394 +482,0.323,0.573 +483,0.378,0.628 +484,0.192,0.439 +485,0.193,0.443 +486,0.089,0.339 +487,0.209,0.459 +488,0.38,0.724 +489,0.0,0.25 +490,0.289,0.539 +491,0.263,0.52 +492,0.02,0.313 +493,0.209,0.459 +494,0.25,0.533 +495,0.157,0.49 +496,0.214,0.547 +497,0.248,0.711 +498,0.05,0.383 +499,0.105,0.438 +500,0.209,0.542 +501,0.211,0.555 +502,0.209,0.542 +503,0.161,0.627 +504,0.156,0.712 +505,0.122,0.739 +506,0.247,999999.0 +507,0.116,999999.0 +508,0.259,999999.0 +509,0.135,999999.0 +510,0.185,999999.0 +511,0.233,999999.0 +512,0.282,999999.0 +513,0.328,999999.0 +514,0.287,999999.0 +515,0.157,999999.0 +516,0.168,999999.0 +517,0.042,999999.0 +518,0.103,999999.0 +519,0.136,999999.0 +520,0.172,999999.0 +521,0.093,999999.0 +522,0.139,999999.0 +523,0.311,999999.0 +524,0.313,999999.0 +525,0.268,999999.0 +526,0.182,999999.0 +527,0.145,999999.0 +528,0.05,999999.0 +529,0.098,999999.0 +530,0.097,999999.0 +531,0.145,999999.0 +532,0.16,999999.0 +533,0.099,999999.0 +534,0.147,999999.0 +535,0.146,999999.0 +536,0.096,999999.0 +537,0.148,999999.0 +538,0.192,999999.0 +539,0.048,999999.0 +540,0.125,999999.0 +541,0.242,999999.0 +542,0.068,999999.0 +543,0.068,999999.0 +544,0.0,999999.0 +545,0.076,999999.0 +546,0.244,999999.0 +547,0.049,999999.0 +548,0.0,999999.0 +549,0.099,999999.0 +550,0.18,999999.0 +551,0.202,999999.0 +552,0.168,999999.0 +553,0.118,999999.0 +554,0.207,999999.0 +555,0.1,999999.0 +556,0.086,999999.0 +557,0.098,999999.0 +558,0.162,999999.0 +559,0.193,999999.0 +560,0.146,999999.0 +561,0.095,999999.0 +562,0.049,999999.0 +563,0.101,999999.0 +564,0.149,1.23 +565,0.098,999999.0 +566,0.149,999999.0 +567,0.147,999999.0 +568,0.098,999999.0 +569,0.046,999999.0 +570,0.0,999999.0 +571,0.052,1.23 +572,0.1,1.182 +573,0.08,999999.0 +574,0.1,999999.0 +575,0.1,999999.0 +576,0.146,999999.0 +577,0.094,999999.0 +578,0.048,999999.0 +579,0.1,999999.0 +580,0.148,1.227 +581,0.112,999999.0 +582,0.05,999999.0 +583,0.051,999999.0 +584,0.098,999999.0 +585,0.095,999999.0 +586,0.05,999999.0 +587,0.0,999999.0 +588,0.049,999999.0 +589,0.0,999999.0 +590,0.048,999999.0 +591,0.062,999999.0 +592,0.046,999999.0 +593,0.0,999999.0 +594,0.05,999999.0 +595,0.05,999999.0 +596,0.0,999999.0 +597,0.099,999999.0 +598,0.142,999999.0 +599,0.099,999999.0 +600,0.149,999999.0 +601,0.148,999999.0 +602,0.148,999999.0 +603,0.178,999999.0 +604,0.147,999999.0 +605,0.197,999999.0 +606,0.197,999999.0 +607,0.197,999999.0 +608,0.211,999999.0 +609,0.196,999999.0 +610,0.245,999999.0 +611,0.245,999999.0 +612,0.245,999999.0 +613,0.22,999999.0 +614,0.22,999999.0 +615,0.292,999999.0 +616,0.1,999999.0 +617,0.219,999999.0 +618,0.265,999999.0 +619,0.265,999999.0 +620,0.196,999999.0 +621,0.151,999999.0 +622,0.197,999999.0 +623,0.246,999999.0 +624,0.196,999999.0 +625,0.15,999999.0 +626,0.1,999999.0 +627,0.252,999999.0 +628,0.299,999999.0 +629,0.345,999999.0 +630,0.331,999999.0 +631,0.217,999999.0 +632,0.167,999999.0 +633,0.266,999999.0 +634,0.255,999999.0 +635,0.124,999999.0 +636,0.373,999999.0 +637,0.25,999999.0 +638,0.194,999999.0 +639,0.108,999999.0 +640,0.198,999999.0 +641,0.09,999999.0 +642,0.042,999999.0 +643,0.172,999999.0 +644,0.025,999999.0 +645,0.309,999999.0 +646,0.309,999999.0 diff --git a/resident/preprocessor.py b/resident/preprocessor.py index 7dd184f..fb4db4d 100644 --- a/resident/preprocessor.py +++ b/resident/preprocessor.py @@ -74,40 +74,65 @@ def load_data(settings: PreprocessorSettings) -> tuple[pd.DataFrame, pd.DataFram def set_land_use_maz_index(land_use: pd.DataFrame) -> pd.DataFrame: - """Infer the MAZ column, rename it to 'MAZ', and set it as the index. + """Infer the MAZ and TAZ columns, rename them, and set MAZ as the index. - Searches for MAZ column name in land_use and sets 'MAZ' as the DataFrame index. + Searches for common MAZ column name variations (MAZ, MAZ_ID, MAZ_NO) + and TAZ column name variations (TAZ, TAZ_ID, TAZ_NO), standardizes + their names to 'MAZ' and 'TAZ', and sets 'MAZ' as the DataFrame index. Parameters ---------- land_use : pd.DataFrame - Land use table with an 'MAZ' column or MAZ-like index + Land use table with MAZ-like and optionally TAZ-like columns Returns ------- pd.DataFrame - Land use table with 'MAZ' as the index + Land use table with 'MAZ' as the index and 'TAZ' column renamed """ + # --- MAZ --- # If MAZ is already the index, just ensure the name - if land_use.index.name and land_use.index.name.upper() in ['MAZ', 'MAZ_ID', 'MAZ_NO']: + if land_use.index.name and land_use.index.name == 'MAZ': land_use.index.name = 'MAZ' print("land_use index already set to MAZ") - return land_use - - # IF MAZ is not already the index, ensure MAZ is a column - maz_cols = [col for col in land_use.columns if 'MAZ' in col.upper()] + else: + # Search for a MAZ-like column + maz_col = None + for col in land_use.columns: + if col.upper() in ['MAZ', 'MAZ_ID', 'MAZ_NO']: + maz_col = col + break + + if maz_col is None: + raise RuntimeError( + f"Could not identify MAZ column in land_use. " + f"Available columns: {list(land_use.columns)}" + ) + + # Rename to 'MAZ' if needed, then set as index + if maz_col != 'MAZ': + land_use = land_use.rename(columns={maz_col: 'MAZ'}) + print(f"Renamed land_use column '{maz_col}' to 'MAZ'") + + land_use = land_use.set_index('MAZ') + print(f"Set land_use index to 'MAZ' ({len(land_use)} zones)") - if 'MAZ' not in land_use.columns: - raise RuntimeError( - f"'MAZ' column not in land_use. Must add 'MAZ' column.\n" - + (f"Available MAZ columns are: {maz_cols}. Change MAZ column name to 'MAZ'." if maz_cols else "") - ) + # --- TAZ --- + if 'TAZ' in land_use.columns: + print("TAZ column already exists in land_use") + else: + taz_col = None + for col in land_use.columns: + if col.upper() in ['TAZ', 'TAZ_ID', 'TAZ_NO']: + taz_col = col + break - if 'MAZ' in land_use.columns and len(maz_cols) > 1: - print(f"Warning: Multiple MAZ columns identified in land use csv: {maz_cols}. Defaulting to 'MAZ'.") + if taz_col is None: + print("Warning: Could not identify TAZ column in land_use, skipping TAZ rename") + else: + land_use = land_use.rename(columns={taz_col: 'TAZ'}) + print(f"Renamed land_use column '{taz_col}' to 'TAZ'") - land_use = land_use.set_index('MAZ') - print(f"Set land_use index to 'MAZ' ({len(land_use)} zones)") return land_use diff --git a/resident/test/test_cropped_dataset_metro.py b/resident/test/test_cropped_dataset_metro.py index 7c63c5b..b9b6a29 100644 --- a/resident/test/test_cropped_dataset_metro.py +++ b/resident/test/test_cropped_dataset_metro.py @@ -42,6 +42,60 @@ def test_cropped_example(): return True +def test_cropped_visualizer(): + """ + Run the visualizer on the cropped dataset outputs. + Test passes if the exported HTML dashboard is produced. + """ + + test_dir = os.path.dirname(__file__) + resident_dir = os.path.dirname(test_dir) + repo_dir = os.path.dirname(resident_dir) + + visualizer_dir = os.path.join(repo_dir, "ext_dependencies", "activitysim_visualizer") + run_script = os.path.join(visualizer_dir, "run.py") + + # Prefer the visualizer's own virtual environment, which has its dependencies + venv_python = os.path.join(visualizer_dir, ".venv", "Scripts", "python.exe") + if not os.path.exists(venv_python): + venv_python = os.path.join(visualizer_dir, ".venv", "bin", "python") + python_exe = venv_python if os.path.exists(venv_python) else sys.executable + + output_html = os.path.join(repo_dir, "metro_cropped.html") + if os.path.exists(output_html): + os.remove(output_html) + + run_args = [ + "--config", "resident/configs_visualizer/metro_cropped.yaml", + "--export-html", "metro_cropped.html", + ] + + print(f"Running from directory {os.getcwd()}") + try: + result = subprocess.run( + [python_exe, run_script] + run_args, + cwd=repo_dir, + check=True, + capture_output=True, + text=True + ) + print(result.stdout) + if result.stderr: + print(result.stderr, file=sys.stderr) + except subprocess.CalledProcessError as e: + print("=== STDOUT ===") + print(e.stdout) + print("=== STDERR ===") + print(e.stderr, file=sys.stderr) + raise + + assert os.path.exists(output_html), f"Expected visualizer output not found: {output_html}" + + return True + + if __name__ == "__main__": test_cropped_example() - print("Test passed: Model ran to completion.") \ No newline at end of file + print("Test passed: Model ran to completion.") + test_cropped_visualizer() + print("Test passed: Visualizer HTML exported.") \ No newline at end of file diff --git a/runSIMOR.bat b/runSIMOR.bat index 0d76d46..4836e06 100644 --- a/runSIMOR.bat +++ b/runSIMOR.bat @@ -77,7 +77,7 @@ IF %ERRORLEVEL% NEQ 0 GOTO MODEL_ERROR ECHO Non-motorized skims complete. :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -:: Run ActivitySim -- full integration not yet implemented +:: Run ActivitySim -- full integration not yet implemented. This will only run the small cropped metro example dataset. :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ECHO. ECHO Running ActivitySim preprocessor. @@ -92,6 +92,23 @@ ECHO Running ActivitySim (test cropped example) IF %ERRORLEVEL% NEQ 0 GOTO MODEL_ERROR ECHO ActivitySim complete. +:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:: Run the ActivitySim visualizer (optional) +:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +SET "VISUALIZER_DIR=%BASE_DIR%\ext_dependencies\activitysim_visualizer" + +IF NOT DEFINED PYTHON_VISUALIZER ( + ECHO. + ECHO Visualizer environment not set up. Skipping visualizer step. +) ELSE ( + ECHO. + ECHO Running ActivitySim visualizer. + CD /D "%BASE_DIR%" + "%PYTHON_VISUALIZER%" "%VISUALIZER_DIR%\run.py" --config resident/configs_visualizer/metro_cropped.yaml --export-html metro_cropped.html + IF ERRORLEVEL 1 GOTO MODEL_ERROR + ECHO Visualizer complete. +) + ECHO. ECHO All steps completed successfully. ENDLOCAL diff --git a/setup_environment.bat b/setup_environment.bat index 34e6ef4..f1ffd94 100644 --- a/setup_environment.bat +++ b/setup_environment.bat @@ -6,7 +6,8 @@ SETLOCAL EnableDelayedExpansion :: ============================================================================ :: This script sets up the computing environment for the SimOR project. :: It installs UV (if needed), clones and builds ActivitySim, optionally -:: installs the sandag_parking repo, and configures Visum Python packages. +:: installs the sandag_parking and activitysim_visualizer repos, and +:: configures Visum Python packages. :: :: All cloned repos and virtual environments are placed in the :: ext_dependencies subfolder within this SimOR repo. @@ -20,9 +21,25 @@ SETLOCAL EnableDelayedExpansion :: Example: C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Python SET "VISUM_PYTHON_DIR=C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Python" -:: Set to Y to clone and install sandag_parking (oregon_metro branch), N to skip +:: Set to Y to clone and install sandag_parking, N to skip :: (optional dependency, only needed if you want to regenerate parking cost data) SET "INSTALL_PARKING=N" + +:: Set to Y to clone and install the ActivitySim visualizer, N to skip +:: (optional dependency, only needed for producing model summary dashboards) +SET "INSTALL_VISUALIZER=Y" + +:: --------------------------------------------------------------------------- +:: Repository URLs and branches +:: --------------------------------------------------------------------------- +SET "ACTIVITYSIM_REPO_URL=https://github.com/RSGInc/activitysim.git" +SET "ACTIVITYSIM_BRANCH=SimOR_pnr" + +SET "PARKING_REPO_URL=https://github.com/RSGInc/sandag_parking.git" +SET "PARKING_BRANCH=oregon_metro" + +SET "VISUALIZER_REPO_URL=https://github.com/RSGInc/activitysim_visualizer.git" +SET "VISUALIZER_BRANCH=main" :: --------------------------------------------------------------------------- @@ -39,6 +56,11 @@ ECHO ============================================================ ECHO. ECHO Base directory: %BASE_DIR% ECHO. +ECHO Repositories: +ECHO ActivitySim : %ACTIVITYSIM_REPO_URL% ^(branch: %ACTIVITYSIM_BRANCH%^) +ECHO sandag_parking : %PARKING_REPO_URL% ^(branch: %PARKING_BRANCH%^) [install: %INSTALL_PARKING%] +ECHO Visualizer : %VISUALIZER_REPO_URL% ^(branch: %VISUALIZER_BRANCH%^) [install: %INSTALL_VISUALIZER%] +ECHO. :: --------------------------------------------------------------------------- :: Create ext_dependencies folder for cloned repos and environments @@ -53,7 +75,7 @@ IF NOT EXIST "%EXT_DIR%" ( :: ============================================================================ :: STEP 1 – Ensure UV is installed :: ============================================================================ -ECHO [1/5] Checking for UV package manager... +ECHO [1/6] Checking for UV package manager... where uv >nul 2>&1 IF %ERRORLEVEL% NEQ 0 ( @@ -109,20 +131,20 @@ ECHO. :: ============================================================================ :: STEP 2 – Clone / update ActivitySim and create its virtual environment :: ============================================================================ -ECHO [2/5] Setting up ActivitySim (SimOR_pnr branch)... +ECHO [2/6] Setting up ActivitySim (%ACTIVITYSIM_BRANCH% branch)... SET "ACTIVITYSIM_DIR=%EXT_DIR%\activitysim" IF EXIST "%ACTIVITYSIM_DIR%\.git" ( ECHO ActivitySim repo already exists. Pulling latest changes... pushd "%ACTIVITYSIM_DIR%" - git checkout SimOR_pnr + git checkout %ACTIVITYSIM_BRANCH% git pull popd ) ELSE ( - ECHO Cloning ActivitySim ^(SimOR_pnr branch^)... + ECHO Cloning ActivitySim ^(%ACTIVITYSIM_BRANCH% branch^) from %ACTIVITYSIM_REPO_URL%... pushd "%EXT_DIR%" - git clone --branch SimOR_pnr https://github.com/RSGInc/activitysim.git + git clone --branch %ACTIVITYSIM_BRANCH% %ACTIVITYSIM_REPO_URL% IF !ERRORLEVEL! NEQ 0 ( ECHO ERROR: Failed to clone ActivitySim. popd @@ -157,7 +179,7 @@ ECHO. :: ============================================================================ :: STEP 3 – Visum Python packages :: ============================================================================ -ECHO [3/5] Setting up Visum Python packages... +ECHO [3/6] Setting up Visum Python packages... SET "VISUM_PACKAGE_STATUS=not checked" SET "VISUM_PYTHON_EXE=%VISUM_PYTHON_DIR%\python.exe" @@ -238,7 +260,7 @@ ECHO. :: ============================================================================ :: STEP 4 – MAZ skimming Python environment :: ============================================================================ -ECHO [4/5] Setting up MAZ skimming Python environment... +ECHO [4/6] Setting up MAZ skimming Python environment... SET "MAZ_SKIM_DIR=%EXT_DIR%\maz_skimming" @@ -267,21 +289,23 @@ ECHO. :: STEP 5 – (Optional) Clone / update sandag_parking :: ============================================================================ +ECHO [5/6] Setting up sandag_parking... + IF /I "%INSTALL_PARKING%"=="Y" ( - ECHO Setting up sandag_parking ^(oregon_metro branch^)... + ECHO Setting up sandag_parking ^(%PARKING_BRANCH% branch^)... SET "PARKING_DIR=%EXT_DIR%\sandag_parking" IF EXIST "!PARKING_DIR!\.git" ( ECHO sandag_parking repo already exists. Pulling latest changes... pushd "!PARKING_DIR!" - git checkout oregon_metro + git checkout %PARKING_BRANCH% git pull popd ) ELSE ( - ECHO Cloning sandag_parking ^(oregon_metro branch^)... + ECHO Cloning sandag_parking ^(%PARKING_BRANCH% branch^) from %PARKING_REPO_URL%... pushd "%EXT_DIR%" - git clone --branch oregon_metro https://github.com/RSGInc/sandag_parking.git + git clone --branch %PARKING_BRANCH% %PARKING_REPO_URL% IF !ERRORLEVEL! NEQ 0 ( ECHO ERROR: Failed to clone sandag_parking. popd @@ -324,6 +348,65 @@ IF /I "%INSTALL_PARKING%"=="Y" ( ) ECHO. +:: ============================================================================ +:: STEP 6 – (Optional) Clone / update the ActivitySim visualizer +:: ============================================================================ +ECHO [6/6] Setting up ActivitySim visualizer... + +SET "VISUALIZER_DIR=%EXT_DIR%\activitysim_visualizer" + +IF /I "%INSTALL_VISUALIZER%"=="Y" ( + ECHO Setting up activitysim_visualizer ^(%VISUALIZER_BRANCH% branch^)... + + IF EXIST "!VISUALIZER_DIR!\.git" ( + ECHO activitysim_visualizer repo already exists. Pulling latest changes... + pushd "!VISUALIZER_DIR!" + git checkout %VISUALIZER_BRANCH% + git pull + popd + ) ELSE ( + ECHO Cloning activitysim_visualizer ^(%VISUALIZER_BRANCH% branch^) from %VISUALIZER_REPO_URL%... + pushd "%EXT_DIR%" + git clone --branch %VISUALIZER_BRANCH% %VISUALIZER_REPO_URL% + IF !ERRORLEVEL! NEQ 0 ( + ECHO ERROR: Failed to clone activitysim_visualizer. + popd + GOTO :ERROR_EXIT + ) + popd + ) + + ECHO Installing activitysim_visualizer dependencies via UV... + pushd "!VISUALIZER_DIR!" + uv sync --link-mode copy + IF !ERRORLEVEL! NEQ 0 ( + ECHO ERROR: uv sync failed for activitysim_visualizer. + popd + GOTO :ERROR_EXIT + ) + popd + + FOR /F "delims=" %%P IN ('powershell -Command "(Resolve-Path '!VISUALIZER_DIR!\.venv\Scripts\python.exe').Path"') DO SET "PYTHON_VISUALIZER=%%P" + + IF NOT EXIST "!PYTHON_VISUALIZER!" ( + ECHO ERROR: Could not find Python at !VISUALIZER_DIR!\.venv\Scripts\python.exe + GOTO :ERROR_EXIT + ) + + ECHO PYTHON_VISUALIZER = !PYTHON_VISUALIZER! +) ELSE ( + :: Even if not cloning, set the variable if the repo already exists + IF EXIST "!VISUALIZER_DIR!\.venv\Scripts\python.exe" ( + FOR /F "delims=" %%P IN ('powershell -Command "(Resolve-Path '!VISUALIZER_DIR!\.venv\Scripts\python.exe').Path"') DO SET "PYTHON_VISUALIZER=%%P" + ECHO Existing activitysim_visualizer environment found. + ECHO PYTHON_VISUALIZER = !PYTHON_VISUALIZER! + ) ELSE ( + SET "PYTHON_VISUALIZER=" + ECHO activitysim_visualizer skipped. + ) +) +ECHO. + :: Set PYTHON_VISUM as the full path to the Visum Python executable IF EXIST "%VISUM_PYTHON_DIR%\python.exe" ( SET "PYTHON_VISUM=%VISUM_PYTHON_DIR%\python.exe" @@ -343,9 +426,14 @@ ECHO PYTHON_MAZ_SKIMMING = %PYTHON_MAZ_SKIMMING% ECHO PYTHON_VISUM = %PYTHON_VISUM% ECHO VISUM_PACKAGES = %VISUM_PACKAGE_STATUS% IF DEFINED PYTHON_PARKING ( - ECHO PYTHON_PARKING = !PYTHON_PARKING! + ECHO PYTHON_PARKING = !PYTHON_PARKING! +) ELSE ( + ECHO PYTHON_PARKING = ^(not set^) +) +IF DEFINED PYTHON_VISUALIZER ( + ECHO PYTHON_VISUALIZER = !PYTHON_VISUALIZER! ) ELSE ( - ECHO PYTHON_PARKING = ^(not set^) + ECHO PYTHON_VISUALIZER = ^(not set^) ) ECHO. ECHO ============================================================ @@ -358,6 +446,7 @@ ENDLOCAL & ( SET "PYTHON_MAZ_SKIMMING=%PYTHON_MAZ_SKIMMING%" SET "PYTHON_VISUM=%PYTHON_VISUM%" SET "PYTHON_PARKING=%PYTHON_PARKING%" + SET "PYTHON_VISUALIZER=%PYTHON_VISUALIZER%" SET "VISUM_PACKAGE_STATUS=%VISUM_PACKAGE_STATUS%" SET "EXT_DIR=%EXT_DIR%" SET "BASE_DIR=%BASE_DIR%"