From f9fef4f58646f2050c5211e5f8a6824587ecf471 Mon Sep 17 00:00:00 2001 From: aber-sandag Date: Thu, 2 May 2024 11:50:12 -0700 Subject: [PATCH] Add TNC wait time and fare to TNC-transit mode choice --- .../configs/crossborder/trip_mode_choice.csv | 8 ++- ...ode_choice_annotate_trips_preprocessor.csv | 24 ++++----- .../configs/resident/tour_mode_choice.csv | 26 ++++++++-- ..._choice_annotate_choosers_preprocessor.csv | 24 ++++----- .../configs/resident/trip_mode_choice.csv | 52 ++++++++++++++++--- ...ode_choice_annotate_trips_preprocessor.csv | 48 ++++++++--------- src/asim/configs/visitor/tour_mode_choice.csv | 5 +- ..._choice_annotate_choosers_preprocessor.csv | 12 ++--- src/asim/configs/visitor/trip_mode_choice.csv | 8 ++- ...ode_choice_annotate_trips_preprocessor.csv | 32 ++++++------ 10 files changed, 154 insertions(+), 85 deletions(-) diff --git a/src/asim/configs/crossborder/trip_mode_choice.csv b/src/asim/configs/crossborder/trip_mode_choice.csv index 83bffa216..9a97bdc94 100644 --- a/src/asim/configs/crossborder/trip_mode_choice.csv +++ b/src/asim/configs/crossborder/trip_mode_choice.csv @@ -16,7 +16,9 @@ util_WALKLOC__In_vehicle_time,WALK_LOC - In-vehicle time,@(odt_skims['WALK_LOC_T util_WALK_LOC_iwait_time,WALK_LOC - wait time,@(odt_skims['WALK_LOC_FIRSTWAIT']) * c_fwt * df.c_ivt,,,,,1,,,,, util_WALK_LOC_transfer_wait_time,WALK_LOC - transfer wait time,@(odt_skims['WALK_LOC_XFERWAIT']) * c_xwt * df.c_ivt,,,,,1,,,,, util_WALK_LOC_Walk_access_time,WALK_LOC - Walk access time,"@np.where(df.nev_local_access_available_in & ~df.outbound, df.nev_local_access_time_in, np.where(df.microtransit_local_access_available_in & ~df.outbound, df.microtransit_local_access_time_in, df.origin_local_time)) * df.c_ivt * c_walk",,,,,1,,,,, +util_WALK_LOC_wait_access_time,WALK_LOC - Access mt/nev wait time,"@np.where(df.nev_local_access_available_in & ~df.outbound, nevWaitTime, np.where(df.microtransit_local_access_available_in & ~df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,1,,,,, util_WALK_LOC_Walk_egress_time,WALK_LOC - Walk egress time,"@np.where(df.nev_local_egress_available_out & df.outbound, df.nev_local_egress_time_out, np.where(df.microtransit_local_egress_available_out & df.outbound, df.microtransit_local_egress_time_out, df.dest_local_time)) * df.c_ivt * c_walk",,,,,1,,,,, +util_WALK_LOC_wait_egress_time,WALK_LOC - Egress mt/nev wait time,"@np.where(df.nev_local_egress_available_out & df.outbound, nevWaitTime, np.where(df.microtransit_local_egress_available_out & df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,1,,,,, util_WALK_LOC_transfer_walk_time,WALK_LOC - transfer walk time,@(odt_skims['WALK_LOC_XFERWALK']) * c_waux * df.c_ivt ,,,,,1,,,,, util_WALK_LOC_transfers_penalty,WALK_LOC - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WALK_LOC_XFERS'] + df.outbound*df.mtnev_egr_xfer_out + ~df.outbound*df.mtnev_acc_xfer_in, a_min=None,a_max=4))) * df.c_ivt * 1.5",,,,,1,,,,, util_WALK_LOC_Fare,WALK_LOC - Fare,@(odt_skims['WALK_LOC_FARE']) * c_cost * 100,,,,,1,,,,, @@ -32,7 +34,9 @@ util_WALK_PRM_transfer_wait_time,WALK_PRM - transfer wait time,@(odt_skims['WALK util_WALK_PRM_transfer_waLK_time,WALK_PRM - transfer walk time,@(odt_skims['WALK_PRM_XFERWALK']) * c_waux * df.c_ivt ,,,,,,1,,,, util_WALK_PRM_transfers_penalty,WALK_PRM - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WALK_PRM_XFERS'] + df.outbound*df.mtnev_egr_xfer_out + ~df.outbound*df.mtnev_acc_xfer_in, a_min=None,a_max=4)))* df.c_ivt * 1.5 ",,,,,,1,,,, util_WALK_PRM_Walk_access_time,WALK_PRM - Walk access time,"@np.where(df.nev_prm_access_available_in & ~df.outbound, df.nev_prm_access_time_in, np.where(df.microtransit_prm_access_available_in & ~df.outbound, df.microtransit_prm_access_time_in, df.origin_prm_time)) * df.c_ivt * c_walk",,,,,,1,,,, +util_WALK_PRM_wait_access_time,WALK_PRM - Access mt/nev wait time,"@np.where(df.nev_prm_access_available_in & ~df.outbound, nevWaitTime, np.where(df.microtransit_prm_access_available_in & ~df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,,1,,,, util_WALK_PRM_Walk_egress_time,WALK_PRM - Walk egress time,"@np.where(df.nev_prm_egress_available_out & df.outbound, df.nev_prm_egress_time_out, np.where(df.microtransit_prm_egress_available_out & df.outbound, df.microtransit_prm_egress_time_out, df.dest_prm_time)) * df.c_ivt * c_walk",,,,,,1,,,, +util_WALK_PRM_wait_egress_time,WALK_PRM - Egress mt/nev wait time,"@np.where(df.nev_prm_egress_available_out & df.outbound, nevWaitTime, np.where(df.microtransit_prm_egress_available_out & df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,,1,,,, util_WALK_PRM_Fare,WALK_PRM - Fare,@odt_skims['WALK_PRM_FARE'] * c_cost * 100,,,,,,1,,,, util_WALK_PRM_ASC,ASC,asc_eb_prm,,,,,,1,,,, util_cr_long_distance_prm,CR long distance bonus,"@(odt_skims['WALK_PRM_CMRIVTT'] > 10) * df.c_ivt * -1.0 * (np.clip(odt_skims['WALK_PRM_CMRIVTT'], a_min=None, a_max=60) + np.where(odt_skims['WALK_PRM_CMRIVTT'] > 40, (odt_skims['WALK_PRM_CMRIVTT'] - 40) * 0.6, 0))",,,,,,1,,,, @@ -47,14 +51,16 @@ util_WALK_MIX_FIRST_wait_time,WALK_MIX - First wait time,@(odt_skims['WALK_MIX_F util_WALK_MIX_transfer_wait_time,WALK_MIX - transfer wait time,@(odt_skims['WALK_MIX_XFERWAIT']) * c_xwt * df.c_ivt,,,,,,,1,,, util_WALK_MIX_number_of_transfers,WALK_MIX - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WALK_MIX_XFERS'] + df.outbound*df.mtnev_egr_xfer_out + ~df.outbound*df.mtnev_acc_xfer_in, a_min=None,a_max=4))) * df.c_ivt * 1.5 ",,,,,,,1,,, util_WALK_MIX_Walk_access_time,WALK_MIX - Walk access time,"@np.where(df.nev_mix_access_available_in & ~df.outbound, df.nev_mix_access_time_in, np.where(df.microtransit_mix_access_available_in & ~df.outbound, df.microtransit_mix_access_time_in, df.origin_mix_time)) * df.c_ivt * c_walk",,,,,,,1,,, +util_WALK_MIX_wait_access_time,WALK_MIX - Access mt/nev wait time,"@np.where(df.nev_mix_access_available_in & ~df.outbound, nevWaitTime, np.where(df.microtransit_mix_access_available_in & ~df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,,,1,,, util_WALK_MIX_Walk_egress_time,WALK_MIX - Walk egress time,"@np.where(df.nev_mix_egress_available_out & df.outbound, df.nev_mix_egress_time_out, np.where(df.microtransit_mix_egress_available_out & df.outbound, df.microtransit_mix_egress_time_out, df.dest_mix_time)) * df.c_ivt * c_walk",,,,,,,1,,, +util_WALK_MIX_wait_egress_time,WALK_MIX - Egress mt/nev wait time,"@np.where(df.nev_mix_egress_available_out & df.outbound, nevWaitTime, np.where(df.microtransit_mix_egress_available_out & df.outbound, microtransitWaitTime, 0)) * df.c_ivt * 1.5",,,,,,,1,,, util_WALK_MIX_Walk_other_time,WALK_MIX - Walk other time,@(odt_skims['WALK_MIX_XFERWALK'])* c_waux * df.c_ivt ,,,,,,,1,,, util_WALK_MIX_Fare,WALK_MIX - Fare,@(odt_skims['WALK_MIX_FARE']) * c_cost * 100,,,,,,,1,,, util_WALK_MIX_ASC,ASC,"@df.asc_eb_mix * np.where(odt_skims['WALK_LOC_TOTALIVTT'] > 0, 0.5, 1)",,,,,,,1,,, util_cr_long_distance_prm,CR long distance bonus,"@(odt_skims['WALK_PRM_CMRIVTT'] > 10) * df.c_ivt * -1.0 * (np.clip(odt_skims['WALK_PRM_CMRIVTT'], a_min=None, a_max=60) + np.where(odt_skims['WALK_PRM_CMRIVTT'] > 40, (odt_skims['WALK_PRM_CMRIVTT'] - 40) * 0.6, 0))",,,,,,,1,,, #,,,,,,,,,,,, util_TAXI_IVT,Taxi - In-vehicle time,c_ivt * s2_time_skims,,,,,,,,1,, -util_TAXI_wait,Taxi - Wait time,c_ivt * taxi_wait_time,,,,,,,,1,, +util_TAXI_wait,Taxi - Wait time,c_ivt * 1.5 * taxi_wait_time,,,,,,,,1,, util_TAXI_cost,Taxi - Fare,@c_cost * ((taxi_base_fare + (df.s2_dist_skims * taxi_cost_per_mile) + (df.s2_time_skims * taxi_cost_per_minute)) * 100 + df.s2_cost_skims),,,,,,,,1,, util_TNC_SINGLE_IVT,TNC Single - In-vehicle time,c_ivt * s2_time_skims,,,,,,,,,1, util_TNC_SINGLE_wait,TNC Single - Wait time,c_ivt * 1.5 * tnc_single_wait_time,,,,,,,,,1, diff --git a/src/asim/configs/crossborder/trip_mode_choice_annotate_trips_preprocessor.csv b/src/asim/configs/crossborder/trip_mode_choice_annotate_trips_preprocessor.csv index 3aeafcddc..1cf005cc6 100644 --- a/src/asim/configs/crossborder/trip_mode_choice_annotate_trips_preprocessor.csv +++ b/src/asim/configs/crossborder/trip_mode_choice_annotate_trips_preprocessor.csv @@ -121,42 +121,42 @@ nev total time,nev_time,"np.maximum(nev_direct_time + nevDiversionConstant, nevD # Microtransit and NEV egress from transit,, outbound microtransit egress from premium available,microtransit_local_egress_available_out,df.outbound & (microtransit_dest>0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist 15) & (df.age < 25),,,,,,coef_age1624_tran,,,,,,,,,,,,,,,,, util_WALK_LOC - Age 41 to 55,WALK_LOC - Age 41 to 55,@(df.age > 40) & (df.age < 56),,,,,,coef_age4155_tran,,,,,,,,,,,,,,,,, @@ -98,6 +99,7 @@ util_WALK_PRM_transfer_waLK_time,WALK_PRM - transfer walk time,@(odt_skims['WALK util_WALK_PRM_transfers_penalty,WALK_PRM - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WALK_PRM_XFERS'] + df.mtnev_egr_xfer, a_min=None,a_max=4))) + (-23+23*np.exp(0.414*np.clip(dot_skims['WALK_PRM_XFERS'] + df.mtnev_egr_xfer, a_min=None,a_max=4)))*df.time_factor",,,,,,,coef_xfer,,,,,,,,,,,,,,,, util_WALK_PRM_Walk_access_time,WALK_PRM - Walk access,@2 * df.origin_prm_time * df.time_factor,,,,,,,coef_acctime,,,,,,,,,,,,,,,, util_WALK_PRM_Walk_egress_time,WALK_PRM - egress time,"@np.where(df.nev_prm_egress_available, df.nev_prm_egress_time, np.where(df.microtransit_prm_egress_available, df.microtransit_prm_egress_time, 2*df.dest_prm_time)) * df.time_factor",,,,,,,coef_acctime,,,,,,,,,,,,,,,, +util_WALK_PRM_wait_egress_time,WALK_PRM - Egress MT/NEV wait time,"@np.where(df.nev_prm_egress_available, 2*nevWaitTime, np.where(df.microtransit_prm_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,coef_wait,,,,,,,,,,,,,,,, util_WALK_PRM_Fare,WALK_PRM - Fare,@df.transitSubsidyPassDiscount*(odt_skims['WALK_PRM_FARE'] + dot_skims['WALK_PRM_FARE'])*100/df.cost_sensitivity,,,,,,,coef_income,,,,,,,,,,,,,,,, util_WALK_PRM_ASC,WALK_PRM - Alternative-specific constant,(wlk_prm_out_asc + wlk_prm_inb_asc) * time_factor,,,,,,,coef_ivt,,,,,,,,,,,,,,,, util_WALK_PRM - Age 16 to 24,WALK_PRM - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,coef_age1624_tran,,,,,,,,,,,,,,,, @@ -121,6 +123,7 @@ util_WALK_PRM_transfer_waLK_time,WALK_PRM - transfer walk time,@(odt_skims['WALK util_WALK_MIX_number_of_transfers,WALK_MIX - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['WALK_MIX_XFERS'] + df.mtnev_egr_xfer, a_min=None,a_max=4))) + (-23+23*np.exp(0.414*np.clip(dot_skims['WALK_MIX_XFERS'] + df.mtnev_egr_xfer, a_min=None,a_max=4)))*df.time_factor",,,,,,,,coef_xfer,,,,,,,,,,,,,,, util_WALK_MIX_Walk_access_time,WALK_MIX - Walk access,@2 * df.origin_mix_time*df.time_factor,,,,,,,,coef_acctime,,,,,,,,,,,,,,, util_WALK_MIX_Walk_egress_time,WALK_MIX - egress time,"@np.where(df.nev_mix_egress_available, df.nev_mix_egress_time, np.where(df.microtransit_mix_egress_available, df.microtransit_mix_egress_time, 2*df.dest_mix_time)) * df.time_factor",,,,,,,,coef_acctime,,,,,,,,,,,,,,, +util_WALK_MIX_wait_egress_time,WALK_MIX - Egress MT/NEV wait time,"@np.where(df.nev_mix_egress_available, 2*nevWaitTime, np.where(df.microtransit_mix_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,coef_wait,,,,,,,,,,,,,,, util_WALK_MIX_Fare,WALK_MIX - Fare,@df.transitSubsidyPassDiscount*(odt_skims['WALK_MIX_FARE'] + dot_skims['WALK_MIX_FARE'])*100/df.cost_sensitivity,,,,,,,,coef_income,,,,,,,,,,,,,,, util_WALK_MIX_ASC,WALK_MIX - Alternative-specific constant,(wlk_mix_out_asc + wlk_mix_inb_asc) * time_factor,,,,,,,,coef_ivt,,,,,,,,,,,,,,, util_WALK_MIX - Age 16 to 24,WALK_MIX - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,coef_age1624_tran,,,,,,,,,,,,,,, @@ -142,6 +145,7 @@ util_PNR_LOC_number_of_transfers,PNR_LOC - number of transfers,"@(-23+23*np.exp( util_PNR_LOC_PNR_time,PNR_LOC - PNR time,@(odt_skims['PNROUT_LOC_ACC'] + dot_skims['PNRIN_LOC_EGR']) *df.time_factor,,,,,,,,,coef_acctime,,,,,,,,,,,,,, util_PNR_LOC_PNR_cost,PNR_LOC - PNR cost,@(df.sov_auto_op_cost * (odt_skims['PNROUT_LOC_ACC'] + dot_skims['PNRIN_LOC_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,coef_income,,,,,,,,,,,,,, util_PNR_LOC_Walk_egress_time_(at_attraction_end),PNR_LOC - Walk egress time (at attraction end),"@np.where(df.nev_local_egress_available, df.nev_local_egress_time, np.where(df.microtransit_local_egress_available, df.microtransit_local_egress_time, 2*df.dest_local_time)) * df.time_factor",,,,,,,,,coef_acctime,,,,,,,,,,,,,, +util_PNR_LOC_wait_egress_time_(at_attraction_end),PNR_LOC - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_local_egress_available, 2*nevWaitTime, np.where(df.microtransit_local_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,coef_wait,,,,,,,,,,,,,, util_PNR_LOC_Walk_other_time,PNR_LOC - Walk other time,@(odt_skims['PNROUT_LOC_XFERWALK'] + dot_skims['PNRIN_LOC_XFERWALK'])*df.time_factor,,,,,,,,,coef_xwalk,,,,,,,,,,,,,, util_PNR_LOC_Fare_and_operating_cost,PNR_LOC - Fare ,@df.transitSubsidyPassDiscount*(odt_skims['PNROUT_LOC_FARE'] + dot_skims['PNRIN_LOC_FARE'])*100/df.cost_sensitivity,,,,,,,,,coef_income,,,,,,,,,,,,,, util_PNR_LOC - Age 16 to 24,PNR_LOC - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,coef_age1624_tran,,,,,,,,,,,,,, @@ -165,6 +169,7 @@ util_PNR_PRM_number_of_transfers,PNR_PRM - number of transfers,"@(-23+23*np.exp( util_PNR_PRM_PNR_time,PNR_PRM - PNR time,@(odt_skims['PNROUT_PRM_ACC'] + dot_skims['PNRIN_PRM_EGR']),,,,,,,,,,coef_acctime,,,,,,,,,,,,, util_PNR_PRM_PNR_cost,PNR_PRM - PNR cost,@(df.sov_auto_op_cost * (odt_skims['PNROUT_PRM_ACC'] + dot_skims['PNRIN_PRM_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,,coef_income,,,,,,,,,,,,, util_PNR_PRM_Walk_egress_time_(at_attraction_end),PNR_PRM - Walk egress time (at attraction end),"@np.where(df.nev_prm_egress_available, df.nev_prm_egress_time, np.where(df.microtransit_prm_egress_available, df.microtransit_prm_egress_time, 2*df.dest_prm_time)) * df.time_factor",,,,,,,,,,coef_acctime,,,,,,,,,,,,, +util_PNR_PRM_wait_egress_time_(at_attraction_end),PNR_PRM - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_prm_egress_available, 2*nevWaitTime, np.where(df.microtransit_prm_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,coef_wait,,,,,,,,,,,,, util_PNR_PRM_Walk_other_time,PNR_PRM - Walk other time,@(odt_skims['PNROUT_PRM_XFERWALK'] + dot_skims['PNRIN_PRM_XFERWALK']) *df.time_factor,,,,,,,,,,coef_xwalk,,,,,,,,,,,,, util_PNR_PRM_Fare,PNR_PRM - Fare,@df.transitSubsidyPassDiscount*(odt_skims['PNROUT_PRM_FARE'] + dot_skims['PNRIN_PRM_FARE'])*100/df.cost_sensitivity,,,,,,,,,,coef_income,,,,,,,,,,,,, util_PNR_PRM_ASC,PNR_PRM - Alternative-specific constant,(pnr_prm_out_asc + pnr_prm_inb_asc) * time_factor,,,,,,,,,,coef_ivt,,,,,,,,,,,,, @@ -189,6 +194,7 @@ util_PNR_MIX_number_of_transfers,PNR_MIX - number of transfers,"@(-23+23*np.exp( util_PNR_MIX_PNR_time,PNR_MIX - PNR time,@(odt_skims['PNROUT_MIX_ACC'] + dot_skims['PNRIN_MIX_EGR'])*df.time_factor,,,,,,,,,,,coef_acctime,,,,,,,,,,,, util_PNR_MIX_PNR_cost,PNR_MIX - PNR cost,@(df.sov_auto_op_cost * (odt_skims['PNROUT_MIX_ACC'] + dot_skims['PNRIN_MIX_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,,,coef_income,,,,,,,,,,,, util_PNR_MIX_Walk_egress_time_(at_attraction_end),PNR_MIX - Walk egress time (at attraction end),"@np.where(df.nev_mix_egress_available, df.nev_mix_egress_time, np.where(df.microtransit_mix_egress_available, df.microtransit_mix_egress_time, 2*df.dest_mix_time)) * df.time_factor",,,,,,,,,,,coef_acctime,,,,,,,,,,,, +util_PNR_MIX_wait_egress_time_(at_attraction_end),PNR_MIX - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_mix_egress_available, 2*nevWaitTime, np.where(df.microtransit_mix_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,coef_wait,,,,,,,,,,,, util_PNR_MIX_Walk_other_time,PNR_MIX - Walk other time,@(odt_skims['PNROUT_MIX_XFERWALK'] + dot_skims['PNRIN_MIX_XFERWALK']) *df.time_factor,,,,,,,,,,,coef_xwalk,,,,,,,,,,,, util_PNR_MIX_Fare,PNR_MIX - Fare,@df.transitSubsidyPassDiscount*(odt_skims['PNROUT_MIX_FARE'] + dot_skims['PNRIN_MIX_FARE'])*100/df.cost_sensitivity,,,,,,,,,,,coef_income,,,,,,,,,,,, util_PNR_MIX_ASC,PNR_MIX - Alternative-specific constant,(pnr_mix_out_asc + pnr_mix_inb_asc) * time_factor,,,,,,,,,,,coef_ivt,,,,,,,,,,,, @@ -207,6 +213,7 @@ util_KNR_LOC_number_of_transfers,KNR_LOC - number of transfers,"@(-23+23*np.exp( util_KNR_LOC_KNR_time,KNR_LOC - KNR time,@(odt_skims['KNROUT_LOC_ACC'] + dot_skims['KNRIN_LOC_EGR'])*df.time_factor,,,,,,,,,,,,coef_acctime,,,,,,,,,,, util_KNR_LOC_KNR_cost,KNR_LOC - KNR cost,@(df.sr2_auto_op_cost * (odt_skims['KNROUT_LOC_ACC'] + dot_skims['KNRIN_LOC_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,,,,coef_income,,,,,,,,,,, util_KNR_LOC_Walk_egress_time_(at_attraction_end),KNR_LOC - Walk egress time (at attraction end),"@np.where(df.nev_local_egress_available, df.nev_local_egress_time, np.where(df.microtransit_local_egress_available, df.microtransit_local_egress_time, 2*df.dest_local_time)) * df.time_factor",,,,,,,,,,,,coef_acctime,,,,,,,,,,, +util_KNR_LOC_wait_egress_time_(at_attraction_end),KNR_LOC - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_local_egress_available, 2*nevWaitTime, np.where(df.microtransit_local_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,coef_wait,,,,,,,,,,, util_KNR_LOC_Walk_other_time,KNR_LOC - Walk other time,@(odt_skims['KNROUT_LOC_XFERWALK'] + dot_skims['KNRIN_LOC_XFERWALK'])*df.time_factor,,,,,,,,,,,,coef_xwalk,,,,,,,,,,, util_KNR_LOC_Fare_and_operating_cost,KNR_LOC - Fare ,@df.transitSubsidyPassDiscount*(odt_skims['KNROUT_LOC_FARE'] + dot_skims['KNRIN_LOC_FARE'])*100/df.cost_sensitivity,,,,,,,,,,,,coef_income,,,,,,,,,,, util_KNR_LOC - Age 16 to 24,KNR_LOC - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,,,,coef_age1624_tran,,,,,,,,,,, @@ -228,6 +235,7 @@ util_KNR_PRM_number_of_transfers,KNR_PRM - number of transfers,"@(-23+23*np.exp( util_KNR_PRM_KNR_time,KNR_PRM - KNR time,@(odt_skims['KNROUT_PRM_ACC'] + dot_skims['KNRIN_PRM_EGR']) *df.time_factor,,,,,,,,,,,,,coef_acctime,,,,,,,,,, util_KNR_PRM_KNR_cost,KNR_PRM - KNR cost,@(df.sr2_auto_op_cost * (odt_skims['KNROUT_PRM_ACC'] + dot_skims['KNRIN_PRM_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,,,,,coef_income,,,,,,,,,, util_KNR_PRM_Walk_egress_time_(at_attraction_end),KNR_PRM - Walk egress time (at attraction end),"@np.where(df.nev_prm_egress_available, df.nev_prm_egress_time, np.where(df.microtransit_prm_egress_available, df.microtransit_prm_egress_time, 2*df.dest_prm_time)) * df.time_factor",,,,,,,,,,,,,coef_acctime,,,,,,,,,, +util_KNR_PRM_wait_egress_time_(at_attraction_end),KNR_PRM - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_prm_egress_available, 2*nevWaitTime, np.where(df.microtransit_prm_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,,coef_wait,,,,,,,,,, util_KNR_PRM_Walk_other_time,KNR_PRM - Walk other time,@(odt_skims['KNROUT_PRM_XFERWALK'] + dot_skims['KNRIN_PRM_XFERWALK']) *df.time_factor,,,,,,,,,,,,,coef_xwalk,,,,,,,,,, util_KNR_PRM_Fare,KNR_PRM - Fare,@df.transitSubsidyPassDiscount*(odt_skims['KNROUT_PRM_FARE'] + dot_skims['KNRIN_PRM_FARE'])*100/df.cost_sensitivity,,,,,,,,,,,,,coef_income,,,,,,,,,, util_KNR_PRM_ASC,KNR_PRM - Alternative-specific constant,(knr_prm_out_asc + knr_prm_inb_asc) * time_factor,,,,,,,,,,,,,coef_ivt,,,,,,,,,, @@ -251,8 +259,9 @@ util_KNR_MIX_number_of_transfers,KNR_MIX - number of transfers,"@(-23+23*np.exp( util_KNR_MIX_KNR_time,KNR_MIX - KNR time,@(odt_skims['KNROUT_MIX_ACC'] + dot_skims['KNRIN_MIX_EGR'])*df.time_factor,,,,,,,,,,,,,,coef_acctime,,,,,,,,, util_KNR_MIX_KNR_cost,KNR_MIX - KNR cost,@(df.sr2_auto_op_cost * (odt_skims['KNROUT_MIX_ACC'] + dot_skims['KNRIN_MIX_EGR']) *driveSpeed )/df.cost_sensitivity,,,,,,,,,,,,,,coef_income,,,,,,,,, util_KNR_MIX_Walk_egress_time_(at_attraction_end),KNR_MIX - Walk egress time (at attraction end),"@np.where(df.nev_mix_egress_available, df.nev_mix_egress_time, np.where(df.microtransit_mix_egress_available, df.microtransit_mix_egress_time, 2*df.dest_mix_time)) * df.time_factor",,,,,,,,,,,,,,coef_acctime,,,,,,,,, +util_KNR_MIX_wait_egress_time_(at_attraction_end),KNR_MIX - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_mix_egress_available, 2*nevWaitTime, np.where(df.microtransit_mix_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,,,coef_wait,,,,,,,,, util_KNR_MIX_Walk_other_time,KNR_MIX - Walk other time,@(odt_skims['KNROUT_MIX_XFERWALK'] + dot_skims['KNRIN_MIX_XFERWALK']) *df.time_factor,,,,,,,,,,,,,,coef_xwalk,,,,,,,,, -util_KNR_MIX_Fare,KNR_MIX - Fare,@(odt_skims['KNROUT_MIX_FARE'] + dot_skims['KNRIN_MIX_FARE'])*100/df.cost_sensitivity,,,,,,,,,,,,,,coef_income,,,,,,,,, +util_KNR_MIX_Fare,KNR_MIX - Fare,@df.transitSubsidyPassDiscount*(odt_skims['KNROUT_MIX_FARE'] + dot_skims['KNRIN_MIX_FARE'])*100/df.cost_sensitivity,,,,,,,,,,,,,,coef_income,,,,,,,,, util_KNR_MIX_ASC,KNR_MIX - Alternative-specific constant,(knr_mix_out_asc + knr_mix_inb_asc) * time_factor,,,,,,,,,,,,,,coef_ivt,,,,,,,,, util_KNR_MIX - Age 16 to 24,KNR_MIX - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,,,,,,coef_age1624_tran,,,,,,,,, util_KNR_MIX - Age 41 to 55,KNR_MIX - Age 41 to 55,@(df.age > 40) & (df.age < 56),,,,,,,,,,,,,,coef_age4155_tran,,,,,,,,, @@ -268,9 +277,12 @@ util_TNC_LOC_iwait_time,TNC_LOC - First iwait time,@(odt_skims['TNCOUT_LOC_FIRST util_TNC_LOC_transfer_wait_time,TNC_LOC - transfer wait time,@(odt_skims['TNCOUT_LOC_XFERWAIT'] + dot_skims['TNCIN_LOC_XFERWAIT']) *df.time_factor,,,,,,,,,,,,,,,coef_xwait,,,,,,,, util_TNC_LOC_number_of_transfers,TNC_LOC - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['TNCOUT_LOC_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) + (-23+23*np.exp(0.414*np.clip(dot_skims['TNCIN_MIX_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) *df.time_factor",,,,,,,,,,,,,,,coef_xferdrive,,,,,,,, util_TNC_LOC_TNC_time,TNC_LOC - TNC time,"@np.where(df.nev_local_access_available, df.nev_local_access_time, np.where(df.microtransit_local_access_available, df.microtransit_local_access_time, odt_skims['TNCOUT_LOC_ACC'] + dot_skims['TNCIN_LOC_EGR'])) *df.time_factor",,,,,,,,,,,,,,,coef_acctime,,,,,,,, +util_TNC_LOC_TNC_wait_time,TNC_LOC - TNC wait time,"@np.where(df.nev_local_access_available, 2*nevWaitTime, np.where(df.microtransit_local_access_available, 2*microtransitWaitTime, 2*origSingleTNCWaitTime)) *df.time_factor",,,,,,,,,,,,,,,coef_wait,,,,,,,, +util_TNC_LOC_TNC_fare,TNC_LOC - TNC fare,"((np.maximum(TNC_single_baseFare*2 + ((odt_skims['TNCOUT_LOC_ACC'] + dot_skims['TNCIN_LOC_EGR'])/60 * driveSpeed) * TNC_single_costPerMile + (odt_skims['TNCOUT_LOC_ACC'] + dot_skims['TNCIN_LOC_EGR']) * TNC_single_costPerMinute, TNC_single_costMinimum*2)*100)/df.cost_sensitivity)",,,,,,,,,,,,,,,coef_income,,,,,,,, util_TNC_LOC_Walk_egress_time_(at_attraction_end),TNC_LOC - Walk egress time (at attraction end),"@np.where(df.nev_local_egress_available, df.nev_local_egress_time, np.where(df.microtransit_local_egress_available, df.microtransit_local_egress_time, 2*df.dest_local_time)) * df.time_factor",,,,,,,,,,,,,,,coef_acctime,,,,,,,, +util_TNC_LOC_wait_egress_time_(at_attraction_end),TNC_LOC - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_local_egress_available, 2*nevWaitTime, np.where(df.microtransit_local_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,,,,coef_wait,,,,,,,, util_TNC_LOC_Walk_other_time,TNC_LOC - Walk other time,@(odt_skims['TNCOUT_LOC_XFERWALK'] + dot_skims['TNCIN_LOC_XFERWALK']) *df.time_factor,,,,,,,,,,,,,,,coef_xwalk,,,,,,,, -util_TNC_LOC_Fare_and_operating_cost,TNC_LOC - Fare ,"@np.where(df.microtransit_local_access_available | df.nev_local_access_available, df.transitSubsidyPassDiscount*(odt_skims['KNROUT_LOC_FARE'] + dot_skims['KNRIN_LOC_FARE']), df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_LOC_FARE'] + dot_skims['TNCIN_LOC_FARE']))*100/df.cost_sensitivity",,,,,,,,,,,,,,,coef_income,,,,,,,, +util_TNC_LOC_Fare_and_operating_cost,TNC_LOC - Fare ,"@df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_LOC_FARE'] + dot_skims['TNCIN_LOC_FARE'])*100/df.cost_sensitivity",,,,,,,,,,,,,,,coef_income,,,,,,,, util_TNC_LOC - Age 16 to 24,TNC_LOC - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,,,,,,,coef_age1624_tran,,,,,,,, util_TNC_LOC - Age 41 to 55,TNC_LOC - Age 41 to 55,@(df.age > 40) & (df.age < 56),,,,,,,,,,,,,,,coef_age4155_tran,,,,,,,, util_TNC_LOC - Age 56 to 64,TNC_LOC - Age 56 to 64,@(df.age > 55) & (df.age < 65),,,,,,,,,,,,,,,coef_age5664_tran,,,,,,,, @@ -289,9 +301,12 @@ util_TNC_PRM_FIRST_iwait_time,TNC_PRM - First iwait time,@(odt_skims['TNCOUT_PRM util_TNC_PRM_transfer_wait_time,TNC_PRM - transfer wait time,@(odt_skims['TNCOUT_PRM_XFERWAIT'] + dot_skims['TNCIN_PRM_XFERWAIT'])*df.time_factor,,,,,,,,,,,,,,,,coef_xwait,,,,,,, util_TNC_PRM_number_of_transfers,TNC_PRM - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['TNCOUT_PRM_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) + (-23+23*np.exp(0.414*np.clip(dot_skims['TNCIN_PRM_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) *df.time_factor",,,,,,,,,,,,,,,,coef_xferdrive,,,,,,, util_TNC_PRM_TNC_time,TNC_PRM - TNC time,"@np.where(df.nev_prm_access_available, df.nev_prm_access_time, np.where(df.microtransit_prm_access_available, df.microtransit_prm_access_time, odt_skims['TNCOUT_PRM_ACC'] + dot_skims['TNCIN_PRM_EGR'])) *df.time_factor",,,,,,,,,,,,,,,,coef_acctime,,,,,,, +util_TNC_PRM_TNC_wait_time,TNC_PRM - TNC wait time,"@np.where(df.nev_prm_access_available, 2*nevWaitTime, np.where(df.microtransit_prm_access_available, 2*microtransitWaitTime, 2*origSingleTNCWaitTime)) *df.time_factor",,,,,,,,,,,,,,,,coef_wait,,,,,,, +util_TNC_PRM_TNC_fare,TNC_PRM - TNC fare,"((np.maximum(TNC_single_baseFare*2 + ((odt_skims['TNCOUT_PRM_ACC'] + dot_skims['TNCIN_PRM_EGR'])/60 * driveSpeed) * TNC_single_costPerMile + (odt_skims['TNCOUT_PRM_ACC'] + dot_skims['TNCIN_PRM_EGR']) * TNC_single_costPerMinute, TNC_single_costMinimum*2)*100)/df.cost_sensitivity)",,,,,,,,,,,,,,,,coef_income,,,,,,, util_TNC_PRM_Walk_egress_time_(at_attraction_end),TNC_PRM - Walk egress time (at attraction end),"@np.where(df.nev_prm_egress_available, df.nev_prm_egress_time, np.where(df.microtransit_prm_egress_available, df.microtransit_prm_egress_time, 2*df.dest_prm_time)) * df.time_factor",,,,,,,,,,,,,,,,coef_acctime,,,,,,, +util_TNC_PRM_wait_egress_time_(at_attraction_end),TNC_PRM - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_prm_egress_available, 2*nevWaitTime, np.where(df.microtransit_prm_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,,,,,coef_wait,,,,,,, util_TNC_PRM_Walk_other_time,TNC_PRM - Walk other time,@ (odt_skims['TNCOUT_PRM_XFERWALK'] + dot_skims['TNCIN_PRM_XFERWALK']) *df.time_factor,,,,,,,,,,,,,,,,coef_xwalk,,,,,,, -util_TNC_PRM_Fare,TNC_PRM - Fare,"@np.where(df.microtransit_prm_access_available | df.nev_prm_access_available, df.transitSubsidyPassDiscount*(odt_skims['KNROUT_PRM_FARE'] + dot_skims['KNRIN_PRM_FARE']), df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_PRM_FARE'] + dot_skims['TNCIN_PRM_FARE']))*100/df.cost_sensitivity",,,,,,,,,,,,,,,,coef_income,,,,,,, +util_TNC_PRM_Fare,TNC_PRM - Fare,"@df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_PRM_FARE'] + dot_skims['TNCIN_PRM_FARE'])*100/df.cost_sensitivity",,,,,,,,,,,,,,,,coef_income,,,,,,, util_TNC_PRM_ASC,TNC_PRM - Alternative-specific constant,(tnc_prm_out_asc + tnc_prm_inb_asc) * time_factor,,,,,,,,,,,,,,,,coef_ivt,,,,,,, util_TNC_PRM - Age 16 to 24,TNC_PRM - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,,,,,,,,coef_age1624_tran,,,,,,, util_TNC_PRM - Age 41 to 55,TNC_PRM - Age 41 to 55,@(df.age > 40) & (df.age < 56),,,,,,,,,,,,,,,,coef_age4155_tran,,,,,,, @@ -311,9 +326,12 @@ util_TNC_MIX_FIRST_iwait_time,TNC_MIX - First iwait time,@(odt_skims['TNCOUT_MIX util_TNC_MIX_transfer_wait_time,TNC_MIX - transfer wait time,@(odt_skims['TNCOUT_MIX_XFERWAIT'] + dot_skims['TNCIN_MIX_XFERWAIT']) *df.time_factor,,,,,,,,,,,,,,,,,coef_xwait,,,,,, util_TNC_MIX_number_of_transfers,TNC_MIX - number of transfers,"@(-23+23*np.exp(0.414*np.clip(odt_skims['TNCOUT_MIX_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) + (-23+23*np.exp(0.414*np.clip(dot_skims['TNCIN_MIX_XFERS'] + df.mtnev_acc_xfer + df.mtnev_egr_xfer, a_min=None,a_max=4))) *df.time_factor",,,,,,,,,,,,,,,,,coef_xferdrive,,,,,, util_TNC_MIX_TNC_time,TNC_MIX - TNC time,"@np.where(df.nev_mix_access_available, df.nev_mix_access_time, np.where(df.microtransit_mix_access_available, df.microtransit_mix_access_time, odt_skims['TNCOUT_MIX_ACC'] + dot_skims['TNCIN_MIX_EGR'])) *df.time_factor",,,,,,,,,,,,,,,,,coef_acctime,,,,,, +util_TNC_MIX_TNC_wait_time,TNC_MIX - TNC wait time,"@np.where(df.nev_mix_access_available, 2*nevWaitTime, np.where(df.microtransit_mix_access_available, 2*microtransitWaitTime, 2*origSingleTNCWaitTime)) *df.time_factor",,,,,,,,,,,,,,,,,coef_wait,,,,,, +util_TNC_MIX_TNC_fare,TNC_MIX - TNC fare,"((np.maximum(TNC_single_baseFare*2 + ((odt_skims['TNCOUT_MIX_ACC'] + dot_skims['TNCIN_MIX_EGR'])/60 * driveSpeed) * TNC_single_costPerMile + (odt_skims['TNCOUT_MIX_ACC'] + dot_skims['TNCIN_MIX_EGR']) * TNC_single_costPerMinute, TNC_single_costMinimum*2)*100)/df.cost_sensitivity)",,,,,,,,,,,,,,,,,coef_income,,,,,, util_TNC_MIX_Walk_egress_time_(at_attraction_end),TNC_MIX - Walk egress time (at attraction end),"@np.where(df.nev_mix_egress_available, df.nev_mix_egress_time, np.where(df.microtransit_mix_egress_available, df.microtransit_mix_egress_time, 2*df.dest_mix_time)) * df.time_factor",,,,,,,,,,,,,,,,,coef_acctime,,,,,, +util_TNC_MIX_wait_egress_time_(at_attraction_end),TNC_MIX - Egress mt/nev wait time (at attraction end),"@np.where(df.nev_mix_egress_available, 2*nevWaitTime, np.where(df.microtransit_mix_egress_available, 2*microtransitWaitTime, 0)) * df.time_factor",,,,,,,,,,,,,,,,,coef_wait,,,,,, util_TNC_MIX_Walk_other_time,TNC_MIX - Walk other time,@(odt_skims['TNCOUT_MIX_XFERWALK'] + dot_skims['TNCIN_MIX_XFERWALK']) *df.time_factor,,,,,,,,,,,,,,,,,coef_xwalk,,,,,, -util_TNC_MIX_Fare,TNC_MIX - Fare,"@np.where(df.microtransit_mix_access_available | df.nev_mix_access_available, df.transitSubsidyPassDiscount*(odt_skims['KNROUT_MIX_FARE'] + dot_skims['KNRIN_MIX_FARE']), df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_MIX_FARE'] + dot_skims['TNCIN_MIX_FARE']))*100/df.cost_sensitivity",,,,,,,,,,,,,,,,,coef_income,,,,,, +util_TNC_MIX_Fare,TNC_MIX - Fare,"@df.transitSubsidyPassDiscount*(odt_skims['TNCOUT_MIX_FARE'] + dot_skims['TNCIN_MIX_FARE'])*100/df.cost_sensitivity",,,,,,,,,,,,,,,,,coef_income,,,,,, util_TNC_MIX_ASC,TNC_MIX - Alternative-specific constant,(tnc_mix_out_asc + tnc_mix_inb_asc) * time_factor,,,,,,,,,,,,,,,,,coef_ivt,,,,,, util_TNC_MIX - Age 16 to 24,TNC_MIX - Age 16 to 24,@(df.age > 15) & (df.age < 25),,,,,,,,,,,,,,,,,coef_age1624_tran,,,,,, util_TNC_MIX - Age 41 to 55,TNC_MIX - Age 41 to 55,@(df.age > 40) & (df.age < 56),,,,,,,,,,,,,,,,,coef_age4155_tran,,,,,, diff --git a/src/asim/configs/resident/tour_mode_choice_annotate_choosers_preprocessor.csv b/src/asim/configs/resident/tour_mode_choice_annotate_choosers_preprocessor.csv index 9932b357f..a52fc8bd8 100644 --- a/src/asim/configs/resident/tour_mode_choice_annotate_choosers_preprocessor.csv +++ b/src/asim/configs/resident/tour_mode_choice_annotate_choosers_preprocessor.csv @@ -288,45 +288,45 @@ nev total time,nev_time,"np.maximum(nev_direct_time + nevDiversionConstant, nevD # Microtransit and NEV access to transit,,, microtransit access to local available,microtransit_local_access_available,(microtransit_orig>0) & (origin_micro_local_dist0) & (origin_micro_local_dist0) & (origin_micro_prm_dist0) & (origin_micro_prm_dist0) & (origin_micro_mix_dist0) & (origin_micro_mix_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_local_dist0) & (dest_micro_local_dist0) & (origin_micro_local_dist0) & (dest_micro_local_dist0) & (origin_micro_prm_dist0) & (dest_micro_prm_dist0) & (origin_micro_prm_dist0) & (dest_micro_prm_dist0) & (origin_micro_mix_dist0) & (dest_micro_mix_dist0) & (origin_micro_mix_dist0) & (dest_micro_mix_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist 15) * (df.age < 25),,,,,,coef_age1624_tran,,,,, #util_WalkTransit - Age 41 to 55,WalkTransit - Age 41 to 55,@(df.age > 40) * (df.age < 56),,,,,,coef_age4155_tran,,,,, @@ -67,6 +68,7 @@ util_WALK_PRM_transfer_waLK_time,WALK_PRM - transfer walk time,@(odt_skims['WALK util_WalkTransit_number_of_transfers,WalkTransit - number of transfers,@((odt_skims['WALK_PRM_XFERS'] + df.mtnev_egr_xfer).clip(0) + (dot_skims['WALK_PRM_XFERS'] + df.mtnev_egr_xfer).clip(0)),,,,,,,coef_xfers,,,, util_WalkTransit_Walk_access_time,WalkTransit - Walk access time,@2 * df.origin_prm_time,,,,,,,coef_wacc,,,, util_WalkTransit_Walk_egress_time,WalkTransit - Walk egress time,"@np.where(df.nev_prm_egress_available, df.nev_prm_egress_time, np.where(df.microtransit_prm_egress_available, df.microtransit_prm_egress_time, 2*df.dest_prm_time))",,,,,,,coef_wegr,,,, +util_WalkTransit_wait_egress_time,WalkTransit - Egress mt/nev wait time,"@1.5*np.where(df.nev_prm_egress_available, 2*nevWaitTime, np.where(df.microtransit_prm_egress_available, 2*microtransitWaitTime, 0))",,,,,,,coef_ivt,,,, util_WalkTransit_Fare,WalkTransit - Fare,@(odt_skims['WALK_PRM_FARE'] + dot_skims['WALK_PRM_FARE']) * df.coef_cost,,,,,,,coef_one,,,, #util_WalkTransit - Age 16 to 24,WalkTransit - Age 16 to 24,@(df.age > 15) * (df.age < 25),,,,,,,coef_age1624_tran,,,, #util_WalkTransit - Age 41 to 55,WalkTransit - Age 41 to 55,@(df.age > 40) * (df.age < 56),,,,,,,coef_age4155_tran,,,, @@ -88,6 +90,7 @@ util_WALK_PRM_transfer_waLK_time,WALK_PRM - transfer walk time,@(odt_skims['WALK util_WalkTransit_number_of_transfers,WalkTransit - number of transfers,@((odt_skims['WALK_MIX_XFERS'] + df.mtnev_egr_xfer).clip(0) + (dot_skims['WALK_MIX_XFERS'] + df.mtnev_egr_xfer).clip(0)),,,,,,,,coef_xfers,,, util_WalkTransit_Walk_access_time,WalkTransit - Walk access time,@2 * df.origin_mix_time,,,,,,,,coef_wacc,,, util_WalkTransit_Walk_egress_time,WalkTransit - Walk egress time,"@np.where(df.nev_mix_egress_available, df.nev_mix_egress_time, np.where(df.microtransit_mix_egress_available, df.microtransit_mix_egress_time, 2*df.dest_mix_time))",,,,,,,,coef_wegr,,, +util_WalkTransit_wait_egress_time,WalkTransit - Egress mt/nev wait time,"@1.5*np.where(df.nev_mix_egress_available, 2*nevWaitTime, np.where(df.microtransit_mix_egress_available, 2*microtransitWaitTime, 0))",,,,,,,,coef_ivt,,, util_WalkTransit_Fare,WalkTransit - Fare,@(odt_skims['WALK_MIX_FARE'] + dot_skims['WALK_MIX_FARE']) * df.coef_cost,,,,,,,,coef_one,,, #util_WalkTransit - Age 16 to 24,WalkTransit - Age 16 to 24,@(df.age > 15) * (df.age < 25),,,,,,,,coef_age1624_tran,,, #util_WalkTransit - Age 41 to 55,WalkTransit - Age 41 to 55,@(df.age > 40) * (df.age < 56),,,,,,,,coef_age4155_tran,,, @@ -108,7 +111,7 @@ util_TNC Single - Cost,TNC Single - Cost,"@((np.maximum(TNC_single_baseFare*2 + #,TNC Shared,,,,,,,,,,,, util_TNC Shared_switch,TNC Shared - switch turn-off (depends on data availability),@((~df.nev_available) & (~df.microtransit_available) & (scenarioYear==2022)),,,,,,,,,,,-999 util_TNC Shared - In-vehicle time,TNC Shared - In-vehicle time,"@(np.where(df.nev_available, df.nev_time, np.where(df.microtransit_available, df.microtransit_time, (df.s3_time_skims_out + df.s3_time_skims_inb)))) * TNC_shared_IVTFactor",,,,,,,,,,,coef_ivt -util_TNC Shared - Wait time,TNC Shared - Wait time,"@np.where(df.nev_available, 2*nevWaitTime, np.where(df.microtransit_available, 2*microtransitWaitTime, 1.5*df.totalWaitSharedTNC))",,,,,,,,,,,coef_ivt +util_TNC Shared - Wait time,TNC Shared - Wait time,"@1.5*np.where(df.nev_available, 2*nevWaitTime, np.where(df.microtransit_available, 2*microtransitWaitTime, df.totalWaitSharedTNC))",,,,,,,,,,,coef_ivt util_TNC Shared - Cost,TNC Shared - Cost,"@np.where(df.nev_available, 2*nevCost, np.where(df.microtransit_available, 2*microtransitCost, ((np.maximum(TNC_shared_baseFare*2 + (df.s3_dist_skims_out + df.s3_dist_skims_inb) * TNC_shared_costPerMile + (df.s3_time_skims_out + df.s3_time_skims_inb)* TNC_shared_costPerMinute, TNC_shared_costMinimum*2)))*100 + df.s3_cost_skims_out + df.s3_cost_skims_inb) * df.coef_cost)",,,,,,,,,,,coef_one Calibration work tour with auto,Work Tour with auto,is_work*autoAvailable,-0.4839,,0.8409,-0.0425,,-3,,,-0.191,-0.191,-999 Calibration recreation tour with auto,Recreation Tour with auto,is_recreation*autoAvailable,1.8714,,0.0491,0.8952,,-1.5518,,,1.3906,1.3906,-999 diff --git a/src/asim/configs/visitor/tour_mode_choice_annotate_choosers_preprocessor.csv b/src/asim/configs/visitor/tour_mode_choice_annotate_choosers_preprocessor.csv index e80ee0df3..faa4cee4c 100644 --- a/src/asim/configs/visitor/tour_mode_choice_annotate_choosers_preprocessor.csv +++ b/src/asim/configs/visitor/tour_mode_choice_annotate_choosers_preprocessor.csv @@ -208,23 +208,23 @@ nev total time,nev_time,"np.maximum(nev_direct_time + nevDiversionConstant, nevD # Microtransit and NEV egress from transit,,, microtransit egress from local available,microtransit_local_egress_available,(microtransit_dest>0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_prm_dist0) & (dest_micro_prm_dist0) & (origin_micro_prm_dist0) & (dest_micro_prm_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_local_dist>maxWalkIfMTAccessAvailable) & (dest_micro_local_dist0) & (origin_micro_local_dist>maxWalkIfMTAccessAvailable) & (origin_micro_local_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_prm_dist>maxWalkIfMTAccessAvailable) & (dest_micro_prm_dist0) & (origin_micro_prm_dist>maxWalkIfMTAccessAvailable) & (origin_micro_prm_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist0) & (dest_micro_mix_dist>maxWalkIfMTAccessAvailable) & (dest_micro_mix_dist0) & (origin_micro_mix_dist>maxWalkIfMTAccessAvailable) & (origin_micro_mix_dist