diff --git a/configs/mandatory_tour_schedulings_annotate_tours_preprocessor.csv b/configs/mandatory_tour_schedulings_annotate_tours_preprocessor.csv index e570ad5..6c20896 100644 --- a/configs/mandatory_tour_schedulings_annotate_tours_preprocessor.csv +++ b/configs/mandatory_tour_schedulings_annotate_tours_preprocessor.csv @@ -1,3 +1,4 @@ -Description,Target,Expression,,,,,, -,departureLinearShift1,"np.minimum(9-alt_tdd.start,48)*(alt_tdd.start<=9) + np.minimum(alt_tdd.start-9,21)*(alt_tdd.start>9)" -,arrivalLinearShift1,"np.minimum(30-df.end,48)*(df.end<=30) + np.minimum(df.end-30,21)*(df.end>30)" +Description,Target,Expression +departure_shift,departureLinearShift1,"np.minimum(9-df.start,48)*(df.start<=9) + np.minimum(df.start-9,21)*(df.start>9)" +arrival_shift,arrivalLinearShift1,"np.minimum(30-df.end,48)*(df.end<=30) + np.minimum(df.end-30,21)*(df.end>30)" +duration_shift,durationShift,"(np.minimum(21-df.duration,47)*(df.duration<=20)) + (np.minimum(df.duration-21,20)*(df.duration>21))" diff --git a/configs/non_mandatory_tour_scheduling.yaml b/configs/non_mandatory_tour_scheduling.yaml index d89ad8b..6cfb0d7 100644 --- a/configs/non_mandatory_tour_scheduling.yaml +++ b/configs/non_mandatory_tour_scheduling.yaml @@ -9,7 +9,8 @@ preprocessor: TABLES: - land_use - joint_tour_participants - + + SIMULATE_CHOOSER_COLUMNS: - age diff --git a/configs/non_mandatory_tour_scheduling_annotate_tours_preprocessor.csv b/configs/non_mandatory_tour_scheduling_annotate_tours_preprocessor.csv index adc698d..8c93665 100644 --- a/configs/non_mandatory_tour_scheduling_annotate_tours_preprocessor.csv +++ b/configs/non_mandatory_tour_scheduling_annotate_tours_preprocessor.csv @@ -2,5 +2,4 @@ Description,Target,Expression #,, number of person joint tours,num_person_joint_tours,"reindex_i(joint_tour_participants.groupby('person_id').size(), non_mandatory_tours.person_id)" #,, -,origin_to_destination_distance,"skim_dict.lookup(non_mandatory_tours.origin, non_mandatory_tours.destination, ('SOV_FREE_DISTANCE', 'MD'))" -#,, +,origin_to_destination_distance,"skim_dict.lookup(non_mandatory_tours.origin, non_mandatory_tours.destination, ('SOV_FREE_DISTANCE', 'MD'))" \ No newline at end of file diff --git a/configs/tour_scheduling_atwork.csv b/configs/tour_scheduling_atwork.csv index 45b93c8..c0166ff 100644 --- a/configs/tour_scheduling_atwork.csv +++ b/configs/tour_scheduling_atwork.csv @@ -1,50 +1,50 @@ -Description,Expression,Coefficient -Female - Departure after 12:30 pm - Linear,"@np.where(((df.is_female) & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",0.05574558 -Part-time worker - Departure after 12:30 pm - Linear,"@np.where(((df.ptype == 2) & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",0.129291333 -Part-time worker - Duration greater than 0.5 hours (depart and arrive in the same period),"@np.where(((df.ptype == 2) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.162008704 -Low income (<25000) - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.is_income_less25K) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.885322446 -Med income (25k to 60k) - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.is_income_25K_to_60K) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.526935246 -Med income (25k to 60k) - Duration greater than 0.5 hours,"@np.where(((df.is_income_25K_to_60K) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",-0.081917021 -Med-high income (60k to 120k) - Duration greater than 0.5 hours,"@np.where(((df.is_income_60K_to_120K) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",-0.068358924 -Blue collar - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.work_segment == 5) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",1.191378628 -Blue collar - Duration greater than 0.5 hours,"@np.where(((df.work_segment == 5) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.123072852 -Health - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.work_segment == 3) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.791205377 -Distance to destination - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where((df.duration<1), ((np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0))) * df.od_distance, 0)",-0.292363361 -Distance to destination - Duration greater than 0.5 hours,"@np.where((df.duration>1), ((np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0))) * df.od_distance, 0)",0.006885922 -Subtour purpose: Business - Departure before 12:00 pm - Linear,"@np.where(((df.tour_type == 'business') & (df.start<19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",0.268963895 -Subtour purpose: Business - Departure after 12:30 pm - Linear,"@np.where(((df.tour_type == 'business') & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",0.17631122 -Subtour purpose: Business - Duration greater than 0.5 hours,"@np.where(((df.tour_type == 'business') & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",0.362189199 -Subtour purpose: Eat-out - Departure before 12:00 pm - Linear,"@np.where(((df.tour_type == 'eat') & (df.start<19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",-0.250770206 -Subtour purpose: Eat-out - Departure after 12:30 pm - Linear,"@np.where(((df.tour_type == 'eat') & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",-0.169861029 -Subtour purpose: Eat-out - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.tour_type == 'eat') & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",-0.678939929 -# Departure constants,, -Shift for every 30 minutes before 10:30 am - Linear,"@np.where((df.start<16), (np.where((df.start<= 16), np.minimum(16 - df.start, 9), 0) + np.where((df.start> 21), np.minimum(df.start - 21, 11), 0)), 0)",-0.731880037 -Before 11:00 AM,@(df.start<17),-2.176744062 -11:00 AM - 11:30 AM,@(df.start==17),-1.190017952 -11:30 AM - 12:00 PM,@(df.start==18),-0.198229872 -12:00 AM - 12:30 PM,@(df.start==19),0 -12:30 PM - 01:00 PM,@(df.start==20),-0.084950396 -After 01:00 PM,@(df.start>20),-0.205562723 -Shift for every 30 minutes after 1:30 pm - Square Root,"@np.where((df.start>21), ((np.where((df.start <= 16), np.minimum(16 - df.start, 9), 0) + np.where((df.start > 21), np.minimum(df.start - 21, 11), 0))** 0.5), 0)",0.539088697 -# Arrival constants,, -Shift for every 30 minutes before 11:30 am - Linear,"@np.where((df.end<18), (np.where((df.end <= 14), np.minimum(14 - df.end, 9), 0) + np.where((df.end > 24), np.minimum(df.end - 24, 10), 0)), 0)",0.414546555 -Before 12:00 PM,@(df.end<19),0.279351638 -12:00 AM - 12:30 PM,@(df.end==19),-0.045281832 -12:30 PM - 01:00 PM,@(df.end==20),0.214070736 -01:00 PM - 01:30 PM,@(df.end==21),0 -01:30 PM - 02:00 PM,@(df.end==22),-0.69742748 -02:00 PM - 02:30 PM,@(df.end==23),-1.284283533 -After 02:30 PM,@(df.end>23),-2.119733896 -Shift for every 30 minutes after 3:00 pm - Linear,"@np.where((df.end>24), (np.where((df.end <= 14), np.minimum(14 - df.end, 9), 0) + np.where((df.end > 24), np.minimum(df.end - 24, 10), 0)), 0)",-0.508006414 -# Duration constants,, -0 hrs,@(df.duration==0),-0.969734874 -0.5 hrs,@(df.duration==1),0 -1 hrs,@(df.duration==2),0.177457256 -1.5hrs,@(df.duration==3),-0.171124657 -2 hrs,@(df.duration==4),-0.4678094 -Longer than 2 hrs,@(df.duration>4),-0.523935526 -Shift for every 30 minutes more than 2.5 hrs - Square Root,"@np.where((df.duration>5), ((np.where((df.duration < 0), np.minimum(0 - df.duration, 47), 0) + np.where((df.duration > 5), np.minimum(df.duration - 5, 13), 0)) ** 0.5), 0)",-0.424301372 -Calibration Constant - Departure = 18,@(df.start==18),-0.045958531 -Calibration Constant - Departure = 19,@(df.start==19),-0.099009925 -Calibration Constant - Arrival = 20,@(df.end==20),-0.0698094 -Calibration Constant - Arrival = 21,@(df.end==21),-0.064355276 +Label,Description,Expression,Coefficient +util_Female_Departure_after_1230_pm_Linear,Female - Departure after 12:30 pm - Linear,"@np.where(((df.female) & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Female_Departure_after_1230_pm_Linear +util_Parttime_worker_Departure_after_1230_pm__Linear,Part-time worker - Departure after 12:30 pm - Linear,"@np.where(((df.ptype == 2) & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Parttime_worker_Departure_after_1230_pm__Linear +util_Parttime_worker_Duration_greater_than_0p5_hours_depart_and_arrive_in_the_same_period,Part-time worker - Duration greater than 0.5 hours (depart and arrive in the same period),"@np.where(((df.ptype == 2) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Parttime_worker_Duration_greater_than_0p5_hours_depart_and_arrive_in_the_same_period +util_Low_income_lt25000_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Low income (<25000) - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.is_income_less25K) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Low_income_lt25000_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util_Med_income_25k_to_60k_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Med income (25k to 60k) - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.is_income_25K_to_60K) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Med_income_25k_to_60k_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util_Med_income_25k_to_60k_Duration_greater_than_0p5_hours,Med income (25k to 60k) - Duration greater than 0.5 hours,"@np.where(((df.is_income_25K_to_60K) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Med_income_25k_to_60k_Duration_greater_than_0p5_hours +util_Medhigh_income_60k_to_120k_Duration_greater_than_0p5_hours,Med-high income (60k to 120k) - Duration greater than 0.5 hours,"@np.where(((df.is_income_60K_to_120K) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Medhigh_income_60k_to_120k_Duration_greater_than_0p5_hours +#util_Blue_collar_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Blue collar - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.work_segment == 5) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Blue_collar_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +#util_Blue_collar_Duration_greater_than_0p5_hours,Blue collar - Duration greater than 0.5 hours,"@np.where(((df.work_segment == 5) & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Blue_collar_Duration_greater_than_0p5_hours +#util_Health_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Health - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.work_segment == 3) & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Health_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Distance to destination - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where((df.duration<1), ((np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0))) * df.od_distance, 0)",coef_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util_Distance_to_destination_Duration_greater_than_0p5_hours,Distance to destination - Duration greater than 0.5 hours,"@np.where((df.duration>1), ((np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0))) * df.od_distance, 0)",coef_Distance_to_destination_Duration_greater_than_0p5_hours +util_Subtour_purpose_Business_Departure_before_1200_pm__Linear,Subtour purpose: Business - Departure before 12:00 pm - Linear,"@np.where(((df.tour_type == 'business') & (df.start<19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Subtour_purpose_Business_Departure_before_1200_pm__Linear +util_Subtour_purpose_Business_Departure_after_1230_pm_Linear,Subtour purpose: Business - Departure after 12:30 pm - Linear,"@np.where(((df.tour_type == 'business') & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Subtour_purpose_Business_Departure_after_1230_pm_Linear +util_Subtour_purpose_Business_Duration_greater_than_0p5_hours,Subtour purpose: Business - Duration greater than 0.5 hours,"@np.where(((df.tour_type == 'business') & (df.duration>1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Subtour_purpose_Business_Duration_greater_than_0p5_hours +util_Subtour_purpose_Eatout_Departure_before_1200_pm__Linear,Subtour purpose: Eat-out - Departure before 12:00 pm - Linear,"@np.where(((df.tour_type == 'eat') & (df.start<19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Subtour_purpose_Eatout_Departure_before_1200_pm__Linear +util_Subtour_purpose_Eatout_Departure_after_1230_pm_Linear,Subtour purpose: Eat-out - Departure after 12:30 pm - Linear,"@np.where(((df.tour_type == 'eat') & (df.start>19)), (np.where((df.start<= 19), np.minimum(19 - df.start, 48), 0) + np.where((df.start > 19), np.minimum(df.start - 19, 48), 0)), 0)",coef_Subtour_purpose_Eatout_Departure_after_1230_pm_Linear +util_Subtour_purpose_Eatout_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,Subtour purpose: Eat-out - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.tour_type == 'eat') & (df.duration<1)), (np.where((df.duration <= 1), np.minimum(1 - df.duration, 47), 0) + np.where((df.duration > 1), np.minimum(df.duration - 1, 47), 0)), 0)",coef_Subtour_purpose_Eatout_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util__Departure_constants,# Departure constants,,coef__Departure_constants +util_Shift_for_every_30_minutes_before_1030_am_Linear,Shift for every 30 minutes before 10:30 am - Linear,"@np.where((df.start<16), (np.where((df.start< 16), np.minimum(16 - df.start, 9), 0) + np.where((df.start> 21), np.minimum(df.start - 21, 11), 0)), 0)",coef_Shift_for_every_30_minutes_before_1030_am_Linear +util_Before_1100_AM,Before 11:00 AM,@(df.start<17),coef_Before_1100_AM +util_1100_AM_1130_AM,11:00 AM - 11:30 AM,@(df.start==17),coef_1100_AM_1130_AM +util_1130_AM_1200_PM,11:30 AM - 12:00 PM,@(df.start==18),coef_1130_AM_1200_PM +util_1200_AM_1230_PM,12:00 AM - 12:30 PM,@(df.start==19),coef_1200_AM_1230_PM +util_1230_PM_0100_PM,12:30 PM - 01:00 PM,@(df.start==20),coef_1230_PM_0100_PM +util_After_0100_PM,After 01:00 PM,@(df.start>20),coef_After_0100_PM +util_Shift_for_every_30_minutes_after_130_pm_Square_Root,Shift for every 30 minutes after 1:30 pm - Square Root,"@np.where((df.start>21), ((np.where((df.start < 16), np.minimum(16 - df.start, 9), 0) + np.where((df.start > 21), np.minimum(df.start - 21, 11), 0))** 0.5), 0)",coef_Shift_for_every_30_minutes_after_130_pm_Square_Root +util__Arrival_constants,# Arrival constants,,coef__Arrival_constants +util_Shift_for_every_30_minutes_before_1130_am_Linear,Shift for every 30 minutes before 11:30 am - Linear,"@np.where((df.end<18), (np.where((df.end < 14), np.minimum(14 - df.end, 9), 0) + np.where((df.end > 24), np.minimum(df.end - 24, 10), 0)), 0)",coef_Shift_for_every_30_minutes_before_1130_am_Linear +util_Before_1200_PM,Before 12:00 PM,@(df.end<19),coef_Before_1200_PM +util_1200_AM_1230_PM,12:00 AM - 12:30 PM,@(df.end==19),coef_1200_AM_1230_PM +util_1230_PM_0100_PM,12:30 PM - 01:00 PM,@(df.end==20),coef_1230_PM_0100_PM +util_0100_PM_0130_PM,01:00 PM - 01:30 PM,@(df.end==21),coef_0100_PM_0130_PM +util_0130_PM_0200_PM,01:30 PM - 02:00 PM,@(df.end==22),coef_0130_PM_0200_PM +util_0200_PM_0230_PM,02:00 PM - 02:30 PM,@(df.end==23),coef_0200_PM_0230_PM +util_After_0230_PM,After 02:30 PM,@(df.end>23),coef_After_0230_PM +util_Shift_for_every_30_minutes_after_300_pm_Linear,Shift for every 30 minutes after 3:00 pm - Linear,"@np.where((df.end>24), (np.where((df.end < 14), np.minimum(14 - df.end, 9), 0) + np.where((df.end > 24), np.minimum(df.end - 24, 10), 0)), 0)",coef_Shift_for_every_30_minutes_after_300_pm_Linear +util__Duration_constants,# Duration constants,,coef__Duration_constants +util_0_hrs,0 hrs,@(df.duration==0),coef_0_hrs +util_0p5_hrs,0.5 hrs,@(df.duration==1),coef_0p5_hrs +util_1_hrs,1 hrs,@(df.duration==2),coef_1_hrs +util_1p5hrs,1.5hrs,@(df.duration==3),coef_1p5hrs +util_2_hrs,2 hrs,@(df.duration==4),coef_2_hrs +util_Longer_than_2_hrs,Longer than 2 hrs,@(df.duration>4),coef_Longer_than_2_hrs +util_Shift_for_every_30_minutes_more_than_2p5_hrs_Square_Root,Shift for every 30 minutes more than 2.5 hrs - Square Root,"@np.where((df.duration>5), ((np.where((df.duration < 0), np.minimum(0 - df.duration, 47), 0) + np.where((df.duration > 5), np.minimum(df.duration - 5, 13), 0)) ** 0.5), 0)",coef_Shift_for_every_30_minutes_more_than_2p5_hrs_Square_Root +util_Calibration_Constant_Departure_eq_18,Calibration Constant - Departure = 18,@(df.start==18),coef_Calibration_Constant_Departure_eq_18 +util_Calibration_Constant_Departure_eq_19,Calibration Constant - Departure = 19,@(df.start==19),coef_Calibration_Constant_Departure_eq_19 +util_Calibration_Constant_Arrival_eq_20,Calibration Constant - Arrival = 20,@(df.end==20),coef_Calibration_Constant_Arrival_eq_20 +util_Calibration_Constant_Arrival_eq_21,Calibration Constant - Arrival = 21,@(df.end==21),coef_Calibration_Constant_Arrival_eq_21 diff --git a/configs/tour_scheduling_atwork_coeffs.csv b/configs/tour_scheduling_atwork_coeffs.csv index 1e3f0fb..6d90a73 100644 --- a/configs/tour_scheduling_atwork_coeffs.csv +++ b/configs/tour_scheduling_atwork_coeffs.csv @@ -1 +1,47 @@ coefficient_name,value,constrain +coef_Female_Departure_after_1230_pm_Linear,0.05574558,F +coef_Parttime_worker_Departure_after_1230_pm__Linear,0.129291333,F +coef_Parttime_worker_Duration_greater_than_0p5_hours_depart_and_arrive_in_the_same_period,0.162008704,F +coef_Low_income_lt25000_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,0.885322446,F +coef_Med_income_25k_to_60k_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,0.526935246,F +coef_Med_income_25k_to_60k_Duration_greater_than_0p5_hours,-0.081917021,F +coef_Medhigh_income_60k_to_120k_Duration_greater_than_0p5_hours,-0.068358924,F +coef_Blue_collar_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,1.191378628,F +coef_Blue_collar_Duration_greater_than_0p5_hours,0.123072852,F +coef_Health_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,0.791205377,F +coef_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,-0.292363361,F +coef_Distance_to_destination_Duration_greater_than_0p5_hours,0.006885922,F +coef_Subtour_purpose_Business_Departure_before_1200_pm__Linear,0.268963895,F +coef_Subtour_purpose_Business_Departure_after_1230_pm_Linear,0.17631122,F +coef_Subtour_purpose_Business_Duration_greater_than_0p5_hours,0.362189199,F +coef_Subtour_purpose_Eatout_Departure_before_1200_pm__Linear,-0.250770206,F +coef_Subtour_purpose_Eatout_Departure_after_1230_pm_Linear,-0.169861029,F +coef_Subtour_purpose_Eatout_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,-0.678939929,F +coef_Shift_for_every_30_minutes_before_1030_am_Linear,-0.731880037,F +coef_Before_1100_AM,-2.176744062,F +coef_1100_AM_1130_AM,-1.190017952,F +coef_1130_AM_1200_PM,-0.198229872,F +coef_1200_AM_1230_PM,0,T +coef_1230_PM_0100_PM,-0.084950396,F +coef_After_0100_PM,-0.205562723,F +coef_Shift_for_every_30_minutes_after_130_pm_Square_Root,0.539088697,F +coef_Shift_for_every_30_minutes_before_1130_am_Linear,0.414546555,F +coef_Before_1200_PM,0.279351638,F +coef_1200_AM_1230_PM,-0.045281832,F +coef_1230_PM_0100_PM,0.214070736,F +coef_0100_PM_0130_PM,0,T +coef_0130_PM_0200_PM,-0.69742748,F +coef_0200_PM_0230_PM,-1.284283533,F +coef_After_0230_PM,-2.119733896,F +coef_Shift_for_every_30_minutes_after_300_pm_Linear,-0.508006414,F +coef_0_hrs,-0.969734874,F +coef_0p5_hrs,0,T +coef_1_hrs,0.177457256,F +coef_1p5hrs,-0.171124657,F +coef_2_hrs,-0.4678094,F +coef_Longer_than_2_hrs,-0.523935526,F +coef_Shift_for_every_30_minutes_more_than_2p5_hrs_Square_Root,-0.424301372,F +coef_Calibration_Constant_Departure_eq_18,-0.045958531,F +coef_Calibration_Constant_Departure_eq_19,-0.099009925,F +coef_Calibration_Constant_Arrival_eq_20,-0.0698094,F +coef_Calibration_Constant_Arrival_eq_21,-0.064355276,F diff --git a/configs/tour_scheduling_atwork_preprocessor.csv b/configs/tour_scheduling_atwork_preprocessor.csv index df9f4c0..6ec2ff0 100644 --- a/configs/tour_scheduling_atwork_preprocessor.csv +++ b/configs/tour_scheduling_atwork_preprocessor.csv @@ -1,3 +1,3 @@ Description,Target,Expression #,, -local scalar distance skim,od_distance,"od_skims[('SOV_FREE_DISTANCE', 'MD')]" +local scalar distance skim,od_distance,"od_skims[('SOV_FREE_DISTANCE', 'MD')]" \ No newline at end of file diff --git a/configs/tour_scheduling_joint.csv b/configs/tour_scheduling_joint.csv index ed7609c..a9f0a51 100644 --- a/configs/tour_scheduling_joint.csv +++ b/configs/tour_scheduling_joint.csv @@ -1,421 +1,315 @@ -Description,Expression,Coefficient -"#Note: In CTRAMP, duration is from 1 to 48 but in ActivitySim, it is from 0 to 47 since duration was calculated as (end - start). Therefore, duration in ActivitySim expression = CTRAMP duration expresssion - 1 ",, -#ESCORT,, -ESCORT - Mode Choice Logsum,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort')), df.mode_choice_logsum, 0)",1.173173034 -ESCORT - Distance to destination - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration<1)), ((df.origin_to_destination_distance) * (np.where((df.duration<=1), np.minimum(1-df.duration, 0), 0))),0)",-0.335017673 -ESCORT - Distance to destination - Duration greater than 0.5 hours,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>1)), ((df.origin_to_destination_distance) * (np.where((df.duration>1), np.minimum(df.duration-1,47), 0))), 0)",0.005298165 -ESCORT - Full-time worker - Departure after 8:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.start>10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)),0)",-0.037980109 -ESCORT - Full-time worker - Departure after 3:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.start>24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",0.163254125 -ESCORT - Full-time worker - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",-0.275077482 -ESCORT - Full-time worker - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",0.051530545 -ESCORT - University student - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 3) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",-0.426802718 -ESCORT - Non-driving age student - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & ((df.ptype == 7)|(df.ptype == 8)) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",0.240582361 -ESCORT - Driving age student - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 6) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",-0.554146191 -ESCORT - Driving age student - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 6) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",0.299387708 -ESCORT - Pre-school kid - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 8) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",0.195482563 -ESCORT - Med-high income (60k to 120k) - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.is_income_60K_to_120K) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",-0.029281467 -"ESCORT - Households with no kids (Dummy- 1,0) - Departure before 7:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start<10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",0.589083327 -"ESCORT - Households with no kids (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start>10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",0.086690827 -"ESCORT - Households with no kids (Dummy- 1,0) - Departure before 2:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start<24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",0.477582648 -"ESCORT - Households with no kids (Dummy- 1,0) - Departure after 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start>24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where ((df.start>24), np.minimum(df.start-24,9), 0)), 0)",-0.204065502 -"ESCORT - Households with no kids (Dummy- 1,0) - Arrival before 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end<11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",-0.360039254 -"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end>11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",0.091614107 -"ESCORT - Households with no kids (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",0.432854268 -"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end>25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",0.131037275 -"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start >10)), (np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",0.109700265 -"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start>24)), (np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",-0.224568648 -"ESCORT -Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0)), 0)",-0.357416434 -"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0)), 0)",0.629285298 -"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.start>10)), (np.where ((df.start>10), np.minimum(df.start-10,35), 0)), 0)",0.039005148 -"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.end>11)), (np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",-0.06556611 -"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) &( df.end>25)), (np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",0.117680977 -ESCORT - Number of autos greater than number of adults - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",-0.057322708 -#FIXME - Number of non-escort tours is not known until the non-mandatory frequency model is run,, -#ESCORT - Number of Individual Tours (excluding escorting) - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type != 'escort') & (df.num_non_escort_tours > 0) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",-0.062899692 -ESCORT - Number of joint tours - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)) *(df.num_joint_tours), 0)",-0.048533895 -ESCORT - Departure Constant: Shift for every 30 minutes before 06:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start<8)), (np.where((df.start<8), np.minimum(8-df.start,4), 0) + np.where((df.start>13), np.minimum(df.start-13,28), 0)), 0)",-1.469240002 -ESCORT - Departure Constant: Before 07:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start<9)),-2.070292862 -ESCORT - Departure Constant: 07:00 AM - 07:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==9)),-0.642734296 -ESCORT - Departure Constant: 07:30 AM - 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==10)),0 -ESCORT - Departure Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==11)),-0.214617667 -ESCORT - Departure Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==12)),-0.147266606 -ESCORT - Departure Constant: After 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>12)),-1.356686422 -ESCORT - Departure Constant: 01:30 PM - 02:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==22)),0.368092381 -ESCORT - Departure Constant: 02:00 PM - 02:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==23)),1.166803383 -ESCORT - Departure Constant: 02:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==24)),1.28466083 -ESCORT - Departure Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==25)),0.581891245 -ESCORT - Departure Constant: After 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>25)),0.834510243 -ESCORT - Departure Constant: Shift for every 30 minutes after 9:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>13)), (np.where((df.start<8), np.minimum(8-df.start,4), 0) + (np.where((df.start>13), np.minimum(df.start-13,28), 0))), 0)",0.175257649 -ESCORT - Departure Constant: Shift for every 30 minutes after 4:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>26)), (np.where((df.start<0), np.minimum(0-df.start,48), 0) + np.where((df.start>26), np.minimum(df.start-26,15),0)), 0)",-0.019161202 -ESCORT - Arrival Constant: Shift for every 30 minutes before 6:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end<8)), (np.where((df.end<8), np.minimum(8-df.end,2), 0) + np.where((df.end>13), np.minimum(df.end-13,30), 0)), 0)",0.44978138 -ESCORT - Arrival Constant: Before 07:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end<9)),0.549584585 -ESCORT - Arrival Constant: 07:00 AM - 07:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==9)),0.488181278 -ESCORT - Arrival Constant: 07:30 AM - 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==10)),0.236447651 -ESCORT - Arrival Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==11)),0 -ESCORT - Arrival Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==12)),-0.683756801 -ESCORT - Arrival Constant: After 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>12)),-1.428888485 -ESCORT - Arrival Constant: 02:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==24)),1.311480662 -ESCORT - Arrival Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==25)),1.316883154 -ESCORT - Arrival Constant: 03:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==26)),1.396838392 -ESCORT - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==27)),1.03146139 -ESCORT - Arrival Constant: After 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>27)),0.907344583 -ESCORT - Arrival Constant: Shift for every 30 minutes after 9:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>13)), (np.where((df.end<8), np.minimum(8-df.end,2), 0) + np.where((df.end>13), np.minimum(df.end-13,30), 0)), 0)",-0.148408887 -ESCORT - Arrival Constant: Shift for every 30 minutes after 5:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>28)), (np.where((df.end<0), np.minimum(0-df.end,48), 0) + np.where((df.start>28), np.minimum(df.end-28,15), 0)), 0)",-0.389082896 -ESCORT - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==0)),-0.173757322 -ESCORT - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==1)),0 -ESCORT - Duration Constant: 1 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==2)),-0.431287743 -ESCORT - Duration Constant: 1.5hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==3)),-0.700473959 -ESCORT - Duration Constant: 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==4)),-1.071871358 -ESCORT - Duration Constant: Longer than 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>4)),-1.691098421 -ESCORT - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==0)),-0.047200214 -ESCORT - Calibration Constant - Duration = 2,@(((df.tour_category == 'joint') & (df.tour_type == 'escort') & df.duration==1)),0.035611332 -ESCORT - Calibration Constant - Departure = 9,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==9)),0.106814756 -ESCORT - Calibration Constant - Departure = 10,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==10)),0.215386864 -ESCORT - Calibration Constant - Departure = 23,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==23)),-0.255087318 -ESCORT - Calibration Constant - Departure = 24,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==24)),-0.296870428 -#SHOPPING,, -SHOPPING - Joint Shopping tours dummy: Departure before 10:00 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",-0.190727375 -SHOPPING - Joint Shopping tours dummy: Departure after 10:30 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",-0.029551313 -SHOPPING - Joint Tours Party Size > 2: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.291965906 -SHOPPING - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.number_of_participants > 2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.045755784 -SHOPPING - Joint Tour with only adults: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.composition=='adults')), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.571185116 -SHOPPING - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.468815184 -SHOPPING - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.047470039 -#The expressions below are for individual tours,, -#SHOPPING - Driving age student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 6)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3), np.minimum(df.duration-3,27), 0)), 0)",0.122149101 -#SHOPPING - Full-time worker: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 1)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-0.037886459 -#SHOPPING - Non-driving Student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 7)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",0.10247157 -#SHOPPING - Pre-school Child: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<3) & (df.ptype == 8)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-1.882944033 -#SHOPPING - Part Time Worker: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<3) & (df.ptype == 2)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-0.197455071 -#SHOPPING - Part Time Worker: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 2)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-0.045152663 -#SHOPPING - Retired: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<3) & (df.ptype == 5)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-0.264728908 -#SHOPPING - Retired: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 5)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",-0.042981757 -#SHOPPING - University Student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.ptype == 3)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",0.045926523 -#SHOPPING - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<3) & (df.is_female)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3), np.minimum(df.duration-3,27), 0)), 0)",-0.417208254 -#SHOPPING - Female: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>3) & (df.is_female)), (np.where((df.duration<=3), np.minimum(3-df.duration,2), 0) + np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",0.045801918 -"SHOPPING - Low Income (<=$25,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_less25K) & (df.duration>3)), (np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",0.040776383 -"SHOPPING - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_25K_to_60K) & (df.duration<3)), (np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",0.108462927 -"SHOPPING - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_60K_to_120K) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,27), 0)), 0)",-0.037893416 -SHOPPING - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)) * (df.origin_to_destination_distance), 0)",-0.214802537 -SHOPPING - Distance: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2)), ((np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance)), 0)",0.007991656 -#The expressions below are for individual tours,, -#SHOPPING - Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>2)), np.minimum(df.duration-2,26) *(np.log10 (30 *(tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",0.013503327 -#SHOPPING - Number of additional individual shop and maint. tours - Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<2)), ((np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)) *(df.num_add_shop_maint_tours)), 0)",0.078844289 -#SHOPPING - Number of additional individual shop and maint. tours - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') &(df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) *(df.num_add_shop_maint_tours), 0)",-0.115431492 -SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",-0.959875456 -SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Square root,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<12)),1.112594898 -SHOPPING - Departure Constant: Before 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<13)),-0.446394064 -SHOPPING - Departure Constant: 09:00 AM - 09:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==13)),-0.021669265 -SHOPPING - Departure Constant: 09:30 AM - 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==14)),-0.282978638 -SHOPPING - Departure Constant: 10:00 AM - 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==15)),0 -SHOPPING - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==16)),-0.309421311 -SHOPPING - Departure Constant: After 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>16)),-0.541073357 -SHOPPING - Departure Constant: Shift for every 30 minutes after 11:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>17)), (np.where((df.start<12), np.minimum(12-df.start,7),0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",-0.072013428 -SHOPPING - Departure Constant: Shift for every 30 minutes after 11:30 am - Squared,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>17)), ((np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)) ** 2), 0)",-0.000653398 -SHOPPING - Arrival Constant: Shift for every 30 minutes before 12:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end<19)), (np.where ((df.end<19), np.minimum(19-df.end,10), 0) + np.where((df.end>38), np.minimum(df.end-38,5), 0)), 0)",-0.18376635 -SHOPPING - Arrival Constant: Before 12:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end<20)),-0.716195343 -SHOPPING - Arrival Constant: 12:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & ( df.end>=20) & (df.end<=24)),-0.502714001 -SHOPPING - Arrival Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==25)),-0.167868872 -SHOPPING - Arrival Constant: 03:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==26)),-0.156786941 -SHOPPING - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==27)),0 -SHOPPING - Arrival Constant: 04:30 PM - 05:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==28)),-0.057314044 -SHOPPING - Arrival Constant: 05:00 PM - 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==29)),-0.580040851 -SHOPPING - Arrival Constant: 05:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>=30) & (df.end<=32)),-0.32239566 -SHOPPING - Arrival Constant: 07:00 PM - 09:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>=33) & (df.end<=37)),-0.347828147 -SHOPPING - Arrival Constant: After 09:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>37)),-1.123574723 -SHOPPING - Arrival Constant: Shift for every 30 minutes after 10:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>38)), (np.where((df.end<19), np.minimum(19-df.end,10), 0) + np.where ((df.end>38), np.minimum(df.end-38,5), 0)), 0)",-0.499770654 -SHOPPING - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==0)),-0.131743185 -SHOPPING - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==1)),0.888857137 -SHOPPING - Duration Constant: 1 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==2)),0 -SHOPPING - Duration Constant: 1.5hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==3)),-0.333413031 -SHOPPING - Duration Constant: 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==4)),-0.850897912 -SHOPPING - Duration Constant: Longer than 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>4)),-1.203783479 -SHOPPING - Duration Constant: Duration > 2.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,26), 0)), 0)",-0.293581223 -SHOPPING - Duration Constant: Duration > 2.5 hrs - Square root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>5)), ((np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,26), 0)) ** 0.5), 0)",-0.215759138 -SHOPPING - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==0)),-0.138450424 -SHOPPING - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==1)),-0.092704403 -SHOPPING - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==2)),-0.087738073 -#MAINTENANCE,, -MAINTENANCE - Joint Maintenance tours dummy: Departure before 10:00 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",-0.139150288 -MAINTENANCE - Joint Maintenance tours dummy: Departure after 10:30 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",-0.065786345 -MAINTENANCE - Joint Tours Party Size > 2: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.291965906 -MAINTENANCE - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.number_of_participants > 2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.045755784 -MAINTENANCE - Joint Tour with only adults: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.composition=='adults')), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.571185116 -MAINTENANCE - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",-0.468815184 -MAINTENANCE - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.047470039 -#The expressions below are for individual tours,, -#MAINTENANCE - Driving age student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 6)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.122149101 -#MAINTENANCE - Full-time worker: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 1)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.037886459 -#MAINTENANCE - Non-driving Student: Duration > 1.5 hr,"@np.where (((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 7)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.10247157 -#MAINTENANCE - Pre-school Child: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.ptype == 8)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-1.882944033 -#MAINTENANCE - Part Time Worker: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.ptype == 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.197455071 -#MAINTENANCE - Part Time Worker: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.045152663 -#MAINTENANCE - Retired: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.ptype == 1)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.264728908 -#MAINTENANCE - Retired: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 5)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.042981757 -#MAINTENANCE - University Student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 3)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.045926523 -#MAINTENANCE - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",-0.417208254 -#MAINTENANCE - Female: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.045801918 -"MAINTENANCE - Low Income (<=$25,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_less25K) & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0.040776383 -"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",0.108462927 -"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",0 -"MAINTENANCE - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_60K_to_120K) & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",-0.037893416 -MAINTENANCE - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)) *(df.origin_to_destination_distance), 0)",-0.214802537 -MAINTENANCE - Distance: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance), 0)",0.007991656 -#The expressions below are for individual tours,, -#MAINTENANCE - Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>3)), np.minimum(df.duration-3,27) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",0.013503327 -#MAINTENANCE - Number of additional individual shop and maint. tours - Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint')&(df.tour_type == 'othmaint')&(df.duration<3)), (np.minimum(3-df.duration,2)) *(df.num_add_shop_maint_tours), 0)",0.078844289 -#MAINTENANCE - Number of additional individual shop and maint. tours - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>3)), (np.where((df.duration>3),np.minimum(df.duration-3,27), 0)) * (df.num_add_shop_maint_tours), 0)",-0.115431492 -MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<10)), (np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",-0.864112609 -MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Square Root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<10)), ((np.where((df.start<10), np.minimum(10-df.start,7), 0) + (np.where((df.start>17), np.minimum(df.start-17,24), 0)))** 0.5), 0)",0.504598473 -MAINTENANCE - Departure Constant: Before 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<11)),-0.383711788 -MAINTENANCE - Departure Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==11)),-0.076771517 -MAINTENANCE - Departure Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==12)),-0.169259979 -MAINTENANCE - Departure Constant: 09:00 AM - 09:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==13)),-0.051785379 -MAINTENANCE - Departure Constant: 09:30 AM - 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==14)),-0.214942451 -MAINTENANCE - Departure Constant: 10:00 AM - 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==15)),0 -MAINTENANCE - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==16)),-0.427568963 -MAINTENANCE - Departure Constant: After 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>16)),-0.520863411 -MAINTENANCE - Departure Constant: Shift for every 30 minutes after 11:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>17)), np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0), 0)",0.042879095 -MAINTENANCE - Departure Constant: Shift for every 30 minutes after 11:30 am - Squared,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>17)), ((np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)) ** 2), 0)",-0.003157293 -MAINTENANCE - Arrival Constant: Shift for every 30 minutes before 10:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end<15)), (np.where((df.end<15), np.minimum(15-df.end,9), 0) + np.where((df.end>28), np.minimum(df.end-28,16), 0)), 0)",-0.226803619 -MAINTENANCE - Arrival Constant: Before 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end<16)),-0.223212258 -MAINTENANCE - Arrival Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==16)),0 -MAINTENANCE - Arrival Constant: 11:00 AM - 11:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==17)),-0.128382637 -MAINTENANCE - Arrival Constant: 11:30 AM - 01:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=18) & (df.end<=21)),0.167977332 -MAINTENANCE - Arrival Constant: 01:30 PM - 02:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=22) & (df.end<=23)),-0.149495878 -MAINTENANCE - Arrival Constant: 02:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=24) & (df.end<=26)),0.087679934 -MAINTENANCE - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==27)),0.121707557 -MAINTENANCE - Arrival Constant: After 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>27)),0.106745013 -MAINTENANCE - Arrival Constant: Shift for every 30 minutes after 5:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>28)), (np.where((df.end<15), np.minimum(15-df.end,9), 0) + np.where((df.end>28), np.minimum(df.end-28,16), 0)), 0)",-0.232610927 -MAINTENANCE - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==0)),-0.483549396 -MAINTENANCE - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==1)),0 -MAINTENANCE - Duration Constant: Longer than 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>1)),-1.450618319 -MAINTENANCE - Duration Constant: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",-0.275082922 -MAINTENANCE - Duration Constant: Duration > 1 hrs - Square Root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), ((np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0))** 0.5), 0)",0.208434683 -MAINTENANCE - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==0)),-0.124602605 -MAINTENANCE - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==1)),-0.103637715 -MAINTENANCE - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==2)),-0.225442145 -MAINTENANCE - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==3)),-0.145273012 -MAINTENANCE - Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==4)),-0.019241539 -#EAT-OUT,, -EAT-OUT - Distance to destination - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)) * (df.origin_to_destination_distance), 0)",-0.134981987 -EAT-OUT - Distance to destination - Duration > 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,14), 0)) *(df.origin_to_destination_distance), 0)",0.017860742 -EAT-OUT - Low income (<25000) - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.is_income_less25K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",1.002485807 -EAT-OUT - Medium (25k to 60k) - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",0.499822018 -EAT-OUT - Zero auto HH - Duration > 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.auto_ownership == 0) & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",0.259409942 -EAT-OUT - Kids in Joint tour - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",1.785123348 -EAT-OUT - Joint Tours Party Size greater than 2 - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",-1.626003709 -#The expressions below are for individual tours,, -#EAT-OUT - University student - Departure after 7:00 pm - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.start>32) & (df.ptype == 3)), (np.where((df.start<=32), np.minimum(32-df.start,29), 0) + np.where((df.start>32), np.minimum(df.start-32,8), 0)), 0)",0.293827759 -#EAT-OUT - Female - Duration < 1 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",-0.399414247 -#EAT-OUT - Female - Duration > 1 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration>2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",0.064593482 -#EAT-OUT - Time Pressure - Departure before 6:30 pm,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start<32)), (np.minimum(32-df.start,29)) * (np.log10 (30 *(tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",0.083673557 -#EAT-OUT - Time Pressure - Duration < 1 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.duration<2)), np.minimum(2-df.duration,47) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",1.69632588 -#EAT-OUT - Departure Constant: 07:30 AM - 09:00 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start>=10) & (df.start<=12)),1.222417262 -#EAT-OUT - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==16)),0.519559134 -#EAT-OUT - Departure Constant: 11:00 AM - 11:30 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==17)),1.191543552 -#EAT-OUT - Departure Constant: 11:30 AM - 12:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==18)),1.66870995 -#EAT-OUT - Departure Constant: 12:00 PM - 12:30 PM,@((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.start==19)),1.164106986 -#EAT-OUT - Departure Constant: 12:30 PM - 01:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==20)),1.057346496 -#EAT-OUT - Departure Constant: 01:00 PM - 01:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==21)),0.728959087 -#EAT-OUT - Departure Constant: Shift for every 30 minutes before 05:30 pm - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start<31)), (np.where((df.start<30), np.minimum(30-df.start,27), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.477439748 -#EAT-OUT - Departure Constant: Before 06:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start<31)),-1.21554671 -#EAT-OUT - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==31)),-0.425984037 -#EAT-OUT - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==32)),0 -#EAT-OUT - Departure Constant: 07:00 PM - 07:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==33)),-0.227800647 -#EAT-OUT - Departure Constant: After 07:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start>33)),-0.293904097 -#EAT-OUT - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start>34)), (np.where((df.start<30), np.minimum(30-df.start,27), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.55440861 -EAT-OUT - Departure Constant: 11:00 AM - 12:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>=17) & (df.start<=18)),0.531539506 -EAT-OUT - Departure Constant: 12:00 PM - 12:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==19),0.673838195 -EAT-OUT - Departure Constant: 12:30 PM to 01:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==20),0.422292261 -EAT-OUT - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start<29)), (np.where((df.start<29), np.minimum(29-df.start,20), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.033290717 -EAT-OUT - Departure Constant: Before 05:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start<30),-0.561079452 -EAT-OUT - Departure Constant: 05:30 PM - 06:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==30),-0.178719161 -EAT-OUT - Departure Constant: 06:00 PM - 06:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==31),0 -EAT-OUT - Departure Constant: 06:30 PM - 07:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==32),-0.282095841 -EAT-OUT - Departure Constant: 07:00 PM - 07:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==33),-0.299748613 -EAT-OUT - Departure Constant: After 07:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>33),-0.845300559 -EAT-OUT - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>34)), (np.where((df.start<29), np.minimum(29-df.start,20), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.667843486 -#EAT-OUT - Arrival Constant: 9:30 AM to 11:00 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end>=14) & (df.end<=16)),0.486337344 -#EAT-OUT - Arrival Constant: 12:30 PM to 01:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==20)),0.629299404 -#EAT-OUT - Arrival Constant: 01:00 PM to 01:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==21)),0.938528731 -#EAT-OUT - Arrival Constant: 01:30 PM to 02:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==22)),0.584420106 -#EAT-OUT - Arrival Constant: 02:00 PM to 02:30 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==23)),0.842550215 -#EAT-OUT - Arrival Constant: 02:30 PM to 03:00 PM,@((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.end==24)),0.298486505 -#EAT-OUT - Arrival Constant: Shift for every 30 minutes before 06:00 pm - Linear,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end<31)),0.125034982 -#EAT-OUT - Arrival Constant: Before 6:30 PM,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end<32)), (np.where((df.end<31), np.minimum(31-df.end,24), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",-0.029062996 -#EAT-OUT - Arrival Constant: 6:30 PM to 7:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==32)),-0.509075598 -#EAT-OUT - Arrival Constant: 7:00 PM to 7:30 PM,@((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.end==33)),-0.124885931 -#EAT-OUT - Arrival Constant: 7:30 PM to 8:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==34)),-0.605455664 -#EAT-OUT - Arrival Constant: 8:00 PM to 8:30 PM,@((df.tour_category != 'joint') &(df.tour_type == 'eatout') & (df.end==35)),0 -#EAT-OUT - Arrival Constant: 8:30 PM to 9:00 PM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end==36)),-0.657382835 -#EAT-OUT - Arrival Constant: After 9:00 PM,@((df.tour_category != 'joint')& (df.tour_type == 'eatout') & (df.end>36)),-0.813629712 -#EAT-OUT - Arrival Constant: Shift for every 30 minutes after 09:30 pm - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.end>37)), (np.where((df.end<31), np.minimum(31-df.end,24), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",-0.204722406 -EAT-OUT - Arrival Constant: 12:30 PM to 01:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==20),2.002032369 -EAT-OUT - Arrival Constant: 01:00 PM to 01:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==21),2.115334472 -EAT-OUT - Arrival Constant: 01:30 PM to 02:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==22),1.647879687 -EAT-OUT - Arrival Constant: 02:00 PM to 02:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==23),1.525310078 -EAT-OUT - Arrival Constant: Shift for every 30 minutes before 06:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end<32)), (np.where((df.end<32), np.minimum(32-df.end,21), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",-0.152980854 -EAT-OUT - Arrival Constant: Before 7:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end<33),-0.41165142 -EAT-OUT - Arrival Constant: 7:00 PM to 7:30 PM,@(df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.end==33),-0.384557379 -EAT-OUT - Arrival Constant: 7:30 PM to 8:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==34),-0.044050359 -EAT-OUT - Arrival Constant: 8:00 PM to 8:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==35),0 -EAT-OUT - Arrival Constant: 8:30 PM to 9:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==36),-0.239939049 -EAT-OUT - Arrival Constant: After 09:00 PM,@(df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.end>36),-0.248639696 -EAT-OUT - Arrival Constant: Shift for every 30 minutes after 09:30 pm - Linear,"@np.where(((df.tour_type== 'eatout') & (df.end>37) & (df.tour_category == 'joint')), (np.where((df.end<32), np.minimum(32-df.end,21), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",-0.204771082 -#The expressions below are for individual tours,, -#EAT-OUT - Duration Constant: 0 hours,@((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.duration==0)),-11.72660422 -#EAT-OUT - Duration Constant: 0.5 hous,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration==1)),-5.08873115 -#EAT-OUT - Duration Constant: 1 hour,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration==2)),-0.125521065 -#EAT-OUT - Duration Constant: 1.5 hours,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration==3)),0 -#EAT-OUT - Duration Constant: 2 hours,@((df.tour_category != 'joint')& (df.tour_type == 'eatout') & (df.duration==4)),-0.124807752 -#EAT-OUT - Duration Constant: 2.5 hours or more,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration>5)),-0.156019835 -EAT-OUT - Duration Constant: Shift for every 30 minutes more than 3 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration>6)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>6), np.minimum(df.duration-6,12), 0)), 0)",-0.3357414 -EAT-OUT - Duration Constant: 0 hours,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==0)),-4.268996522 -EAT-OUT - Duration Constant: 0.5 hous,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==1)),-1.323297693 -EAT-OUT - Duration Constant: 1 hour,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.duration==2)),0 -EAT-OUT - Duration Constant: 1.5 hours,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==3)),-0.195669185 -EAT-OUT - Duration Constant: 2 hours or more,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>4),-0.523723192 -EAT-OUT - Duration Constant: Shift for every 30 minutes more than 2.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,13), 0)), 0)",-0.649331488 -EAT-OUT - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==0)),-0.333697861 -EAT-OUT - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==1)),-0.245716 -EAT-OUT - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.duration==2)),0.052708833 -EAT-OUT - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==3)),0.041571499 -EAT-OUT - Calibration Constant - Departure = 1,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start == 1)),-10 -EAT-OUT - Calibration Constant - Departure = 2,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start == 2)),-10 -EAT-OUT - Calibration Constant - Departure = 3,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.start == 3)),-10 -EAT-OUT - Calibration Constant - Departure = 17,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==17)),0.706568704 -EAT-OUT - Calibration Constant - Departure = 18,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.start ==18)),0.634353544 -EAT-OUT - Calibration Constant - Departure = 19,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==19)),0.584387268 -EAT-OUT - Calibration Constant - Departure = 20,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==20)),0.469777884 -EAT-OUT - Calibration Constant - Departure = 21,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==21)),0.39548931 -#SOCIAL,, -#The expressions below are for individual tours,, -#SOCIAL - Person< 18 years old: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3) & (df.age<18)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",-0.262839914 -#SOCIAL - Person< 18 years old: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>3) & (df.age<18)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",0.086919429 -#SOCIAL - Non-working senior/ retiree: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3) & (df.ptype == 5)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.468354376 -SOCIAL - Retiree/ Non-working senior only HH: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.retired_adults_only_hh) & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",-0.312282762 -SOCIAL - Zero auto households: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership == 0) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",-0.508439932 -SOCIAL - Zero auto households: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership == 0) & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",0.074190914 -SOCIAL - Number of auto more that number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint')&(df.tour_type == 'social') & (df.auto_ownership > 0) &(df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",0.127185965 -SOCIAL - Number of auto more that number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.048756122 -SOCIAL - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",-0.559947083 -SOCIAL - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",-0.115347031 -SOCIAL - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3) & (df.number_of_participants > 2)), (np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",0.104494637 -SOCIAL - Auto Distance: Duration < 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) * (df.origin_to_destination_distance)), 0) ",-0.162965435 -SOCIAL - Auto Distance: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0) * (df.origin_to_destination_distance)), 0)",0.006797399 -#The expressions below are for individual tours,, -#SOCIAL - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3)), np.minimum(3-df.duration,47), 0)* (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",-0.229264474 -#SOCIAL - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>3)), np.minimum(df.duration-3,47), 0) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",0.219325112 -#SOCIAL - Number of additional individual social and dicretionary tours - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)) * (df.num_add_soc_discr_tours), 0)",0.156250451 -SOCIAL - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<12)), (np.where((df.start<48), np.minimum(12-df.start,48), 0) + np.where((df.start>48), np.minimum(df.start-48,48), 0)), 0)",-0.529943196 -SOCIAL - Departure Constant: Before 09:00 AM,@(df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<13),-0.198438086 -SOCIAL - Departure Constant: 09:00 AM to 09:30 AM,@(df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==13),0.137620628 -SOCIAL - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where((df.tour_category == 'joint') & (df.start<29), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.142078961 -SOCIAL - Departure Constant: Before 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<30)),-0.390965052 -SOCIAL - Departure Constant: 05:30 PM - 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==30)),-0.453580491 -SOCIAL - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==31)),0 -SOCIAL - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==32)),-0.088537991 -SOCIAL - Departure Constant: 07:00 PM - 07:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==33)),0.052983115 -SOCIAL - Departure Constant: After 07:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start>33)),-0.649629162 -SOCIAL - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where((df.tour_category == 'joint') & (df.start>34), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",-0.09574499 -SOCIAL - Arrival Constant: 03:00 PM to 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==25)),0.37674882 -SOCIAL - Arrival Constant: 03:30 PM to 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==26)),0.583355461 -SOCIAL - Arrival Constant: 04:00 PM to 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==27)),0.727855233 -SOCIAL - Arrival Constant: 05:00 PM to 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>=29) & (df.end<=30)),0.249551955 -SOCIAL - Arrival Constant: Shift for every 30 minutes before 08:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end<35)), (np.where((df.end<35), np.minimum(35-df.end,48), 0) + np.where((df.end>40), np.minimum(df.end-40,48), 0)), 0)",0.053771388 -SOCIAL - Arrival Constant: Before 8:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end<36)),0.308763611 -SOCIAL - Arrival Constant: 8:30 PM to 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==36)),-0.208797698 -SOCIAL - Arrival Constant: 9:00 PM to 9:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==37)),-0.336319511 -SOCIAL - Arrival Constant: 9:30 PM to10:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==38)),0 -SOCIAL - Arrival Constant: 10:00 PM to 10:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==39)),-0.055707591 -SOCIAL - Arrival Constant: After 10:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>39)),-0.612356296 -SOCIAL - Arrival Constant: Shift for every 30 minutes after 11:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>40)), (np.where((df.end<35), np.minimum(35-df.end,48), 0) +np.where((df.end>40),np.minimum(df.end-40,48),0)), 0)",-0.348479901 -SOCIAL - Duration Constant: Shift for every 30 minutes less than 1.5 hrs - Linear,"@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3)) * ((np.minimum(3-df.duration,47)*(df.duration<3)) + (np.minimum(df.duration-6,47)*(df.duration>6)))",0.619073863 -SOCIAL - Duration Constant: Less than 2 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<4)),-0.584024011 -SOCIAL - Duration Constant: 2 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration==4)),-0.271552271 -SOCIAL - Duration Constant: 2.5 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration==5)),0 -SOCIAL - Duration Constant: 3 hours or more,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>5)),0.042083404 -SOCIAL - Duration Constant: Shift for every 30 minutes more than 3.5 hrs - Linear,"@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>6)) * ((np.minimum(3-df.duration,47)*(df.duration<3)) + (np.minimum(df.duration-6,47)*(df.duration>6)))",-0.13049452 -#The expressions below are for individual tours,, -#SOCIAL - Duration Constant: Shift for every 30 minutes less than 2.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<5)), (np.where((df.duration<5), np.minimum(5-df.duration,47), 0) + np.where((df.duration>7), np.minimum(df.duration-7,47), 0)), 0)",0.614440191 -#SOCIAL - Duration Constant: Less than 3 hrs,@((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<6)),0.353666691 -#SOCIAL - Duration Constant: 3 hours,@((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration==6)),0 -#SOCIAL - Duration Constant: 3.5 hours,@((df.tour_category != 'joint')& (df.tour_type == 'social') & (df.duration==7)),-0.691218836 -#SOCIAL - Duration Constant: 4 hours or more,@((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>7)),-1.344375328 -#SOCIAL - Duration Constant: Shift for every 30 minutes more than 4.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>9)), (np.where((df.duration<5), np.minimum(5-df.duration,47), 0) + np.where((df.duration>8), np.minimum(df.duration-8,47), 0)), 0)",-0.786970714 -SOCIAL - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==0)),-1.346772472 -SOCIAL - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration == 1)),0.377121689 -SOCIAL - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==2)),0.179818928 -SOCIAL - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==3)),-0.283418619 -SOCIAL - Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==4)),-0.103541313 -SOCIAL - Calibration Constant - Duration = 6,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==5)),-0.03704707 -SOCIAL - Calibration Constant - Duration = 7,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==6)),-0.062437167 -SOCIAL - Calibration Constant - Duration = 8,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==7)),0.047640282 -SOCIAL - Calibration Constant - Duration = 9,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==8)),0.284369793 -#DISCRETIONARY,, -#The expressions below are for individual tours,, -#DISCRETIONARY - Person< 18 years old: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3) & (df.age<18)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",-0.262839914 -#DISCRETIONARY - Person< 18 years old: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3) & (df.age<18)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.086919429 -#DISCRETIONARY - Non-working senior/ retiree: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3) & (df.ptype == 5)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.468354376 -DISCRETIONARY - Retiree/ Non-working senior only HH: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.retired_adults_only_hh) & (df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",-0.312282762 -DISCRETIONARY - Zero auto households: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership == 0) & (df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",-0.508439932 -DISCRETIONARY - Zero auto households: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership == 0) & (df.tour_type == 'othdiscr') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.074190914 -DISCRETIONARY - Number of auto more that number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership > 0) & (df.tour_type == 'othdiscr') & (df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)),0)",0.127185965 -DISCRETIONARY - Number of auto more that number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership > 0) &(df.tour_type == 'othdiscr')&(df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",0.048756122 -DISCRETIONARY - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3) & ((df.ptype == 6) | (df.ptype == 7) | (df.ptype == 8))), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",-0.559947083 -DISCRETIONARY - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3) & ((df.ptype == 6) | (df.ptype == 7) | (df.ptype == 8))), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",-0.115347031 -DISCRETIONARY - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3) & (df.number_of_participants > 2)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",0.104494637 -DISCRETIONARY - Auto Distance: Duration < 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3) & (df.origin_to_destination_distance)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",-0.162965435 -DISCRETIONARY - Auto Distance: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",0.006797399 -#The expressions below are for individual tours,, -#DISCRETIONARY - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3)), np.minimum(3-df.duration,47), 0) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",-0.229264474 -#DISCRETIONARY - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3)), np.minimum(df.duration-3,47) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",0.219325112 -#DISCRETIONARY - Number of additional individual social and dicretionary tours - Duration < 1 hr,"@np.where(((df.tour_category != 'joint')&(df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0))*(df.num_add_soc_discr_tours),0)",0.156250451 -DISCRETIONARY - Departure Constant: Shift for every 30 minutes before 07:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<9)), (np.where((df.start<9), np.minimum(9-df.start,48), 0) + np.where((df.start>48), np.minimum(df.start-48,48),0)), 0)",-0.742176805 -DISCRETIONARY - Departure Constant: Before 7:30 AM ,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<10)),-1.323901585 -DISCRETIONARY - Departure Constant: 7:30 AM to 8:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==10)),-0.695441631 -DISCRETIONARY - Departure Constant: 8:00 AM to 8:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==11)),-0.269903336 -DISCRETIONARY - Departure Constant: 8:30 AM to 9:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==12)),-0.093709211 -DISCRETIONARY - Departure Constant: 9:00 AM to 9:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==13)),0.265634082 -DISCRETIONARY - Departure Constant: 9:30 AM to 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==14)),0.287521134 -DISCRETIONARY - Departure Constant: 10:00 AM to 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==15)),0.396547817 -DISCRETIONARY - Departure Constant: Shift for every 30 minutes before 04:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<28)), (np.where((df.start<28), np.minimum(28-df.start,8),0) + np.where((df.start>33), np.minimum(df.start-33,6), 0)), 0)",-0.245885745 -DISCRETIONARY - Departure Constant: Before 05:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<29)),-1.344482349 -DISCRETIONARY - Departure Constant: 05:00 PM - 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==29)),-0.622632748 -DISCRETIONARY - Departure Constant: 05:30 PM - 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==30)),-0.456718676 -DISCRETIONARY - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==31)),-0.206896106 -DISCRETIONARY - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==32)),0 -DISCRETIONARY - Departure Constant: After 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start>32)),-0.46439343 -DISCRETIONARY - Departure Constant: Shift for every 30 minutes after 07:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start>33)), (np.where((df.start<28), np.minimum(28-df.start,8), 0) + np.where((df.start>33), np.minimum(df.start-33,6), 0)), 0)",-0.291998986 -DISCRETIONARY - Arrival Constant: Shift for every 30 minutes before 06:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end<31)), (np.where((df.end<31), np.minimum(31-df.end,48), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",0.148649188 -DISCRETIONARY - Arrival Constant: Before 6:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end<32)),0.668775963 -DISCRETIONARY - Arrival Constant: 6:30 PM to 7:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==32)),-0.053520826 -DISCRETIONARY - Arrival Constant: 7:00 PM to 7:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==33)),0.099726391 -DISCRETIONARY - Arrival Constant: 7:30 PM to 8:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==34)),0.063414092 -DISCRETIONARY - Arrival Constant: 8:00 PM to 8:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==35)),0 -DISCRETIONARY - Arrival Constant: 8:30 PM to 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==36)),-0.18610847 -DISCRETIONARY - Arrival Constant: After 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end>36)),-0.423207857 -DISCRETIONARY - Arrival Constant: Shift for every 30 minutes after 09:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end>37)), (np.where((df.end<31), np.minimum(31-df.end,48), 0) + np.where((df.end>37), np.minimum(df.end-37,48),0)), 0)",-0.525545923 -DISCRETIONARY - Duration Constant: 0 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==0),-0.944257762 -DISCRETIONARY - Duration Constant: 0.5 hous,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==1),-0.117695955 -DISCRETIONARY - Duration Constant: 1 hour,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==2),0.438403665 -DISCRETIONARY - Duration Constant: 1.5 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==3),-0.002500048 -DISCRETIONARY - Duration Constant: 2 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==4),0 -DISCRETIONARY - Duration Constant: 2.5 hours or more,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>4),0.239192556 -DISCRETIONARY - Duration Constant: Shift for every 30 minutes more than 3 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,47), 0)), 0)",-0.108260689 -#The expressions below are for individual tours,, -#DISCRETIONARY - Duration Constant: 0 hours,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==0)),0.436988282 -#DISCRETIONARY -Duration Constant: 0.5 hous,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==1)),1.35967577 -#DISCRETIONARY -Duration Constant: 1 hour,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==2)),1.692672999 -#DISCRETIONARY -Duration Constant: 1.5 hours,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==3)),1.118932964 -#DISCRETIONARY -Duration Constant: 2 hours,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==4)),0.771255733 -#DISCRETIONARY -Duration Constant: 2.5 hours,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration==5)),0 -#DISCRETIONARY -Duration Constant: 3 hours or more,@((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>5)),-0.631242175 -#DISCRETIONARY -Duration Constant: Shift for every 30 minutes more than 3 hrs - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,47), 0)), 0)",-0.700935645 -DISCRETIONARY -Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==3)),-0.132674257 -DISCRETIONARY -Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==4)),-0.013371871 -DISCRETIONARY -Calibration Constant - Departure = 29,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==29)),0.232927977 -DISCRETIONARY -Calibration Constant - Departure = 30,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==30)),0.306104612 -DISCRETIONARY -Calibration Constant - Departure = 31,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==31)),0.285520678 -DISCRETIONARY -Calibration Constant - Departure = 32,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==32)),0.115886631 +Label,Description,Expression,Coefficient +,,, +#ESCORT,#ESCORT,,ESCORT +util_escort_Mode_Choice_Logsum,ESCORT - Mode Choice Logsum,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort')), df.mode_choice_logsum, 0)",coef_escort_Mode_Choice_Logsum +util_escort_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,ESCORT - Distance to destination - Duration less than 0.5 hours (depart and arrive in the same period),"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration<1)), ((df.origin_to_destination_distance) * (np.where((df.duration<=1), np.minimum(1-df.duration, 0), 0))),0)",coef_escort_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period +util_escort_Distance_to_destination_Duration_greater_than_0p5_hours,ESCORT - Distance to destination - Duration greater than 0.5 hours,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>1)), ((df.origin_to_destination_distance) * (np.where((df.duration>1), np.minimum(df.duration-1,47), 0))), 0)",coef_escort_Distance_to_destination_Duration_greater_than_0p5_hours +util_escort_Fulltime_worker_Departure_after_8_00_am_Linear,ESCORT - Full-time worker - Departure after 8:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.start>10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)),0)",coef_escort_Fulltime_worker_Departure_after_8_00_am_Linear +util_escort_Fulltime_worker_Departure_after_3_00_am_Linear,ESCORT - Full-time worker - Departure after 3:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.start>24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",coef_escort_Fulltime_worker_Departure_after_3_00_am_Linear +util_escort_Fulltime_worker_Duration_lt_0p5_hrs,ESCORT - Full-time worker - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",coef_escort_Fulltime_worker_Duration_lt_0p5_hrs +util_escort_Fulltime_worker_Duration_gt_0p5_hrs,ESCORT - Full-time worker - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 1) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Fulltime_worker_Duration_gt_0p5_hrs +util_escort_University_student_Duration_lt_0p5_hrs,ESCORT - University student - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 3) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",coef_escort_University_student_Duration_lt_0p5_hrs +util_escort_Nondriving_age_student_Duration_gt_0p5_hrs,ESCORT - Non-driving age student - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & ((df.ptype == 7)|(df.ptype == 8)) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Nondriving_age_student_Duration_gt_0p5_hrs +util_escort_Driving_age_student_Duration_lt_0p5_hrs,ESCORT - Driving age student - Duration < 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 6) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",coef_escort_Driving_age_student_Duration_lt_0p5_hrs +util_escort_Driving_age_student_Duration_gt_0p5_hrs,ESCORT - Driving age student - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 6) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Driving_age_student_Duration_gt_0p5_hrs +util_escort_Preschool_kid_Duration_gt_0p5_hrs,ESCORT - Pre-school kid - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.ptype == 8) & (df.duration<1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0)), 0)",coef_escort_Preschool_kid_Duration_gt_0p5_hrs +util_escort_Medhigh_income_60k_to_120k_Duration_gt_0p5_hrs,ESCORT - Med-high income (60k to 120k) - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.is_income_60K_to_120K) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Medhigh_income_60k_to_120k_Duration_gt_0p5_hrs +util_escort_Households_with_no_kids_Dummy_1_0_Departure_before_7_30_AM,"ESCORT - Households with no kids (Dummy- 1,0) - Departure before 7:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start<10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Departure_before_7_30_AM +util_escort_Households_with_no_kids_Dummy_1_0_Departure_after_8_00_AM,"ESCORT - Households with no kids (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start>10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Departure_after_8_00_AM +util_escort_Households_with_no_kids_Dummy_1_0_Departure_before_2_30_PM,"ESCORT - Households with no kids (Dummy- 1,0) - Departure before 2:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start<24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Departure_before_2_30_PM +util_escort_Households_with_no_kids_Dummy_1_0_Departure_after_3_00_PM,"ESCORT - Households with no kids (Dummy- 1,0) - Departure after 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.start>24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where ((df.start>24), np.minimum(df.start-24,9), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Departure_after_3_00_PM +util_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_8_00_AM,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival before 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end<11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_8_00_AM +util_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_8_30_AM,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end>11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_8_30_AM +util_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_3_00_PM,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_3_00_PM +util_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_3_30_PM,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.num_children == 0) & (df.end>25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_3_30_PM +util_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start >10)), (np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM +util_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_3_00_PM,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start>24)), (np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_3_00_PM +util_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_8_00_AM,"ESCORT -Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0)), 0)",coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_8_00_AM +util_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_3_00_PM,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0)), 0)",coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_3_00_PM +util_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM,"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.start>10)), (np.where ((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM +util_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_8_30_AM,"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.end>11)), (np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_8_30_AM +util_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_3_30_PM,"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) &( df.end>25)), (np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_3_30_PM +util_escort_Number_of_autos_greater_than_number_of_adults_Duration_gt_0p5_hrs,ESCORT - Number of autos greater than number of adults - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Number_of_autos_greater_than_number_of_adults_Duration_gt_0p5_hrs +#FIXME_Number_of_nonescort_tours_is_not_known_until_the_nonmandatory_frequency_model_is_run,#FIXME - Number of non-escort tours is not known until the non-mandatory frequency model is run,,FIXME_Number_of_nonescort_tours_is_not_known_until_the_nonmandatory_frequency_model_is_run +#util_escort_Number_of_Individual_Tours_excluding_escorting_Duration_gt_0p5_hrs,#ESCORT - Number of Individual Tours (excluding escorting) - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type != 'escort') & (df.num_non_escort_tours > 0) & (df.duration>1)), (np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_Number_of_Individual_Tours_excluding_escorting_Duration_gt_0p5_hrs +util_escort_Number_of_joint_tours_Duration_gt_0p5_hrs,ESCORT - Number of joint tours - Duration > 0.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)) *(df.num_joint_tours), 0)",coef_escort_Number_of_joint_tours_Duration_gt_0p5_hrs +util_escort_Departure_Constant_Shift_for_every_30_minutes_before_06_30_am_Linear,ESCORT - Departure Constant: Shift for every 30 minutes before 06:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start<8)), (np.where((df.start<8), np.minimum(8-df.start,4), 0) + np.where((df.start>13), np.minimum(df.start-13,28), 0)), 0)",coef_escort_Departure_Constant_Shift_for_every_30_minutes_before_06_30_am_Linear +util_escort_Departure_Constant_Before_07_00_AM,ESCORT - Departure Constant: Before 07:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start<9)),coef_escort_Departure_Constant_Before_07_00_AM +util_escort_Departure_Constant_07_00_AM_07_30_AM,ESCORT - Departure Constant: 07:00 AM - 07:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==9)),coef_escort_Departure_Constant_07_00_AM_07_30_AM +util_escort_Departure_Constant_07_30_AM_08_00_AM,ESCORT - Departure Constant: 07:30 AM - 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==10)),coef_escort_Departure_Constant_07_30_AM_08_00_AM +util_escort_Departure_Constant_08_00_AM_08_30_AM,ESCORT - Departure Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==11)),coef_escort_Departure_Constant_08_00_AM_08_30_AM +util_escort_Departure_Constant_08_30_AM_09_00_AM,ESCORT - Departure Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==12)),coef_escort_Departure_Constant_08_30_AM_09_00_AM +util_escort_Departure_Constant_After_09_00_AM,ESCORT - Departure Constant: After 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>12)),coef_escort_Departure_Constant_After_09_00_AM +util_escort_Departure_Constant_01_30_PM_02_00_PM,ESCORT - Departure Constant: 01:30 PM - 02:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==22)),coef_escort_Departure_Constant_01_30_PM_02_00_PM +util_escort_Departure_Constant_02_00_PM_02_30_PM,ESCORT - Departure Constant: 02:00 PM - 02:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==23)),coef_escort_Departure_Constant_02_00_PM_02_30_PM +util_escort_Departure_Constant_02_30_PM_03_00_PM,ESCORT - Departure Constant: 02:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==24)),coef_escort_Departure_Constant_02_30_PM_03_00_PM +util_escort_Departure_Constant_03_00_PM_03_30_PM,ESCORT - Departure Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==25)),coef_escort_Departure_Constant_03_00_PM_03_30_PM +util_escort_Departure_Constant_After_03_30_PM,ESCORT - Departure Constant: After 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>25)),coef_escort_Departure_Constant_After_03_30_PM +util_escort_Departure_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear,ESCORT - Departure Constant: Shift for every 30 minutes after 9:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>13)), (np.where((df.start<8), np.minimum(8-df.start,4), 0) + (np.where((df.start>13), np.minimum(df.start-13,28), 0))), 0)",coef_escort_Departure_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear +util_escort_Departure_Constant_Shift_for_every_30_minutes_after_4_00_pm_Linear,ESCORT - Departure Constant: Shift for every 30 minutes after 4:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start>26)), (np.where((df.start<0), np.minimum(0-df.start,48), 0) + np.where((df.start>26), np.minimum(df.start-26,15),0)), 0)",coef_escort_Departure_Constant_Shift_for_every_30_minutes_after_4_00_pm_Linear +util_escort_Arrival_Constant_Shift_for_every_30_minutes_before_6_30_am_Linear,ESCORT - Arrival Constant: Shift for every 30 minutes before 6:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end<8)), (np.where((df.end<8), np.minimum(8-df.end,2), 0) + np.where((df.end>13), np.minimum(df.end-13,30), 0)), 0)",coef_escort_Arrival_Constant_Shift_for_every_30_minutes_before_6_30_am_Linear +util_escort_Arrival_Constant_Before_07_00_AM,ESCORT - Arrival Constant: Before 07:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end<9)),coef_escort_Arrival_Constant_Before_07_00_AM +util_escort_Arrival_Constant_07_00_AM_07_30_AM,ESCORT - Arrival Constant: 07:00 AM - 07:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==9)),coef_escort_Arrival_Constant_07_00_AM_07_30_AM +util_escort_Arrival_Constant_07_30_AM_08_00_AM,ESCORT - Arrival Constant: 07:30 AM - 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==10)),coef_escort_Arrival_Constant_07_30_AM_08_00_AM +util_escort_Arrival_Constant_08_00_AM_08_30_AM,ESCORT - Arrival Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==11)),coef_escort_Arrival_Constant_08_00_AM_08_30_AM +util_escort_Arrival_Constant_08_30_AM_09_00_AM,ESCORT - Arrival Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==12)),coef_escort_Arrival_Constant_08_30_AM_09_00_AM +util_escort_Arrival_Constant_After_09_00_AM,ESCORT - Arrival Constant: After 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>12)),coef_escort_Arrival_Constant_After_09_00_AM +util_escort_Arrival_Constant_02_30_PM_03_00_PM,ESCORT - Arrival Constant: 02:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==24)),coef_escort_Arrival_Constant_02_30_PM_03_00_PM +util_escort_Arrival_Constant_03_00_PM_03_30_PM,ESCORT - Arrival Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==25)),coef_escort_Arrival_Constant_03_00_PM_03_30_PM +util_escort_Arrival_Constant_03_30_PM_04_00_PM,ESCORT - Arrival Constant: 03:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==26)),coef_escort_Arrival_Constant_03_30_PM_04_00_PM +util_escort_Arrival_Constant_04_00_PM_04_30_PM,ESCORT - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end==27)),coef_escort_Arrival_Constant_04_00_PM_04_30_PM +util_escort_Arrival_Constant_After_04_30_PM,ESCORT - Arrival Constant: After 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>27)),coef_escort_Arrival_Constant_After_04_30_PM +util_escort_Arrival_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear,ESCORT - Arrival Constant: Shift for every 30 minutes after 9:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>13)), (np.where((df.end<8), np.minimum(8-df.end,2), 0) + np.where((df.end>13), np.minimum(df.end-13,30), 0)), 0)",coef_escort_Arrival_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear +util_escort_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear,ESCORT - Arrival Constant: Shift for every 30 minutes after 5:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.end>28)), (np.where((df.end<0), np.minimum(0-df.end,48), 0) + np.where((df.start>28), np.minimum(df.end-28,15), 0)), 0)",coef_escort_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear +util_escort_Duration_Constant_0_hrs,ESCORT - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==0)),coef_escort_Duration_Constant_0_hrs +util_escort_Duration_Constant_0p5_hrs,ESCORT - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==1)),coef_escort_Duration_Constant_0p5_hrs +util_escort_Duration_Constant_1_hrs,ESCORT - Duration Constant: 1 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==2)),coef_escort_Duration_Constant_1_hrs +util_escort_Duration_Constant_1p5hrs,ESCORT - Duration Constant: 1.5hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==3)),coef_escort_Duration_Constant_1p5hrs +util_escort_Duration_Constant_2_hrs,ESCORT - Duration Constant: 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==4)),coef_escort_Duration_Constant_2_hrs +util_escort_Duration_Constant_Longer_than_2_hrs,ESCORT - Duration Constant: Longer than 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration>4)),coef_escort_Duration_Constant_Longer_than_2_hrs +util_escort_Calibration_Constant_Duration_eq_1,ESCORT - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.duration==0)),coef_escort_Calibration_Constant_Duration_eq_1 +util_escort_Calibration_Constant_Duration_eq_2,ESCORT - Calibration Constant - Duration = 2,@(((df.tour_category == 'joint') & (df.tour_type == 'escort') & df.duration==1)),coef_escort_Calibration_Constant_Duration_eq_2 +util_escort_Calibration_Constant_Departure_eq_9,ESCORT - Calibration Constant - Departure = 9,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==9)),coef_escort_Calibration_Constant_Departure_eq_9 +util_escort_Calibration_Constant_Departure_eq_10,ESCORT - Calibration Constant - Departure = 10,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==10)),coef_escort_Calibration_Constant_Departure_eq_10 +util_escort_Calibration_Constant_Departure_eq_23,ESCORT - Calibration Constant - Departure = 23,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==23)),coef_escort_Calibration_Constant_Departure_eq_23 +util_escort_Calibration_Constant_Departure_eq_24,ESCORT - Calibration Constant - Departure = 24,@((df.tour_category == 'joint') & (df.tour_type == 'escort') & (df.start==24)),coef_escort_Calibration_Constant_Departure_eq_24 +#SHOPPING,#SHOPPING,,SHOPPING +util_shop_Joint_Shopping_tours_dummy_Departure_before_10_00_AM_Linear,SHOPPING - Joint Shopping tours dummy: Departure before 10:00 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",coef_shop_Joint_Shopping_tours_dummy_Departure_before_10_00_AM_Linear +util_shop_Joint_Shopping_tours_dummy_Departure_after_10_30_AM_Linear,SHOPPING - Joint Shopping tours dummy: Departure after 10:30 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",coef_shop_Joint_Shopping_tours_dummy_Departure_after_10_30_AM_Linear +util_shop_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs,SHOPPING - Joint Tours Party Size > 2: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_shop_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs +util_shop_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,SHOPPING - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.number_of_participants > 2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shop_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr +util_shop_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs,SHOPPING - Joint Tour with only adults: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.composition=='adults')), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_shop_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs +util_shop_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,SHOPPING - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_shop_Kids_in_Joint_Tour_Duration_lt_1p5_hrs +util_shop_Kids_in_Joint_Tour_Duration_gt_1p5_hr,SHOPPING - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shop_Kids_in_Joint_Tour_Duration_gt_1p5_hr +util_shop_Low_Income_lteq25_000_Duration_gt_1p5_hr,"SHOPPING - Low Income (<=$25,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_less25K) & (df.duration>3)), (np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",coef_shop_Low_Income_lteq25_000_Duration_gt_1p5_hr +util_shop_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs,"SHOPPING - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_25K_to_60K) & (df.duration<3)), (np.where((df.duration>3),np.minimum(df.duration-3,27), 0)), 0)",coef_shop_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs +util_shop_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr,"SHOPPING - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.is_income_60K_to_120K) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,27), 0)), 0)",coef_shop_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr +util_shop_Distance_Duration_lt_1p5_hrs,SHOPPING - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)) * (df.origin_to_destination_distance), 0)",coef_shop_Distance_Duration_lt_1p5_hrs +util_shop_Distance_Duration_gt_1p5_hr,SHOPPING - Distance: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>2)), ((np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance)), 0)",coef_shop_Distance_Duration_gt_1p5_hr +util_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear,SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",coef_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear +util_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Square_root,SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Square root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0))**0.5, 0)",coef_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Square_root +util_shop_Departure_Constant_Before_09_00_AM,SHOPPING - Departure Constant: Before 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start<13)),coef_shop_Departure_Constant_Before_09_00_AM +util_shop_Departure_Constant_09_00_AM_09_30_AM,SHOPPING - Departure Constant: 09:00 AM - 09:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==13)),coef_shop_Departure_Constant_09_00_AM_09_30_AM +util_shop_Departure_Constant_09_30_AM_10_00_AM,SHOPPING - Departure Constant: 09:30 AM - 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==14)),coef_shop_Departure_Constant_09_30_AM_10_00_AM +util_shop_Departure_Constant_10_00_AM_10_30_AM,SHOPPING - Departure Constant: 10:00 AM - 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==15)),coef_shop_Departure_Constant_10_00_AM_10_30_AM +util_shop_Departure_Constant_10_30_AM_11_00_AM,SHOPPING - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start==16)),coef_shop_Departure_Constant_10_30_AM_11_00_AM +util_shop_Departure_Constant_After_11_00_AM,SHOPPING - Departure Constant: After 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>16)),coef_shop_Departure_Constant_After_11_00_AM +util_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear,SHOPPING - Departure Constant: Shift for every 30 minutes after 11:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>17)), (np.where((df.start<12), np.minimum(12-df.start,7),0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",coef_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear +util_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared,SHOPPING - Departure Constant: Shift for every 30 minutes after 11:30 am - Squared,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.start>17)), ((np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)) ** 2), 0)",coef_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared +util_shop_Arrival_Constant_Shift_for_every_30_minutes_before_12_00_pm_Linear,SHOPPING - Arrival Constant: Shift for every 30 minutes before 12:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end<19)), (np.where ((df.end<19), np.minimum(19-df.end,10), 0) + np.where((df.end>38), np.minimum(df.end-38,5), 0)), 0)",coef_shop_Arrival_Constant_Shift_for_every_30_minutes_before_12_00_pm_Linear +util_shop_Arrival_Constant_Before_12_30_PM,SHOPPING - Arrival Constant: Before 12:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end<20)),coef_shop_Arrival_Constant_Before_12_30_PM +util_shop_Arrival_Constant_12_30_PM_03_00_PM,SHOPPING - Arrival Constant: 12:30 PM - 03:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & ( df.end>=20) & (df.end<=24)),coef_shop_Arrival_Constant_12_30_PM_03_00_PM +util_shop_Arrival_Constant_03_00_PM_03_30_PM,SHOPPING - Arrival Constant: 03:00 PM - 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==25)),coef_shop_Arrival_Constant_03_00_PM_03_30_PM +util_shop_Arrival_Constant_03_30_PM_04_00_PM,SHOPPING - Arrival Constant: 03:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==26)),coef_shop_Arrival_Constant_03_30_PM_04_00_PM +util_shop_Arrival_Constant_04_00_PM_04_30_PM,SHOPPING - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==27)),coef_shop_Arrival_Constant_04_00_PM_04_30_PM +util_shop_Arrival_Constant_04_30_PM_05_00_PM,SHOPPING - Arrival Constant: 04:30 PM - 05:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==28)),coef_shop_Arrival_Constant_04_30_PM_05_00_PM +util_shop_Arrival_Constant_05_00_PM_05_30_PM,SHOPPING - Arrival Constant: 05:00 PM - 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end==29)),coef_shop_Arrival_Constant_05_00_PM_05_30_PM +util_shop_Arrival_Constant_05_30_PM_07_00_PM,SHOPPING - Arrival Constant: 05:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>=30) & (df.end<=32)),coef_shop_Arrival_Constant_05_30_PM_07_00_PM +util_shop_Arrival_Constant_07_00_PM_09_30_PM,SHOPPING - Arrival Constant: 07:00 PM - 09:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>=33) & (df.end<=37)),coef_shop_Arrival_Constant_07_00_PM_09_30_PM +util_shop_Arrival_Constant_After_09_30_PM,SHOPPING - Arrival Constant: After 09:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>37)),coef_shop_Arrival_Constant_After_09_30_PM +util_shop_Arrival_Constant_Shift_for_every_30_minutes_after_10_00_pm_Linear,SHOPPING - Arrival Constant: Shift for every 30 minutes after 10:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.end>38)), (np.where((df.end<19), np.minimum(19-df.end,10), 0) + np.where ((df.end>38), np.minimum(df.end-38,5), 0)), 0)",coef_shop_Arrival_Constant_Shift_for_every_30_minutes_after_10_00_pm_Linear +util_shop_Duration_Constant_0_hrs,SHOPPING - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==0)),coef_shop_Duration_Constant_0_hrs +util_shop_Duration_Constant_0p5_hrs,SHOPPING - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==1)),coef_shop_Duration_Constant_0p5_hrs +util_shop_Duration_Constant_1_hrs,SHOPPING - Duration Constant: 1 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==2)),coef_shop_Duration_Constant_1_hrs +util_shop_Duration_Constant_1p5hrs,SHOPPING - Duration Constant: 1.5hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==3)),coef_shop_Duration_Constant_1p5hrs +util_shop_Duration_Constant_2_hrs,SHOPPING - Duration Constant: 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==4)),coef_shop_Duration_Constant_2_hrs +util_shop_Duration_Constant_Longer_than_2_hrs,SHOPPING - Duration Constant: Longer than 2 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>4)),coef_shop_Duration_Constant_Longer_than_2_hrs +util_shop_Duration_Constant_Duration_gt_2p5_hrs_Linear,SHOPPING - Duration Constant: Duration > 2.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,26), 0)), 0)",coef_shop_Duration_Constant_Duration_gt_2p5_hrs_Linear +util_shop_Duration_Constant_Duration_gt_2p5_hrs_Square_root,SHOPPING - Duration Constant: Duration > 2.5 hrs - Square root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration>5)), ((np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,26), 0)) ** 0.5), 0)",coef_shop_Duration_Constant_Duration_gt_2p5_hrs_Square_root +util_shop_Calibration_Constant_Duration_eq_1,SHOPPING - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==0)),coef_shop_Calibration_Constant_Duration_eq_1 +util_shop_Calibration_Constant_Duration_eq_2,SHOPPING - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==1)),coef_shop_Calibration_Constant_Duration_eq_2 +util_shop_Calibration_Constant_Duration_eq_3,SHOPPING - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'shopping') & (df.duration==2)),coef_shop_Calibration_Constant_Duration_eq_3 +#MAINTENANCE,#MAINTENANCE,,MAINTENANCE +util_maint_Joint_Maintenance_tours_dummy_Departure_before_10_00_AM_Linear,MAINTENANCE - Joint Maintenance tours dummy: Departure before 10:00 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",coef_maint_Joint_Maintenance_tours_dummy_Departure_before_10_00_AM_Linear +util_maint_Joint_Maintenance_tours_dummy_Departure_after_10_30_AM_Linear,MAINTENANCE - Joint Maintenance tours dummy: Departure after 10:30 AM - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>15)), (np.where((df.start<=15), np.minimum(15-df.start,7), 0) + np.where((df.start>15), np.minimum(df.start-15,24), 0)), 0)",coef_maint_Joint_Maintenance_tours_dummy_Departure_after_10_30_AM_Linear +util_maint_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs,MAINTENANCE - Joint Tours Party Size > 2: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_maint_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs +util_maint_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,MAINTENANCE - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.number_of_participants > 2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maint_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr +util_maint_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs,MAINTENANCE - Joint Tour with only adults: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.composition=='adults')), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_maint_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs +util_maint_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,MAINTENANCE - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_maint_Kids_in_Joint_Tour_Duration_lt_1p5_hrs +util_maint_Kids_in_Joint_Tour_Duration_gt_1p5_hr,MAINTENANCE - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maint_Kids_in_Joint_Tour_Duration_gt_1p5_hr +util_maint_Low_Income_lteq25_000_Duration_gt_1p5_hr,"MAINTENANCE - Low Income (<=$25,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_less25K) & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maint_Low_Income_lteq25_000_Duration_gt_1p5_hr +util_maint_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs,"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)), 0)",coef_maint_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs +util_maint_Medium_Income_25_001_to_60_000_Duration_gt_1p5_hr,"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maint_Medium_Income_25_001_to_60_000_Duration_gt_1p5_hr +util_maint_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr,"MAINTENANCE - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hr","@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.is_income_60K_to_120K) & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_maint_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr +util_maint_Distance_Duration_lt_1p5_hrs,MAINTENANCE - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0)) *(df.origin_to_destination_distance), 0)",coef_maint_Distance_Duration_lt_1p5_hrs +util_maint_Distance_Duration_gt_1p5_hr,MAINTENANCE - Distance: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), (np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance), 0)",coef_maint_Distance_Duration_gt_1p5_hr +util_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Linear,MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<10)), (np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",coef_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Linear +util_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Square_Root,MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Square Root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<10)), ((np.where((df.start<10), np.minimum(10-df.start,7), 0) + (np.where((df.start>17), np.minimum(df.start-17,24), 0)))** 0.5), 0)",coef_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Square_Root +util_maint_Departure_Constant_Before_08_00_AM,MAINTENANCE - Departure Constant: Before 08:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start<11)),coef_maint_Departure_Constant_Before_08_00_AM +util_maint_Departure_Constant_08_00_AM_08_30_AM,MAINTENANCE - Departure Constant: 08:00 AM - 08:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==11)),coef_maint_Departure_Constant_08_00_AM_08_30_AM +util_maint_Departure_Constant_08_30_AM_09_00_AM,MAINTENANCE - Departure Constant: 08:30 AM - 09:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==12)),coef_maint_Departure_Constant_08_30_AM_09_00_AM +util_maint_Departure_Constant_09_00_AM_09_30_AM,MAINTENANCE - Departure Constant: 09:00 AM - 09:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==13)),coef_maint_Departure_Constant_09_00_AM_09_30_AM +util_maint_Departure_Constant_09_30_AM_10_00_AM,MAINTENANCE - Departure Constant: 09:30 AM - 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==14)),coef_maint_Departure_Constant_09_30_AM_10_00_AM +util_maint_Departure_Constant_10_00_AM_10_30_AM,MAINTENANCE - Departure Constant: 10:00 AM - 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==15)),coef_maint_Departure_Constant_10_00_AM_10_30_AM +util_maint_Departure_Constant_10_30_AM_11_00_AM,MAINTENANCE - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start==16)),coef_maint_Departure_Constant_10_30_AM_11_00_AM +util_maint_Departure_Constant_After_11_00_AM,MAINTENANCE - Departure Constant: After 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>16)),coef_maint_Departure_Constant_After_11_00_AM +util_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear,MAINTENANCE - Departure Constant: Shift for every 30 minutes after 11:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>17)), np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0), 0)",coef_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear +util_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared,MAINTENANCE - Departure Constant: Shift for every 30 minutes after 11:30 am - Squared,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.start>17)), ((np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)) ** 2), 0)",coef_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared +util_maint_Arrival_Constant_Shift_for_every_30_minutes_before_10_00_am_Linear,MAINTENANCE - Arrival Constant: Shift for every 30 minutes before 10:00 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end<15)), (np.where((df.end<15), np.minimum(15-df.end,9), 0) + np.where((df.end>28), np.minimum(df.end-28,16), 0)), 0)",coef_maint_Arrival_Constant_Shift_for_every_30_minutes_before_10_00_am_Linear +util_maint_Arrival_Constant_Before_10_30_AM,MAINTENANCE - Arrival Constant: Before 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end<16)),coef_maint_Arrival_Constant_Before_10_30_AM +util_maint_Arrival_Constant_10_30_AM_11_00_AM,MAINTENANCE - Arrival Constant: 10:30 AM - 11:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==16)),coef_maint_Arrival_Constant_10_30_AM_11_00_AM +util_maint_Arrival_Constant_11_00_AM_11_30_AM,MAINTENANCE - Arrival Constant: 11:00 AM - 11:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==17)),coef_maint_Arrival_Constant_11_00_AM_11_30_AM +util_maint_Arrival_Constant_11_30_AM_01_30_PM,MAINTENANCE - Arrival Constant: 11:30 AM - 01:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=18) & (df.end<=21)),coef_maint_Arrival_Constant_11_30_AM_01_30_PM +util_maint_Arrival_Constant_01_30_PM_02_30_PM,MAINTENANCE - Arrival Constant: 01:30 PM - 02:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=22) & (df.end<=23)),coef_maint_Arrival_Constant_01_30_PM_02_30_PM +util_maint_Arrival_Constant_02_30_PM_04_00_PM,MAINTENANCE - Arrival Constant: 02:30 PM - 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>=24) & (df.end<=26)),coef_maint_Arrival_Constant_02_30_PM_04_00_PM +util_maint_Arrival_Constant_04_00_PM_04_30_PM,MAINTENANCE - Arrival Constant: 04:00 PM - 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end==27)),coef_maint_Arrival_Constant_04_00_PM_04_30_PM +util_maint_Arrival_Constant_After_04_30_PM,MAINTENANCE - Arrival Constant: After 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>27)),coef_maint_Arrival_Constant_After_04_30_PM +util_maint_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear,MAINTENANCE - Arrival Constant: Shift for every 30 minutes after 5:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.end>28)), (np.where((df.end<15), np.minimum(15-df.end,9), 0) + np.where((df.end>28), np.minimum(df.end-28,16), 0)), 0)",coef_maint_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear +util_maint_Duration_Constant_0_hrs,MAINTENANCE - Duration Constant: 0 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==0)),coef_maint_Duration_Constant_0_hrs +util_maint_Duration_Constant_0p5_hrs,MAINTENANCE - Duration Constant: 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==1)),coef_maint_Duration_Constant_0p5_hrs +util_maint_Duration_Constant_Longer_than_0p5_hrs,MAINTENANCE - Duration Constant: Longer than 0.5 hrs,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>1)),coef_maint_Duration_Constant_Longer_than_0p5_hrs +util_maint_Duration_Constant_Duration_gt_1_hrs_Linear,MAINTENANCE - Duration Constant: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_maint_Duration_Constant_Duration_gt_1_hrs_Linear +util_maint_Duration_Constant_Duration_gt_1_hrs_Square_Root,MAINTENANCE - Duration Constant: Duration > 1 hrs - Square Root,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration>2)), ((np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0))** 0.5), 0)",coef_maint_Duration_Constant_Duration_gt_1_hrs_Square_Root +util_maint_Calibration_Constant_Duration_eq_1,MAINTENANCE - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==0)),coef_maint_Calibration_Constant_Duration_eq_1 +util_maint_Calibration_Constant_Duration_eq_2,MAINTENANCE - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==1)),coef_maint_Calibration_Constant_Duration_eq_2 +util_maint_Calibration_Constant_Duration_eq_3,MAINTENANCE - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==2)),coef_maint_Calibration_Constant_Duration_eq_3 +util_maint_Calibration_Constant_Duration_eq_4,MAINTENANCE - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==3)),coef_maint_Calibration_Constant_Duration_eq_4 +util_maint_Calibration_Constant_Duration_eq_5,MAINTENANCE - Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'othmaint') & (df.duration==4)),coef_maint_Calibration_Constant_Duration_eq_5 +#EATOUT,#EAT-OUT,,EATOUT +util_eatout_Distance_to_destination_Duration_lt_1_hrs,EAT-OUT - Distance to destination - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)) * (df.origin_to_destination_distance), 0)",coef_eatout_Distance_to_destination_Duration_lt_1_hrs +util_eatout_Distance_to_destination_Duration_gt_1_hrs,EAT-OUT - Distance to destination - Duration > 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,14), 0)) *(df.origin_to_destination_distance), 0)",coef_eatout_Distance_to_destination_Duration_gt_1_hrs +util_eatout_Low_income_lt25000_Duration_lt_1_hrs,EAT-OUT - Low income (<25000) - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.is_income_less25K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",coef_eatout_Low_income_lt25000_Duration_lt_1_hrs +util_eatout_Medium_25k_to_60k_Duration_lt_1_hrs,EAT-OUT - Medium (25k to 60k) - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",coef_eatout_Medium_25k_to_60k_Duration_lt_1_hrs +util_eatout_Zero_auto_HH_Duration_gt_1_hrs,EAT-OUT - Zero auto HH - Duration > 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.auto_ownership == 0) & (df.duration>2)), (np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_Zero_auto_HH_Duration_gt_1_hrs +util_eatout_Kids_in_Joint_tour_Duration_lt_1_hrs,EAT-OUT - Kids in Joint tour - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",coef_eatout_Kids_in_Joint_tour_Duration_lt_1_hrs +util_eatout_Joint_Tours_Party_Size_greater_than_2_Duration_lt_1_hrs,EAT-OUT - Joint Tours Party Size greater than 2 - Duration < 1 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & (df.number_of_participants > 2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0)), 0)",coef_eatout_Joint_Tours_Party_Size_greater_than_2_Duration_lt_1_hrs +util_eatout_Departure_Constant_11_00_AM_12_00_PM,EAT-OUT - Departure Constant: 11:00 AM - 12:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>=17) & (df.start<=18)),coef_eatout_Departure_Constant_11_00_AM_12_00_PM +util_eatout_Departure_Constant_12_00_PM_12_30_PM,EAT-OUT - Departure Constant: 12:00 PM - 12:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==19),coef_eatout_Departure_Constant_12_00_PM_12_30_PM +util_eatout_Departure_Constant_12_30_PM_to_01_00_PM,EAT-OUT - Departure Constant: 12:30 PM to 01:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==20),coef_eatout_Departure_Constant_12_30_PM_to_01_00_PM +util_eatout_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear,EAT-OUT - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start<29)), (np.where((df.start<29), np.minimum(29-df.start,20), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_eatout_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear +util_eatout_Departure_Constant_Before_05_30_PM,EAT-OUT - Departure Constant: Before 05:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start<30),coef_eatout_Departure_Constant_Before_05_30_PM +util_eatout_Departure_Constant_05_30_PM_06_00_PM,EAT-OUT - Departure Constant: 05:30 PM - 06:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==30),coef_eatout_Departure_Constant_05_30_PM_06_00_PM +util_eatout_Departure_Constant_06_00_PM_06_30_PM,EAT-OUT - Departure Constant: 06:00 PM - 06:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==31),coef_eatout_Departure_Constant_06_00_PM_06_30_PM +util_eatout_Departure_Constant_06_30_PM_07_00_PM,EAT-OUT - Departure Constant: 06:30 PM - 07:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==32),coef_eatout_Departure_Constant_06_30_PM_07_00_PM +util_eatout_Departure_Constant_07_00_PM_07_30_PM,EAT-OUT - Departure Constant: 07:00 PM - 07:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start==33),coef_eatout_Departure_Constant_07_00_PM_07_30_PM +util_eatout_Departure_Constant_After_07_30_PM,EAT-OUT - Departure Constant: After 07:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>33),coef_eatout_Departure_Constant_After_07_30_PM +util_eatout_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear,EAT-OUT - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start>34)), (np.where((df.start<29), np.minimum(29-df.start,20), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_eatout_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear +util_eatout_Arrival_Constant_12_30_PM_to_01_00_PM,EAT-OUT - Arrival Constant: 12:30 PM to 01:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==20),coef_eatout_Arrival_Constant_12_30_PM_to_01_00_PM +util_eatout_Arrival_Constant_01_00_PM_to_01_30_PM,EAT-OUT - Arrival Constant: 01:00 PM to 01:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==21),coef_eatout_Arrival_Constant_01_00_PM_to_01_30_PM +util_eatout_Arrival_Constant_01_30_PM_to_02_00_PM,EAT-OUT - Arrival Constant: 01:30 PM to 02:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==22),coef_eatout_Arrival_Constant_01_30_PM_to_02_00_PM +util_eatout_Arrival_Constant_02_00_PM_to_02_30_PM,EAT-OUT - Arrival Constant: 02:00 PM to 02:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==23),coef_eatout_Arrival_Constant_02_00_PM_to_02_30_PM +util_eatout_Arrival_Constant_Shift_for_every_30_minutes_before_06_30_pm_Linear,EAT-OUT - Arrival Constant: Shift for every 30 minutes before 06:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end<32)), (np.where((df.end<32), np.minimum(32-df.end,21), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_before_06_30_pm_Linear +util_eatout_Arrival_Constant_Before_7_00_PM,EAT-OUT - Arrival Constant: Before 7:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end<33),coef_eatout_Arrival_Constant_Before_7_00_PM +util_eatout_Arrival_Constant_7_00_PM_to_7_30_PM,EAT-OUT - Arrival Constant: 7:00 PM to 7:30 PM,@(df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.end==33),coef_eatout_Arrival_Constant_7_00_PM_to_7_30_PM +util_eatout_Arrival_Constant_7_30_PM_to_8_00_PM,EAT-OUT - Arrival Constant: 7:30 PM to 8:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==34),coef_eatout_Arrival_Constant_7_30_PM_to_8_00_PM +util_eatout_Arrival_Constant_8_00_PM_to_8_30_PM,EAT-OUT - Arrival Constant: 8:00 PM to 8:30 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==35),coef_eatout_Arrival_Constant_8_00_PM_to_8_30_PM +util_eatout_Arrival_Constant_8_30_PM_to_9_00_PM,EAT-OUT - Arrival Constant: 8:30 PM to 9:00 PM,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.end==36),coef_eatout_Arrival_Constant_8_30_PM_to_9_00_PM +util_eatout_Arrival_Constant_After_09_00_PM,EAT-OUT - Arrival Constant: After 09:00 PM,@(df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.end>36),coef_eatout_Arrival_Constant_After_09_00_PM +util_eatout_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear,EAT-OUT - Arrival Constant: Shift for every 30 minutes after 09:30 pm - Linear,"@np.where(((df.tour_type== 'eatout') & (df.end>37) & (df.tour_category == 'joint')), (np.where((df.end<32), np.minimum(32-df.end,21), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear +util_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear,EAT-OUT - Duration Constant: Shift for every 30 minutes more than 3 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>6)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>6), np.minimum(df.duration-6,12), 0)), 0)",coef_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear +util_eatout_Duration_Constant_0_hours,EAT-OUT - Duration Constant: 0 hours,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==0)),coef_eatout_Duration_Constant_0_hours +util_eatout_Duration_Constant_0p5_hous,EAT-OUT - Duration Constant: 0.5 hous,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==1)),coef_eatout_Duration_Constant_0p5_hous +util_eatout_Duration_Constant_1_hour,EAT-OUT - Duration Constant: 1 hour,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.duration==2)),coef_eatout_Duration_Constant_1_hour +util_eatout_Duration_Constant_1p5_hours,EAT-OUT - Duration Constant: 1.5 hours,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==3)),coef_eatout_Duration_Constant_1p5_hours +util_eatout_Duration_Constant_2_hours_or_more,EAT-OUT - Duration Constant: 2 hours or more,@(df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>4),coef_eatout_Duration_Constant_2_hours_or_more +util_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_2p5_hrs_Linear,EAT-OUT - Duration Constant: Shift for every 30 minutes more than 2.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,13), 0)), 0)",coef_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_2p5_hrs_Linear +util_eatout_Calibration_Constant_Duration_eq_1,EAT-OUT - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==0)),coef_eatout_Calibration_Constant_Duration_eq_1 +util_eatout_Calibration_Constant_Duration_eq_2,EAT-OUT - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==1)),coef_eatout_Calibration_Constant_Duration_eq_2 +util_eatout_Calibration_Constant_Duration_eq_3,EAT-OUT - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.duration==2)),coef_eatout_Calibration_Constant_Duration_eq_3 +util_eatout_Calibration_Constant_Duration_eq_4,EAT-OUT - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.duration==3)),coef_eatout_Calibration_Constant_Duration_eq_4 +util_eatout_Calibration_Constant_Departure_eq_1,EAT-OUT - Calibration Constant - Departure = 1,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start == 1)),coef_eatout_Calibration_Constant_Departure_eq_1 +util_eatout_Calibration_Constant_Departure_eq_2,EAT-OUT - Calibration Constant - Departure = 2,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start == 2)),coef_eatout_Calibration_Constant_Departure_eq_2 +util_eatout_Calibration_Constant_Departure_eq_3,EAT-OUT - Calibration Constant - Departure = 3,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.start == 3)),coef_eatout_Calibration_Constant_Departure_eq_3 +util_eatout_Calibration_Constant_Departure_eq_17,EAT-OUT - Calibration Constant - Departure = 17,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==17)),coef_eatout_Calibration_Constant_Departure_eq_17 +util_eatout_Calibration_Constant_Departure_eq_18,EAT-OUT - Calibration Constant - Departure = 18,@((df.tour_category == 'joint') & (df.tour_type== 'eatout') & (df.start ==18)),coef_eatout_Calibration_Constant_Departure_eq_18 +util_eatout_Calibration_Constant_Departure_eq_19,EAT-OUT - Calibration Constant - Departure = 19,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==19)),coef_eatout_Calibration_Constant_Departure_eq_19 +util_eatout_Calibration_Constant_Departure_eq_20,EAT-OUT - Calibration Constant - Departure = 20,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==20)),coef_eatout_Calibration_Constant_Departure_eq_20 +util_eatout_Calibration_Constant_Departure_eq_21,EAT-OUT - Calibration Constant - Departure = 21,@((df.tour_category == 'joint') & (df.tour_type == 'eatout') & (df.start ==21)),coef_eatout_Calibration_Constant_Departure_eq_21 +#SOCIAL,#SOCIAL,,SOCIAL +util_social_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear,SOCIAL - Retiree/ Non-working senior only HH: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.retired_adults_only_hh) & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",coef_social_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear +util_social_Zero_auto_households_Duration_lt_1p5_hrs_Linear,SOCIAL - Zero auto households: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership == 0) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",coef_social_Zero_auto_households_Duration_lt_1p5_hrs_Linear +util_social_Zero_auto_households_Duration_gt_1p5_hrs_Linear,SOCIAL - Zero auto households: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership == 0) & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",coef_social_Zero_auto_households_Duration_gt_1p5_hrs_Linear +util_social_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear,SOCIAL - Number of auto more that number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint')&(df.tour_type == 'social') & (df.auto_ownership > 0) &(df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_social_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear +util_social_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear,SOCIAL - Number of auto more that number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_social_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear +util_social_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,SOCIAL - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_social_Kids_in_Joint_Tour_Duration_lt_1p5_hrs +util_social_Kids_in_Joint_Tour_Duration_gt_1p5_hr,SOCIAL - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3) & ((df.composition=='children')|(df.composition=='mixed'))), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_social_Kids_in_Joint_Tour_Duration_gt_1p5_hr +util_social_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,SOCIAL - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3) & (df.number_of_participants > 2)), (np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0)",coef_social_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr +util_social_Auto_Distance_Duration_lt_1_hrs_Linear,SOCIAL - Auto Distance: Duration < 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) * (df.origin_to_destination_distance)), 0) ",coef_social_Auto_Distance_Duration_lt_1_hrs_Linear +util_social_Auto_Distance_Duration_gt_1_hrs_Linear,SOCIAL - Auto Distance: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0) * (df.origin_to_destination_distance)), 0)",coef_social_Auto_Distance_Duration_gt_1_hrs_Linear +util_social_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,48), 0) + np.where((df.start>48), np.minimum(df.start-48,48), 0)), 0)",coef_social_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear +util_social_Departure_Constant_Before_09_00_AM,SOCIAL - Departure Constant: Before 09:00 AM,@(df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<13),coef_social_Departure_Constant_Before_09_00_AM +util_social_Departure_Constant_09_00_AM_to_09_30_AM,SOCIAL - Departure Constant: 09:00 AM to 09:30 AM,@(df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==13),coef_social_Departure_Constant_09_00_AM_to_09_30_AM +util_social_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<29), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear +util_social_Departure_Constant_Before_05_30_PM,SOCIAL - Departure Constant: Before 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start<30)),coef_social_Departure_Constant_Before_05_30_PM +util_social_Departure_Constant_05_30_PM_06_00_PM,SOCIAL - Departure Constant: 05:30 PM - 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==30)),coef_social_Departure_Constant_05_30_PM_06_00_PM +util_social_Departure_Constant_06_00_PM_06_30_PM,SOCIAL - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==31)),coef_social_Departure_Constant_06_00_PM_06_30_PM +util_social_Departure_Constant_06_30_PM_07_00_PM,SOCIAL - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==32)),coef_social_Departure_Constant_06_30_PM_07_00_PM +util_social_Departure_Constant_07_00_PM_07_30_PM,SOCIAL - Departure Constant: 07:00 PM - 07:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start==33)),coef_social_Departure_Constant_07_00_PM_07_30_PM +util_social_Departure_Constant_After_07_30_PM,SOCIAL - Departure Constant: After 07:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start>33)),coef_social_Departure_Constant_After_07_30_PM +util_social_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear,SOCIAL - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.start>34), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear +util_social_Arrival_Constant_03_00_PM_to_03_30_PM,SOCIAL - Arrival Constant: 03:00 PM to 03:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==25)),coef_social_Arrival_Constant_03_00_PM_to_03_30_PM +util_social_Arrival_Constant_03_30_PM_to_04_00_PM,SOCIAL - Arrival Constant: 03:30 PM to 04:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==26)),coef_social_Arrival_Constant_03_30_PM_to_04_00_PM +util_social_Arrival_Constant_04_00_PM_to_04_30_PM,SOCIAL - Arrival Constant: 04:00 PM to 04:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==27)),coef_social_Arrival_Constant_04_00_PM_to_04_30_PM +util_social_Arrival_Constant_05_00_PM_to_06_00_PM,SOCIAL - Arrival Constant: 05:00 PM to 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>=29) & (df.end<=30)),coef_social_Arrival_Constant_05_00_PM_to_06_00_PM +util_social_Arrival_Constant_Shift_for_every_30_minutes_before_08_00_pm_Linear,SOCIAL - Arrival Constant: Shift for every 30 minutes before 08:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end<35)), (np.where((df.end<35), np.minimum(35-df.end,48), 0) + np.where((df.end>40), np.minimum(df.end-40,48), 0)), 0)",coef_social_Arrival_Constant_Shift_for_every_30_minutes_before_08_00_pm_Linear +util_social_Arrival_Constant_Before_8_30_PM,SOCIAL - Arrival Constant: Before 8:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end<36)),coef_social_Arrival_Constant_Before_8_30_PM +util_social_Arrival_Constant_8_30_PM_to_9_00_PM,SOCIAL - Arrival Constant: 8:30 PM to 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==36)),coef_social_Arrival_Constant_8_30_PM_to_9_00_PM +util_social_Arrival_Constant_9_00_PM_to_9_30_PM,SOCIAL - Arrival Constant: 9:00 PM to 9:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==37)),coef_social_Arrival_Constant_9_00_PM_to_9_30_PM +util_social_Arrival_Constant_9_30_PM_to10_00_PM,SOCIAL - Arrival Constant: 9:30 PM to10:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==38)),coef_social_Arrival_Constant_9_30_PM_to10_00_PM +util_social_Arrival_Constant_10_00_PM_to_10_30_PM,SOCIAL - Arrival Constant: 10:00 PM to 10:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end==39)),coef_social_Arrival_Constant_10_00_PM_to_10_30_PM +util_social_Arrival_Constant_After_10_30_PM,SOCIAL - Arrival Constant: After 10:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>39)),coef_social_Arrival_Constant_After_10_30_PM +util_social_Arrival_Constant_Shift_for_every_30_minutes_after_11_00_pm_Linear,SOCIAL - Arrival Constant: Shift for every 30 minutes after 11:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.end>40)), (np.where((df.end<35), np.minimum(35-df.end,48), 0) +np.where((df.end>40),np.minimum(df.end-40,48),0)), 0)",coef_social_Arrival_Constant_Shift_for_every_30_minutes_after_11_00_pm_Linear +util_social_Duration_Constant_Shift_for_every_30_minutes_less_than_1p5_hrs_Linear,SOCIAL - Duration Constant: Shift for every 30 minutes less than 1.5 hrs - Linear,"@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<3)) * ((np.minimum(3-df.duration,47)*(df.duration<3)) + (np.minimum(df.duration-6,47)*(df.duration>6)))",coef_social_Duration_Constant_Shift_for_every_30_minutes_less_than_1p5_hrs_Linear +util_social_Duration_Constant_Less_than_2_hours,SOCIAL - Duration Constant: Less than 2 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration<4)),coef_social_Duration_Constant_Less_than_2_hours +util_social_Duration_Constant_2_hours,SOCIAL - Duration Constant: 2 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration==4)),coef_social_Duration_Constant_2_hours +util_social_Duration_Constant_2p5_hours,SOCIAL - Duration Constant: 2.5 hours,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration==5)),coef_social_Duration_Constant_2p5_hours +util_social_Duration_Constant_3_hours_or_more,SOCIAL - Duration Constant: 3 hours or more,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>5)),coef_social_Duration_Constant_3_hours_or_more +util_social_Duration_Constant_Shift_for_every_30_minutes_more_than_3p5_hrs_Linear,SOCIAL - Duration Constant: Shift for every 30 minutes more than 3.5 hrs - Linear,"@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration>6)) * ((np.minimum(3-df.duration,47)*(df.duration<3)) + (np.minimum(df.duration-6,47)*(df.duration>6)))",coef_social_Duration_Constant_Shift_for_every_30_minutes_more_than_3p5_hrs_Linear +util_social_Calibration_Constant_Duration_eq_1,SOCIAL - Calibration Constant - Duration = 1,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==0)),coef_social_Calibration_Constant_Duration_eq_1 +util_social_Calibration_Constant_Duration_eq_2,SOCIAL - Calibration Constant - Duration = 2,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration == 1)),coef_social_Calibration_Constant_Duration_eq_2 +util_social_Calibration_Constant_Duration_eq_3,SOCIAL - Calibration Constant - Duration = 3,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==2)),coef_social_Calibration_Constant_Duration_eq_3 +util_social_Calibration_Constant_Duration_eq_4,SOCIAL - Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==3)),coef_social_Calibration_Constant_Duration_eq_4 +util_social_Calibration_Constant_Duration_eq_5,SOCIAL - Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==4)),coef_social_Calibration_Constant_Duration_eq_5 +util_social_Calibration_Constant_Duration_eq_6,SOCIAL - Calibration Constant - Duration = 6,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==5)),coef_social_Calibration_Constant_Duration_eq_6 +util_social_Calibration_Constant_Duration_eq_7,SOCIAL - Calibration Constant - Duration = 7,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==6)),coef_social_Calibration_Constant_Duration_eq_7 +util_social_Calibration_Constant_Duration_eq_8,SOCIAL - Calibration Constant - Duration = 8,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==7)),coef_social_Calibration_Constant_Duration_eq_8 +util_social_Calibration_Constant_Duration_eq_9,SOCIAL - Calibration Constant - Duration = 9,@((df.tour_category == 'joint') & (df.tour_type == 'social') & (df.duration ==8)),coef_social_Calibration_Constant_Duration_eq_9 +#DISCRETIONARY,#DISCRETIONARY,,DISCRETIONARY +util_disc_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear,DISCRETIONARY - Retiree/ Non-working senior only HH: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.retired_adults_only_hh) & (df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_disc_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear +util_disc_Zero_auto_households_Duration_lt_1p5_hrs_Linear,DISCRETIONARY - Zero auto households: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership == 0) & (df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_disc_Zero_auto_households_Duration_lt_1p5_hrs_Linear +util_disc_Zero_auto_households_Duration_gt_1p5_hrs_Linear,DISCRETIONARY - Zero auto households: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership == 0) & (df.tour_type == 'othdiscr') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_disc_Zero_auto_households_Duration_gt_1p5_hrs_Linear +util_disc_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear,DISCRETIONARY - Number of auto more that number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership > 0) & (df.tour_type == 'othdiscr') & (df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)),0)",coef_disc_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear +util_disc_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear,DISCRETIONARY - Number of auto more that number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.auto_ownership > 0) &(df.tour_type == 'othdiscr')&(df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_disc_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear +util_disc_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,DISCRETIONARY - Kids in Joint Tour: Duration < 1.5 hrs,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3) & ((df.ptype == 6) | (df.ptype == 7) | (df.ptype == 8))), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_disc_Kids_in_Joint_Tour_Duration_lt_1p5_hrs +util_disc_Kids_in_Joint_Tour_Duration_gt_1p5_hr,DISCRETIONARY - Kids in Joint Tour: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3) & ((df.ptype == 6) | (df.ptype == 7) | (df.ptype == 8))), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_disc_Kids_in_Joint_Tour_Duration_gt_1p5_hr +util_disc_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,DISCRETIONARY - Joint Tours Party Size > 2: Duration > 1.5 hr,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3) & (df.number_of_participants > 2)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)), 0)",coef_disc_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr +util_disc_Auto_Distance_Duration_lt_1_hrs_Linear,DISCRETIONARY - Auto Distance: Duration < 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0)) * (df.origin_to_destination_distance), 0)",coef_disc_Auto_Distance_Duration_lt_1_hrs_Linear +util_disc_Auto_Distance_Duration_gt_1_hrs_Linear,DISCRETIONARY - Auto Distance: Duration > 1 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3)), (np.where((df.duration>3), np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",coef_disc_Auto_Distance_Duration_gt_1_hrs_Linear +util_disc_Departure_Constant_Shift_for_every_30_minutes_before_07_30_pm_Linear,DISCRETIONARY - Departure Constant: Shift for every 30 minutes before 07:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<9)), (np.where((df.start<9), np.minimum(9-df.start,48), 0) + np.where((df.start>48), np.minimum(df.start-48,48),0)), 0)",coef_disc_Departure_Constant_Shift_for_every_30_minutes_before_07_30_pm_Linear +util_disc_Departure_Constant_Before_7_30_AM_,DISCRETIONARY - Departure Constant: Before 7:30 AM ,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<10)),coef_disc_Departure_Constant_Before_7_30_AM_ +util_disc_Departure_Constant_7_30_AM_to_8_00_AM,DISCRETIONARY - Departure Constant: 7:30 AM to 8:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==10)),coef_disc_Departure_Constant_7_30_AM_to_8_00_AM +util_disc_Departure_Constant_8_00_AM_to_8_30_AM,DISCRETIONARY - Departure Constant: 8:00 AM to 8:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==11)),coef_disc_Departure_Constant_8_00_AM_to_8_30_AM +util_disc_Departure_Constant_8_30_AM_to_9_00_AM,DISCRETIONARY - Departure Constant: 8:30 AM to 9:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==12)),coef_disc_Departure_Constant_8_30_AM_to_9_00_AM +util_disc_Departure_Constant_9_00_AM_to_9_30_AM,DISCRETIONARY - Departure Constant: 9:00 AM to 9:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==13)),coef_disc_Departure_Constant_9_00_AM_to_9_30_AM +util_disc_Departure_Constant_9_30_AM_to_10_00_AM,DISCRETIONARY - Departure Constant: 9:30 AM to 10:00 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==14)),coef_disc_Departure_Constant_9_30_AM_to_10_00_AM +util_disc_Departure_Constant_10_00_AM_to_10_30_AM,DISCRETIONARY - Departure Constant: 10:00 AM to 10:30 AM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==15)),coef_disc_Departure_Constant_10_00_AM_to_10_30_AM +util_disc_Departure_Constant_Shift_for_every_30_minutes_before_04_30_pm_Linear,DISCRETIONARY - Departure Constant: Shift for every 30 minutes before 04:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<28)), (np.where((df.start<28), np.minimum(28-df.start,8),0) + np.where((df.start>33), np.minimum(df.start-33,6), 0)), 0)",coef_disc_Departure_Constant_Shift_for_every_30_minutes_before_04_30_pm_Linear +util_disc_Departure_Constant_Before_05_00_PM,DISCRETIONARY - Departure Constant: Before 05:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start<29)),coef_disc_Departure_Constant_Before_05_00_PM +util_disc_Departure_Constant_05_00_PM_05_30_PM,DISCRETIONARY - Departure Constant: 05:00 PM - 05:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==29)),coef_disc_Departure_Constant_05_00_PM_05_30_PM +util_disc_Departure_Constant_05_30_PM_06_00_PM,DISCRETIONARY - Departure Constant: 05:30 PM - 06:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==30)),coef_disc_Departure_Constant_05_30_PM_06_00_PM +util_disc_Departure_Constant_06_00_PM_06_30_PM,DISCRETIONARY - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==31)),coef_disc_Departure_Constant_06_00_PM_06_30_PM +util_disc_Departure_Constant_06_30_PM_07_00_PM,DISCRETIONARY - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==32)),coef_disc_Departure_Constant_06_30_PM_07_00_PM +util_disc_Departure_Constant_After_07_00_PM,DISCRETIONARY - Departure Constant: After 07:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start>32)),coef_disc_Departure_Constant_After_07_00_PM +util_disc_Departure_Constant_Shift_for_every_30_minutes_after_07_30_pm_Linear,DISCRETIONARY - Departure Constant: Shift for every 30 minutes after 07:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start>33)), (np.where((df.start<28), np.minimum(28-df.start,8), 0) + np.where((df.start>33), np.minimum(df.start-33,6), 0)), 0)",coef_disc_Departure_Constant_Shift_for_every_30_minutes_after_07_30_pm_Linear +util_disc_Arrival_Constant_Shift_for_every_30_minutes_before_06_00_pm_Linear,DISCRETIONARY - Arrival Constant: Shift for every 30 minutes before 06:00 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end<31)), (np.where((df.end<31), np.minimum(31-df.end,48), 0) + np.where((df.end>37), np.minimum(df.end-37,48), 0)), 0)",coef_disc_Arrival_Constant_Shift_for_every_30_minutes_before_06_00_pm_Linear +util_disc_Arrival_Constant_Before_6_30_PM,DISCRETIONARY - Arrival Constant: Before 6:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end<32)),coef_disc_Arrival_Constant_Before_6_30_PM +util_disc_Arrival_Constant_6_30_PM_to_7_00_PM,DISCRETIONARY - Arrival Constant: 6:30 PM to 7:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==32)),coef_disc_Arrival_Constant_6_30_PM_to_7_00_PM +util_disc_Arrival_Constant_7_00_PM_to_7_30_PM,DISCRETIONARY - Arrival Constant: 7:00 PM to 7:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==33)),coef_disc_Arrival_Constant_7_00_PM_to_7_30_PM +util_disc_Arrival_Constant_7_30_PM_to_8_00_PM,DISCRETIONARY - Arrival Constant: 7:30 PM to 8:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==34)),coef_disc_Arrival_Constant_7_30_PM_to_8_00_PM +util_disc_Arrival_Constant_8_00_PM_to_8_30_PM,DISCRETIONARY - Arrival Constant: 8:00 PM to 8:30 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==35)),coef_disc_Arrival_Constant_8_00_PM_to_8_30_PM +util_disc_Arrival_Constant_8_30_PM_to_9_00_PM,DISCRETIONARY - Arrival Constant: 8:30 PM to 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end==36)),coef_disc_Arrival_Constant_8_30_PM_to_9_00_PM +util_disc_Arrival_Constant_After_9_00_PM,DISCRETIONARY - Arrival Constant: After 9:00 PM,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end>36)),coef_disc_Arrival_Constant_After_9_00_PM +util_disc_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear,DISCRETIONARY - Arrival Constant: Shift for every 30 minutes after 09:30 pm - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.end>37)), (np.where((df.end<31), np.minimum(31-df.end,48), 0) + np.where((df.end>37), np.minimum(df.end-37,48),0)), 0)",coef_disc_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear +util_disc_Duration_Constant_0_hours,DISCRETIONARY - Duration Constant: 0 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==0),coef_disc_Duration_Constant_0_hours +util_disc_Duration_Constant_0p5_hous,DISCRETIONARY - Duration Constant: 0.5 hous,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==1),coef_disc_Duration_Constant_0p5_hous +util_disc_Duration_Constant_1_hour,DISCRETIONARY - Duration Constant: 1 hour,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==2),coef_disc_Duration_Constant_1_hour +util_disc_Duration_Constant_1p5_hours,DISCRETIONARY - Duration Constant: 1.5 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==3),coef_disc_Duration_Constant_1p5_hours +util_disc_Duration_Constant_2_hours,DISCRETIONARY - Duration Constant: 2 hours,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==4),coef_disc_Duration_Constant_2_hours +util_disc_Duration_Constant_2p5_hours_or_more,DISCRETIONARY - Duration Constant: 2.5 hours or more,@(df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>4),coef_disc_Duration_Constant_2p5_hours_or_more +util_disc_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear,DISCRETIONARY - Duration Constant: Shift for every 30 minutes more than 3 hrs - Linear,"@np.where(((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration>5)), (np.where((df.duration<0), np.minimum(0-df.duration,47), 0) + np.where((df.duration>5), np.minimum(df.duration-5,47), 0)), 0)",coef_disc_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear +util_disc_Calibration_Constant_Duration_eq_4,DISCRETIONARY -Calibration Constant - Duration = 4,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==3)),coef_disc_Calibration_Constant_Duration_eq_4 +util_disc_Calibration_Constant_Duration_eq_5,DISCRETIONARY -Calibration Constant - Duration = 5,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.duration==4)),coef_disc_Calibration_Constant_Duration_eq_5 +util_disc_Calibration_Constant_Departure_eq_29,DISCRETIONARY -Calibration Constant - Departure = 29,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==29)),coef_disc_Calibration_Constant_Departure_eq_29 +util_disc_Calibration_Constant_Departure_eq_30,DISCRETIONARY -Calibration Constant - Departure = 30,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==30)),coef_disc_Calibration_Constant_Departure_eq_30 +util_disc_Calibration_Constant_Departure_eq_31,DISCRETIONARY -Calibration Constant - Departure = 31,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==31)),coef_disc_Calibration_Constant_Departure_eq_31 +util_disc_Calibration_Constant_Departure_eq_32,DISCRETIONARY -Calibration Constant - Departure = 32,@((df.tour_category == 'joint') & (df.tour_type == 'othdiscr') & (df.start==32)),coef_disc_Calibration_Constant_Departure_eq_32 diff --git a/configs/tour_scheduling_joint_coeffs.csv b/configs/tour_scheduling_joint_coeffs.csv index 1e3f0fb..f9b1c2e 100644 --- a/configs/tour_scheduling_joint_coeffs.csv +++ b/configs/tour_scheduling_joint_coeffs.csv @@ -1 +1,400 @@ coefficient_name,value,constrain +coef_escort_Mode_Choice_Logsum,1.173173034,F +coef_escort_Distance_to_destination_Duration_less_than_0p5_hours_depart_and_arrive_in_the_same_period,-0.335017673,F +coef_escort_Distance_to_destination_Duration_greater_than_0p5_hours,0.005298165,F +coef_escort_Fulltime_worker_Departure_after_8_00_am_Linear,-0.037980109,F +coef_escort_Fulltime_worker_Departure_after_3_00_am_Linear,0.163254125,F +coef_escort_Fulltime_worker_Duration_lt_0p5_hrs,-0.275077482,F +coef_escort_Fulltime_worker_Duration_gt_0p5_hrs,0.051530545,F +coef_escort_University_student_Duration_lt_0p5_hrs,-0.426802718,F +coef_escort_Nondriving_age_student_Duration_gt_0p5_hrs,0.240582361,F +coef_escort_Driving_age_student_Duration_lt_0p5_hrs,-0.554146191,F +coef_escort_Driving_age_student_Duration_gt_0p5_hrs,0.299387708,F +coef_escort_Preschool_kid_Duration_gt_0p5_hrs,0.195482563,F +coef_escort_Medhigh_income_60k_to_120k_Duration_gt_0p5_hrs,-0.029281467,F +coef_escort_Households_with_no_kids_Dummy_1_0_Departure_before_7_30_AM,0.589083327,F +coef_escort_Households_with_no_kids_Dummy_1_0_Departure_after_8_00_AM,0.086690827,F +coef_escort_Households_with_no_kids_Dummy_1_0_Departure_before_2_30_PM,0.477582648,F +coef_escort_Households_with_no_kids_Dummy_1_0_Departure_after_3_00_PM,-0.204065502,F +coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_8_00_AM,-0.360039254,F +coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_8_30_AM,0.091614107,F +coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_before_3_00_PM,0.432854268,F +coef_escort_Households_with_no_kids_Dummy_1_0_Arrival_after_3_30_PM,0.131037275,F +coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM,0.109700265,F +coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_3_00_PM,-0.224568648,F +coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_8_00_AM,-0.357416434,F +coef_escort_PreSchool_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_before_3_00_PM,0.629285298,F +coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Departure_after_8_00_AM,0.039005148,F +coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_8_30_AM,-0.06556611,F +coef_escort_Driving_age_School_Child_in_HH_with_Mandatory_tour_Dummy_1_0_Arrival_after_3_30_PM,0.117680977,F +coef_escort_Number_of_autos_greater_than_number_of_adults_Duration_gt_0p5_hrs,-0.057322708,F +coef_escort_Number_of_Individual_Tours_excluding_escorting_Duration_gt_0p5_hrs,-0.062899692,F +coef_escort_Number_of_joint_tours_Duration_gt_0p5_hrs,-0.048533895,F +coef_escort_Departure_Constant_Shift_for_every_30_minutes_before_06_30_am_Linear,-1.469240002,F +coef_escort_Departure_Constant_Before_07_00_AM,-2.070292862,F +coef_escort_Departure_Constant_07_00_AM_07_30_AM,-0.642734296,F +coef_escort_Departure_Constant_07_30_AM_08_00_AM,0,T +coef_escort_Departure_Constant_08_00_AM_08_30_AM,-0.214617667,F +coef_escort_Departure_Constant_08_30_AM_09_00_AM,-0.147266606,F +coef_escort_Departure_Constant_After_09_00_AM,-1.356686422,F +coef_escort_Departure_Constant_01_30_PM_02_00_PM,0.368092381,F +coef_escort_Departure_Constant_02_00_PM_02_30_PM,1.166803383,F +coef_escort_Departure_Constant_02_30_PM_03_00_PM,1.28466083,F +coef_escort_Departure_Constant_03_00_PM_03_30_PM,0.581891245,F +coef_escort_Departure_Constant_After_03_30_PM,0.834510243,F +coef_escort_Departure_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear,0.175257649,F +coef_escort_Departure_Constant_Shift_for_every_30_minutes_after_4_00_pm_Linear,-0.019161202,F +coef_escort_Arrival_Constant_Shift_for_every_30_minutes_before_6_30_am_Linear,0.44978138,F +coef_escort_Arrival_Constant_Before_07_00_AM,0.549584585,F +coef_escort_Arrival_Constant_07_00_AM_07_30_AM,0.488181278,F +coef_escort_Arrival_Constant_07_30_AM_08_00_AM,0.236447651,F +coef_escort_Arrival_Constant_08_00_AM_08_30_AM,0,T +coef_escort_Arrival_Constant_08_30_AM_09_00_AM,-0.683756801,F +coef_escort_Arrival_Constant_After_09_00_AM,-1.428888485,F +coef_escort_Arrival_Constant_02_30_PM_03_00_PM,1.311480662,F +coef_escort_Arrival_Constant_03_00_PM_03_30_PM,1.316883154,F +coef_escort_Arrival_Constant_03_30_PM_04_00_PM,1.396838392,F +coef_escort_Arrival_Constant_04_00_PM_04_30_PM,1.03146139,F +coef_escort_Arrival_Constant_After_04_30_PM,0.907344583,F +coef_escort_Arrival_Constant_Shift_for_every_30_minutes_after_9_30_am_Linear,-0.148408887,F +coef_escort_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear,-0.389082896,F +coef_escort_Duration_Constant_0_hrs,-0.173757322,F +coef_escort_Duration_Constant_0p5_hrs,0,T +coef_escort_Duration_Constant_1_hrs,-0.431287743,F +coef_escort_Duration_Constant_1p5hrs,-0.700473959,F +coef_escort_Duration_Constant_2_hrs,-1.071871358,F +coef_escort_Duration_Constant_Longer_than_2_hrs,-1.691098421,F +coef_escort_Calibration_Constant_Duration_eq_1,-0.047200214,F +coef_escort_Calibration_Constant_Duration_eq_2,0.035611332,F +coef_escort_Calibration_Constant_Departure_eq_9,0.106814756,F +coef_escort_Calibration_Constant_Departure_eq_10,0.215386864,F +coef_escort_Calibration_Constant_Departure_eq_23,-0.255087318,F +coef_escort_Calibration_Constant_Departure_eq_24,-0.296870428,F +coef_shop_Joint_Shopping_tours_dummy_Departure_before_10_00_AM_Linear,-0.190727375,F +coef_shop_Joint_Shopping_tours_dummy_Departure_after_10_30_AM_Linear,-0.029551313,F +coef_shop_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs,-0.291965906,F +coef_shop_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,0.045755784,F +coef_shop_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs,-0.571185116,F +coef_shop_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,-0.468815184,F +coef_shop_Kids_in_Joint_Tour_Duration_gt_1p5_hr,-0.047470039,F +coef_shop_Driving_age_student_Duration_gt_1p5_hr,0.122149101,F +coef_shop_Fulltime_worker_Duration_gt_1p5_hr,-0.037886459,F +coef_shop_Nondriving_Student_Duration_gt_1p5_hr,0.10247157,F +coef_shop_Preschool_Child_Duration_lt_1p5_hrs,-1.882944033,F +coef_shop_Part_Time_Worker_Duration_lt_1p5_hrs,-0.197455071,F +coef_shop_Part_Time_Worker_Duration_gt_1p5_hr,-0.045152663,F +coef_shop_Retired_Duration_lt_1p5_hrs,-0.264728908,F +coef_shop_Retired_Duration_gt_1p5_hr,-0.042981757,F +coef_shop_University_Student_Duration_gt_1p5_hr,0.045926523,F +coef_shop_Female_Duration_lt_1p5_hrs,-0.417208254,F +coef_shop_Female_Duration_gt_1p5_hr,0.045801918,F +coef_shop_Low_Income_lteq25_000_Duration_gt_1p5_hr,0.040776383,F +coef_shop_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs,0.108462927,F +coef_shop_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr,-0.037893416,F +coef_shop_Distance_Duration_lt_1p5_hrs,-0.214802537,F +coef_shop_Distance_Duration_gt_1p5_hr,0.007991656,F +coef_shop_Time_Pressure_Duration_gt_1p5_hrs,0.013503327,F +coef_shop_Number_of_additional_individual_shop_and_maintp_tours_Duration_lt_1p5_hrs,0.078844289,F +coef_shop_Number_of_additional_individual_shop_and_maintp_tours_Duration_gt_1p5_hrs,-0.115431492,F +coef_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear,-0.959875456,F +coef_shop_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Square_root,1.112594898,F +coef_shop_Departure_Constant_Before_09_00_AM,-0.446394064,F +coef_shop_Departure_Constant_09_00_AM_09_30_AM,-0.021669265,F +coef_shop_Departure_Constant_09_30_AM_10_00_AM,-0.282978638,F +coef_shop_Departure_Constant_10_00_AM_10_30_AM,0,T +coef_shop_Departure_Constant_10_30_AM_11_00_AM,-0.309421311,F +coef_shop_Departure_Constant_After_11_00_AM,-0.541073357,F +coef_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear,-0.072013428,F +coef_shop_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared,-0.000653398,F +coef_shop_Arrival_Constant_Shift_for_every_30_minutes_before_12_00_pm_Linear,-0.18376635,F +coef_shop_Arrival_Constant_Before_12_30_PM,-0.716195343,F +coef_shop_Arrival_Constant_12_30_PM_03_00_PM,-0.502714001,F +coef_shop_Arrival_Constant_03_00_PM_03_30_PM,-0.167868872,F +coef_shop_Arrival_Constant_03_30_PM_04_00_PM,-0.156786941,F +coef_shop_Arrival_Constant_04_00_PM_04_30_PM,0,T +coef_shop_Arrival_Constant_04_30_PM_05_00_PM,-0.057314044,F +coef_shop_Arrival_Constant_05_00_PM_05_30_PM,-0.580040851,F +coef_shop_Arrival_Constant_05_30_PM_07_00_PM,-0.32239566,F +coef_shop_Arrival_Constant_07_00_PM_09_30_PM,-0.347828147,F +coef_shop_Arrival_Constant_After_09_30_PM,-1.123574723,F +coef_shop_Arrival_Constant_Shift_for_every_30_minutes_after_10_00_pm_Linear,-0.499770654,F +coef_shop_Duration_Constant_0_hrs,-0.131743185,F +coef_shop_Duration_Constant_0p5_hrs,0.888857137,F +coef_shop_Duration_Constant_1_hrs,0,T +coef_shop_Duration_Constant_1p5hrs,-0.333413031,F +coef_shop_Duration_Constant_2_hrs,-0.850897912,F +coef_shop_Duration_Constant_Longer_than_2_hrs,-1.203783479,F +coef_shop_Duration_Constant_Duration_gt_2p5_hrs_Linear,-0.293581223,F +coef_shop_Duration_Constant_Duration_gt_2p5_hrs_Square_root,-0.215759138,F +coef_shop_Calibration_Constant_Duration_eq_1,-0.138450424,F +coef_shop_Calibration_Constant_Duration_eq_2,-0.092704403,F +coef_shop_Calibration_Constant_Duration_eq_3,-0.087738073,F +coef_maint_Joint_Maintenance_tours_dummy_Departure_before_10_00_AM_Linear,-0.139150288,F +coef_maint_Joint_Maintenance_tours_dummy_Departure_after_10_30_AM_Linear,-0.065786345,F +coef_maint_Joint_Tours_Party_Size_gt_2_Duration_lt_1p5_hrs,-0.291965906,F +coef_maint_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,0.045755784,F +coef_maint_Joint_Tour_with_only_adults_Duration_lt_1p5_hrs,-0.571185116,F +coef_maint_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,-0.468815184,F +coef_maint_Kids_in_Joint_Tour_Duration_gt_1p5_hr,-0.047470039,F +coef_maint_Fulltime_worker_Duration_gt_1p5_hr,-0.037886459,F +coef_maint_Nondriving_Student_Duration_gt_1p5_hr,0.10247157,F +coef_maint_Preschool_Child_Duration_lt_1p5_hrs,-1.882944033,F +coef_maint_Part_Time_Worker_Duration_lt_1p5_hrs,-0.197455071,F +coef_maint_Part_Time_Worker_Duration_gt_1p5_hr,-0.045152663,F +coef_maint_Retired_Duration_lt_1p5_hrs,-0.264728908,F +coef_maint_Retired_Duration_gt_1p5_hr,-0.042981757,F +coef_maint_University_Student_Duration_gt_1p5_hr,0.045926523,F +coef_maint_Female_Duration_lt_1p5_hrs,-0.417208254,F +coef_maint_Female_Duration_gt_1p5_hr,0.045801918,F +coef_maint_Low_Income_lteq25_000_Duration_gt_1p5_hr,0.040776383,F +coef_maint_Medium_Income_25_001_to_60_000_Duration_lt_1p5_hrs,0.108462927,F +coef_maint_Medium_Income_25_001_to_60_000_Duration_gt_1p5_hr,0,T +coef_maint_MediumHigh_Income_60_001_to_120_00_Duration_gt_1p5_hr,-0.037893416,F +coef_maint_Distance_Duration_lt_1p5_hrs,-0.214802537,F +coef_maint_Distance_Duration_gt_1p5_hr,0.007991656,F +coef_maint_Time_Pressure_Duration_gt_1p5_hrs,0.013503327,F +coef_maint_Number_of_additional_individual_shop_and_maintp_tours_Duration_lt_1p5_hrs,0.078844289,F +coef_maint_Number_of_additional_individual_shop_and_maintp_tours_Duration_gt_1p5_hrs,-0.115431492,F +coef_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Linear,-0.864112609,F +coef_maint_Departure_Constant_Shift_for_every_30_minutes_before_07_30_am_Square_Root,0.504598473,F +coef_maint_Departure_Constant_Before_08_00_AM,-0.383711788,F +coef_maint_Departure_Constant_08_00_AM_08_30_AM,-0.076771517,F +coef_maint_Departure_Constant_08_30_AM_09_00_AM,-0.169259979,F +coef_maint_Departure_Constant_09_00_AM_09_30_AM,-0.051785379,F +coef_maint_Departure_Constant_09_30_AM_10_00_AM,-0.214942451,F +coef_maint_Departure_Constant_10_00_AM_10_30_AM,0,T +coef_maint_Departure_Constant_10_30_AM_11_00_AM,-0.427568963,F +coef_maint_Departure_Constant_After_11_00_AM,-0.520863411,F +coef_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Linear,0.042879095,F +coef_maint_Departure_Constant_Shift_for_every_30_minutes_after_11_30_am_Squared,-0.003157293,F +coef_maint_Arrival_Constant_Shift_for_every_30_minutes_before_10_00_am_Linear,-0.226803619,F +coef_maint_Arrival_Constant_Before_10_30_AM,-0.223212258,F +coef_maint_Arrival_Constant_10_30_AM_11_00_AM,0,T +coef_maint_Arrival_Constant_11_00_AM_11_30_AM,-0.128382637,F +coef_maint_Arrival_Constant_11_30_AM_01_30_PM,0.167977332,F +coef_maint_Arrival_Constant_01_30_PM_02_30_PM,-0.149495878,F +coef_maint_Arrival_Constant_02_30_PM_04_00_PM,0.087679934,F +coef_maint_Arrival_Constant_04_00_PM_04_30_PM,0.121707557,F +coef_maint_Arrival_Constant_After_04_30_PM,0.106745013,F +coef_maint_Arrival_Constant_Shift_for_every_30_minutes_after_5_00_pm_Linear,-0.232610927,F +coef_maint_Duration_Constant_0_hrs,-0.483549396,F +coef_maint_Duration_Constant_0p5_hrs,0,T +coef_maint_Duration_Constant_Longer_than_0p5_hrs,-1.450618319,F +coef_maint_Duration_Constant_Duration_gt_1_hrs_Linear,-0.275082922,F +coef_maint_Duration_Constant_Duration_gt_1_hrs_Square_Root,0.208434683,F +coef_maint_Calibration_Constant_Duration_eq_1,-0.124602605,F +coef_maint_Calibration_Constant_Duration_eq_2,-0.103637715,F +coef_maint_Calibration_Constant_Duration_eq_3,-0.225442145,F +coef_maint_Calibration_Constant_Duration_eq_4,-0.145273012,F +coef_maint_Calibration_Constant_Duration_eq_5,-0.019241539,F +coef_eatout_Distance_to_destination_Duration_lt_1_hrs,-0.134981987,F +coef_eatout_Distance_to_destination_Duration_gt_1_hrs,0.017860742,F +coef_eatout_Low_income_lt25000_Duration_lt_1_hrs,1.002485807,F +coef_eatout_Medium_25k_to_60k_Duration_lt_1_hrs,0.499822018,F +coef_eatout_Zero_auto_HH_Duration_gt_1_hrs,0.259409942,F +coef_eatout_Kids_in_Joint_tour_Duration_lt_1_hrs,1.785123348,F +coef_eatout_Joint_Tours_Party_Size_greater_than_2_Duration_lt_1_hrs,-1.626003709,F +coef_eatout_University_student_Departure_after_7_00_pm_Linear,0.293827759,F +coef_eatout_Female_Duration_lt_1_hrs,-0.399414247,F +coef_eatout_Female_Duration_gt_1_hrs,0.064593482,F +coef_eatout_Time_Pressure_Departure_before_6_30_pm,0.083673557,F +coef_eatout_Time_Pressure_Duration_lt_1_hrs,1.69632588,F +coef_eatout_Departure_Constant_07_30_AM_09_00_AM,1.222417262,F +coef_eatout_Departure_Constant_10_30_AM_11_00_AM,0.519559134,F +coef_eatout_Departure_Constant_11_00_AM_11_30_AM,1.191543552,F +coef_eatout_Departure_Constant_11_30_AM_12_00_PM,1.66870995,F +coef_eatout_Departure_Constant_12_00_PM_12_30_PM,1.164106986,F +coef_eatout_Departure_Constant_12_30_PM_01_00_PM,1.057346496,F +coef_eatout_Departure_Constant_01_00_PM_01_30_PM,0.728959087,F +coef_eatout_Departure_Constant_Shift_for_every_30_minutes_before_05_30_pm_Linear,-0.477439748,F +coef_eatout_Departure_Constant_Before_06_00_PM,-1.21554671,F +coef_eatout_Departure_Constant_06_00_PM_06_30_PM,-0.425984037,F +coef_eatout_Departure_Constant_06_30_PM_07_00_PM,0,T +coef_eatout_Departure_Constant_07_00_PM_07_30_PM,-0.227800647,F +coef_eatout_Departure_Constant_After_07_30_PM,-0.293904097,F +coef_eatout_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear,-0.55440861,F +coef_eatout_Departure_Constant_11_00_AM_12_00_PM,0.531539506,F +coef_eatout_Departure_Constant_12_00_PM_12_30_PM,0.673838195,F +coef_eatout_Departure_Constant_12_30_PM_to_01_00_PM,0.422292261,F +coef_eatout_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear,-0.033290717,F +coef_eatout_Departure_Constant_Before_05_30_PM,-0.561079452,F +coef_eatout_Departure_Constant_05_30_PM_06_00_PM,-0.178719161,F +coef_eatout_Departure_Constant_06_00_PM_06_30_PM,0,T +coef_eatout_Departure_Constant_06_30_PM_07_00_PM,-0.282095841,F +coef_eatout_Departure_Constant_07_00_PM_07_30_PM,-0.299748613,F +coef_eatout_Departure_Constant_After_07_30_PM,-0.845300559,F +coef_eatout_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear,-0.667843486,F +coef_eatout_Arrival_Constant_9_30_AM_to_11_00_AM,0.486337344,F +coef_eatout_Arrival_Constant_12_30_PM_to_01_00_PM,0.629299404,F +coef_eatout_Arrival_Constant_01_00_PM_to_01_30_PM,0.938528731,F +coef_eatout_Arrival_Constant_01_30_PM_to_02_00_PM,0.584420106,F +coef_eatout_Arrival_Constant_02_00_PM_to_02_30_PM,0.842550215,F +coef_eatout_Arrival_Constant_02_30_PM_to_03_00_PM,0.298486505,F +coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_before_06_00_pm_Linear,0.125034982,F +coef_eatout_Arrival_Constant_Before_6_30_PM,-0.029062996,F +coef_eatout_Arrival_Constant_6_30_PM_to_7_00_PM,-0.509075598,F +coef_eatout_Arrival_Constant_7_00_PM_to_7_30_PM,-0.124885931,F +coef_eatout_Arrival_Constant_7_30_PM_to_8_00_PM,-0.605455664,F +coef_eatout_Arrival_Constant_8_00_PM_to_8_30_PM,0,T +coef_eatout_Arrival_Constant_8_30_PM_to_9_00_PM,-0.657382835,F +coef_eatout_Arrival_Constant_After_9_00_PM,-0.813629712,F +coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear,-0.204722406,F +coef_eatout_Arrival_Constant_12_30_PM_to_01_00_PM,2.002032369,F +coef_eatout_Arrival_Constant_01_00_PM_to_01_30_PM,2.115334472,F +coef_eatout_Arrival_Constant_01_30_PM_to_02_00_PM,1.647879687,F +coef_eatout_Arrival_Constant_02_00_PM_to_02_30_PM,1.525310078,F +coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_before_06_30_pm_Linear,-0.152980854,F +coef_eatout_Arrival_Constant_Before_7_00_PM,-0.41165142,F +coef_eatout_Arrival_Constant_7_00_PM_to_7_30_PM,-0.384557379,F +coef_eatout_Arrival_Constant_7_30_PM_to_8_00_PM,-0.044050359,F +coef_eatout_Arrival_Constant_8_00_PM_to_8_30_PM,0,T +coef_eatout_Arrival_Constant_8_30_PM_to_9_00_PM,-0.239939049,F +coef_eatout_Arrival_Constant_After_09_00_PM,-0.248639696,F +coef_eatout_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear,-0.204771082,F +coef_eatout_Duration_Constant_0_hours,-11.72660422,F +coef_eatout_Duration_Constant_0p5_hous,-5.08873115,F +coef_eatout_Duration_Constant_1_hour,-0.125521065,F +coef_eatout_Duration_Constant_1p5_hours,0,T +coef_eatout_Duration_Constant_2_hours,-0.124807752,F +coef_eatout_Duration_Constant_2p5_hours_or_more,-0.156019835,F +coef_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear,-0.3357414,F +coef_eatout_Duration_Constant_0_hours,-4.268996522,F +coef_eatout_Duration_Constant_0p5_hous,-1.323297693,F +coef_eatout_Duration_Constant_1_hour,0,T +coef_eatout_Duration_Constant_1p5_hours,-0.195669185,F +coef_eatout_Duration_Constant_2_hours_or_more,-0.523723192,F +coef_eatout_Duration_Constant_Shift_for_every_30_minutes_more_than_2p5_hrs_Linear,-0.649331488,F +coef_eatout_Calibration_Constant_Duration_eq_1,-0.333697861,F +coef_eatout_Calibration_Constant_Duration_eq_2,-0.245716,F +coef_eatout_Calibration_Constant_Duration_eq_3,0.052708833,F +coef_eatout_Calibration_Constant_Duration_eq_4,0.041571499,F +coef_eatout_Calibration_Constant_Departure_eq_1,-10,F +coef_eatout_Calibration_Constant_Departure_eq_2,-10,F +coef_eatout_Calibration_Constant_Departure_eq_3,-10,F +coef_eatout_Calibration_Constant_Departure_eq_17,0.706568704,F +coef_eatout_Calibration_Constant_Departure_eq_18,0.634353544,F +coef_eatout_Calibration_Constant_Departure_eq_19,0.584387268,F +coef_eatout_Calibration_Constant_Departure_eq_20,0.469777884,F +coef_eatout_Calibration_Constant_Departure_eq_21,0.39548931,F +coef_social_Personlt_18_years_old_Duration_lt_1p5_hrs_Linear,-0.262839914,F +coef_social_Personlt_18_years_old_Duration_gt_1p5_hrs_Linear,0.086919429,F +coef_social_Nonworking_senior_retiree_Duration_lt_1p5_hrs_Linear,0.468354376,F +coef_social_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear,-0.312282762,F +coef_social_Zero_auto_households_Duration_lt_1p5_hrs_Linear,-0.508439932,F +coef_social_Zero_auto_households_Duration_gt_1p5_hrs_Linear,0.074190914,F +coef_social_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear,0.127185965,F +coef_social_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear,0.048756122,F +coef_social_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,-0.559947083,F +coef_social_Kids_in_Joint_Tour_Duration_gt_1p5_hr,-0.115347031,F +coef_social_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,0.104494637,F +coef_social_Auto_Distance_Duration_lt_1_hrs_Linear,-0.162965435,F +coef_social_Auto_Distance_Duration_gt_1_hrs_Linear,0.006797399,F +coef_social_Time_Pressure_Duration_lt_1_hr,-0.229264474,F +coef_social_Time_Pressure_Duration_gt_1_hr,0.219325112,F +coef_social_Number_of_additional_individual_social_and_dicretionary_tours_Duration_lt_1_hr,0.156250451,F +coef_social_Departure_Constant_Shift_for_every_30_minutes_before_08_30_am_Linear,-0.529943196,F +coef_social_Departure_Constant_Before_09_00_AM,-0.198438086,F +coef_social_Departure_Constant_09_00_AM_to_09_30_AM,0.137620628,F +coef_social_Departure_Constant_Shift_for_every_30_minutes_before_05_00_pm_Linear,-0.142078961,F +coef_social_Departure_Constant_Before_05_30_PM,-0.390965052,F +coef_social_Departure_Constant_05_30_PM_06_00_PM,-0.453580491,F +coef_social_Departure_Constant_06_00_PM_06_30_PM,0,T +coef_social_Departure_Constant_06_30_PM_07_00_PM,-0.088537991,F +coef_social_Departure_Constant_07_00_PM_07_30_PM,0.052983115,F +coef_social_Departure_Constant_After_07_30_PM,-0.649629162,F +coef_social_Departure_Constant_Shift_for_every_30_minutes_after_08_00_pm_Linear,-0.09574499,F +coef_social_Arrival_Constant_03_00_PM_to_03_30_PM,0.37674882,F +coef_social_Arrival_Constant_03_30_PM_to_04_00_PM,0.583355461,F +coef_social_Arrival_Constant_04_00_PM_to_04_30_PM,0.727855233,F +coef_social_Arrival_Constant_05_00_PM_to_06_00_PM,0.249551955,F +coef_social_Arrival_Constant_Shift_for_every_30_minutes_before_08_00_pm_Linear,0.053771388,F +coef_social_Arrival_Constant_Before_8_30_PM,0.308763611,F +coef_social_Arrival_Constant_8_30_PM_to_9_00_PM,-0.208797698,F +coef_social_Arrival_Constant_9_00_PM_to_9_30_PM,-0.336319511,F +coef_social_Arrival_Constant_9_30_PM_to10_00_PM,0,T +coef_social_Arrival_Constant_10_00_PM_to_10_30_PM,-0.055707591,F +coef_social_Arrival_Constant_After_10_30_PM,-0.612356296,F +coef_social_Arrival_Constant_Shift_for_every_30_minutes_after_11_00_pm_Linear,-0.348479901,F +coef_social_Duration_Constant_Shift_for_every_30_minutes_less_than_1p5_hrs_Linear,0.619073863,F +coef_social_Duration_Constant_Less_than_2_hours,-0.584024011,F +coef_social_Duration_Constant_2_hours,-0.271552271,F +coef_social_Duration_Constant_2p5_hours,0,T +coef_social_Duration_Constant_3_hours_or_more,0.042083404,F +coef_social_Duration_Constant_Shift_for_every_30_minutes_more_than_3p5_hrs_Linear,-0.13049452,F +coef_social_Duration_Constant_Shift_for_every_30_minutes_less_than_2p5_hrs_Linear,0.614440191,F +coef_social_Duration_Constant_Less_than_3_hrs,0.353666691,F +coef_social_Duration_Constant_3_hours,0,T +coef_social_Duration_Constant_3p5_hours,-0.691218836,F +coef_social_Duration_Constant_4_hours_or_more,-1.344375328,F +coef_social_Duration_Constant_Shift_for_every_30_minutes_more_than_4p5_hrs_Linear,-0.786970714,F +coef_social_Calibration_Constant_Duration_eq_1,-1.346772472,F +coef_social_Calibration_Constant_Duration_eq_2,0.377121689,F +coef_social_Calibration_Constant_Duration_eq_3,0.179818928,F +coef_social_Calibration_Constant_Duration_eq_4,-0.283418619,F +coef_social_Calibration_Constant_Duration_eq_5,-0.103541313,F +coef_social_Calibration_Constant_Duration_eq_6,-0.03704707,F +coef_social_Calibration_Constant_Duration_eq_7,-0.062437167,F +coef_social_Calibration_Constant_Duration_eq_8,0.047640282,F +coef_social_Calibration_Constant_Duration_eq_9,0.284369793,F +coef_disc_Personlt_18_years_old_Duration_lt_1p5_hrs_Linear,-0.262839914,F +coef_disc_Personlt_18_years_old_Duration_gt_1p5_hrs_Linear,0.086919429,F +coef_disc_Nonworking_senior_retiree_Duration_lt_1p5_hrs_Linear,0.468354376,F +coef_disc_Retiree_Nonworking_senior_only_HH_Duration_lt_1p5_hrs_Linear,-0.312282762,F +coef_disc_Zero_auto_households_Duration_lt_1p5_hrs_Linear,-0.508439932,F +coef_disc_Zero_auto_households_Duration_gt_1p5_hrs_Linear,0.074190914,F +coef_disc_Number_of_auto_more_that_number_of_adults_Duration_lt_1p5_hrs_Linear,0.127185965,F +coef_disc_Number_of_auto_more_that_number_of_adults_Duration_gt_1p5_hrs_Linear,0.048756122,F +coef_disc_Kids_in_Joint_Tour_Duration_lt_1p5_hrs,-0.559947083,F +coef_disc_Kids_in_Joint_Tour_Duration_gt_1p5_hr,-0.115347031,F +coef_disc_Joint_Tours_Party_Size_gt_2_Duration_gt_1p5_hr,0.104494637,F +coef_disc_Auto_Distance_Duration_lt_1_hrs_Linear,-0.162965435,F +coef_disc_Auto_Distance_Duration_gt_1_hrs_Linear,0.006797399,F +coef_disc_Time_Pressure_Duration_lt_1_hr,-0.229264474,F +coef_disc_Time_Pressure_Duration_gt_1_hr,0.219325112,F +coef_disc_Number_of_additional_individual_social_and_dicretionary_tours_Duration_lt_1_hr,0.156250451,F +coef_disc_Departure_Constant_Shift_for_every_30_minutes_before_07_30_pm_Linear,-0.742176805,F +coef_disc_Departure_Constant_Before_7_30_AM_,-1.323901585,F +coef_disc_Departure_Constant_7_30_AM_to_8_00_AM,-0.695441631,F +coef_disc_Departure_Constant_8_00_AM_to_8_30_AM,-0.269903336,F +coef_disc_Departure_Constant_8_30_AM_to_9_00_AM,-0.093709211,F +coef_disc_Departure_Constant_9_00_AM_to_9_30_AM,0.265634082,F +coef_disc_Departure_Constant_9_30_AM_to_10_00_AM,0.287521134,F +coef_disc_Departure_Constant_10_00_AM_to_10_30_AM,0.396547817,F +coef_disc_Departure_Constant_Shift_for_every_30_minutes_before_04_30_pm_Linear,-0.245885745,F +coef_disc_Departure_Constant_Before_05_00_PM,-1.344482349,F +coef_disc_Departure_Constant_05_00_PM_05_30_PM,-0.622632748,F +coef_disc_Departure_Constant_05_30_PM_06_00_PM,-0.456718676,F +coef_disc_Departure_Constant_06_00_PM_06_30_PM,-0.206896106,F +coef_disc_Departure_Constant_06_30_PM_07_00_PM,0,T +coef_disc_Departure_Constant_After_07_00_PM,-0.46439343,F +coef_disc_Departure_Constant_Shift_for_every_30_minutes_after_07_30_pm_Linear,-0.291998986,F +coef_disc_Arrival_Constant_Shift_for_every_30_minutes_before_06_00_pm_Linear,0.148649188,F +coef_disc_Arrival_Constant_Before_6_30_PM,0.668775963,F +coef_disc_Arrival_Constant_6_30_PM_to_7_00_PM,-0.053520826,F +coef_disc_Arrival_Constant_7_00_PM_to_7_30_PM,0.099726391,F +coef_disc_Arrival_Constant_7_30_PM_to_8_00_PM,0.063414092,F +coef_disc_Arrival_Constant_8_00_PM_to_8_30_PM,0,T +coef_disc_Arrival_Constant_8_30_PM_to_9_00_PM,-0.18610847,F +coef_disc_Arrival_Constant_After_9_00_PM,-0.423207857,F +coef_disc_Arrival_Constant_Shift_for_every_30_minutes_after_09_30_pm_Linear,-0.525545923,F +coef_disc_Duration_Constant_0_hours,-0.944257762,F +coef_disc_Duration_Constant_0p5_hous,-0.117695955,F +coef_disc_Duration_Constant_1_hour,0.438403665,F +coef_disc_Duration_Constant_1p5_hours,-0.002500048,F +coef_disc_Duration_Constant_2_hours,0,T +coef_disc_Duration_Constant_2p5_hours_or_more,0.239192556,F +coef_disc_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear,-0.108260689,F +coef_disc_Duration_Constant_0_hours,0.436988282,F +coef_disc_Duration_Constant_0p5_hous,1.35967577,F +coef_disc_Duration_Constant_1_hour,1.692672999,F +coef_disc_Duration_Constant_1p5_hours,1.118932964,F +coef_disc_Duration_Constant_2_hours,0.771255733,F +coef_disc_Duration_Constant_2p5_hours,0,T +coef_disc_Duration_Constant_3_hours_or_more,-0.631242175,F +coef_disc_Duration_Constant_Shift_for_every_30_minutes_more_than_3_hrs_Linear,-0.700935645,F +coef_disc_Calibration_Constant_Duration_eq_4,-0.132674257,F +coef_disc_Calibration_Constant_Duration_eq_5,-0.013371871,F +coef_disc_Calibration_Constant_Departure_eq_29,0.232927977,F +coef_disc_Calibration_Constant_Departure_eq_30,0.306104612,F +coef_disc_Calibration_Constant_Departure_eq_31,0.285520678,F +coef_disc_Calibration_Constant_Departure_eq_32,0.115886631,F diff --git a/configs/tour_scheduling_nonmandatory.csv b/configs/tour_scheduling_nonmandatory.csv index 9749a63..f5b80fb 100644 --- a/configs/tour_scheduling_nonmandatory.csv +++ b/configs/tour_scheduling_nonmandatory.csv @@ -24,7 +24,7 @@ util_escort_households_with_no_kids_arrival_before_8_am,"ESCORT - Households wit util_escort_households_with_no_kids_arrival_after_8_30_am,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_type == 'escort') & (df.num_children == 0) & (df.end>11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_households_with_no_kids_arrival_after_8_30_am util_escort_households_with_no_kids_arrival_before_3_pm,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_type == 'escort') & (df.num_children == 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_households_with_no_kids_arrival_before_3_pm util_escort_households_with_no_kids_arrival_after_3_30_pm,"ESCORT - Households with no kids (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_type == 'escort') & (df.num_children == 0) & (df.end>25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_households_with_no_kids_arrival_after_3_30_pm -util_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_8_am,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_8_am +util_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_8_am,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 8:00 AM","@np.where(((df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start>10)), (np.where((df.start<=10), np.minimum(10-df.start,7), 0) + np.where((df.start>10), np.minimum(df.start-10,35), 0)), 0)",coef_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_8_am util_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_3_pm,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Departure after 3:00 PM","@np.where(((df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.start>24)), (np.where((df.start<=24), np.minimum(24-df.start,3), 0) + np.where((df.start>24), np.minimum(df.start-24,9), 0)), 0)",coef_escort_pre_school_child_in_hh_with_mandatory_tour_departure_after_3_pm util_escort_pre_school_child_in_hh_with_mandatory_tour_arrival_before_8_am,"ESCORT -Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 8:00 AM","@np.where(((df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_pre_school_child_in_hh_with_mandatory_tour_arrival_before_8_am util_escort_pre_school_child_in_hh_with_mandatory_tour_arrival_before_3_pm,"ESCORT - Pre-School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival before 3:00 PM","@np.where(((df.tour_type == 'escort') & (df.has_pre_school_child_with_mandatory > 0) & (df.end<25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_pre_school_child_in_hh_with_mandatory_tour_arrival_before_3_pm @@ -32,7 +32,7 @@ util_escort_driving_age_school_child_in_hh_with_mandatory_tour_departure_after_8 util_escort_driving_age_school_child_in_hh_with_mandatory_tour_arrival_after_8_30_am,"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 8:30 AM","@np.where(((df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.end>11)), (np.where((df.end<=11), np.minimum(11-df.end,7), 0) + np.where((df.end>11), np.minimum(df.end-11,35), 0)), 0)",coef_escort_driving_age_school_child_in_hh_with_mandatory_tour_arrival_after_8_30_am util_escort_driving_age_school_child_in_hh_with_mandatory_tour_arrival_after_3_30_pm,"ESCORT - Driving age School Child in HH with Mandatory tour (Dummy- 1,0) - Arrival after 3:30 PM","@np.where(((df.tour_type == 'escort') & (df.has_driving_age_child_with_mandatory > 0) & (df.end>25)), (np.where((df.end<=25), np.minimum(25-df.end,3), 0) + np.where((df.end>25), np.minimum(df.end-25,9), 0)), 0)",coef_escort_driving_age_school_child_in_hh_with_mandatory_tour_arrival_after_3_30_pm util_escort_number_of_autos_greater_than_number_of_adults_duration_greater_than_30_minutes,ESCORT - Number of autos greater than number of adults - Duration > 0.5 hr,"@np.where(((df.tour_type == 'escort') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_number_of_autos_greater_than_number_of_adults_duration_greater_than_30_minutes -util_escort_number_of_individual_tours_duration_greater_than_30_minutes,ESCORT -Number of Individual Tours (excluding escorting) - Duration > 0.5 hr,"@np.where(((df.tour_type != 'escort') & (df.num_non_escort_tours > 0) & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)), 0)",coef_escort_number_of_individual_tours_duration_greater_than_30_minutes +util_escort_number_of_individual_tours_duration_greater_than_30_minutes,ESCORT -Number of Individual Tours (excluding escorting) - Duration > 0.5 hr,"@np.where(((df.tour_type == 'escort') & (df.num_non_escort_tours > 0) & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)) * (df.num_non_escort_tours), 0)",coef_escort_number_of_individual_tours_duration_greater_than_30_minutes util_escort_number_of_joint_tours_duration_greater_than_30_minutes,ESCORT - Number of joint tours - Duration > 0.5 hr,"@np.where(((df.tour_type == 'escort') & (df.duration>1)), (np.where((df.duration<=1), np.minimum(1-df.duration,0), 0) + np.where((df.duration>1), np.minimum(df.duration-1,47), 0)) *(df.num_joint_tours), 0)",coef_escort_number_of_joint_tours_duration_greater_than_30_minutes util_escort_departure_constant_shift_for_every_30_minutes_before_6_30_am_linear,ESCORT - Departure Constant: Shift for every 30 minutes before 06:30 am - Linear,"@np.where(((df.tour_type == 'escort') & (df.start<8)), (np.where((df.start<8), np.minimum(8-df.start,4), 0) + np.where((df.start>13), np.minimum(df.start-13,28), 0)), 0)",coef_escort_departure_constant_shift_for_every_30_minutes_before_6_30_am_linear util_escort_departure_constant_before_7_am,ESCORT - Departure Constant: Before 07:00 AM,@((df.tour_type == 'escort') & (df.start<9)),coef_escort_departure_constant_before_7_am @@ -84,18 +84,18 @@ util_shopping_part_time_worker_duration_greater_than_1_hour_30_minutes,SHOPPING util_shopping_retired_duration_less_than_1_hour_30_minutes,SHOPPING - Retired: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.ptype == 5)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_retired_duration_less_than_1_hour_30_minutes util_shopping_retired_duration_greater_than_1_hour_30_minutes,SHOPPING - Retired: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.ptype == 5)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_retired_duration_greater_than_1_hour_30_minutes util_shopping_university_student_duration_greater_than_1_hour_30_minutes,SHOPPING - University Student: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.ptype == 3)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_university_student_duration_greater_than_1_hour_30_minutes -util_shopping_female_duration_less_than_1_hour_30_minutes,SHOPPING - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_female_duration_less_than_1_hour_30_minutes -util_shopping_female_duration_greater_than_1_hour_30_minutes,SHOPPING - Female: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_female_duration_greater_than_1_hour_30_minutes +util_shopping_female_duration_less_than_1_hour_30_minutes,SHOPPING - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_female_duration_less_than_1_hour_30_minutes +util_shopping_female_duration_greater_than_1_hour_30_minutes,SHOPPING - Female: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration>2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_female_duration_greater_than_1_hour_30_minutes util_shopping_low_income_duration_greater_than_1_hour_30_minutes,"SHOPPING - Low Income (<=$25,000): Duration > 1.5 hr","@np.where(((df.tour_type == 'shopping') & (df.is_income_less25K) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_low_income_duration_greater_than_1_hour_30_minutes util_shopping_medium_income_duration_less_than_1_hour_30_minutes,"SHOPPING - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_type == 'shopping') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_medium_income_duration_less_than_1_hour_30_minutes util_shopping_medium_high_income_duration_greater_than_1_hour_30_minutes,"SHOPPING - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hrs","@np.where(((df.tour_type == 'shopping') & (df.is_income_60K_to_120K) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_shopping_medium_high_income_duration_greater_than_1_hour_30_minutes util_shopping_distance_duration_less_than_1_hour_30_minutes,SHOPPING - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_type == 'shopping') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance), 0)",coef_shopping_distance_duration_less_than_1_hour_30_minutes util_shopping_distance_duration_greater_than_1_hour_30_minutes,SHOPPING - Distance: Duration > 1.5 hrs,"@np.where(((df.tour_type == 'shopping') & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance), 0)",coef_shopping_distance_duration_greater_than_1_hour_30_minutes -util_shopping_time_pressure_duration_greater_than_1_hour_30_minutes,SHOPPING - Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_type == 'shopping') & (df.duration>2)), np.minimum(df.duration-2,26) *(np.log10 (30 *(tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_shopping_time_pressure_duration_greater_than_1_hour_30_minutes +util_shopping_time_pressure_duration_greater_than_1_hour_30_minutes,SHOPPING - Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_type == 'shopping') & (df.duration>2)), np.minimum(df.duration-2,26) *(np.log10 (30 *(tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_shopping_time_pressure_duration_greater_than_1_hour_30_minutes util_shopping_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes,SHOPPING - Number of additional individual shop and maint. tours - Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) *(df.num_add_shop_maint_tours), 0)",coef_shopping_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes util_shopping_number_of_additional_individual_shop_and_maint_tours_duration_greater_than_1_hour_30_minutes,SHOPPING - Number of additional individual shop and maint. tours - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'shopping') &(df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) *(df.num_add_shop_maint_tours), 0)",coef_shopping_number_of_additional_individual_shop_and_maint_tours_duration_greater_than_1_hour_30_minutes util_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear,SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@np.where(((df.tour_type == 'shopping') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",coef_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear -util_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_square_root,SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Square root,@((df.tour_type == 'shopping') & (df.start<12)),coef_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_square_root +util_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_square_root,SHOPPING - Departure Constant: Shift for every 30 minutes before 08:30 am - Square root,"@np.where(((df.tour_type == 'shopping') & (df.start<12)), (np.where((df.start<12), np.minimum(12-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0))**0.5, 0)",coef_shopping_departure_constant_shift_for_every_30_minutes_before_8_30_am_square_root util_shopping_departure_constant_before_9_am,SHOPPING - Departure Constant: Before 09:00 AM,@((df.tour_type == 'shopping') & (df.start<13)),coef_shopping_departure_constant_before_9_am util_shopping_departure_constant_9_am_to_9_30_am,SHOPPING - Departure Constant: 09:00 AM - 09:30 AM,@((df.tour_type == 'shopping') & (df.start==13)),coef_shopping_departure_constant_9_am_to_9_30_am util_shopping_departure_constant_9_30_am_to_10_am,SHOPPING - Departure Constant: 09:30 AM - 10:00 AM,@((df.tour_type == 'shopping') & (df.start==14)),coef_shopping_departure_constant_9_30_am_to_10_am @@ -137,16 +137,16 @@ util_maintenance_part_time_worker_duration_greater_than_1_hour_30_minutes,MAINTE util_maintenance_retired_duration_less_than_1_hour_30_minutes,MAINTENANCE - Retired: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.ptype == 1)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_retired_duration_less_than_1_hour_30_minutes util_maintenance_retired_duration_greater_than_1_hour_30_minutes,MAINTENANCE - Retired: Duration > 1.5 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 5)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_retired_duration_greater_than_1_hour_30_minutes util_maintenance_university_student_duration_greater_than_1_hour_30_minutes,MAINTENANCE - University Student: Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.ptype == 3)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_university_student_duration_greater_than_1_hour_30_minutes -util_maintenance_female_duration_less_than_1_hour_30_minutes,MAINTENANCE - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_female_duration_less_than_1_hour_30_minutes -util_maintenance_female_duration_greater_than_1_hour_30_minutes,MAINTENANCE - Female: Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_female_duration_greater_than_1_hour_30_minutes +util_maintenance_female_duration_less_than_1_hour_30_minutes,MAINTENANCE - Female: Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration<2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_female_duration_less_than_1_hour_30_minutes +util_maintenance_female_duration_greater_than_1_hour_30_minutes,MAINTENANCE - Female: Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint') & (df.duration>2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_female_duration_greater_than_1_hour_30_minutes util_maintenance_low_income_duration_greater_than_1_hour_30_minutes,"MAINTENANCE - Low Income (<=$25,000): Duration > 1.5 hrs","@np.where(((df.tour_type == 'othmaint') & (df.is_income_less25K) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_low_income_duration_greater_than_1_hour_30_minutes util_maintenance_medium_income_duration_less_than_1_hour_30_minutes,"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration < 1.5 hrs","@np.where(((df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_medium_income_duration_less_than_1_hour_30_minutes util_maintenance_medium_income_duration_greater_than_1_hour_30_minutes,"MAINTENANCE - Medium Income ($25,001 to $60,000): Duration > 1.5 hrs","@np.where(((df.tour_type == 'othmaint') & (df.is_income_25K_to_60K) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_medium_income_duration_greater_than_1_hour_30_minutes util_maintenance_medium_high_income_duration_greater_than_1_hour_30_minutes,"MAINTENANCE - Medium-High Income ($60,001 to $120,00): Duration > 1.5 hrs","@np.where(((df.tour_type == 'othmaint') & (df.is_income_60K_to_120K) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2), np.minimum(df.duration-2,26), 0)), 0)",coef_maintenance_medium_high_income_duration_greater_than_1_hour_30_minutes util_maintenance_distance_duration_less_than_1_hour_30_minutes,MAINTENANCE - Distance: Duration < 1.5 hrs,"@np.where(((df.tour_type == 'othmaint') & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) *(df.origin_to_destination_distance), 0)",coef_maintenance_distance_duration_less_than_1_hour_30_minutes util_maintenance_distance_duration_greater_than_1_hour_30_minutes,MAINTENANCE - Distance: Duration > 1.5 hrs,"@np.where(((df.tour_type == 'othmaint') & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.origin_to_destination_distance), 0)",coef_maintenance_distance_duration_greater_than_1_hour_30_minutes -util_maintenance_time_pressure_duration_greater_than_1_hour_30_minutes,Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_type == 'othmaint') & (df.duration>2)), np.minimum(df.duration-2,26) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_maintenance_time_pressure_duration_greater_than_1_hour_30_minutes -util_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes,MAINTENANCE - Number of additional individual shop and maint. tours - Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othmaint')&(df.duration<2)), (np.minimum(2-df.duration,1)) *(np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes +util_maintenance_time_pressure_duration_greater_than_1_hour_30_minutes,Time Pressure - Duration > 1.5 hrs,"@np.where(((df.tour_type == 'othmaint') & (df.duration>2)), np.minimum(df.duration-2,26) * (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_maintenance_time_pressure_duration_greater_than_1_hour_30_minutes +util_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes,MAINTENANCE - Number of additional individual shop and maint. tours - Duration < 1.5 hrs,"@np.where(((df.tour_category != 'joint')&(df.tour_type == 'othmaint')&(df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.num_add_shop_maint_tours), 0)",coef_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_less_than_1_hour_30_minutes util_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_greater_than_1_hour_30_minutes,MAINTENANCE - Number of additional individual shop and maint. tours - Duration > 1.5 hrs,"@np.where(((df.tour_category != 'joint')&(df.tour_type == 'othmaint')&(df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,1), 0) + np.where((df.duration>2),np.minimum(df.duration-2,26), 0)) * (df.num_add_shop_maint_tours), 0)",coef_maintenance_number_of_additional_individual_shop_and_maint_tours_duration_greater_than_1_hour_30_minutes util_maintenance_departure_constant_shift_for_every_30_minutes_before_7_30_am_linear,MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Linear,"@np.where(((df.tour_type == 'othmaint') & (df.start<10)), (np.where((df.start<10), np.minimum(10-df.start,7), 0) + np.where((df.start>17), np.minimum(df.start-17,24), 0)), 0)",coef_maintenance_departure_constant_shift_for_every_30_minutes_before_7_30_am_linear util_maintenance_departure_constant_shift_for_every_30_minutes_before_7_30_am_square_root,MAINTENANCE - Departure Constant: Shift for every 30 minutes before 07:30 am - Square Root,"@np.where(((df.tour_type == 'othmaint') & (df.start<10)), ((np.where((df.start<10), np.minimum(10-df.start,7), 0) + (np.where((df.start>17), np.minimum(df.start-17,24), 0)))** 0.5), 0)",coef_maintenance_departure_constant_shift_for_every_30_minutes_before_7_30_am_square_root @@ -187,10 +187,10 @@ util_eatout_low_income_duration_less_than_1_hr,EAT-OUT - Low income (<25000) - D util_eatout_medium_income_duration_less_than_1_hr,EAT-OUT - Medium (25k to 60k) - Duration < 1 hr,"@np.where(((df.tour_type == 'eatout') & (df.is_income_25K_to_60K) & (df.duration<2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_medium_income_duration_less_than_1_hr util_eatout_zeroauto_HH_duration_greater_than_1_hr,EAT-OUT - Zero auto HH - Duration > 1 hrs,"@np.where(((df.tour_type == 'eatout') & (df.auto_ownership == 0) & (df.duration>2)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_zeroauto_HH_duration_greater_than_1_hr util_eatout_university_student_departure_after_7_pm_linear,EAT-OUT - University student - Departure after 7:00 pm - Linear,"@np.where(((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.start>32) & (df.ptype == 3)), (np.where((df.start<=32), np.minimum(32-df.start,29), 0) + np.where((df.start>32), np.minimum(df.start-32,8), 0)), 0)",coef_eatout_university_student_departure_after_7_pm_linear -util_eatout_female_duration_less_than_1_hr,EAT-OUT - Female - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_female_duration_less_than_1_hr -util_eatout_female_duration_greater_than_1_hr,EAT-OUT - Female - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration>2) & (df.is_female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_female_duration_greater_than_1_hr -util_eatout_time_pressure_departure_before_6_30_pm,EAT-OUT - Time Pressure - Departure before 6:30 pm,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start<32)), (np.minimum(32-df.start,29)) * (np.log10 (30 *(tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_eatout_time_pressure_departure_before_6_30_pm -util_eatout_time_pressure_duration_less_than_1_hr,EAT-OUT - Time Pressure - Duration < 1 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.duration<2)), np.minimum(2-df.duration,47) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_eatout_time_pressure_duration_less_than_1_hr +util_eatout_female_duration_less_than_1_hr,EAT-OUT - Female - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration<2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_female_duration_less_than_1_hr +util_eatout_female_duration_greater_than_1_hr,EAT-OUT - Female - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.duration>2) & (df.female)), (np.where((df.duration<=2), np.minimum(2-df.duration,47), 0) + np.where((df.duration>2), np.minimum(df.duration-2,14), 0)), 0)",coef_eatout_female_duration_greater_than_1_hr +util_eatout_time_pressure_departure_before_6_30_pm,EAT-OUT - Time Pressure - Departure before 6:30 pm,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start<32)), (np.minimum(32-df.start,29)) * (np.log10 (30 *(tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_eatout_time_pressure_departure_before_6_30_pm +util_eatout_time_pressure_duration_less_than_1_hr,EAT-OUT - Time Pressure - Duration < 1 hrs,"@np.where(((df.tour_category != 'joint') & (df.tour_type== 'eatout') & (df.duration<2)), np.minimum(2-df.duration,47) * (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_eatout_time_pressure_duration_less_than_1_hr util_eatout_departure_constant_7_30_am_to_9_am,EAT-OUT - Departure Constant: 07:30 AM - 09:00 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start>=10) & (df.start<=12)),coef_eatout_departure_constant_7_30_am_to_9_am util_eatout_departure_constant_10_30_am_to_11_am,EAT-OUT - Departure Constant: 10:30 AM - 11:00 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==16)),coef_eatout_departure_constant_10_30_am_to_11_am util_eatout_departure_constant_11_am_to_11_30_am,EAT-OUT - Departure Constant: 11:00 AM - 11:30 AM,@((df.tour_category != 'joint') & (df.tour_type == 'eatout') & (df.start==17)),coef_eatout_departure_constant_11_am_to_11_30_am @@ -249,22 +249,22 @@ util_social_zero_auto_households_duration_greater_than_1_hr_30_minutes_linear,SO util_social_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear,SOCIAL - Number of auto more than number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.tour_type == 'social') & (df.auto_ownership > 0) &(df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_social_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear util_social_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear,SOCIAL - Number of auto more than number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.tour_type == 'social') & (df.auto_ownership > 0) & (df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_social_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear "# In CTRAMP, although the description below says duration is less than 1 hr, expression is for less than 1.5 hr",,, -util_social_auto_distance_duration_less_than_1_hr_linear,SOCIAL - Auto Distance: Duration < 1 hr - Linear,"@np.where(((df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)), 0) * (df.origin_to_destination_distance)",coef_social_auto_distance_duration_less_than_1_hr_linear -util_social_auto_distance_duration_greater_than_1_hr_linear,SOCIAL - Auto Distance: Duration > 1 hr - Linear,"@np.where(((df.tour_type == 'social') & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0) * (df.origin_to_destination_distance) ",coef_social_auto_distance_duration_greater_than_1_hr_linear -util_social_time_pressure_duration_less_than_1_hr,SOCIAL - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3)), np.minimum(3-df.duration,47), 0)* (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",coef_social_time_pressure_duration_less_than_1_hr -util_social_time_pressure_duration_greater_than_1_hr,SOCIAL - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>3)), np.minimum(df.duration-3,47), 0) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",coef_social_time_pressure_duration_greater_than_1_hr +util_social_auto_distance_duration_less_than_1_hr_linear,SOCIAL - Auto Distance: Duration < 1 hr - Linear,"@np.where(((df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",coef_social_auto_distance_duration_less_than_1_hr_linear +util_social_auto_distance_duration_greater_than_1_hr_linear,SOCIAL - Auto Distance: Duration > 1 hr - Linear,"@np.where(((df.tour_type == 'social') & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",coef_social_auto_distance_duration_greater_than_1_hr_linear +util_social_time_pressure_duration_less_than_1_hr,SOCIAL - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3)), np.minimum(3-df.duration,47), 0)* (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num))))",coef_social_time_pressure_duration_less_than_1_hr +util_social_time_pressure_duration_greater_than_1_hr,SOCIAL - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration>3)), np.minimum(df.duration-3,47), 0) * (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num))))",coef_social_time_pressure_duration_greater_than_1_hr util_social_number_of_additional_individual_social_and_dicretionary_tours_duration_less_than_1_hr,SOCIAL - Number of additional individual social and dicretionary tours - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'social') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3),np.minimum(df.duration-3,47), 0)) * (df.num_add_soc_discr_tours), 0)",coef_social_number_of_additional_individual_social_and_dicretionary_tours_duration_less_than_1_hr -util_social_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@(df.tour_type == 'social') & (df.start<12) * ((np.minimum(12-df.start,48)*(df.start<48)) + (np.minimum(df.start-48,48)*(df.start>48)))",coef_social_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear +util_social_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 08:30 am - Linear,"@((df.tour_type == 'social') & (df.start<12)) * ((np.minimum(12-df.start,48)*(df.start<12)) + (np.minimum(df.start-48,48)*(df.start>48)))",coef_social_departure_constant_shift_for_every_30_minutes_before_8_30_am_linear util_social_departure_constant_before_9_am,SOCIAL - Departure Constant: Before 09:00 AM,@(df.tour_type == 'social') & (df.start<13),coef_social_departure_constant_before_9_am util_social_departure_constant_9_am_to_9_30_am,SOCIAL - Departure Constant: 09:00 AM to 09:30 AM,@(df.tour_type == 'social') & (df.start==13),coef_social_departure_constant_9_am_to_9_30_am -util_social_departure_constant_shift_for_every_30_minutes_before_5_pm_linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where((df.start<29), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_departure_constant_shift_for_every_30_minutes_before_5_pm_linear +util_social_departure_constant_shift_for_every_30_minutes_before_5_pm_linear,SOCIAL - Departure Constant: Shift for every 30 minutes before 05:00 pm - Linear,"@np.where((df.tour_type == 'social') & (df.start<29), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_departure_constant_shift_for_every_30_minutes_before_5_pm_linear util_social_departure_constant_before_5_30_pm,SOCIAL - Departure Constant: Before 05:30 PM,@((df.tour_type == 'social') & (df.start<30)),coef_social_departure_constant_before_5_30_pm util_social_departure_constant_5_30_pm_to_6_pm,SOCIAL - Departure Constant: 05:30 PM - 06:00 PM,@((df.tour_type == 'social') & (df.start==30)),coef_social_departure_constant_5_30_pm_to_6_pm util_social_departure_constant_6_pm_to_6_30_pm,SOCIAL - Departure Constant: 06:00 PM - 06:30 PM,@((df.tour_type == 'social') & (df.start==31)),coef_social_departure_constant_6_pm_to_6_30_pm util_social_departure_constant_6_30_pm_to_7_pm,SOCIAL - Departure Constant: 06:30 PM - 07:00 PM,@((df.tour_type == 'social') & (df.start==32)),coef_social_departure_constant_6_30_pm_to_7_pm util_social_departure_constant_7_pm_to_7_30_pm,SOCIAL - Departure Constant: 07:00 PM - 07:30 PM,@((df.tour_type == 'social') & (df.start==33)),coef_social_departure_constant_7_pm_to_7_30_pm util_social_departure_constant_after_7_30_pm,SOCIAL - Departure Constant: After 07:30 PM,@((df.tour_type == 'social') & (df.start>33)),coef_social_departure_constant_after_7_30_pm -util_social_departure_constant_shift_for_every_30_minutes_after_8_pm_linear,SOCIAL - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where((df.start>34), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_departure_constant_shift_for_every_30_minutes_after_8_pm_linear +util_social_departure_constant_shift_for_every_30_minutes_after_8_pm_linear,SOCIAL - Departure Constant: Shift for every 30 minutes after 08:00 pm - Linear,"@np.where((df.tour_type == 'social') & (df.start>34), (np.where((df.start<29), np.minimum(29-df.start,8), 0) + np.where((df.start>34), np.minimum(df.start-34,6), 0)), 0)",coef_social_departure_constant_shift_for_every_30_minutes_after_8_pm_linear util_social_arrival_constant_3_pm_to_3_30_pm,SOCIAL - Arrival Constant: 03:00 PM to 03:30 PM,@((df.tour_type == 'social') & (df.end==25)),coef_social_arrival_constant_3_pm_to_3_30_pm util_social_arrival_constant_3_30_pm_to_4_pm,SOCIAL - Arrival Constant: 03:30 PM to 04:00 PM,@((df.tour_type == 'social') & (df.end==26)),coef_social_arrival_constant_3_30_pm_to_4_pm util_social_arrival_constant_4_pm_to_4_30_pm,SOCIAL - Arrival Constant: 04:00 PM to 04:30 PM,@((df.tour_type == 'social') & (df.end==27)),coef_social_arrival_constant_4_pm_to_4_30_pm @@ -302,10 +302,10 @@ util_discretionary_zero_auto_households_duration_greater_than_1_hr_30_minutes_li util_discretionary_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear,DISCRETIONARY - Number of auto more that number of adults: Duration < 1.5 hrs - Linear,"@np.where(((df.auto_ownership > 0) & (df.tour_type == 'othdiscr') & (df.auto_ownership > df.num_adults) & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)),0)",coef_discretionary_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear util_discretionary_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear,DISCRETIONARY - Number of auto more that number of adults: Duration > 1.5 hrs - Linear,"@np.where(((df.auto_ownership > 0) &(df.tour_type == 'othdiscr')&(df.auto_ownership > df.num_adults) & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_discretionary_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear "# In CTRAMP, although the description below says duration is less than 1 hr, expression is for less than 1.5 hr",,, -util_discretionary_auto_distance_duration_less_than_1_hr_linear,DISCRETIONARY - Auto Distance: Duration < 1 hr - Linear,"@np.where(((df.tour_type == 'othdiscr') & (df.duration<3) & (df.origin_to_destination_distance)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)), 0)",coef_discretionary_auto_distance_duration_less_than_1_hr_linear +util_discretionary_auto_distance_duration_less_than_1_hr_linear,DISCRETIONARY - Auto Distance: Duration < 1 hr - Linear,"@np.where(((df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",coef_discretionary_auto_distance_duration_less_than_1_hr_linear util_discretionary_auto_distance_duration_greater_than_1_hr_linear,DISCRETIONARY - Auto Distance: Duration > 1 hr - Linear,"@np.where(((df.tour_type == 'othdiscr') & (df.duration>3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0)) * (df.origin_to_destination_distance), 0)",coef_discretionary_auto_distance_duration_greater_than_1_hr_linear -util_discretionary_time_pressure_duration_less_than_1_hr,DISCRETIONARY - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3)), np.minimum(3-df.duration,47), 0) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num))))",coef_discretionary_time_pressure_duration_less_than_1_hr -util_discretionary_time_pressure_duration_greater_than_1_hr,DISCRETIONARY - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3)), np.minimum(df.duration-3,47) * (np.log10 (30 * (tt.remaining_periods_available(df.person_id, df.start, df.end)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_discretionary_time_pressure_duration_greater_than_1_hr +util_discretionary_time_pressure_duration_less_than_1_hr,DISCRETIONARY - Time Pressure - Duration < 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration<3)), np.minimum(3-df.duration,47), 0) * (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num))))",coef_discretionary_time_pressure_duration_less_than_1_hr +util_discretionary_time_pressure_duration_greater_than_1_hr,DISCRETIONARY - Time Pressure - Duration > 1 hr,"@np.where(((df.tour_category != 'joint') & (df.tour_type == 'othdiscr') & (df.duration>3)), np.minimum(df.duration-3,47) * (np.log10 (30 * (tt.max_time_block_available(df.person_id)/(1.0 + df.tour_count - df.tour_num)))), 0)",coef_discretionary_time_pressure_duration_greater_than_1_hr util_discretionary_number_of_additional_individual_social_and_dicretionary_tours_duration_less_than_1_hr,DISCRETIONARY - Number of additional individual social and dicretionary tours - Duration < 1 hr,"@np.where(((df.tour_category != 'joint')&(df.tour_type == 'othdiscr') & (df.duration<3)), (np.where((df.duration<=3), np.minimum(3-df.duration,47), 0) + np.where((df.duration>3), np.minimum(df.duration-3,47), 0))*(df.num_add_soc_discr_tours),0)",coef_discretionary_number_of_additional_individual_social_and_dicretionary_tours_duration_less_than_1_hr util_discretionary_departure_constant_shift_for_every_30_minutes_before_7_30_pm_linear,DISCRETIONARY - Departure Constant: Shift for every 30 minutes before 07:30 pm - Linear,"@np.where(((df.tour_type == 'othdiscr') & (df.start<9)), (np.where((df.start<9), np.minimum(9-df.start,48), 0) + np.where((df.start>48), np.minimum(df.start-48,48),0)), 0)",coef_discretionary_departure_constant_shift_for_every_30_minutes_before_7_30_pm_linear util_discretionary_departure_constant_before_7_30_am,DISCRETIONARY - Departure Constant: Before 7:30 AM ,@((df.tour_type == 'othdiscr') & (df.start<10)),coef_discretionary_departure_constant_before_7_30_am diff --git a/configs/tour_scheduling_nonmandatory_coeffs.csv b/configs/tour_scheduling_nonmandatory_coeffs.csv index be71c27..42cb13d 100644 --- a/configs/tour_scheduling_nonmandatory_coeffs.csv +++ b/configs/tour_scheduling_nonmandatory_coeffs.csv @@ -1,10 +1,8 @@ coefficient_name,value,constrain coef_escort_mode_choice_logsum,1.173173034,F -#Note,,F coef_escort_distance_to_destination_duration_less_than_30_minutes,-0.335017673,F coef_escort_distance_to_destination_duration_greater_than_30_minutes,0.005298165,F coef_escort_fulltime_worker_departure_after_8_am_linear,-0.037980109,F -#Note,,F coef_escort_fulltime_worker_departure_after_3_am_linear,0.163254125,F coef_escort_fulltime_worker_duration_less_than_30_minutes,-0.275077482,F coef_escort_fulltime_worker_duration_greater_than_30_minutes,0.051530545,F @@ -12,7 +10,6 @@ coef_escort_university_student_duration_less_than_30_minutes,-0.426802718,F coef_escort_non_driving_age_student_duration_greater_than_30_minutes,0.240582361,F coef_escort_driving_age_student_duration_less_than_30_minutes,-0.554146191,F coef_escort_driving_age_student_duration_greater_than_30_minutes,0.299387708,F -#Note,,F coef_escort_pre_school_kid_duration_greater_than_30_minutes,0.195482563,F coef_escort_med_high_income_duration_greater_than_30_minutes,-0.029281467,F coef_escort_households_with_no_kids_departure_before_7_30_am,0.589083327,F @@ -73,7 +70,6 @@ coef_escort_calibration_constant_departure_9,0.106814756,F coef_escort_calibration_constant_departure_10,0.215386864,F coef_escort_calibration_constant_departure_23,-0.255087318,F coef_escort_calibration_constant_departure_24,-0.296870428,F -#SHOPPING,,F coef_shoppping_driving_age_student_duration_greater_than_1_hour_30_minutes,0.122149101,F coef_shoppping_full_time_worker_duration_greater_than_1_hour_30_minutes,-0.037886459,F coef_shoppping_non_driving_student_duration_greater_than_1_hour_30_minutes,0.10247157,F @@ -126,7 +122,6 @@ coef_shopping_duration_constant_duration_greater_than_2_hr_30_minutes_square_roo coef_shopping_calibration_constant_duration_1,-0.138450424,F coef_shopping_calibration_constant_duration_2,-0.092704403,F coef_shopping_calibration_constant_duration_3,-0.087738073,F -#MAINTENANCE,0,T coef_maintenance_driving_age_student_duration_greater_than_1_hour_30_minutes,0.122149101,F coef_maintenance_full_time_worker_duration_greater_than_1_hour_30_minutes,-0.037886459,F coef_maintenance_non_driving_student_duration_greater_than_1_hour_30_minutes,0.10247157,F @@ -179,7 +174,6 @@ coef_maintenance_calibration_constant_duration_2,-0.103637715,F coef_maintenance_calibration_constant_duration_3,-0.225442145,F coef_maintenance_calibration_constant_duration_4,-0.145273012,F coef_maintenance_calibration_constant_duration_5,-0.019241539,F -#EAT-OUT,,F coef_eatout_distance_to_destination_duration_less_than_1_hr,-0.134981987,F coef_eatout_distance_to_destination_duration_greater_than_1_hr,0.017860742,F coef_eatout_low_income_duration_less_than_1_hr,1.002485807,F @@ -238,7 +232,6 @@ coef_eatout_calibration_constant_departure_18,0.634353544,F coef_eatout_calibration_constant_departure_19,0.584387268,F coef_eatout_calibration_constant_departure_20,0.469777884,F coef_eatout_calibration_constant_departure_21,0.39548931,F -#SOCIAL,,F coef_social_person_less_than_18_years_old_duration_less_than_1_hr_30_minutes_linear,-0.262839914,F coef_social_person_less_than_18_years_old_duration_greater_than_1_hr_30_minutes_linear,0.086919429,F coef_social_non_working_senior_or_retiree_duration_less_than_1_hr_30_minutes_linear,0.468354376,F @@ -247,7 +240,6 @@ coef_social_zero_auto_households_duration_less_than_1_hr_30_minutes_linear,-0.50 coef_social_zero_auto_households_duration_greater_than_1_hr_30_minutes_linear,0.074190914,F coef_social_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear,0.127185965,F coef_social_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear,0.048756122,F -#Note,,F coef_social_auto_distance_duration_less_than_1_hr_linear,-0.162965435,F coef_social_auto_distance_duration_greater_than_1_hr_linear,0.006797399,F coef_social_time_pressure_duration_less_than_1_hr,-0.229264474,F @@ -291,7 +283,6 @@ coef_social_calibration_constant_duration_6,-0.03704707,F coef_social_calibration_constant_duration_7,-0.062437167,F coef_social_calibration_constant_duration_8,0.047640282,F coef_social_calibration_constant_duration_9,0.284369793,F -#DISCRETIONARY,,F coef_discretionary_person_less_than_18_years_old_duration_less_than_1_hr_30_minutes_linear,-0.262839914,F coef_discretionary_person_less_than_18_years_old_duration_greater_than_1_hr_30_minutes_linear,0.086919429,F coef_discretionary_non_working_senior_retiree_duration_less_than_1_hr_30_minutes_linear,0.468354376,F @@ -300,7 +291,6 @@ coef_discretionary_zero_auto_households_duration_less_than_1_hr_30_minutes_linea coef_discretionary_zero_auto_households_duration_greater_than_1_hr_30_minutes_linear,0.074190914,F coef_discretionary_number_of_auto_more_than_number_of_adults_duration_less_than_1_hr_30_minutes_linear,0.127185965,F coef_discretionary_number_of_auto_more_than_number_of_adults_duration_greater_than_1_hr_30_minutes_linear,0.048756122,F -#Note,,F coef_discretionary_auto_distance_duration_less_than_1_hr_linear,-0.162965435,F coef_discretionary_auto_distance_duration_greater_than_1_hr_linear,0.006797399,F coef_discretionary_time_pressure_duration_less_than_1_hr,-0.229264474,F diff --git a/configs/tour_scheduling_school.csv b/configs/tour_scheduling_school.csv index b50c833..f84c333 100644 --- a/configs/tour_scheduling_school.csv +++ b/configs/tour_scheduling_school.csv @@ -1,60 +1,59 @@ -Description,Expression,Coefficient -"# Note: In CTRAMP, duration is from 1 to 48 but in ActivitySim, it is from 0 to 47 since duration was calculated as (end - start). Therefore, duration in ActivitySim expression = CTRAMP duration expresssion - 1 ",, -SCHOOL - Mode Choice Logsum,mode_choice_logsum,0.524017431 -SCHOOL - Low income (<25000) - Departure before 7:30 am - Linear,"@((df.is_income_less25K) & (df.start<10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",0.134574548 -SCHOOL - Low income (<25000) - Departure after 8:00 am - Linear,"@((df.is_income_less25K) & (df.start>10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",-0.075554725 -SCHOOL - Low income (<25000) - Duration < 8hrs,"@((df.is_income_less25K) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",-0.150039779 -SCHOOL - Low income (<25000) - Duration > 8hrs,"@((df.is_income_less25K) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",-0.043562413 -SCHOOL - Med income (25k to 60k) - Departure before 7:30 am - Linear,"@((df.is_income_25K_to_60K) & (df.start<10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",0.102594589 -SCHOOL - Age 0 to 5 yrs - Departure Before 7:30 am,"@(((df.age>=0) & (df.age<=5)) & (df.start<10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",-0.178916721 -SCHOOL - Age 13 to 15 yrs - Departure Before 7:30 am,"@(((df.age>=13) & (df.age<=15)) & (df.start<10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",-0.164708594 -SCHOOL - Age 13 to 15 yrs - Departure After 8:00 am,"@(((df.age>=13) & (df.age<=15)) & (df.start>10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",0.169641715 -SCHOOL - Age 16 to 17 yrs - Departure After 8:00 am,"@(((df.age>=16) & (df.age<=17)) & (df.start>10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",0.077527892 -SCHOOL - Age 0 to 5 yrs - Duration < 8hrs,"@(((df.age>0) & (df.age<=5)) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.254486164 -SCHOOL - Age 0 to 5 yrs - Duration > 8hrs,"@(((df.age>0) & (df.age<=5)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.14409403 -SCHOOL - Age 13 to 15 yrs - Duration < 8hrs,"@(((df.age>=13) & (df.age<=15)) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",-0.211129273 -SCHOOL - Age 13 to 15 yrs - Duration > 8hrs,"@(((df.age>=13) & (df.age<=15)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.102348303 -SCHOOL - Age 16 to 17 yrs - Duration > 8hrs,"@(((df.age>=16) & (df.age<=17)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.1184616 -SCHOOL - Time (SOV freeflow) to destination - Departure before 7:30 am - Linear,"@(df.start<10) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10))) * (df.auto_time_home_to_school)",0.011813391 -SCHOOL - Time (SOV freeflow) to destination - Departure after 8:00 am - Linear,"@(df.start>10) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10))) * (df.auto_time_home_to_school)",-0.0088956 -SCHOOL - Time (SOV freeflow) to destination - Duration < 8hrs,"@(df.end<27) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27))) * (df.auto_time_home_to_school)",-0.011793416 -SCHOOL - Time (SOV freeflow) to destination - Duration > 8hrs,"@(df.end>27) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27))) * (df.auto_time_home_to_school)",0.001485453 -SCHOOL - All adults in the household are fulltime workers - Departure before 7:30 am - Linear,"@((df.is_all_adults_full_time_workers) & (df.start<10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",0.1625279 -SCHOOL - All adults in the household are fulltime workers - Departure after 8:00 am - Linear,"@((df.is_all_adults_full_time_workers) & (df.start>10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",-0.161840551 -SCHOOL - All adults in the household are fulltime workers - Duration < 8hrs,"@((df.is_all_adults_full_time_workers) & (df.end<27)) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27)))",-0.233061473 -SCHOOL - All adults in the household are fulltime workers - Duration > 8hrs,"@((df.is_all_adults_full_time_workers) & (df.end>27)) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27)))",0.08462748 -SCHOOL - Subsequent tour is work tour: Duration < 8 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type == 'work')) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.154332088 -SCHOOL - Subsequent tour is work tour: Duration > 8 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'work')) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",-0.62871831 -SCHOOL - Subsequent tour is school tour: Departure after 8:00 am,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.start>10)) * ((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",-0.41618671 -SCHOOL - Subsequent tour is school tour: Duration < 8 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",0.261423274 -SCHOOL - Subsequent tour is school tour: Duration > 8 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",-0.263857404 -SCHOOL - Second tour of two mandatory tours: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<7)) * ((np.minimum(7-df.duration,47)*(df.duration<=7)) + (np.minimum(df.duration-7,47)*(df.duration>7)))",-0.537535787 -SCHOOL - Second tour of two mandatory tours: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration>7)) * ((np.minimum(7-df.duration,47)*(df.duration<=7)) + (np.minimum(df.duration-7,47)*(df.duration>7)))",-0.545479806 -SCHOOL - Departure Constant: Before 06:00 AM,@(df.start<7),-10.04417122 -SCHOOL - Departure Constant: 06:00 AM to 06:30 AM (7),@(df.start==7),-3.792318538 -SCHOOL - Departure Constant: 06:30 AM to 07:00 AM (8),@(df.start==8),-1.941704371 -SCHOOL - Departure Constant: 07:00 AM to 07:30 AM (9),@(df.start==9),-0.558080224 -SCHOOL - Departure Constant: 07:30 AM to 08:00 AM (10),@(df.start==10),0 -SCHOOL - Departure Constant: After 08:00 AM,@(df.start>10),-0.280439854 -SCHOOL - Departure Constant: Shift for every 30 minutes after 8:30 am - Linear,"@((df.start>11)) * ((np.minimum(7-df.start,48)*(df.start<7)) + (np.minimum(df.start-11,23)*(df.start>11)))",0.293697164 -SCHOOL - Departure Constant: Shift for every 30 minutes after 8:30 am - Square Root,"@((df.start>11)) * (((np.minimum(7-df.start,48)*(df.start<7)) + (np.minimum(df.start-11,23)*(df.start>11))) ** 0.5)",-1.220165702 -SCHOOL - Arrival Constant: Before 02:30 PM,@(df.end<24),0.720751128 -SCHOOL - Arrival Constant: 02:30 PM - 03:00 PM (24) ,@(df.end==24),1.605012317 -SCHOOL - Arrival Constant: 03:00 PM - 03:30 PM (25) ,@(df.end==25),0.463502951 -SCHOOL - Arrival Constant: 03:30 PM - 04:00 PM (26) ,@(df.end==26),0.196107179 -SCHOOL - Arrival Constant: 04:00 PM - 04:30 PM (27) ,@(df.end==27),0 -SCHOOL - Arrival Constant: 04:30 PM - 05:00 PM (28) ,@(df.end==28),-0.389421484 -SCHOOL - Arrival Constant: 05:00 PM - 05:30 PM (29),@(df.end==29),-1.412720271 -SCHOOL - Arrival Constant: 05:30 PM - 06:00 PM (30) ,@(df.end==30),-1.938567609 -SCHOOL - Arrival Constant: After 06:00 PM,@(df.end>30),-2.246103785 -SCHOOL - Arrival Constant: Shift for every 30 minutes after 6:30 pm - Linear,"@(df.end>31) * ((np.minimum(24-df.end,6)*(df.end<24)) + (np.minimum(df.end-31,12)*(df.end>31)))",-0.552223894 -SCHOOL - Duration Constant: Shift for every 30 minutes less than 6.5 hrs - Linear,"@((df.duration<13)) * ((np.minimum(13-df.duration,48)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19)))",-0.249724903 -SCHOOL - Duration Constant: Shorter than 7 hrs,@(df.duration<14),-2.791243553 -SCHOOL - Duration Constant: 7 hours,@(df.duration==14),-1.679006455 -SCHOOL - Duration Constant: 7.5 hours,@(df.duration==15),-0.555288612 -SCHOOL - Duration Constant: 8 hours,@(df.duration==16),0 -SCHOOL - Duration Constant: 8.5 hours,@(df.duration==17),-0.139412248 -SCHOOL - Duration Constant: 9 hours,@(df.duration==18),-0.509620713 -SCHOOL - Duration Constant: Longer than 9 hrs,@(df.duration>18),-0.561449384 -SCHOOL - Duration Constant: Shift for every 30 minutes more than 9.5 hrs - Linear,"@(df.duration>19) * ((np.minimum(13-df.duration,47)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19)))",0.379484906 -SCHOOL - Duration Constant: Shift for every 30 minutes more than 9.5 hrs - Squared,"@(df.duration>19) * (((np.minimum(13-df.duration,47)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19))) ** 2)",-0.028814477 +Label,Description,Expression,Coefficient +util_Mode_Choice_Logsum,SCHOOL - Mode Choice Logsum,mode_choice_logsum,coef_Mode_Choice_Logsum +util_Low_income_lt25000_Departure_before_730_am__Linear,SCHOOL - Low income (<25000) - Departure before 7:30 am - Linear,"@((df.is_income_less25K) & (df.start<10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Low_income_lt25000_Departure_before_730_am__Linear +util_Low_income_lt25000_Departure_after_800_am_Linear,SCHOOL - Low income (<25000) - Departure after 8:00 am - Linear,"@((df.is_income_less25K) & (df.start>10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Low_income_lt25000_Departure_after_800_am_Linear +util_Low_income_lt25000_Duration_lt_8hrs,SCHOOL - Low income (<25000) - Duration < 8hrs,"@((df.is_income_less25K) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Low_income_lt25000_Duration_lt_8hrs +util_Low_income_lt25000_Duration_gt_8hrs,SCHOOL - Low income (<25000) - Duration > 8hrs,"@((df.is_income_less25K) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Low_income_lt25000_Duration_gt_8hrs +util_Med_income_25k_to_60k_Departure_before_730_am__Linear,SCHOOL - Med income (25k to 60k) - Departure before 7:30 am - Linear,"@((df.is_income_25K_to_60K) & (df.start<10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Med_income_25k_to_60k_Departure_before_730_am__Linear +util_Age_0_to_5_yrs_Departure_Before_730_am,SCHOOL - Age 0 to 5 yrs - Departure Before 7:30 am,"@(((df.age>=0) & (df.age<=5)) & (df.start<10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Age_0_to_5_yrs_Departure_Before_730_am +util_Age_13_to_15_yrs_Departure_Before_730_am,SCHOOL - Age 13 to 15 yrs - Departure Before 7:30 am,"@(((df.age>=13) & (df.age<=15)) & (df.start<10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Age_13_to_15_yrs_Departure_Before_730_am +util_Age_13_to_15_yrs_Departure_After_800_am,SCHOOL - Age 13 to 15 yrs - Departure After 8:00 am,"@(((df.age>=13) & (df.age<=15)) & (df.start>10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Age_13_to_15_yrs_Departure_After_800_am +util_Age_16_to_17_yrs_Departure_After_800_am,SCHOOL - Age 16 to 17 yrs - Departure After 8:00 am,"@(((df.age>=16) & (df.age<=17)) & (df.start>10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Age_16_to_17_yrs_Departure_After_800_am +util_Age_0_to_5_yrs_Duration_lt_8hrs,SCHOOL - Age 0 to 5 yrs - Duration < 8hrs,"@(((df.age>0) & (df.age<=5)) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Age_0_to_5_yrs_Duration_lt_8hrs +util_Age_0_to_5_yrs_Duration_gt_8hrs,SCHOOL - Age 0 to 5 yrs - Duration > 8hrs,"@(((df.age>0) & (df.age<=5)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Age_0_to_5_yrs_Duration_gt_8hrs +util_Age_13_to_15_yrs_Duration_lt_8hrs,SCHOOL - Age 13 to 15 yrs - Duration < 8hrs,"@(((df.age>=13) & (df.age<=15)) & (df.duration<8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Age_13_to_15_yrs_Duration_lt_8hrs +util_Age_13_to_15_yrs_Duration_gt_8hrs,SCHOOL - Age 13 to 15 yrs - Duration > 8hrs,"@(((df.age>=13) & (df.age<=15)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Age_13_to_15_yrs_Duration_gt_8hrs +util_Age_16_to_17_yrs_Duration_gt_8hrs,SCHOOL - Age 16 to 17 yrs - Duration > 8hrs,"@(((df.age>=16) & (df.age<=17)) & (df.duration>8)) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Age_16_to_17_yrs_Duration_gt_8hrs +util_Time_SOV_freeflow_to_destination_Departure_before_730_am__Linear,SCHOOL - Time (SOV freeflow) to destination - Departure before 7:30 am - Linear,"@(df.start<10) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10))) * (df.roundtrip_auto_time_to_school)",coef_Time_SOV_freeflow_to_destination_Departure_before_730_am__Linear +util_Time_SOV_freeflow_to_destination_Departure_after_800_am_Linear,SCHOOL - Time (SOV freeflow) to destination - Departure after 8:00 am - Linear,"@(df.start>10) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10))) * (df.roundtrip_auto_time_to_school)",coef_Time_SOV_freeflow_to_destination_Departure_after_800_am_Linear +util_Time_SOV_freeflow_to_destination_Duration_lt_8hrs,SCHOOL - Time (SOV freeflow) to destination - Duration < 8hrs,"@(df.end<27) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27))) * (df.roundtrip_auto_time_to_school)",coef_Time_SOV_freeflow_to_destination_Duration_lt_8hrs +util_Time_SOV_freeflow_to_destination_Duration_gt_8hrs,SCHOOL - Time (SOV freeflow) to destination - Duration > 8hrs,"@(df.end>27) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27))) * (df.roundtrip_auto_time_to_school)",coef_Time_SOV_freeflow_to_destination_Duration_gt_8hrs +util_All_adults_in_the_household_are_fulltime_workers_Departure_before_730_am__Linear,SCHOOL - All adults in the household are fulltime workers - Departure before 7:30 am - Linear,"@((df.is_all_adults_full_time_workers) & (df.start<10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_All_adults_in_the_household_are_fulltime_workers_Departure_before_730_am__Linear +util_All_adults_in_the_household_are_fulltime_workers_Departure_after_800_am_Linear,SCHOOL - All adults in the household are fulltime workers - Departure after 8:00 am - Linear,"@((df.is_all_adults_full_time_workers) & (df.start>10)) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_All_adults_in_the_household_are_fulltime_workers_Departure_after_800_am_Linear +util_All_adults_in_the_household_are_fulltime_workers_Duration_lt_8hrs,SCHOOL - All adults in the household are fulltime workers - Duration < 8hrs,"@((df.is_all_adults_full_time_workers) & (df.end<27)) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27)))",coef_All_adults_in_the_household_are_fulltime_workers_Duration_lt_8hrs +util_All_adults_in_the_household_are_fulltime_workers_Duration_gt_8hrs,SCHOOL - All adults in the household are fulltime workers - Duration > 8hrs,"@((df.is_all_adults_full_time_workers) & (df.end>27)) * ((np.minimum(27-df.end,48)*(df.end<=27)) + (np.minimum(df.end-27,48)*(df.end>27)))",coef_All_adults_in_the_household_are_fulltime_workers_Duration_gt_8hrs +util_Subsequent_tour_is_work_tour_Duration_lt_8_hours,SCHOOL - Subsequent tour is work tour: Duration < 8 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'work') & (df.duration<8))) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Subsequent_tour_is_work_tour_Duration_lt_8_hours +util_Subsequent_tour_is_work_tour_Duration_gt_8_hours,SCHOOL - Subsequent tour is work tour: Duration > 8 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'work') & (df.duration>8))) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Subsequent_tour_is_work_tour_Duration_gt_8_hours +util_Subsequent_tour_is_school_tour_Departure_after_800_am,SCHOOL - Subsequent tour is school tour: Departure after 8:00 am,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.start>10))) *((np.minimum(10-df.start,48)*(df.start<=10)) + (np.minimum(df.start-10,48)*(df.start>10)))",coef_Subsequent_tour_is_school_tour_Departure_after_800_am +util_Subsequent_tour_is_school_tour_Duration_lt_8_hours,SCHOOL - Subsequent tour is school tour: Duration < 8 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.duration<8))) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Subsequent_tour_is_school_tour_Duration_lt_8_hours +util_Subsequent_tour_is_school_tour_Duration_gt_8_hours,SCHOOL - Subsequent tour is school tour: Duration > 8 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.duration>8))) * ((np.minimum(8-df.duration,47)*(df.duration<=8)) + (np.minimum(df.duration-8,47)*(df.duration>8)))",coef_Subsequent_tour_is_school_tour_Duration_gt_8_hours +util_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours,SCHOOL - Second tour of two mandatory tours: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<7)) * ((np.minimum(7-df.duration,47)*(df.duration<=7)) + (np.minimum(df.duration-7,47)*(df.duration>7)))",coef_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours +util_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours,SCHOOL - Second tour of two mandatory tours: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration>7)) * ((np.minimum(7-df.duration,47)*(df.duration<=7)) + (np.minimum(df.duration-7,47)*(df.duration>7)))",coef_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours +util_Departure_Constant_Before_0600_AM,SCHOOL - Departure Constant: Before 06:00 AM,@(df.start<7),coef_Departure_Constant_Before_0600_AM +util_Departure_Constant_0600_AM_to_0630_AM_7,SCHOOL - Departure Constant: 06:00 AM to 06:30 AM (7),@(df.start==7),coef_Departure_Constant_0600_AM_to_0630_AM_7 +util_Departure_Constant_0630_AM_to_0700_AM_8,SCHOOL - Departure Constant: 06:30 AM to 07:00 AM (8),@(df.start==8),coef_Departure_Constant_0630_AM_to_0700_AM_8 +util_Departure_Constant_0700_AM_to_0730_AM_9,SCHOOL - Departure Constant: 07:00 AM to 07:30 AM (9),@(df.start==9),coef_Departure_Constant_0700_AM_to_0730_AM_9 +util_Departure_Constant_0730_AM_to_0800_AM_10,SCHOOL - Departure Constant: 07:30 AM to 08:00 AM (10),@(df.start==10),coef_Departure_Constant_0730_AM_to_0800_AM_10 +util_Departure_Constant_After_0800_AM,SCHOOL - Departure Constant: After 08:00 AM,@(df.start>10),coef_Departure_Constant_After_0800_AM +util_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Linear,SCHOOL - Departure Constant: Shift for every 30 minutes after 8:30 am - Linear,"@((df.start>11)) * ((np.minimum(7-df.start,48)*(df.start<7)) + (np.minimum(df.start-11,23)*(df.start>11)))",coef_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Linear +util_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Square_Root,SCHOOL - Departure Constant: Shift for every 30 minutes after 8:30 am - Square Root,"@((df.start>11)) * (((np.minimum(7-df.start,48)*(df.start<7)) + (np.minimum(df.start-11,23)*(df.start>11))) ** 0.5)",coef_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Square_Root +util_Arrival_Constant_Before_0230_PM,SCHOOL - Arrival Constant: Before 02:30 PM,@(df.end<24),coef_Arrival_Constant_Before_0230_PM +util_Arrival_Constant_0230_PM_0300_PM_24_,SCHOOL - Arrival Constant: 02:30 PM - 03:00 PM (24) ,@(df.end==24),coef_Arrival_Constant_0230_PM_0300_PM_24_ +util_Arrival_Constant_0300_PM_0330_PM_25_,SCHOOL - Arrival Constant: 03:00 PM - 03:30 PM (25) ,@(df.end==25),coef_Arrival_Constant_0300_PM_0330_PM_25_ +util_Arrival_Constant_0330_PM_0400_PM_26_,SCHOOL - Arrival Constant: 03:30 PM - 04:00 PM (26) ,@(df.end==26),coef_Arrival_Constant_0330_PM_0400_PM_26_ +util_Arrival_Constant_0400_PM_0430_PM_27_,SCHOOL - Arrival Constant: 04:00 PM - 04:30 PM (27) ,@(df.end==27),coef_Arrival_Constant_0400_PM_0430_PM_27_ +util_Arrival_Constant_0430_PM_0500_PM_28_,SCHOOL - Arrival Constant: 04:30 PM - 05:00 PM (28) ,@(df.end==28),coef_Arrival_Constant_0430_PM_0500_PM_28_ +util_Arrival_Constant_0500_PM_0530_PM_29,SCHOOL - Arrival Constant: 05:00 PM - 05:30 PM (29),@(df.end==29),coef_Arrival_Constant_0500_PM_0530_PM_29 +util_Arrival_Constant_0530_PM_0600_PM_30_,SCHOOL - Arrival Constant: 05:30 PM - 06:00 PM (30) ,@(df.end==30),coef_Arrival_Constant_0530_PM_0600_PM_30_ +util_Arrival_Constant_After_0600_PM,SCHOOL - Arrival Constant: After 06:00 PM,@(df.end>30),coef_Arrival_Constant_After_0600_PM +util_Arrival_Constant_Shift_for_every_30_minutes_after_630_pm_Linear,SCHOOL - Arrival Constant: Shift for every 30 minutes after 6:30 pm - Linear,"@(df.end>31) * ((np.minimum(24-df.end,6)*(df.end<24)) + (np.minimum(df.end-31,12)*(df.end>31)))",coef_Arrival_Constant_Shift_for_every_30_minutes_after_630_pm_Linear +util_Duration_Constant_Shift_for_every_30_minutes_less_than_6p5_hrs_Linear,SCHOOL - Duration Constant: Shift for every 30 minutes less than 6.5 hrs - Linear,"@((df.duration<13)) * ((np.minimum(13-df.duration,48)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19)))",coef_Duration_Constant_Shift_for_every_30_minutes_less_than_6p5_hrs_Linear +util_Duration_Constant_Shorter_than_7_hrs,SCHOOL - Duration Constant: Shorter than 7 hrs,@(df.duration<14),coef_Duration_Constant_Shorter_than_7_hrs +util_Duration_Constant_7_hours,SCHOOL - Duration Constant: 7 hours,@(df.duration==14),coef_Duration_Constant_7_hours +util_Duration_Constant_7p5_hours,SCHOOL - Duration Constant: 7.5 hours,@(df.duration==15),coef_Duration_Constant_7p5_hours +util_Duration_Constant_8_hours,SCHOOL - Duration Constant: 8 hours,@(df.duration==16),coef_Duration_Constant_8_hours +util_Duration_Constant_8p5_hours,SCHOOL - Duration Constant: 8.5 hours,@(df.duration==17),coef_Duration_Constant_8p5_hours +util_Duration_Constant_9_hours,SCHOOL - Duration Constant: 9 hours,@(df.duration==18),coef_Duration_Constant_9_hours +util_Duration_Constant_Longer_than_9_hrs,SCHOOL - Duration Constant: Longer than 9 hrs,@(df.duration>18),coef_Duration_Constant_Longer_than_9_hrs +util_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Linear,SCHOOL - Duration Constant: Shift for every 30 minutes more than 9.5 hrs - Linear,"@(df.duration>19) * ((np.minimum(13-df.duration,47)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19)))",coef_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Linear +util_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Squared,SCHOOL - Duration Constant: Shift for every 30 minutes more than 9.5 hrs - Squared,"@(df.duration>19) * (((np.minimum(13-df.duration,47)*(df.duration<13)) + (np.minimum(df.duration-19,9)*(df.duration>19))) ** 2)",coef_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Squared diff --git a/configs/tour_scheduling_school_coeffs.csv b/configs/tour_scheduling_school_coeffs.csv index 1e3f0fb..589b4ce 100644 --- a/configs/tour_scheduling_school_coeffs.csv +++ b/configs/tour_scheduling_school_coeffs.csv @@ -1 +1,59 @@ coefficient_name,value,constrain +coef_Mode_Choice_Logsum,0.524017431,F +coef_Low_income_lt25000_Departure_before_730_am__Linear,0.134574548,F +coef_Low_income_lt25000_Departure_after_800_am_Linear,-0.075554725,F +coef_Low_income_lt25000_Duration_lt_8hrs,-0.150039779,F +coef_Low_income_lt25000_Duration_gt_8hrs,-0.043562413,F +coef_Med_income_25k_to_60k_Departure_before_730_am__Linear,0.102594589,F +coef_Age_0_to_5_yrs_Departure_Before_730_am,-0.178916721,F +coef_Age_13_to_15_yrs_Departure_Before_730_am,-0.164708594,F +coef_Age_13_to_15_yrs_Departure_After_800_am,0.169641715,F +coef_Age_16_to_17_yrs_Departure_After_800_am,0.077527892,F +coef_Age_0_to_5_yrs_Duration_lt_8hrs,0.254486164,F +coef_Age_0_to_5_yrs_Duration_gt_8hrs,0.14409403,F +coef_Age_13_to_15_yrs_Duration_lt_8hrs,-0.211129273,F +coef_Age_13_to_15_yrs_Duration_gt_8hrs,0.102348303,F +coef_Age_16_to_17_yrs_Duration_gt_8hrs,0.1184616,F +coef_Time_SOV_freeflow_to_destination_Departure_before_730_am__Linear,0.011813391,F +coef_Time_SOV_freeflow_to_destination_Departure_after_800_am_Linear,-0.0088956,F +coef_Time_SOV_freeflow_to_destination_Duration_lt_8hrs,-0.011793416,F +coef_Time_SOV_freeflow_to_destination_Duration_gt_8hrs,0.001485453,F +coef_All_adults_in_the_household_are_fulltime_workers_Departure_before_730_am__Linear,0.1625279,F +coef_All_adults_in_the_household_are_fulltime_workers_Departure_after_800_am_Linear,-0.161840551,F +coef_All_adults_in_the_household_are_fulltime_workers_Duration_lt_8hrs,-0.233061473,F +coef_All_adults_in_the_household_are_fulltime_workers_Duration_gt_8hrs,0.08462748,F +coef_Subsequent_tour_is_work_tour_Duration_lt_8_hours,0.154332088,F +coef_Subsequent_tour_is_work_tour_Duration_gt_8_hours,-0.62871831,F +coef_Subsequent_tour_is_school_tour_Departure_after_800_am,-0.41618671,F +coef_Subsequent_tour_is_school_tour_Duration_lt_8_hours,0.261423274,F +coef_Subsequent_tour_is_school_tour_Duration_gt_8_hours,-0.263857404,F +coef_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours,-0.537535787,F +coef_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours,-0.545479806,F +coef_Departure_Constant_Before_0600_AM,-10.04417122,F +coef_Departure_Constant_0600_AM_to_0630_AM_7,-3.792318538,F +coef_Departure_Constant_0630_AM_to_0700_AM_8,-1.941704371,F +coef_Departure_Constant_0700_AM_to_0730_AM_9,-0.558080224,F +coef_Departure_Constant_0730_AM_to_0800_AM_10,0,T +coef_Departure_Constant_After_0800_AM,-0.280439854,F +coef_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Linear,0.293697164,F +coef_Departure_Constant_Shift_for_every_30_minutes_after_830_am_Square_Root,-1.220165702,F +coef_Arrival_Constant_Before_0230_PM,0.720751128,F +coef_Arrival_Constant_0230_PM_0300_PM_24_,1.605012317,F +coef_Arrival_Constant_0300_PM_0330_PM_25_,0.463502951,F +coef_Arrival_Constant_0330_PM_0400_PM_26_,0.196107179,F +coef_Arrival_Constant_0400_PM_0430_PM_27_,0,T +coef_Arrival_Constant_0430_PM_0500_PM_28_,-0.389421484,F +coef_Arrival_Constant_0500_PM_0530_PM_29,-1.412720271,F +coef_Arrival_Constant_0530_PM_0600_PM_30_,-1.938567609,F +coef_Arrival_Constant_After_0600_PM,-2.246103785,F +coef_Arrival_Constant_Shift_for_every_30_minutes_after_630_pm_Linear,-0.552223894,F +coef_Duration_Constant_Shift_for_every_30_minutes_less_than_6p5_hrs_Linear,-0.249724903,F +coef_Duration_Constant_Shorter_than_7_hrs,-2.791243553,F +coef_Duration_Constant_7_hours,-1.679006455,F +coef_Duration_Constant_7p5_hours,-0.555288612,F +coef_Duration_Constant_8_hours,0,T +coef_Duration_Constant_8p5_hours,-0.139412248,F +coef_Duration_Constant_9_hours,-0.509620713,F +coef_Duration_Constant_Longer_than_9_hrs,-0.561449384,F +coef_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Linear,0.379484906,F +coef_Duration_Constant_Shift_for_every_30_minutes_more_than_9p5_hrs_Squared,-0.028814477,F diff --git a/configs/tour_scheduling_university.csv b/configs/tour_scheduling_university.csv index fbad064..9617383 100644 --- a/configs/tour_scheduling_university.csv +++ b/configs/tour_scheduling_university.csv @@ -1,42 +1,42 @@ -Description,Expression,Coefficient -UNIVERSITY - Mode Choice Logsum,mode_choice_logsum,0.384091138 -UNIVERSITY - Low income (<25000) - Departure before 8:00 am - Linear,"@((df.is_income_less25K) & (df.start<11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",0.246389489 -UNIVERSITY - Low income (<25000) - Duration < 4hrs,"@((df.is_income_less25K) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.262288853 -UNIVERSITY - Medium high income (60k to 120k) - Departure after 8:30 am - Linear,"@((df.is_income_60K_to_120K) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",-0.039079271 -UNIVERSITY - Medium high income (60k to 120k) - Duration > 4hrs,"@((df.is_income_60K_to_120K) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.041536976 -UNIVERSITY - High income (120k+) - Departure after 8:30 am - Linear,"@((df.is_income_greater120K) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",-0.039306518 -UNIVERSITY - Age 41+ - Departure after 8:30 am - Linear,"@((df.age >= 41) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",0.055344625 -UNIVERSITY - Age 41+ - Duration< 4 hrs -Linear,"@((df.age >= 41) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.152498075 -UNIVERSITY - Distance to destination - Departure before 8:00 am - Linear,"@((df.start<11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))*(df.distance_to_school)",0.006869786 -UNIVERSITY - Distance to destination - Departure after 8:30 am - Linear,"@((df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))*(df.distance_to_school)",0.003686402 -UNIVERSITY - Distance to destination - Duration< 4 hrs -Linear,"@((df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))*(df.distance_to_school)",-0.04027172 -UNIVERSITY - Distance to destination - Duration> 4 hrs- Linear,"@((df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))*(df.distance_to_school)",0.003803244 -UNIVERSITY - Distance to destination - Duration< 4 hrs - Square Root,"@((df.duration<8))*(abs(((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))) ** 0.5)*(df.distance_to_school)",0.041070113 -UNIVERSITY - Subsequent tour is work tour: Departure after 8:30 am,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'work')) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",-0.29166292 -UNIVERSITY - Subsequent tour is work tour: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'work')) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.482292817 -UNIVERSITY - Subsequent tour is work tour: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'work')) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.364624965 -UNIVERSITY - Subsequent tour is school tour: Departure after 8:30 am,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",-0.286206955 -UNIVERSITY - Subsequent tour is school tour: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",0.30341795 -UNIVERSITY - Subsequent tour is school tour: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1) & (df.tour_type == 'school')) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.247436221 -UNIVERSITY - Second tour of two mandatory tours: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.211059285 -UNIVERSITY - Second tour of two mandatory tours: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",-0.35316727 -UNIVERSITY - Departure Constant: Shift for every 30 minutes before 07:00 am - Linear,"@((df.start<9))*((np.minimum(9-df.start,6)*(df.start<9)) + (np.minimum(df.start-13,20)*(df.start>13)))",-0.947594485 -UNIVERSITY - Departure Constant: Before 07:30 AM,@(df.start<10),-0.296228472 -UNIVERSITY - Departure Constant: 07:30 AM - 08:00 AM,@(df.start==10),-0.650538708 -UNIVERSITY - Departure Constant: 08:00 AM - 08:30 AM,@(df.start==11),0 -UNIVERSITY - Departure Constant: 08:30 AM - 09:00 AM,@(df.start==12),-0.525569176 -UNIVERSITY - Departure Constant: After 09:00 AM,@(df.start>12),-0.536008149 -UNIVERSITY - Departure Constant: Shift for every 30 minutes after 09:30 am - Square Root,"@((df.start>13))*(((np.minimum(9-df.start,6)*(df.start<9)) + (np.minimum(df.start-13,20)*(df.start>13))) ** 0.5)",-0.500045988 -UNIVERSITY - Arrival Constant: Shift for every 30 minutes before 02:30 pm - Linear,"@((df.end<24)) * ((np.minimum(24-df.end,12) * (df.end<24)) + (np.minimum(df.end-28,19) * (df.end>28)))",-0.209375282 -UNIVERSITY - Arrival Constant: Before 03:00 PM,@((df.end<25)),-0.962572172 -UNIVERSITY - Arrival Constant: 03:00 PM - 03:30 PM,@(df.end==25),-0.627901132 -UNIVERSITY - Arrival Constant: 03:30 PM - 04:00 PM,@(df.end==26),0 -UNIVERSITY - Arrival Constant: 04:00 PM - 04:30 PM,@(df.end==27),-0.190818088 -UNIVERSITY - Arrival Constant: After 04:30 PM,@(df.end>27),-0.66545038 -UNIVERSITY - Arrival Constant: Shift for every 30 minutes after 05:00 pm - Linear,"@((df.end>28))*((np.minimum(24-df.end,12)*(df.end<24)) + (np.minimum(df.end-28,19)*(df.end>28)))",-0.209562151 -UNIVERSITY - Arrival Constant: Shift for every 30 minutes after 05:00 pm - Square Root,"@((df.end>28)) *(((np.minimum(24-df.end,12)*(df.end<24)) + (np.minimum(df.end-28,19)*(df.end>28))) ** 0.5)",0.503497689 -UNIVERSITY - Duration Constant: Shift for every 30 minutes less than 4.5 hrs - Square Root,"@((df.duration<9))*((np.minimum(9-df.duration,7)*(df.duration<9)) + (np.minimum(df.duration-11,25)*(df.duration>11)))",0.225706446 -UNIVERSITY - Duration Constant: 4.5 hours or less,@(df.duration<10),0.03106769 -DUNIVERSITY - Duration Constant: 5 hours,@(df.duration==10),0 -UNIVERSITY - Duration Constant: 5.5 hours or more,@(df.duration>10),0.343447232 -UNIVERSITY - Duration Constant: Shift for every 30 minutes more than 5.5 hrs - Linear,"@((df.duration>11))*(((np.minimum(9-df.duration,7)*(df.duration<9)) + (np.minimum(df.duration-11,25)*(df.duration>11))) ** 0.5)",-0.115312573 +Label,Description,Expression,Coefficient +util_Mode_Choice_Logsum,UNIVERSITY - Mode Choice Logsum,mode_choice_logsum,coef_Mode_Choice_Logsum +util_Low_income_lt25000_Departure_before_800_am_Linear,UNIVERSITY - Low income (<25000) - Departure before 8:00 am - Linear,"@((df.is_income_less25K) & (df.start<11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_Low_income_lt25000_Departure_before_800_am_Linear +util_Low_income_lt25000_Duration_lt_4hrs,UNIVERSITY - Low income (<25000) - Duration < 4hrs,"@((df.is_income_less25K) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Low_income_lt25000_Duration_lt_4hrs +util_Medium_high_income_60k_to_120k_Departure_after_830_am_Linear,UNIVERSITY - Medium high income (60k to 120k) - Departure after 8:30 am - Linear,"@((df.is_income_60K_to_120K) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_Medium_high_income_60k_to_120k_Departure_after_830_am_Linear +util_Medium_high_income_60k_to_120k_Duration_gt_4hrs,UNIVERSITY - Medium high income (60k to 120k) - Duration > 4hrs,"@((df.is_income_60K_to_120K) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Medium_high_income_60k_to_120k_Duration_gt_4hrs +util_High_income_120k_plus_Departure_after_830_am_Linear,UNIVERSITY - High income (120k+) - Departure after 8:30 am - Linear,"@((df.is_income_greater120K) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_High_income_120k_plus_Departure_after_830_am_Linear +util_Age_41_plus_Departure_after_830_am_Linear,UNIVERSITY - Age 41+ - Departure after 8:30 am - Linear,"@((df.age >= 41) & (df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_Age_41_plus_Departure_after_830_am_Linear +util_Age_41_plus_Durationlt_4_hrs_Linear,UNIVERSITY - Age 41+ - Duration< 4 hrs -Linear,"@((df.age >= 41) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Age_41_plus_Durationlt_4_hrs_Linear +util_Distance_to_destination_Departure_before_800_am_Linear,UNIVERSITY - Distance to destination - Departure before 8:00 am - Linear,"@((df.start<11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))*(df.distance_to_school)",coef_Distance_to_destination_Departure_before_800_am_Linear +util_Distance_to_destination_Departure_after_830_am_Linear,UNIVERSITY - Distance to destination - Departure after 8:30 am - Linear,"@((df.start>11))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))*(df.distance_to_school)",coef_Distance_to_destination_Departure_after_830_am_Linear +util_Distance_to_destination_Durationlt_4_hrs_Linear,UNIVERSITY - Distance to destination - Duration< 4 hrs -Linear,"@((df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))*(df.distance_to_school)",coef_Distance_to_destination_Durationlt_4_hrs_Linear +util_Distance_to_destination_Durationgt_4_hrs_Linear,UNIVERSITY - Distance to destination - Duration> 4 hrs- Linear,"@((df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))*(df.distance_to_school)",coef_Distance_to_destination_Durationgt_4_hrs_Linear +util_Distance_to_destination_Durationlt_4_hrs_Square_Root,UNIVERSITY - Distance to destination - Duration< 4 hrs - Square Root,"@((df.duration<8))*(abs(((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))) ** 0.5)*(df.distance_to_school)",coef_Distance_to_destination_Durationlt_4_hrs_Square_Root +util_Subsequent_tour_is_work_tour_Departure_after_830_am,UNIVERSITY - Subsequent tour is work tour: Departure after 8:30 am,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'work') & (df.start>11)))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_Subsequent_tour_is_work_tour_Departure_after_830_am +util_Subsequent_tour_is_work_tour_Duration_lt_4_hours,UNIVERSITY - Subsequent tour is work tour: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'work') & (df.duration<8)))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Subsequent_tour_is_work_tour_Duration_lt_4_hours +util_Subsequent_tour_is_work_tour_Duration_gt_4_hours,UNIVERSITY - Subsequent tour is work tour: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'work') & (df.duration>8)))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Subsequent_tour_is_work_tour_Duration_gt_4_hours +util_Subsequent_tour_is_school_tour_Departure_after_830_am,UNIVERSITY - Subsequent tour is school tour: Departure after 8:30 am,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.start>11)))*((np.minimum(11-df.start,8)*(df.start<=11)) + (np.minimum(df.start-11,22)*(df.start>11)))",coef_Subsequent_tour_is_school_tour_Departure_after_830_am +util_Subsequent_tour_is_school_tour_Duration_lt_4_hours,UNIVERSITY - Subsequent tour is school tour: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.duration<8)))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Subsequent_tour_is_school_tour_Duration_lt_4_hours +util_Subsequent_tour_is_school_tour_Duration_gt_4_hours,UNIVERSITY - Subsequent tour is school tour: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num == 1) & (df.tour_type.shift(-1) == 'school') & (df.duration>8)))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Subsequent_tour_is_school_tour_Duration_gt_4_hours +util_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours,UNIVERSITY - Second tour of two mandatory tours: Duration < 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours +util_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours,UNIVERSITY - Second tour of two mandatory tours: Duration > 4 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration>8))*((np.minimum(8-df.duration,6)*(df.duration<=8)) + (np.minimum(df.duration-8,28)*(df.duration>8)))",coef_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours +util_Departure_Constant_Shift_for_every_30_minutes_before_0700_am_Linear,UNIVERSITY - Departure Constant: Shift for every 30 minutes before 07:00 am - Linear,"@((df.start<9))*((np.minimum(9-df.start,6)*(df.start<9)) + (np.minimum(df.start-13,20)*(df.start>13)))",coef_Departure_Constant_Shift_for_every_30_minutes_before_0700_am_Linear +util_Departure_Constant_Before_0730_AM,UNIVERSITY - Departure Constant: Before 07:30 AM,@(df.start<10),coef_Departure_Constant_Before_0730_AM +util_Departure_Constant_0730_AM_0800_AM,UNIVERSITY - Departure Constant: 07:30 AM - 08:00 AM,@(df.start==10),coef_Departure_Constant_0730_AM_0800_AM +util_Departure_Constant_0800_AM_0830_AM,UNIVERSITY - Departure Constant: 08:00 AM - 08:30 AM,@(df.start==11),coef_Departure_Constant_0800_AM_0830_AM +util_Departure_Constant_0830_AM_0900_AM,UNIVERSITY - Departure Constant: 08:30 AM - 09:00 AM,@(df.start==12),coef_Departure_Constant_0830_AM_0900_AM +util_Departure_Constant_After_0900_AM,UNIVERSITY - Departure Constant: After 09:00 AM,@(df.start>12),coef_Departure_Constant_After_0900_AM +util_Departure_Constant_Shift_for_every_30_minutes_after_0930_am_Square_Root,UNIVERSITY - Departure Constant: Shift for every 30 minutes after 09:30 am - Square Root,"@((df.start>13))*(((np.minimum(9-df.start,6)*(df.start<9)) + (np.minimum(df.start-13,20)*(df.start>13))) ** 0.5)",coef_Departure_Constant_Shift_for_every_30_minutes_after_0930_am_Square_Root +util_Arrival_Constant_Shift_for_every_30_minutes_before_0230_pm_Linear,UNIVERSITY - Arrival Constant: Shift for every 30 minutes before 02:30 pm - Linear,"@((df.end<24)) * ((np.minimum(24-df.end,12) * (df.end<24)) + (np.minimum(df.end-28,19) * (df.end>28)))",coef_Arrival_Constant_Shift_for_every_30_minutes_before_0230_pm_Linear +util_Arrival_Constant_Before_0300_PM,UNIVERSITY - Arrival Constant: Before 03:00 PM,@((df.end<25)),coef_Arrival_Constant_Before_0300_PM +util_Arrival_Constant_0300_PM_0330_PM,UNIVERSITY - Arrival Constant: 03:00 PM - 03:30 PM,@(df.end==25),coef_Arrival_Constant_0300_PM_0330_PM +util_Arrival_Constant_0330_PM_0400_PM,UNIVERSITY - Arrival Constant: 03:30 PM - 04:00 PM,@(df.end==26),coef_Arrival_Constant_0330_PM_0400_PM +util_Arrival_Constant_0400_PM_0430_PM,UNIVERSITY - Arrival Constant: 04:00 PM - 04:30 PM,@(df.end==27),coef_Arrival_Constant_0400_PM_0430_PM +util_Arrival_Constant_After_0430_PM,UNIVERSITY - Arrival Constant: After 04:30 PM,@(df.end>27),coef_Arrival_Constant_After_0430_PM +util_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Linear,UNIVERSITY - Arrival Constant: Shift for every 30 minutes after 05:00 pm - Linear,"@((df.end>28))*((np.minimum(24-df.end,12)*(df.end<24)) + (np.minimum(df.end-28,19)*(df.end>28)))",coef_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Linear +util_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Square_Root,UNIVERSITY - Arrival Constant: Shift for every 30 minutes after 05:00 pm - Square Root,"@((df.end>28)) *(((np.minimum(24-df.end,12)*(df.end<24)) + (np.minimum(df.end-28,19)*(df.end>28))) ** 0.5)",coef_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Square_Root +util_Duration_Constant_Shift_for_every_30_minutes_less_than_4p5_hrs_Square_Root,UNIVERSITY - Duration Constant: Shift for every 30 minutes less than 4.5 hrs - Square Root,"@((df.duration<9))*((np.minimum(9-df.duration,7)*(df.duration<9)) + (np.minimum(df.duration-11,25)*(df.duration>11)))",coef_Duration_Constant_Shift_for_every_30_minutes_less_than_4p5_hrs_Square_Root +util_Duration_Constant_4p5_hours_or_less,UNIVERSITY - Duration Constant: 4.5 hours or less,@(df.duration<10),coef_Duration_Constant_4p5_hours_or_less +util_Duration_Constant_5_hours,UNIVERSITY - Duration Constant: 5 hours,@(df.duration==10),coef_Duration_Constant_5_hours +util_Duration_Constant_5p5_hours_or_more,UNIVERSITY - Duration Constant: 5.5 hours or more,@(df.duration>10),coef_Duration_Constant_5p5_hours_or_more +util_Duration_Constant_Shift_for_every_30_minutes_more_than_5p5_hrs_Linear,UNIVERSITY - Duration Constant: Shift for every 30 minutes more than 5.5 hrs - Linear,"@((df.duration>11))*(((np.minimum(9-df.duration,7)*(df.duration<9)) + (np.minimum(df.duration-11,25)*(df.duration>11))) ** 0.5)",coef_Duration_Constant_Shift_for_every_30_minutes_more_than_5p5_hrs_Linear diff --git a/configs/tour_scheduling_university_coeffs.csv b/configs/tour_scheduling_university_coeffs.csv index 1e3f0fb..1472dfb 100644 --- a/configs/tour_scheduling_university_coeffs.csv +++ b/configs/tour_scheduling_university_coeffs.csv @@ -1 +1,42 @@ coefficient_name,value,constrain +coef_Mode_Choice_Logsum,0.384091138,F +coef_Low_income_lt25000_Departure_before_800_am_Linear,0.246389489,F +coef_Low_income_lt25000_Duration_lt_4hrs,-0.262288853,F +coef_Medium_high_income_60k_to_120k_Departure_after_830_am_Linear,-0.039079271,F +coef_Medium_high_income_60k_to_120k_Duration_gt_4hrs,-0.041536976,F +coef_High_income_120k_plus_Departure_after_830_am_Linear,-0.039306518,F +coef_Age_41_plus_Departure_after_830_am_Linear,0.055344625,F +coef_Age_41_plus_Durationlt_4_hrs_Linear,-0.152498075,F +coef_Distance_to_destination_Departure_before_800_am_Linear,0.006869786,F +coef_Distance_to_destination_Departure_after_830_am_Linear,0.003686402,F +coef_Distance_to_destination_Durationlt_4_hrs_Linear,-0.04027172,F +coef_Distance_to_destination_Durationgt_4_hrs_Linear,0.003803244,F +coef_Distance_to_destination_Durationlt_4_hrs_Square_Root,0.041070113,F +coef_Subsequent_tour_is_work_tour_Departure_after_830_am,-0.29166292,F +coef_Subsequent_tour_is_work_tour_Duration_lt_4_hours,-0.482292817,F +coef_Subsequent_tour_is_work_tour_Duration_gt_4_hours,-0.364624965,F +coef_Subsequent_tour_is_school_tour_Departure_after_830_am,-0.286206955,F +coef_Subsequent_tour_is_school_tour_Duration_lt_4_hours,0.30341795,F +coef_Subsequent_tour_is_school_tour_Duration_gt_4_hours,-0.247436221,F +coef_Second_tour_of_two_mandatory_tours_Duration_lt_4_hours,-0.211059285,F +coef_Second_tour_of_two_mandatory_tours_Duration_gt_4_hours,-0.35316727,F +coef_Departure_Constant_Shift_for_every_30_minutes_before_0700_am_Linear,-0.947594485,F +coef_Departure_Constant_Before_0730_AM,-0.296228472,F +coef_Departure_Constant_0730_AM_0800_AM,-0.650538708,F +coef_Departure_Constant_0800_AM_0830_AM,0,T +coef_Departure_Constant_0830_AM_0900_AM,-0.525569176,F +coef_Departure_Constant_After_0900_AM,-0.536008149,F +coef_Departure_Constant_Shift_for_every_30_minutes_after_0930_am_Square_Root,-0.500045988,F +coef_Arrival_Constant_Shift_for_every_30_minutes_before_0230_pm_Linear,-0.209375282,F +coef_Arrival_Constant_Before_0300_PM,-0.962572172,F +coef_Arrival_Constant_0300_PM_0330_PM,-0.627901132,F +coef_Arrival_Constant_0330_PM_0400_PM,0,T +coef_Arrival_Constant_0400_PM_0430_PM,-0.190818088,F +coef_Arrival_Constant_After_0430_PM,-0.66545038,F +coef_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Linear,-0.209562151,F +coef_Arrival_Constant_Shift_for_every_30_minutes_after_0500_pm_Square_Root,0.503497689,F +coef_Duration_Constant_Shift_for_every_30_minutes_less_than_4p5_hrs_Square_Root,0.225706446,F +coef_Duration_Constant_4p5_hours_or_less,0.03106769,F +coef_Duration_Constant_5_hours,0,T +coef_Duration_Constant_5p5_hours_or_more,0.343447232,F +coef_Duration_Constant_Shift_for_every_30_minutes_more_than_5p5_hrs_Linear,-0.115312573,F diff --git a/configs/tour_scheduling_work.csv b/configs/tour_scheduling_work.csv index c759b7d..e180d0c 100644 --- a/configs/tour_scheduling_work.csv +++ b/configs/tour_scheduling_work.csv @@ -1,101 +1,100 @@ -Description,Expression,Coefficient -"# Note: In CTRAMP, duration is from 1 to 48 but in ActivitySim, it is from 0 to 47 since duration was calculated as (end - start). Therefore, duration in ActivitySim expression = CTRAMP duration expresssion - 1 ",, -Mode Choice Logsum,mode_choice_logsum,0.2279 -Female - Departure before 7:00 am - Linear,"@((df.is_female) & (df.start<9)) * df.departureLinearShift1",-0.12935306 -Female - Arrival after 6:00 pm - Linear,"@((df.is_female) & (df.end>30)) * df.arrivalLinearShift1",-0.041312616 -Female with preschool child - Departure before 7:00 am - Linear,"@((df.is_female) & (df.is_pre_drive_child_in_HH) & (df.start<9)) * df.departureLinearShift1",-0.129130464 -Female with preschool child - Departure after 7:30 am - Linear,"@((df.is_female) & (df.is_pre_drive_child_in_HH) & (df.start>9)) * df.departureLinearShift1",-0.031947595 -Female with preschool child - Arrival after 6:00 pm - Linear,"@((df.is_female) & (df.is_pre_drive_child_in_HH) & (df.end>30)) * df.arrivalLinearShift1",-0.048859218 -Low income (<25000) - Departure before 7:00 am - Linear,"@((df.is_income_less25K) & (df.start<9)) * df.departureLinearShift1",0.232768373 -Low income (<25000) - Departure after 7:30 am - Linear,"@((df.is_income_less25K) & (df.start>9)) * df.departureLinearShift1",0.014908169 -Low income (<25000) - Arrival after 6:00 pm - Linear,"@((df.is_income_less25K) & (df.start>30)) * df.arrivalLinearShift1",0.039105101 -Med income (25k to 60k) - Departure before 7:00 am - Linear,"@((df.is_income_25K_to_60K) & (df.start<9)) * df.departureLinearShift1",0.123945957 -Med income (25k to 60k) - Arrival after 6:00 pm - Linear,"@((df.is_income_25K_to_60K) & (df.end>30)) * df.arrivalLinearShift1",0.020965221 -Med-high income (60k to 120k) - Departure before 7:00 am - Linear,"@((df.is_income_60K_to_120K) & (df.start<9)) * df.departureLinearShift1",0.09890939 -Age 16 to 18 yrs - Departure Before 7:00 am,"@(((df.age>=16) & (df.age<=18)) & (df.start<9)) * df.departureLinearShift1",-0.459593556 -Age 16 to 18 yrs - Departure After 7:30 am,"@(((df.age>=16) & (df.age<=18)) & (df.start>9)) * df.departureLinearShift1",0.060951693 -Age 19 to 24 yrs - Departure After 7:30 am,"@(((df.age>=19) & (df.age<=24)) & (df.start>9)) * df.departureLinearShift1",0.031477187 -Age 25 to 40 yrs - Departure Before 7:00 am,"@(((df.age>=25) & (df.age<=40)) & (df.start<9)) * df.departureLinearShift1",-0.11723451 -Age 65+ yrs - Departure After 7:30 am,"@((df.age>=65) & (df.start>9)) * df.departureLinearShift1",0.051923956 -Age 19 to 24 yrs - Arrival after 6:00 pm ,"@(((df.age>=19) & (df.age<=24)) & (df.end>30)) * df.arrivalLinearShift1",0.032734453 -Age 25 to 40 yrs - Arrival before 5:30 pm ,"@(((df.age>=25) & (df.age<=40)) & (df.end<30)) * df.arrivalLinearShift1",-0.027623617 -Age 56 to 64 yrs - Arrival after 6:00 pm ,"@(((df.age>=56) & (df.age<65)) & (df.end>30)) * df.arrivalLinearShift1",-0.049130187 -Age 65+ yrs - Arrival before 5:30 pm ,"@((df.age>=65) & (df.end<30)) * df.arrivalLinearShift1",0.056774635 -Age 65+ yrs - Arrival after 6:00 pm ,"@((df.age>=65) & (df.end>30)) * df.arrivalLinearShift1",-0.077532684 -Zero auto HH - Departure before 7:00 am - Linear,"@((df.auto_ownership == 0) & (df.start<9)) * df.departureLinearShift1",0.396983749 -Zero auto HH - Arrival after 6:00 pm - Linear,"@((df.auto_ownership == 0) & (df.end>30)) * df.arrivalLinearShift1",0.050665232 -Part-time worker - Departure before 7:00 am - Linear,"@((df.ptype==2) & (df.start<9)) * df.departureLinearShift1",-0.264760988 -Part-time worker - Departure after 7:30 am - Linear,"@((df.ptype==2) & (df.start>9)) * df.departureLinearShift1",0.126626287 -Part-time worker - Arrival before 5:30 pm - Linear,"@((df.ptype==2) & (df.end<30)) * df.arrivalLinearShift1",0.175158545 -Part-time worker - Arrival after 6:00 pm - Linear,"@((df.ptype==2) & (df.end>30)) * df.arrivalLinearShift1",-0.054124518 -University student - Departure after 7:30 am - Linear,"@((df.ptype==3) & (df.start>9)) * df.departureLinearShift1",0.024758204 -University student - Arrival before 5:30 pm - Linear,"@((df.ptype==3) & (df.end<30)) * df.arrivalLinearShift1",0.035389739 -University student - Arrival after 6:00 pm - Linear,"@((df.ptype==3) & (df.end>30)) * df.arrivalLinearShift1",0.06173996 -Blue collar - Departure before 7:00 am - Linear,"@((df.work_segment==5) & (df.start<9)) * df.departureLinearShift1",0.327242475 -Blue collar - Departure after 7:30 am - Linear,"@((df.work_segment==5)& (df.start>9)) * df.departureLinearShift1",0.047214248 -Blue collar - Arrival before 5:30 pm - Linear,"@((df.work_segment==5)& (df.end<30)) * df.arrivalLinearShift1",0.04197056 -Service - Departure before 7:00 am - Linear,"@((df.work_segment==2) & (df.start<9)) * df.departureLinearShift1",0.117783508 -Service - Departure after 7:30 am - Linear,"@((df.work_segment==2) & (df.start>9)) * df.departureLinearShift1",0.081611629 -Service - Arrival before 5:30 pm - Linear,"@((df.work_segment==2) & (df.end<30)) * df.arrivalLinearShift1",0 -Health - Departure before 7:00 am - Linear,"@((df.work_segment==3) & (df.start<9)) * df.departureLinearShift1",0.135275931 -Health - Arrival after 6:00 pm - Linear,"@((df.work_segment==3) & (df.end>30)) * df.arrivalLinearShift1",0.062010123 -Retail and food - Departure after 7:30 am - Linear,"@((df.work_segment==4) & (df.start>9)) * df.departureLinearShift1",0.076302969 -Retail and food - Arrival before 5:30 pm - Linear,"@((df.work_segment==4) & (df.end<30)) * df.arrivalLinearShift1",0.052905387 -Retail and food - Arrival after 6:00 pm - Linear,"@((df.work_segment==4) & (df.end>30)) * df.arrivalLinearShift1",0.027069194 -Time (SOV freeflow) to destination - Departure before 7:00 am - Linear,"@(df.start<9) * df.departureLinearShift1* (df.auto_time_home_to_work)",0.011511462 -Time (SOV freeflow) to destination - Departure after 7:30 am - Linear,"@(df.start>9) * df.departureLinearShift1 * (df.auto_time_home_to_work)",-0.003821379 -Time (SOV freeflow) to destination - Arrival before 5:30 pm - Linear,"@(df.end<30) * df.arrivalLinearShift1 * (df.auto_time_home_to_work)",-0.00549578 -Time (SOV freeflow) to destination - Arrival after 6:00 pm - Linear,"@(df.end>30) * df.arrivalLinearShift1 * (df.auto_time_home_to_work)",0.002253695 -Presence of Non-Working Adult in the HH - Departure before 7:00 am - Linear,"@((df.is_non_worker_in_HH) & (df.start<9)) * df.departureLinearShift1",0.069957209 -Presence of Non-Working Adult in the HH - Arrival before 5:30 pm - Linear,"@((df.is_non_worker_in_HH) & (df.end<30)) * df.arrivalLinearShift1",-0.019807228 -Presence of Pre-Driving Age Children in the HH - Departure before 7:30 am - Linear,"@((df.is_pre_drive_child_in_HH) & (df.start<9)) * df.departureLinearShift1",-0.084564489 -Presence of Pre-Driving Age Children in the HH - Departure after 8 am - Linear,"@((df.is_pre_drive_child_in_HH) & (df.start>9)) * df.departureLinearShift1",-0.023894467 -Presence of Pre-Driving Age Children in the HH - Arrival before 5:30 pm - Linear,"@((df.is_pre_drive_child_in_HH) & (df.end<30)) * df.arrivalLinearShift1",0.018983499 -Presence of Pre-Driving Age Children in the HH - Arrival after 6:00 pm - Linear,"@((df.is_pre_drive_child_in_HH)& (df.end>30)) * df.arrivalLinearShift1",-0.032091123 -First of 2+ mandatory tour - Departure before 7:00 am,"@(((df.tour_count>1) & (df.tour_num == 1)) & (df.start<9)) * df.departureLinearShift1",0.145890035 -First of 2+ mandatory tour - Departure after 7:30 am,"@(((df.tour_count>1) & (df.tour_num == 1)) & (df.start>9)) * df.departureLinearShift1",-0.214531877 -First of 2+ mandatory tour - Duration < 9.5 hours,"@(((df.tour_count>1) & (df.tour_num == 1)) & (df.duration<21)) * ((np.minimum(21-df.duration,47)*(df.duration<=20)) + (np.minimum(df.duration-21,20)*(df.duration>21)))",0.3069241 -First of 2+ mandatory tour - Duration > 9.5 hours,"@(((df.tour_count>1) & (df.tour_num == 1)) & (df.duration<21)) * ((np.minimum(21-df.duration,47)*(df.duration<=20)) + (np.minimum(df.duration-21,20)*(df.duration>21)))",-0.526297898 -2nd or later of 2+ mandatory tour - Departure before 1:30 pm,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.start<22)) * df.departureLinearShift1",-0.221304523 -2nd or later of 2+ mandatory tour - Departure after 2:00 pm,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.start>22)) * df.departureLinearShift1",-0.176348812 -2nd or later of 2+ mandatory tour - Duration < 9.5 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<21)) * ((np.minimum(21-df.duration,47)*(df.duration<=20)) + (np.minimum(df.duration-21,20)*(df.duration>21)))",0.064893097 -2nd or later of 2+ mandatory tour - Duration > 9.5 hours,"@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<21)) * ((np.minimum(21-df.duration,47)*(df.duration<=20)) + (np.minimum(df.duration-21,20)*(df.duration>21)))",-0.656942049 -#Departure Constants,, -Departure Constant: Shift for every 30 minutes before 6:00 am - Linear,"@(df.start<6) * ((np.minimum(6-df.start,48)*(df.start<6)) + (np.minimum(df.start-13,21)*(df.start>13)))",-1.151564775 -Departure Constant: Before 06:00 AM,start<7,-2.197677208 -Departure Constant: 06:00 AM - 06:30 AM (7) ,start==7,-1.314098638 -Departure Constant: 06:30 AM - 07:00 AM (8) ,start==8,-0.558766028 -Departure Constant: 07:00 AM - 07:30 AM (9) ,start==9,0 -Departure Constant: 07:30 AM - 08:00 AM (10) ,start==10,-0.036957515 -Departure Constant: 08:00 AM - 08:30 AM (11) ,start==11,-0.285560423 -Departure Constant: 08:30 AM - 09:00 AM (12) ,start==12,-0.555478447 -Departure Constant: After 09:00 AM,start>12,-0.865125273 -Departure Constant: Shift for every 30 minutes after 9:30 am - Square Root,"@(df.start>13) * (((np.minimum(6-df.start,48)*(df.start<6)) + (np.minimum(df.start-13,21)*(df.start>13))) ** 0.5)",-0.435746145 -#Arrival Constants,, -Arrival Constant: Shift for every 30 minutes before 3:00 pm - Linear,"@(df.end<25) * ((np.minimum(25-df.end, 15)*(df.end<25))+ (np.minimum(df.end-35,11)*(df.end>35)))",-0.191607342 -Arrival Constant: Before 03:30 PM,end<26,-0.289333093 -Arrival Constant: 03:30 PM - 04:00 PM (26) ,end==26,-0.273555837 -Arrival Constant: 04:00 PM - 04:30 PM (27) ,end==27,-0.142653706 -Arrival Constant: 04:30 PM - 05:00 PM (28) ,end==28,-0.124814807 -Arrival Constant: 05:00 PM - 05:30 PM (29),end==29,0.004265544 -Arrival Constant: 05:30 PM - 06:00 PM (30) ,end==30,0 -Arrival Constant: 06:00 PM - 06:30 PM (31) ,end==31,-0.060515031 -Arrival Constant: 06:30 PM - 7:00 PM (32) ,end==32,-0.236621114 -Arrival Constant: 7:00 PM - 7:30 PM (33) ,end==33,-0.577646614 -Arrival Constant: 7:30 PM - 8:00 PM (34) ,end==34,-0.815994515 -Arrival Constant: After 08:00 PM,end>34,-0.854151925 -Arrival Constant: Shift for every 30 minutes after 6:30 pm - Square root,"@(df.end>35) * (((np.minimum(25-df.end, 15)*(df.end<25))+ (np.minimum(df.end-35,11)*(df.end>35))) ** 0.5)",-0.469720787 -#Duration Constants,, -Duration Constant: Shift for every 30 minutes less than 8.5 hrs - Linear,"@(df.duration<16) * ((np.minimum(16-df.duration,47)*(df.duration<16)) + (np.minimum(df.duration-25,10)*(df.duration>25)))",-0.074266981 -Duration Constant: Shorter than 8.5 hrs,duration<17,-0.748584335 -Duration Constant: 8.5 hours,duration==17,-0.654814097 -Duration Constant: 9 hours,duration==18,-0.372064236 -Duration Constant: 9.5 hours,duration==19,-0.144226124 -Duration Constant: 10 hours,duration==20,0.013153356 -Duration Constant: 10.5 hours,duration==21,0 -Duration Constant: 11 hours,duration==22,-0.115847245 -Duration Constant: 11.5 hours,duration==23,-0.288506368 -Duration Constant: 12 hours,duration==24,-0.524241874 -Duration Constant: Longer than 12 hrs,duration>24,-0.598634071 -Duration Constant: Shift for every 30 minutes more than 10 hrs - Linear,"@(df.duration>25) * ((np.minimum(16-df.duration,47)*(df.duration<16)) + (np.minimum(df.duration-25,10)*(df.duration>25)))",-0.293607565 -Calibration constant: Duration = 0,duration == 0,-10 +Label,Description,Expression,Coefficient +util_Mode_Choice_Logsum,Mode Choice Logsum,mode_choice_logsum,coef_Mode_Choice_Logsum +util_Female_Departure_before_7_am,Female - Departure before 7:00 am - Linear,@((df.female) & (df.start<9)) * df.departureLinearShift1,coef_Female_Departure_before_7_am +util_Female_Arrival_after_6_pm,Female - Arrival after 6:00 pm - Linear,@((df.female) & (df.end>30)) * df.arrivalLinearShift1,coef_Female_Arrival_after_6_pm +util_Female_with_preschool_child_Departure_before_7_am,Female with preschool child - Departure before 7:00 am - Linear,@((df.female) & (df.is_pre_drive_child_in_HH) & (df.start<9)) * df.departureLinearShift1,coef_Female_with_preschool_child_Departure_before_7_am +util_Female_with_preschool_child_Departure_after_7_am,Female with preschool child - Departure after 7:30 am - Linear,@((df.female) & (df.is_pre_drive_child_in_HH) & (df.start>9)) * df.departureLinearShift1,coef_Female_with_preschool_child_Departure_after_7_am +util_Female_with_preschool_child_Arrival_after_6_pm,Female with preschool child - Arrival after 6:00 pm - Linear,@((df.female) & (df.is_pre_drive_child_in_HH) & (df.end>30)) * df.arrivalLinearShift1,coef_Female_with_preschool_child_Arrival_after_6_pm +util_Low_income_lt_25000_Departure_before_7_am,Low income (<25000) - Departure before 7:00 am - Linear,@((df.is_income_less25K) & (df.start<9)) * df.departureLinearShift1,coef_Low_income_lt_25000_Departure_before_7_am +util_Low_income_lt_25000_Departure_after_7_am,Low income (<25000) - Departure after 7:30 am - Linear,@((df.is_income_less25K) & (df.start>9)) * df.departureLinearShift1,coef_Low_income_lt_25000_Departure_after_7_am +util_Low_income_lt_25000_Arrival_after_6_pm,Low income (<25000) - Arrival after 6:00 pm - Linear,@((df.is_income_less25K) & (df.start>30)) * df.arrivalLinearShift1,coef_Low_income_lt_25000_Arrival_after_6_pm +util_Med_income_25k_to_60k_Departure_before_7_am,Med income (25k to 60k) - Departure before 7:00 am - Linear,@((df.is_income_25K_to_60K) & (df.start<9)) * df.departureLinearShift1,coef_Med_income_25k_to_60k_Departure_before_7_am +util_Med_income_25k_to_60k_Arrival_after_6_pm,Med income (25k to 60k) - Arrival after 6:00 pm - Linear,@((df.is_income_25K_to_60K) & (df.end>30)) * df.arrivalLinearShift1,coef_Med_income_25k_to_60k_Arrival_after_6_pm +util_Medhigh_income_60k_to_120k_Departure_before_7_am,Med-high income (60k to 120k) - Departure before 7:00 am - Linear,@((df.is_income_60K_to_120K) & (df.start<9)) * df.departureLinearShift1,coef_Medhigh_income_60k_to_120k_Departure_before_7_am +util_Age_16_to_18_yrs_Departure_Before_7_am,Age 16 to 18 yrs - Departure Before 7:00 am,@(((df.age>=16) & (df.age<=18)) & (df.start<9)) * df.departureLinearShift1,coef_Age_16_to_18_yrs_Departure_Before_7_am +util_Age_16_to_18_yrs_Departure_After_7_am,Age 16 to 18 yrs - Departure After 7:30 am,@(((df.age>=16) & (df.age<=18)) & (df.start>9)) * df.departureLinearShift1,coef_Age_16_to_18_yrs_Departure_After_7_am +util_Age_19_to_24_yrs_Departure_After_7_am,Age 19 to 24 yrs - Departure After 7:30 am,@(((df.age>=19) & (df.age<=24)) & (df.start>9)) * df.departureLinearShift1,coef_Age_19_to_24_yrs_Departure_After_7_am +util_Age_25_to_40_yrs_Departure_Before_7_am,Age 25 to 40 yrs - Departure Before 7:00 am,@(((df.age>=25) & (df.age<=40)) & (df.start<9)) * df.departureLinearShift1,coef_Age_25_to_40_yrs_Departure_Before_7_am +util_Age_65_plus_yrs_Departure_After_7_am,Age 65+ yrs - Departure After 7:30 am,@((df.age>=65) & (df.start>9)) * df.departureLinearShift1,coef_Age_65_plus_yrs_Departure_After_7_am +util_Age_19_to_24_yrs_Arrival_after_6_pm,Age 19 to 24 yrs - Arrival after 6:00 pm ,@(((df.age>=19) & (df.age<=24)) & (df.end>30)) * df.arrivalLinearShift1,coef_Age_19_to_24_yrs_Arrival_after_6_pm +util_Age_25_to_40_yrs_Arrival_before_5_pm,Age 25 to 40 yrs - Arrival before 5:30 pm ,@(((df.age>=25) & (df.age<=40)) & (df.end<30)) * df.arrivalLinearShift1,coef_Age_25_to_40_yrs_Arrival_before_5_pm +util_Age_56_to_64_yrs_Arrival_after_6_pm,Age 56 to 64 yrs - Arrival after 6:00 pm ,@(((df.age>=56) & (df.age<65)) & (df.end>30)) * df.arrivalLinearShift1,coef_Age_56_to_64_yrs_Arrival_after_6_pm +util_Age_65_plus_yrs_Arrival_before_5_pm,Age 65+ yrs - Arrival before 5:30 pm ,@((df.age>=65) & (df.end<30)) * df.arrivalLinearShift1,coef_Age_65_plus_yrs_Arrival_before_5_pm +util_Age_65_plus_yrs_Arrival_after_6_pm,Age 65+ yrs - Arrival after 6:00 pm ,@((df.age>=65) & (df.end>30)) * df.arrivalLinearShift1,coef_Age_65_plus_yrs_Arrival_after_6_pm +util_Zero_auto_HH_Departure_before_7_am,Zero auto HH - Departure before 7:00 am - Linear,@((df.auto_ownership == 0) & (df.start<9)) * df.departureLinearShift1,coef_Zero_auto_HH_Departure_before_7_am +util_Zero_auto_HH_Arrival_after_6_pm,Zero auto HH - Arrival after 6:00 pm - Linear,@((df.auto_ownership == 0) & (df.end>30)) * df.arrivalLinearShift1,coef_Zero_auto_HH_Arrival_after_6_pm +util_Parttime_worker_Departure_before_7_am,Part-time worker - Departure before 7:00 am - Linear,@((df.ptype==2) & (df.start<9)) * df.departureLinearShift1,coef_Parttime_worker_Departure_before_7_am +util_Parttime_worker_Departure_after_7_am,Part-time worker - Departure after 7:30 am - Linear,@((df.ptype==2) & (df.start>9)) * df.departureLinearShift1,coef_Parttime_worker_Departure_after_7_am +util_Parttime_worker_Arrival_before_5_pm,Part-time worker - Arrival before 5:30 pm - Linear,@((df.ptype==2) & (df.end<30)) * df.arrivalLinearShift1,coef_Parttime_worker_Arrival_before_5_pm +util_Parttime_worker_Arrival_after_6_pm,Part-time worker - Arrival after 6:00 pm - Linear,@((df.ptype==2) & (df.end>30)) * df.arrivalLinearShift1,coef_Parttime_worker_Arrival_after_6_pm +util_University_student_Departure_after_7_am,University student - Departure after 7:30 am - Linear,@((df.ptype==3) & (df.start>9)) * df.departureLinearShift1,coef_University_student_Departure_after_7_am +util_University_student_Arrival_before_5_pm,University student - Arrival before 5:30 pm - Linear,@((df.ptype==3) & (df.end<30)) * df.arrivalLinearShift1,coef_University_student_Arrival_before_5_pm +util_University_student_Arrival_after_6_pm,University student - Arrival after 6:00 pm - Linear,@((df.ptype==3) & (df.end>30)) * df.arrivalLinearShift1,coef_University_student_Arrival_after_6_pm +#util_Blue_collar_Departure_before_7_am,#Blue collar - Departure before 7:00 am - Linear,@((df.work_segment==5) & (df.start<9)) * df.departureLinearShift1,coef_Blue_collar_Departure_before_7_am +#util_Blue_collar_Departure_after_7_am,#Blue collar - Departure after 7:30 am - Linear,@((df.work_segment==5)& (df.start>9)) * df.departureLinearShift1,coef_Blue_collar_Departure_after_7_am +#util_Blue_collar_Arrival_before_5_pm,#Blue collar - Arrival before 5:30 pm - Linear,@((df.work_segment==5)& (df.end<30)) * df.arrivalLinearShift1,coef_Blue_collar_Arrival_before_5_pm +#util_Service_Departure_before_7_am,#Service - Departure before 7:00 am - Linear,@((df.work_segment==2) & (df.start<9)) * df.departureLinearShift1,coef_Service_Departure_before_7_am +#util_Service_Departure_after_7_am,#Service - Departure after 7:30 am - Linear,@((df.work_segment==2) & (df.start>9)) * df.departureLinearShift1,coef_Service_Departure_after_7_am +#util_Service_Arrival_before_5_pm,#Service - Arrival before 5:30 pm - Linear,@((df.work_segment==2) & (df.end<30)) * df.arrivalLinearShift1,coef_Service_Arrival_before_5_pm +#util_Health_Departure_before_7_am,#Health - Departure before 7:00 am - Linear,@((df.work_segment==3) & (df.start<9)) * df.departureLinearShift1,coef_Health_Departure_before_7_am +#util_Health_Arrival_after_6_pm,#Health - Arrival after 6:00 pm - Linear,@((df.work_segment==3) & (df.end>30)) * df.arrivalLinearShift1,coef_Health_Arrival_after_6_pm +#util_Retail_and_food_Departure_after_7_am,#Retail and food - Departure after 7:30 am - Linear,@((df.work_segment==4) & (df.start>9)) * df.departureLinearShift1,coef_Retail_and_food_Departure_after_7_am +#util_Retail_and_food_Arrival_before_5_pm,#Retail and food - Arrival before 5:30 pm - Linear,@((df.work_segment==4) & (df.end<30)) * df.arrivalLinearShift1,coef_Retail_and_food_Arrival_before_5_pm +#util_Retail_and_food_Arrival_after_6_pm,#Retail and food - Arrival after 6:00 pm - Linear,@((df.work_segment==4) & (df.end>30)) * df.arrivalLinearShift1,coef_Retail_and_food_Arrival_after_6_pm +util_Time_SOV_freeflowto_destination_Departure_before_7_am,Time (SOV freeflow) to destination - Departure before 7:00 am - Linear,@(df.start<9) * df.departureLinearShift1* (df.roundtrip_auto_time_to_work),coef_Time_SOV_freeflowto_destination_Departure_before_7_am +util_Time_SOV_freeflowto_destination_Departure_after_7_am,Time (SOV freeflow) to destination - Departure after 7:30 am - Linear,@(df.start>9) * df.departureLinearShift1 * (df.roundtrip_auto_time_to_work),coef_Time_SOV_freeflowto_destination_Departure_after_7_am +util_Time_SOV_freeflowto_destination_Arrival_before_5_pm,Time (SOV freeflow) to destination - Arrival before 5:30 pm - Linear,@(df.end<30) * df.arrivalLinearShift1 * (df.roundtrip_auto_time_to_work),coef_Time_SOV_freeflowto_destination_Arrival_before_5_pm +util_Time_SOV_freeflowto_destination_Arrival_after_6_pm,Time (SOV freeflow) to destination - Arrival after 6:00 pm - Linear,@(df.end>30) * df.arrivalLinearShift1 * (df.roundtrip_auto_time_to_work),coef_Time_SOV_freeflowto_destination_Arrival_after_6_pm +util_Presence_of_NonWorking_Adult_in_the_HH_Departure_before_7_am,Presence of Non-Working Adult in the HH - Departure before 7:00 am - Linear,@((df.is_non_worker_in_HH) & (df.start<9)) * df.departureLinearShift1,coef_Presence_of_NonWorking_Adult_in_the_HH_Departure_before_7_am +util_Presence_of_NonWorking_Adult_in_the_HH_Arrival_before_5_pm,Presence of Non-Working Adult in the HH - Arrival before 5:30 pm - Linear,@((df.is_non_worker_in_HH) & (df.end<30)) * df.arrivalLinearShift1,coef_Presence_of_NonWorking_Adult_in_the_HH_Arrival_before_5_pm +util_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_before_7_am,Presence of Pre-Driving Age Children in the HH - Departure before 7:30 am - Linear,@((df.is_pre_drive_child_in_HH) & (df.start<9)) * df.departureLinearShift1,coef_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_before_7_am +util_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_after_8_am,Presence of Pre-Driving Age Children in the HH - Departure after 8 am - Linear,@((df.is_pre_drive_child_in_HH) & (df.start>9)) * df.departureLinearShift1,coef_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_after_8_am +util_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_before_5_pm,Presence of Pre-Driving Age Children in the HH - Arrival before 5:30 pm - Linear,@((df.is_pre_drive_child_in_HH) & (df.end<30)) * df.arrivalLinearShift1,coef_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_before_5_pm +util_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_after_6_pm,Presence of Pre-Driving Age Children in the HH - Arrival after 6:00 pm - Linear,@((df.is_pre_drive_child_in_HH)& (df.end>30)) * df.arrivalLinearShift1,coef_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_after_6_pm +util_First_of_2_plus_mandatory_tour_Departure_before_7_am,First of 2+ mandatory tour - Departure before 7:00 am,@(((df.tour_count>1) & (df.tour_num == 1)) & (df.start<9)) * df.departureLinearShift1,coef_First_of_2_plus_mandatory_tour_Departure_before_7_am +util_First_of_2_plus_mandatory_tour_Departure_after_7_am,First of 2+ mandatory tour - Departure after 7:30 am,@(((df.tour_count>1) & (df.tour_num == 1)) & (df.start>9)) * df.departureLinearShift1,coef_First_of_2_plus_mandatory_tour_Departure_after_7_am +util_First_of_2_plus_mandatory_tour_Duration_lt_9p5_hours,First of 2+ mandatory tour - Duration < 9.5 hours,@(((df.tour_count>1) & (df.tour_num == 1)) & (df.duration<21)) * df.durationShift,coef_First_of_2_plus_mandatory_tour_Duration_lt_9p5_hours +util_First_of_2_plus_mandatory_tour_Duration_gt_9p5_hours,First of 2+ mandatory tour - Duration > 9.5 hours,@(((df.tour_count>1) & (df.tour_num == 1)) & (df.duration<21)) * df.durationShift,coef_First_of_2_plus_mandatory_tour_Duration_gt_9p5_hours +util_2nd_or_later_of_2_plus_mandatory_tour_Departure_before_1_pm,2nd or later of 2+ mandatory tour - Departure before 1:30 pm,@(((df.tour_count>1) & (df.tour_num > 1)) & (df.start<22)) * df.departureLinearShift1,coef_2nd_or_later_of_2_plus_mandatory_tour_Departure_before_1_pm +util_2nd_or_later_of_2_plus_mandatory_tour_Departure_after_2_pm,2nd or later of 2+ mandatory tour - Departure after 2:00 pm,@(((df.tour_count>1) & (df.tour_num > 1)) & (df.start>22)) * df.departureLinearShift1,coef_2nd_or_later_of_2_plus_mandatory_tour_Departure_after_2_pm +util_2nd_or_later_of_2_plus_mandatory_tour_Duration_lt_9p5_hours,2nd or later of 2+ mandatory tour - Duration < 9.5 hours,@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<21)) * df.durationShift,coef_2nd_or_later_of_2_plus_mandatory_tour_Duration_lt_9p5_hours +util_2nd_or_later_of_2_plus_mandatory_tour_Duration_gt_9p5_hours,2nd or later of 2+ mandatory tour - Duration > 9.5 hours,@(((df.tour_count>1) & (df.tour_num > 1)) & (df.duration<21)) * df.durationShift,coef_2nd_or_later_of_2_plus_mandatory_tour_Duration_gt_9p5_hours +#,#Departure Constants,,coef_Departure_Constants +util_Departure_Constant_Shift_for_every_30_minutes_before_6_am,Departure Constant: Shift for every 30 minutes before 6:00 am - Linear,"@(df.start<6) * ((np.minimum(6-df.start,48)*(df.start<6)) + (np.minimum(df.start-13,21)*(df.start>13)))",coef_Departure_Constant_Shift_for_every_30_minutes_before_6_am +util_Departure_Constant_Before_06_AM,Departure Constant: Before 06:00 AM,start<7,coef_Departure_Constant_Before_06_AM +util_Departure_Constant_06_AM_06_AM_7,Departure Constant: 06:00 AM - 06:30 AM (7) ,start==7,coef_Departure_Constant_06_AM_06_AM_7 +util_Departure_Constant_06_AM_07_AM_8,Departure Constant: 06:30 AM - 07:00 AM (8) ,start==8,coef_Departure_Constant_06_AM_07_AM_8 +util_Departure_Constant_07_AM_07_AM_9,Departure Constant: 07:00 AM - 07:30 AM (9) ,start==9,coef_Departure_Constant_07_AM_07_AM_9 +util_Departure_Constant_07_AM_08_AM_10,Departure Constant: 07:30 AM - 08:00 AM (10) ,start==10,coef_Departure_Constant_07_AM_08_AM_10 +util_Departure_Constant_08_AM_08_AM_11,Departure Constant: 08:00 AM - 08:30 AM (11) ,start==11,coef_Departure_Constant_08_AM_08_AM_11 +util_Departure_Constant_08_AM_09_AM_12,Departure Constant: 08:30 AM - 09:00 AM (12) ,start==12,coef_Departure_Constant_08_AM_09_AM_12 +util_Departure_Constant_After_09_AM,Departure Constant: After 09:00 AM,start>12,coef_Departure_Constant_After_09_AM +util_Departure_Constant_Shift_for_every_30_minutes_after_9_am_Square_Root,Departure Constant: Shift for every 30 minutes after 9:30 am - Square Root,"@(df.start>13) * (((np.minimum(6-df.start,48)*(df.start<6)) + (np.minimum(df.start-13,21)*(df.start>13))) ** 0.5)",coef_Departure_Constant_Shift_for_every_30_minutes_after_9_am_Square_Root +#,#Arrival Constants,,coef_Arrival_Constants +util_Arrival_Constant_Shift_for_every_30_minutes_before_3_pm,Arrival Constant: Shift for every 30 minutes before 3:00 pm - Linear,"@(df.end<25) * ((np.minimum(25-df.end, 15)*(df.end<25))+ (np.minimum(df.end-35,11)*(df.end>35)))",coef_Arrival_Constant_Shift_for_every_30_minutes_before_3_pm +util_Arrival_Constant_Before_03_PM,Arrival Constant: Before 03:30 PM,end<26,coef_Arrival_Constant_Before_03_PM +util_Arrival_Constant_03_PM_04_PM_26,Arrival Constant: 03:30 PM - 04:00 PM (26) ,end==26,coef_Arrival_Constant_03_PM_04_PM_26 +util_Arrival_Constant_04_PM_04_PM_27,Arrival Constant: 04:00 PM - 04:30 PM (27) ,end==27,coef_Arrival_Constant_04_PM_04_PM_27 +util_Arrival_Constant_04_PM_05_PM_28,Arrival Constant: 04:30 PM - 05:00 PM (28) ,end==28,coef_Arrival_Constant_04_PM_05_PM_28 +util_Arrival_Constant_05_PM_05_PM_29,Arrival Constant: 05:00 PM - 05:30 PM (29),end==29,coef_Arrival_Constant_05_PM_05_PM_29 +util_Arrival_Constant_05_PM_06_PM_30,Arrival Constant: 05:30 PM - 06:00 PM (30) ,end==30,coef_Arrival_Constant_05_PM_06_PM_30 +util_Arrival_Constant_06_PM_06_PM_31,Arrival Constant: 06:00 PM - 06:30 PM (31) ,end==31,coef_Arrival_Constant_06_PM_06_PM_31 +util_Arrival_Constant_06_PM_7_PM_32,Arrival Constant: 06:30 PM - 7:00 PM (32) ,end==32,coef_Arrival_Constant_06_PM_7_PM_32 +util_Arrival_Constant_7_PM_7_PM_33,Arrival Constant: 7:00 PM - 7:30 PM (33) ,end==33,coef_Arrival_Constant_7_PM_7_PM_33 +util_Arrival_Constant_7_PM_8_PM_34,Arrival Constant: 7:30 PM - 8:00 PM (34) ,end==34,coef_Arrival_Constant_7_PM_8_PM_34 +util_Arrival_Constant_After_08_PM,Arrival Constant: After 08:00 PM,end>34,coef_Arrival_Constant_After_08_PM +util_Arrival_Constant_Shift_for_every_30_minutes_after_6_pm_Square_root,Arrival Constant: Shift for every 30 minutes after 6:30 pm - Square root,"@(df.end>35) * (((np.minimum(25-df.end, 15)*(df.end<25))+ (np.minimum(df.end-35,11)*(df.end>35))) ** 0.5)",coef_Arrival_Constant_Shift_for_every_30_minutes_after_6_pm_Square_root +#,#Duration Constants,,coef_Duration_Constants +util_Duration_Constant_Shift_for_every_30_minutes_less_than_8p5_hrs,Duration Constant: Shift for every 30 minutes less than 8.5 hrs - Linear,"@(df.duration<16) * ((np.minimum(16-df.duration,47)*(df.duration<16)) + (np.minimum(df.duration-25,10)*(df.duration>25)))",coef_Duration_Constant_Shift_for_every_30_minutes_less_than_8p5_hrs +util_Duration_Constant_Shorter_than_8p5_hrs,Duration Constant: Shorter than 8.5 hrs,duration<17,coef_Duration_Constant_Shorter_than_8p5_hrs +util_Duration_Constant_8p5_hours,Duration Constant: 8.5 hours,duration==17,coef_Duration_Constant_8p5_hours +util_Duration_Constant_9_hours,Duration Constant: 9 hours,duration==18,coef_Duration_Constant_9_hours +util_Duration_Constant_9p5_hours,Duration Constant: 9.5 hours,duration==19,coef_Duration_Constant_9p5_hours +util_Duration_Constant_10_hours,Duration Constant: 10 hours,duration==20,coef_Duration_Constant_10_hours +util_Duration_Constant_10p5_hours,Duration Constant: 10.5 hours,duration==21,coef_Duration_Constant_10p5_hours +util_Duration_Constant_11_hours,Duration Constant: 11 hours,duration==22,coef_Duration_Constant_11_hours +util_Duration_Constant_11p5_hours,Duration Constant: 11.5 hours,duration==23,coef_Duration_Constant_11p5_hours +util_Duration_Constant_12_hours,Duration Constant: 12 hours,duration==24,coef_Duration_Constant_12_hours +util_Duration_Constant_Longer_than_12_hrs,Duration Constant: Longer than 12 hrs,duration>24,coef_Duration_Constant_Longer_than_12_hrs +util_Duration_Constant_Shift_for_every_30_minutes_more_than_10_hrs,Duration Constant: Shift for every 30 minutes more than 10 hrs - Linear,"@(df.duration>25) * ((np.minimum(16-df.duration,47)*(df.duration<16)) + (np.minimum(df.duration-25,10)*(df.duration>25)))",coef_Duration_Constant_Shift_for_every_30_minutes_more_than_10_hrs +util_Calibration_constant_Duration_0,Calibration constant: Duration = 0,duration == 0,coef_Calibration_constant_Duration_0 diff --git a/configs/tour_scheduling_work_coeffs.csv b/configs/tour_scheduling_work_coeffs.csv index 1e3f0fb..19a85e8 100644 --- a/configs/tour_scheduling_work_coeffs.csv +++ b/configs/tour_scheduling_work_coeffs.csv @@ -1 +1,97 @@ coefficient_name,value,constrain +coef_Mode_Choice_Logsum,0.2279,T +coef_Female_Departure_before_7_am,-0.12935306,F +coef_Female_Arrival_after_6_pm,-0.041312616,F +coef_Female_with_preschool_child_Departure_before_7_am,-0.129130464,F +coef_Female_with_preschool_child_Departure_after_7_am,-0.031947595,F +coef_Female_with_preschool_child_Arrival_after_6_pm,-0.048859218,F +coef_Low_income_lt_25000_Departure_before_7_am,0.232768373,F +coef_Low_income_lt_25000_Departure_after_7_am,0.014908169,F +coef_Low_income_lt_25000_Arrival_after_6_pm,0.039105101,F +coef_Med_income_25k_to_60k_Departure_before_7_am,0.123945957,F +coef_Med_income_25k_to_60k_Arrival_after_6_pm,0.020965221,F +coef_Medhigh_income_60k_to_120k_Departure_before_7_am,0.09890939,F +coef_Age_16_to_18_yrs_Departure_Before_7_am,-0.459593556,F +coef_Age_16_to_18_yrs_Departure_After_7_am,0.060951693,F +coef_Age_19_to_24_yrs_Departure_After_7_am,0.031477187,F +coef_Age_25_to_40_yrs_Departure_Before_7_am,-0.11723451,F +coef_Age_65_plus_yrs_Departure_After_7_am,0.051923956,F +coef_Age_19_to_24_yrs_Arrival_after_6_pm,0.032734453,F +coef_Age_25_to_40_yrs_Arrival_before_5_pm,-0.027623617,F +coef_Age_56_to_64_yrs_Arrival_after_6_pm,-0.049130187,F +coef_Age_65_plus_yrs_Arrival_before_5_pm,0.056774635,F +coef_Age_65_plus_yrs_Arrival_after_6_pm,-0.077532684,F +coef_Zero_auto_HH_Departure_before_7_am,0.396983749,F +coef_Zero_auto_HH_Arrival_after_6_pm,0.050665232,F +coef_Parttime_worker_Departure_before_7_am,-0.264760988,F +coef_Parttime_worker_Departure_after_7_am,0.126626287,F +coef_Parttime_worker_Arrival_before_5_pm,0.175158545,F +coef_Parttime_worker_Arrival_after_6_pm,-0.054124518,F +coef_University_student_Departure_after_7_am,0.024758204,F +coef_University_student_Arrival_before_5_pm,0.035389739,F +coef_University_student_Arrival_after_6_pm,0.06173996,F +coef_Blue_collar_Departure_before_7_am,0.327242475,F +coef_Blue_collar_Departure_after_7_am,0.047214248,F +coef_Blue_collar_Arrival_before_5_pm,0.04197056,F +coef_Service_Departure_before_7_am,0.117783508,F +coef_Service_Departure_after_7_am,0.081611629,F +coef_Service_Arrival_before_5_pm,0,T +coef_Health_Departure_before_7_am,0.135275931,F +coef_Health_Arrival_after_6_pm,0.062010123,F +coef_Retail_and_food_Departure_after_7_am,0.076302969,F +coef_Retail_and_food_Arrival_before_5_pm,0.052905387,F +coef_Retail_and_food_Arrival_after_6_pm,0.027069194,F +coef_Time_SOV_freeflowto_destination_Departure_before_7_am,0.011511462,F +coef_Time_SOV_freeflowto_destination_Departure_after_7_am,-0.003821379,F +coef_Time_SOV_freeflowto_destination_Arrival_before_5_pm,-0.00549578,F +coef_Time_SOV_freeflowto_destination_Arrival_after_6_pm,0.002253695,F +coef_Presence_of_NonWorking_Adult_in_the_HH_Departure_before_7_am,0.069957209,F +coef_Presence_of_NonWorking_Adult_in_the_HH_Arrival_before_5_pm,-0.019807228,F +coef_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_before_7_am,-0.084564489,F +coef_Presence_of_PreDriving_Age_Children_in_the_HH_Departure_after_8_am,-0.023894467,F +coef_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_before_5_pm,0.018983499,F +coef_Presence_of_PreDriving_Age_Children_in_the_HH_Arrival_after_6_pm,-0.032091123,F +coef_First_of_2_plus_mandatory_tour_Departure_before_7_am,0.145890035,F +coef_First_of_2_plus_mandatory_tour_Departure_after_7_am,-0.214531877,F +coef_First_of_2_plus_mandatory_tour_Duration_lt_9p5_hours,0.3069241,F +coef_First_of_2_plus_mandatory_tour_Duration_gt_9p5_hours,-0.526297898,F +coef_2nd_or_later_of_2_plus_mandatory_tour_Departure_before_1_pm,-0.221304523,F +coef_2nd_or_later_of_2_plus_mandatory_tour_Departure_after_2_pm,-0.176348812,F +coef_2nd_or_later_of_2_plus_mandatory_tour_Duration_lt_9p5_hours,0.064893097,F +coef_2nd_or_later_of_2_plus_mandatory_tour_Duration_gt_9p5_hours,-0.656942049,F +coef_Departure_Constant_Shift_for_every_30_minutes_before_6_am,-1.151564775,F +coef_Departure_Constant_Before_06_AM,-2.197677208,F +coef_Departure_Constant_06_AM_06_AM_7,-1.314098638,F +coef_Departure_Constant_06_AM_07_AM_8,-0.558766028,F +coef_Departure_Constant_07_AM_07_AM_9,0,T +coef_Departure_Constant_07_AM_08_AM_10,-0.036957515,F +coef_Departure_Constant_08_AM_08_AM_11,-0.285560423,F +coef_Departure_Constant_08_AM_09_AM_12,-0.555478447,F +coef_Departure_Constant_After_09_AM,-0.865125273,F +coef_Departure_Constant_Shift_for_every_30_minutes_after_9_am_Square_Root,-0.435746145,F +coef_Arrival_Constant_Shift_for_every_30_minutes_before_3_pm,-0.191607342,F +coef_Arrival_Constant_Before_03_PM,-0.289333093,F +coef_Arrival_Constant_03_PM_04_PM_26,-0.273555837,F +coef_Arrival_Constant_04_PM_04_PM_27,-0.142653706,F +coef_Arrival_Constant_04_PM_05_PM_28,-0.124814807,F +coef_Arrival_Constant_05_PM_05_PM_29,0.004265544,F +coef_Arrival_Constant_05_PM_06_PM_30,0,T +coef_Arrival_Constant_06_PM_06_PM_31,-0.060515031,F +coef_Arrival_Constant_06_PM_7_PM_32,-0.236621114,F +coef_Arrival_Constant_7_PM_7_PM_33,-0.577646614,F +coef_Arrival_Constant_7_PM_8_PM_34,-0.815994515,F +coef_Arrival_Constant_After_08_PM,-0.854151925,F +coef_Arrival_Constant_Shift_for_every_30_minutes_after_6_pm_Square_root,-0.469720787,F +coef_Duration_Constant_Shift_for_every_30_minutes_less_than_8p5_hrs,-0.074266981,F +coef_Duration_Constant_Shorter_than_8p5_hrs,-0.748584335,F +coef_Duration_Constant_8p5_hours,-0.654814097,F +coef_Duration_Constant_9_hours,-0.372064236,F +coef_Duration_Constant_9p5_hours,-0.144226124,F +coef_Duration_Constant_10_hours,0.013153356,F +coef_Duration_Constant_10p5_hours,0,T +coef_Duration_Constant_11_hours,-0.115847245,F +coef_Duration_Constant_11p5_hours,-0.288506368,F +coef_Duration_Constant_12_hours,-0.524241874,F +coef_Duration_Constant_Longer_than_12_hrs,-0.598634071,F +coef_Duration_Constant_Shift_for_every_30_minutes_more_than_10_hrs,-0.293607565,F +coef_Calibration_constant_Duration_0,-10,F