From e6aba1ef9a711430653d8fea0e3b75e5e8f04a59 Mon Sep 17 00:00:00 2001 From: aber-sandag Date: Wed, 31 Jul 2024 17:13:16 -0700 Subject: [PATCH 1/3] add no-build parameters to parameters by year --- input/ie/resident_ie_size_term.csv | 30 ++--- input/model/filesByYears.csv | 2 + input/model/parametersByYears.csv | 26 +++-- src/asim-cvm/scripts/generate_summary.py | 10 +- .../configs/airport.CBX/trip_mode_choice.yaml | 2 +- .../configs/airport.SAN/trip_mode_choice.yaml | 2 +- .../configs/common_airport/constants.yaml | 3 +- src/asim/configs/crossborder/constants.yaml | 2 +- .../configs/crossborder/preprocessing.yaml | 2 +- .../scenarioManagement/scenManagement.py | 104 ++++++++++-------- src/main/emme/toolbox/master_run.py | 12 +- src/main/emme/toolbox/utilities/properties.py | 6 +- .../pythonGUI/createStudyAndScenario.py | 43 ++++++-- src/main/python/run_htm.py | 7 +- src/main/python/update_properties.py | 2 + src/main/resources/create_scenario.cmd | 8 +- src/main/resources/cvm.bat | 4 +- src/main/resources/htm.bat | 3 +- .../resources/runSandag_ScenManagement.cmd | 3 +- src/main/resources/sandag_abm.properties | 3 +- 20 files changed, 167 insertions(+), 107 deletions(-) diff --git a/input/ie/resident_ie_size_term.csv b/input/ie/resident_ie_size_term.csv index 88d65d444..2480aa49e 100644 --- a/input/ie/resident_ie_size_term.csv +++ b/input/ie/resident_ie_size_term.csv @@ -1,15 +1,15 @@ -taz,work,nonwork,start_year -1,1335,27071,0 -2,446,9042,0 -3,0,0,0 -4,23,475,0 -5,0,0,0 -6,53,15490,0 -7,365,1456,0 -8,1274,883,0 -9,1709,1621,0 -10,23450,91146,0 -11,0,0,0 -12,17297,119189,0 -2,312,6330,2026 -3,134,2712,2026 +taz,work,nonwork,start_year,OME_override +1,1335,27071,0,0 +2,446,9042,0,0 +3,0,0,0,0 +4,23,475,0,0 +5,0,0,0,0 +6,53,15490,0,0 +7,365,1456,0,0 +8,1274,883,0,0 +9,1709,1621,0,0 +10,23450,91146,0,0 +11,0,0,0,0 +12,17297,119189,0,0 +2,312,6330,2027,1 +3,134,2712,2027,1 diff --git a/input/model/filesByYears.csv b/input/model/filesByYears.csv index 58a473caf..f011365f6 100644 --- a/input/model/filesByYears.csv +++ b/input/model/filesByYears.csv @@ -11,6 +11,8 @@ year,crossborder.dc.soa.alts.file,crossBorder.dc.uec.file,uwsl.dc.uec.file,nmdc. 2030,CrossBorderDestinationChoiceSoaAlternatives2025.csv,CrossBorderDestinationChoice2025.xls,TourDestinationChoice2035.xls,TourDestinationChoice2035.xls,CrossBorderTourModeChoice2025.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2030_Vision\input\mgra13_based_input2030.csv 2032,CrossBorderDestinationChoiceSoaAlternatives2025.csv,CrossBorderDestinationChoice2025.xls,TourDestinationChoice2035.xls,TourDestinationChoice2035.xls,CrossBorderTourModeChoice2025.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2032_Vision\input\mgra13_based_input2032.csv 2035,CrossBorderDestinationChoiceSoaAlternatives2035.csv,CrossBorderDestinationChoice2035.xls,TourDestinationChoice2035.xls,TourDestinationChoice2035.xls,CrossBorderTourModeChoice2035.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2035_Vision\input\mgra13_based_input2035.csv +2035nb,CrossBorderDestinationChoiceSoaAlternatives2035.csv,CrossBorderDestinationChoice2035.xls,TourDestinationChoice2035.xls,TourDestinationChoice2035.xls,CrossBorderTourModeChoice2035.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2035_Vision\input\mgra13_based_input2035.csv 2040,CrossBorderDestinationChoiceSoaAlternatives2035.csv,CrossBorderDestinationChoice2035.xls,TourDestinationChoice2050.xls,TourDestinationChoice2050.xls,CrossBorderTourModeChoice2035.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2040_Vision\input\mgra13_based_input2040.csv 2045,CrossBorderDestinationChoiceSoaAlternatives2050.csv,CrossBorderDestinationChoice2050.xls,TourDestinationChoice2050.xls,TourDestinationChoice2050.xls,CrossBorderTourModeChoice2050.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2035_Vision\input\mgra13_based_input2035.csv 2050,CrossBorderDestinationChoiceSoaAlternatives2050.csv,CrossBorderDestinationChoice2050.xls,TourDestinationChoice2050.xls,TourDestinationChoice2050.xls,CrossBorderTourModeChoice2050.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2050_Vision\input\mgra13_based_input2050.csv +2050nb,CrossBorderDestinationChoiceSoaAlternatives2050.csv,CrossBorderDestinationChoice2050.xls,TourDestinationChoice2050.xls,TourDestinationChoice2050.xls,CrossBorderTourModeChoice2050.xls,AirportModeChoice.SAN2050.xls,T:\RTP\2021RP\2021rp_final\abm_runs\2050_Vision\input\mgra13_based_input2050.csv diff --git a/input/model/parametersByYears.csv b/input/model/parametersByYears.csv index 11fc79efc..59d53cac4 100644 --- a/input/model/parametersByYears.csv +++ b/input/model/parametersByYears.csv @@ -1,12 +1,14 @@ -year,aoc.fuel,aoc.maintenance,aoc.truck.fuel.light,aoc.truck.fuel.medium,aoc.truck.fuel.high,aoc.truck.maintenance.light,aoc.truck.maintenance.medium,aoc.truck.maintenance.high,aoc.truck.fuel.SUT,aoc.truck.fuel.MUT,aoc.truck.maintenance.SUT,aoc.truck.maintenance.MUT,airport.SAN.enplanements,airport.SAN.connecting,airport.SAN.airportMgra,airport.CBX.enplanements,airport.CBX.connecting,airport.CBX.airportMgra,crossBorder.tours,crossBorder.sentriShare,crossBorder.readyShare,taxi.baseFare,taxi.costPerMile,taxi.costPerMinute,TNC.single.baseFare,TNC.single.costPerMile,TNC.single.costPerMinute,TNC.single.costMinimum,TNC.shared.baseFare,TNC.shared.costPerMile,TNC.shared.costPerMinute,TNC.shared.costMinimum,Mobility.AV.RemoteParkingCostPerHour,active.micromobility.variableCost,active.micromobility.fixedCost,active.microtransit.fixedCost,Mobility.AV.Share,smartSignal.factor.LC,smartSignal.factor.MA,smartSignal.factor.PA,atdm.factor,active.ebike.ownership,active.maxdist.bike.taz,active.maxdist.bike.mgra,active.bike.minutes.per.mile,active.coef.distcla0,active.coef.distcla1,active.coef.distcla2,active.coef.distcla3,active.coef.dartne2,active.coef.dwrongwy,active.coef.dcyctrac,active.coef.dbikblvd,tc.everyone.owns -2022,22,10.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2093250,0,9350,101343,0.219,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0 -2023,23.5,11.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2144000,0,9350,105064,0.44,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0 -2025,21,11.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,15542000,915424,11249,2195456,0,9350,119372,0.483,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.082,21.4,2.14,5.60748,0.79794,0.32364,0.50592,0.79794,0.9765,3.20385,0.39432,0.31899,0 -2026,20.2,11.9,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,16012000,943107,11249,2221801,0,9350,121272,0.505,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.095,21.6,2.16,5.55556,0.78936,0.32016,0.50048,0.78936,0.966,3.1694,0.39008,0.31556,0 -2029,18.6,12.3,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17392000,1024389,11249,2301786,0,9350,126844,0.569,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.133,22.2,2.22,5.40541,0.76362,0.30972,0.48416,0.76362,0.9345,3.06605,0.37736,0.30527,1 -2030,18.2,12.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17878000,1053014,11249,2329408,0,9350,128588,0.591,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.146,22.4,2.24,0.75504,0.30624,0.47872,0.75504,0.924,3.0316,0.37312,0.30184,5.35714,1 -2032,17.5,12.6,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,18571000,1093832,11249,2385314,0,9350,131663,0.569,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,0.93,0.172,22.9,2.29,5.24017,0.73359,0.29754,0.46512,0.73359,0.89775,2.94548,0.36252,0.29327,1 -2035,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,1 -2040,16.3,13.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19877909,1170809,11249,2619456,0,9350,139207,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.265,24.7,2.47,4.8583,0.65637,0.26622,0.41616,0.65637,0.80325,2.63543,0.32436,0.2624,1 -2045,16.1,14.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20098233,1183786,11249,2776623,0,9350,143214,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.32,25.5,2.55,4.70588,0.62205,0.2523,0.3944,0.62205,0.76125,2.49763,0.3074,0.24868,1 -2050,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,1 +year,aoc.fuel,aoc.maintenance,aoc.truck.fuel.light,aoc.truck.fuel.medium,aoc.truck.fuel.high,aoc.truck.maintenance.light,aoc.truck.maintenance.medium,aoc.truck.maintenance.high,aoc.truck.fuel.SUT,aoc.truck.fuel.MUT,aoc.truck.maintenance.SUT,aoc.truck.maintenance.MUT,airport.SAN.enplanements,airport.SAN.connecting,airport.SAN.airportMgra,airport.CBX.enplanements,airport.CBX.connecting,airport.CBX.airportMgra,crossBorder.tours,crossBorder.sentriShare,crossBorder.readyShare,taxi.baseFare,taxi.costPerMile,taxi.costPerMinute,TNC.single.baseFare,TNC.single.costPerMile,TNC.single.costPerMinute,TNC.single.costMinimum,TNC.shared.baseFare,TNC.shared.costPerMile,TNC.shared.costPerMinute,TNC.shared.costMinimum,Mobility.AV.RemoteParkingCostPerHour,active.micromobility.variableCost,active.micromobility.fixedCost,active.microtransit.fixedCost,Mobility.AV.Share,smartSignal.factor.LC,smartSignal.factor.MA,smartSignal.factor.PA,atdm.factor,active.ebike.ownership,active.maxdist.bike.taz,active.maxdist.bike.mgra,active.bike.minutes.per.mile,active.coef.distcla0,active.coef.distcla1,active.coef.distcla2,active.coef.distcla3,active.coef.dartne2,active.coef.dwrongwy,active.coef.dcyctrac,active.coef.dbikblvd,tc.everyone.owns,rapid.factor.ivt,rapid.factor.wait,rapid.dwell,poe.OME.start.year,tr.veh.year +2022,22,10.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2093250,0,9350,101343,0.219,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0,0.95,1,0.5,2027,2029 +2023,23.5,11.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2144000,0,9350,105064,0.44,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0,0.95,1,0.5,2027,2029 +2025,21,11.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,15542000,915424,11249,2195456,0,9350,119372,0.483,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.082,21.4,2.14,5.60748,0.79794,0.32364,0.50592,0.79794,0.9765,3.20385,0.39432,0.31899,0,0.95,1,0.5,2027,2029 +2026,20.2,11.9,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,16012000,943107,11249,2221801,0,9350,121272,0.505,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.095,21.6,2.16,5.55556,0.78936,0.32016,0.50048,0.78936,0.966,3.1694,0.39008,0.31556,0,0.87,1,0.5,2027,2029 +2029,18.6,12.3,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17392000,1024389,11249,2301786,0,9350,126844,0.569,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.133,22.2,2.22,5.40541,0.76362,0.30972,0.48416,0.76362,0.9345,3.06605,0.37736,0.30527,1,0.87,0.87,0.425,2027,2029 +2030,18.2,12.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17878000,1053014,11249,2329408,0,9350,128588,0.591,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.146,22.4,2.24,0.75504,0.30624,0.47872,0.75504,0.924,3.0316,0.37312,0.30184,5.35714,1,0.87,0.87,0.425,2027,2029 +2032,17.5,12.6,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,18571000,1093832,11249,2385314,0,9350,131663,0.569,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,0.93,0.172,22.9,2.29,5.24017,0.73359,0.29754,0.46512,0.73359,0.89775,2.94548,0.36252,0.29327,1,0.87,0.87,0.425,2027,2029 +2035,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,1,0.87,0.87,0.425,2027,2029 +2035nb,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,1,0.87,1,0.5,2060,2060 +2040,16.3,13.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19877909,1170809,11249,2619456,0,9350,139207,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.265,24.7,2.47,4.8583,0.65637,0.26622,0.41616,0.65637,0.80325,2.63543,0.32436,0.2624,1,0.87,0.87,0.425,2027,2029 +2045,16.1,14.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20098233,1183786,11249,2776623,0,9350,143214,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.32,25.5,2.55,4.70588,0.62205,0.2523,0.3944,0.62205,0.76125,2.49763,0.3074,0.24868,1,0.87,0.87,0.425,2027,2029 +2050,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,1,0.87,0.87,0.425,2027,2029 +2050nb,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,1,0.87,1,0.5,2060,2060 diff --git a/src/asim-cvm/scripts/generate_summary.py b/src/asim-cvm/scripts/generate_summary.py index 5ef486aaa..b0135272b 100644 --- a/src/asim-cvm/scripts/generate_summary.py +++ b/src/asim-cvm/scripts/generate_summary.py @@ -5,7 +5,7 @@ model_dir = sys.argv[1] output_dir = sys.argv[2] -scenario_year = sys.argv[3] +scenario_year_with_suffix = str(sys.argv[3]) # File Path cvm_trip_path = f"{output_dir}\\final_cv_trips.csv" @@ -79,10 +79,10 @@ def map_value_to_range(value): df['costOperatingDrive'] = None # Mapping dictionary for conditions -mapping = {'passenger_car': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.fuel'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.maintenance'].iloc[0], - 'LHDT': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.light'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.light'].iloc[0], - 'MHDT': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.medium'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.medium'].iloc[0], - 'HHDT': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.high'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.high'].iloc[0]} +mapping = {'passenger_car': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.fuel'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.maintenance'].iloc[0], + 'LHDT': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.light'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.light'].iloc[0], + 'MHDT': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.medium'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.medium'].iloc[0], + 'HHDT': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.high'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.high'].iloc[0]} def calculate_cost(row): diff --git a/src/asim/configs/airport.CBX/trip_mode_choice.yaml b/src/asim/configs/airport.CBX/trip_mode_choice.yaml index 8f2576802..1077d61e2 100644 --- a/src/asim/configs/airport.CBX/trip_mode_choice.yaml +++ b/src/asim/configs/airport.CBX/trip_mode_choice.yaml @@ -264,7 +264,7 @@ CONSTANTS: c_xwt: 2 c_waux: 2.5 ivt_lrt_multiplier: 0.85 - ivt_brt_multiplier: 0.95 + # ivt_brt_multiplier: 0.95 ivt_cmr_multiplier: 0.85 ivt_ltd_multiplier: 1.0 ivt_cost_multiplier: 0.6 diff --git a/src/asim/configs/airport.SAN/trip_mode_choice.yaml b/src/asim/configs/airport.SAN/trip_mode_choice.yaml index d418610ce..7ab39ce3f 100644 --- a/src/asim/configs/airport.SAN/trip_mode_choice.yaml +++ b/src/asim/configs/airport.SAN/trip_mode_choice.yaml @@ -265,7 +265,7 @@ CONSTANTS: c_xwt: 2 c_waux: 2.5 ivt_lrt_multiplier: 0.85 - ivt_brt_multiplier: 0.95 + # ivt_brt_multiplier: 0.95 ivt_cmr_multiplier: 0.85 ivt_ltd_multiplier: 1.0 ivt_cost_multiplier: 0.6 diff --git a/src/asim/configs/common_airport/constants.yaml b/src/asim/configs/common_airport/constants.yaml index c342a1182..e356516f5 100644 --- a/src/asim/configs/common_airport/constants.yaml +++ b/src/asim/configs/common_airport/constants.yaml @@ -7,4 +7,5 @@ ridehailCostInitial: 3.31 ridehailCostPerMile: 0.96 ridehailCostPerMinute: 0.33 ridehailCostMinimum: 9.19 -driveSpeed: 25.00 \ No newline at end of file +driveSpeed: 25.00 +ivt_brt_multiplier: 0.95 \ No newline at end of file diff --git a/src/asim/configs/crossborder/constants.yaml b/src/asim/configs/crossborder/constants.yaml index ca69eb957..578ced6cc 100644 --- a/src/asim/configs/crossborder/constants.yaml +++ b/src/asim/configs/crossborder/constants.yaml @@ -76,7 +76,7 @@ tnc_shared_cost_per_minute: 0.16 tnc_shared_cost_minimum: 4.6 ivt_lrt_multiplier: 0.85 -ivt_brt_multiplier: 0.90 +ivt_brt_multiplier: 0.95 ivt_cmr_multiplier: 0.85 ivt_ltd_multiplier: 1.0 ivt_cost_multiplier: 0.6 diff --git a/src/asim/configs/crossborder/preprocessing.yaml b/src/asim/configs/crossborder/preprocessing.yaml index 3326a359b..453684bb1 100644 --- a/src/asim/configs/crossborder/preprocessing.yaml +++ b/src/asim/configs/crossborder/preprocessing.yaml @@ -60,7 +60,7 @@ poes: ext_taz_id: 3 veh_lanes: 7 ped_lanes: 0 - start_year: 2026 + start_year: 2027 tours: pass_shares: sentri: 0.219 diff --git a/src/asim/scripts/scenarioManagement/scenManagement.py b/src/asim/scripts/scenarioManagement/scenManagement.py index 8d8ecb4b7..86b21fdbf 100644 --- a/src/asim/scripts/scenarioManagement/scenManagement.py +++ b/src/asim/scripts/scenarioManagement/scenManagement.py @@ -7,12 +7,14 @@ project_dir = sys.argv[1] scenYear = int(sys.argv[2]) +scenYearWithSuffix = str(sys.argv[3]) # %% configs_dir = _join(project_dir, r'src\asim\configs') paramByYear_dir = _join(project_dir, r'input\parametersByYears.csv') sandag_abm_prop_dir = _join(project_dir, r'conf\sandag_abm.properties') scripts_dir = _join(project_dir, r'src\asim\scripts') +res_ie_size_term_file = _join(project_dir, r'input\resident_ie_size_term.csv') # %% paramByYear = pd.read_csv(paramByYear_dir) @@ -20,71 +22,81 @@ # %% #update airport parameters doc = util.open_yaml(_join(configs_dir, 'airport.CBX', 'preprocessing.yaml')) -doc['tours']['num_enplanements'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.CBX.enplanements'].values[0]) -doc['tours']['connecting'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.CBX.connecting'].values[0]) -doc['tours']['airport_mgra'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.CBX.airportMgra'].values[0]) +doc['tours']['num_enplanements'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.CBX.enplanements'].values[0]) +doc['tours']['connecting'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.CBX.connecting'].values[0]) +doc['tours']['airport_mgra'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.CBX.airportMgra'].values[0]) util.write_yaml(_join(configs_dir, 'airport.CBX', 'preprocessing.yaml'), doc) doc = util.open_yaml(_join(configs_dir, 'airport.SAN', 'preprocessing.yaml')) -doc['tours']['num_enplanements'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.SAN.enplanements'].values[0]) -doc['tours']['connecting'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.SAN.connecting'].values[0]) -doc['tours']['airport_mgra'] = int(paramByYear.loc[paramByYear['year'] == scenYear, 'airport.SAN.airportMgra'].values[0]) +doc['tours']['num_enplanements'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.SAN.enplanements'].values[0]) +doc['tours']['connecting'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.SAN.connecting'].values[0]) +doc['tours']['airport_mgra'] = int(paramByYear.loc[paramByYear['year'] == scenYearWithSuffix, 'airport.SAN.airportMgra'].values[0]) util.write_yaml(_join(configs_dir, 'airport.SAN', 'preprocessing.yaml'), doc) doc = util.open_yaml(_join(configs_dir, 'common_airport', 'constants.yaml')) -doc['taxiCostInitial'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.baseFare'].values[0]) -doc['costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.fuel'].values[0]) + float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.maintenance'].values[0]) -doc['taxiCostPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMile'].values[0]) -doc['taxiCostPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMinute'].values[0]) -doc['ridehailCostInitial'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.baseFare'].values[0]) -doc['ridehailCostPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMile'].values[0]) -doc['ridehailCostPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMinute'].values[0]) -doc['ridehailCostMinimum'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costMinimum'].values[0]) +doc['taxiCostInitial'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.baseFare'].values[0]) +doc['costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.fuel'].values[0]) + float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.maintenance'].values[0]) +doc['taxiCostPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMile'].values[0]) +doc['taxiCostPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMinute'].values[0]) +doc['ridehailCostInitial'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.baseFare'].values[0]) +doc['ridehailCostPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMile'].values[0]) +doc['ridehailCostPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMinute'].values[0]) +doc['ridehailCostMinimum'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costMinimum'].values[0]) +doc['ivt_brt_multiplier'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'rapid.factor.ivt'].values[0]) util.write_yaml(_join(configs_dir, 'common_airport', 'constants.yaml'), doc) #update crossborder parameters doc = util.open_yaml(_join(configs_dir, 'crossborder', 'constants.yaml')) doc['scenarioYear'] = int(scenYear) -doc['taxi_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.baseFare'].values[0]) -doc['cost_per_mile_fuel'] = float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.fuel'].values[0]) -doc['cost_per_mile_maint'] = float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.maintenance'].values[0]) -doc['taxi_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMile'].values[0]) -doc['taxi_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMinute'].values[0]) -doc['tnc_single_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.baseFare'].values[0]) -doc['tnc_single_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMile'].values[0]) -doc['tnc_single_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMinute'].values[0]) -doc['tnc_single_cost_minimum'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costMinimum'].values[0]) -doc['tnc_shared_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.baseFare'].values[0]) -doc['tnc_shared_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costPerMile'].values[0]) -doc['tnc_shared_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costPerMinute'].values[0]) -doc['tnc_shared_cost_minimum'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costMinimum'].values[0]) +doc['taxi_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.baseFare'].values[0]) +doc['cost_per_mile_fuel'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.fuel'].values[0]) +doc['cost_per_mile_maint'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.maintenance'].values[0]) +doc['taxi_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMile'].values[0]) +doc['taxi_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMinute'].values[0]) +doc['tnc_single_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.baseFare'].values[0]) +doc['tnc_single_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMile'].values[0]) +doc['tnc_single_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMinute'].values[0]) +doc['tnc_single_cost_minimum'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costMinimum'].values[0]) +doc['tnc_shared_base_fare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.baseFare'].values[0]) +doc['tnc_shared_cost_per_mile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costPerMile'].values[0]) +doc['tnc_shared_cost_per_minute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costPerMinute'].values[0]) +doc['tnc_shared_cost_minimum'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costMinimum'].values[0]) +doc['ivt_brt_multiplier'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'rapid.factor.ivt'].values[0]) util.write_yaml(_join(configs_dir, 'crossborder', 'constants.yaml'), doc) doc = util.open_yaml(_join(configs_dir, 'crossborder', 'preprocessing.yaml')) -doc['tours']['num_tours'] = int(paramByYear.loc[paramByYear.year==scenYear, 'crossBorder.tours'].values[0]) -doc['tours']['pass_shares']['sentri'] = float(paramByYear.loc[paramByYear.year==scenYear, 'crossBorder.sentriShare'].values[0]) -doc['tours']['pass_shares']['ready'] = float(paramByYear.loc[paramByYear.year==scenYear, 'crossBorder.readyShare'].values[0]) +doc['tours']['num_tours'] = int(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'crossBorder.tours'].values[0]) +doc['tours']['pass_shares']['sentri'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'crossBorder.sentriShare'].values[0]) +doc['tours']['pass_shares']['ready'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'crossBorder.readyShare'].values[0]) doc['tours']['pass_shares']['no_pass'] = 1-(doc['tours']['pass_shares']['sentri']+doc['tours']['pass_shares']['ready']) +doc['poes'][3]['start_year'] = int(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'poe.OME.start.year'].values[0]) util.write_yaml(_join(configs_dir, 'crossborder', 'preprocessing.yaml'), doc) +res_ie_size_term = pd.read_csv(res_ie_size_term_file) +res_ie_size_term.loc[res_ie_size_term['OME_override'] == 1, ['start_year']] = int(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'poe.OME.start.year'].values[0]) +res_ie_size_term.to_csv(res_ie_size_term_file) + #resident/visitor model parameters doc = util.open_yaml(_join(configs_dir, 'common', 'constants.yaml')) doc['scenarioYear'] = int(scenYear) -doc['costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.fuel'].values[0]) + float(paramByYear.loc[paramByYear.year==scenYear, 'aoc.maintenance'].values[0]) -doc['Taxi_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.baseFare'].values[0]) -doc['Taxi_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMile'].values[0]) -doc['Taxi_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'taxi.costPerMinute'].values[0]) -doc['TNC_single_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.baseFare'].values[0]) -doc['TNC_single_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMile'].values[0]) -doc['TNC_single_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costPerMinute'].values[0]) -doc['TNC_single_costMinimum'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.single.costMinimum'].values[0]) -doc['TNC_shared_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.baseFare'].values[0]) -doc['TNC_shared_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costPerMile'].values[0]) -doc['TNC_shared_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costPerMinute'].values[0]) -doc['TNC_shared_costMinimum'] = float(paramByYear.loc[paramByYear.year==scenYear, 'TNC.shared.costMinimum'].values[0]) -doc['microVarCost'] = float(paramByYear.loc[paramByYear.year==scenYear, 'active.micromobility.variableCost'].values[0]*100) #cents -doc['microFixedCost'] = float(paramByYear.loc[paramByYear.year==scenYear, 'active.micromobility.fixedCost'].values[0]*100) #cents -doc['AV_OWNERSHIP_TARGET_PERCENT'] = float(paramByYear.loc[paramByYear.year==scenYear, 'Mobility.AV.Share'].values[0]) -doc['ebikeownership'] = float(paramByYear.loc[paramByYear.year==scenYear, 'active.ebike.ownership'].values[0]) +doc['costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.fuel'].values[0]) + float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'aoc.maintenance'].values[0]) +doc['Taxi_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.baseFare'].values[0]) +doc['Taxi_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMile'].values[0]) +doc['Taxi_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'taxi.costPerMinute'].values[0]) +doc['TNC_single_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.baseFare'].values[0]) +doc['TNC_single_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMile'].values[0]) +doc['TNC_single_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costPerMinute'].values[0]) +doc['TNC_single_costMinimum'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.single.costMinimum'].values[0]) +doc['TNC_shared_baseFare'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.baseFare'].values[0]) +doc['TNC_shared_costPerMile'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costPerMile'].values[0]) +doc['TNC_shared_costPerMinute'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costPerMinute'].values[0]) +doc['TNC_shared_costMinimum'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'TNC.shared.costMinimum'].values[0]) +doc['microVarCost'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'active.micromobility.variableCost'].values[0]*100) #cents +doc['microFixedCost'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'active.micromobility.fixedCost'].values[0]*100) #cents +doc['AV_OWNERSHIP_TARGET_PERCENT'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'Mobility.AV.Share'].values[0]) +doc['ebikeownership'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'active.ebike.ownership'].values[0]) +doc['WAIT_TIME_DISC'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'rapid.factor.wait'].values[0]) +doc['ivt_brt_multiplier'] = float(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'rapid.factor.ivt'].values[0]) +doc['hhTR_Vehyear'] = int(paramByYear.loc[paramByYear.year==scenYearWithSuffix, 'tr.veh.year'].values[0]) util.write_yaml(_join(configs_dir, 'common', 'constants.yaml'), doc) doc = util.open_yaml(_join(configs_dir, 'resident', 'vehicle_type_choice.yaml')) diff --git a/src/main/emme/toolbox/master_run.py b/src/main/emme/toolbox/master_run.py index 17e61061b..b85ab2ee7 100644 --- a/src/main/emme/toolbox/master_run.py +++ b/src/main/emme/toolbox/master_run.py @@ -288,6 +288,7 @@ def __call__(self, main_directory, scenario_id, scenario_title, emmebank_title, raise Exception(error_text % name) scenarioYear = str(props["scenarioYear"]) + scenarioYearSuffix = str(props["scenarioYearSuffix"]) # geographyID = str(props["geographyID"]) prod_env = props["RunModel.env"] startFromIteration = props["RunModel.startFromIteration"] @@ -495,6 +496,11 @@ def __call__(self, main_directory, scenario_id, scenario_title, emmebank_title, mgraFile = 'mgra15_based_input' + str(scenarioYear) + '.csv' # Should be read in from properties? -JJF self.complete_work(scenarioYear, input_dir, output_dir, mgraFile, "walkMgraEquivMinutes.csv") + # Update rapid dwell time before importing network + mode5tod = pd.read_csv(_join(input_dir,'MODE5TOD.csv')) + mode5tod.loc[mode5tod['MODE_ID'].isin([6,7]), ['DWELLTIME']] = float(props['rapid.dwell']) + mode5tod.to_csv(_join(input_dir,'MODE5TOD.csv')) + if not skipBuildNetwork: source_gdb = _glob.glob(os.path.join(input_dir, "*.gdb")) if len(source_gdb) > 1: @@ -632,7 +638,7 @@ def __call__(self, main_directory, scenario_id, scenario_title, emmebank_title, if (not skipScenManagement) and (msa_iteration==1): self.run_proc("runSandag_ScenManagement.cmd", - [drive + path_forward_slash, str(props["scenarioYear"])], + [drive + path_forward_slash, str(props["scenarioYear"]), str(props["scenarioYear"]) + str(props["scenarioYearSuffix"])], "Running Scenario Management", capture_output=True) if not skipABMPreprocessing[iteration]: @@ -724,7 +730,7 @@ def __call__(self, main_directory, scenario_id, scenario_title, emmebank_title, #export_for_commercial_vehicle(output_dir + '/skims', base_scenario) self.run_proc( "cvm.bat", - [drive, path_no_drive, scenarioYear], + [drive, path_no_drive, str(scenarioYear) + str(scenarioYearSuffix)], "Commercial vehicle model", capture_output=True) if msa_iteration == startFromIteration: external_zones = "1-12" @@ -732,7 +738,7 @@ def __call__(self, main_directory, scenario_id, scenario_title, emmebank_title, # run truck model (generate truck trips) self.run_proc( "htm.bat", - [drive, path_no_drive, fafInputFile, htm_input_file, "PM", truck_scenario_year], + [drive, path_no_drive, fafInputFile, htm_input_file, "PM", truck_scenario_year, str(scenarioYear) + str(scenarioYearSuffix)], "Heavy truck model", capture_output=True) # run EI model "US to SD External Trip Model" if not skipEI[iteration]: diff --git a/src/main/emme/toolbox/utilities/properties.py b/src/main/emme/toolbox/utilities/properties.py index c1bd536d7..209df83ee 100644 --- a/src/main/emme/toolbox/utilities/properties.py +++ b/src/main/emme/toolbox/utilities/properties.py @@ -600,11 +600,11 @@ def set_year_specific_properties(self, file_path): reader = csv.DictReader(f) properties_by_year = {} for row in reader: - year = int(row.pop("year")) + year = str(row.pop("year")) properties_by_year[year] = row - year_properties = properties_by_year.get(self["scenarioYear"]) + year_properties = properties_by_year.get(str(self["scenarioYear"]) + str(self["scenarioYearSuffix"])) if year_properties is None: - raise Exception("Row with year %s not found in %s" % (self["scenarioYear"], file_path)) + raise Exception("Row with year %s not found in %s" % (str(self["scenarioYear"]) + str(self["scenarioYearSuffix"]), file_path)) self.update(year_properties) def __setitem__(self, key, item): diff --git a/src/main/python/pythonGUI/createStudyAndScenario.py b/src/main/python/pythonGUI/createStudyAndScenario.py index 4ce0fab87..b5508ca4b 100644 --- a/src/main/python/pythonGUI/createStudyAndScenario.py +++ b/src/main/python/pythonGUI/createStudyAndScenario.py @@ -47,7 +47,7 @@ def record_selection(self): class CreateScenarioGUI(tkinter.Frame): - def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = "S0"): + def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = "S0", year_suffix = ""): tkinter.Frame.__init__(self, root, border=5) body = tkinter.Frame(self) body.pack(fill=constants.X, expand=1) @@ -83,6 +83,7 @@ def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = self.year = year self.geo = geo self.lu = lu + self.year_suffix = year_suffix # if self.year not in self.lu_options[self.lu]["years"]: # if self.year in self.lu_options["DS41"]["years"]: @@ -195,6 +196,22 @@ def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = option.grid(row=current_row, column=1) current_row += 1 #option.pack(expand = True) + + tkinter.Label(body, text=u"Build Status", font=("Helvetica", 8, 'bold')).grid(row=current_row) + var = tkinter.StringVar(root) + buildOptionList = ["Build", "No Build"] + if self.year == "2022": + self.year_suffix = "" + buildOptionList = ["Base"] + var.set("Base") + elif self.year_suffix == "nb": + var.set("No Build") + else: + var.set("Build") + option=tkinter.OptionMenu(body,var,*buildOptionList,command=self.setSuffix) + option.config(width=50) + option.grid(row=current_row, column=1) + current_row += 1 tkinter.Label(body, text=u"Land Use", font=("Helvetica", 8, 'bold')).grid(row=current_row) #self.lu="DS41" @@ -226,14 +243,14 @@ def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = current_row += 1 #option.pack(expand = True) - tkinter.Label(body, text=u"Scenario Folder", font=("Helvetica", 8, 'bold')).grid(row=13) + tkinter.Label(body, text=u"Scenario Folder", font=("Helvetica", 8, 'bold')).grid(row=current_row) self.scenariopath = tkinter.Entry(body, width=40) self.scenariopath.grid(row=current_row, column=1, sticky=sticky) button = tkinter.Button(body, text=u"...",width=4,command=lambda: self.get_path("scenario")) button.grid(row=current_row, column=2) current_row += 1 - tkinter.Label(body, text=u"Network Folder",font=("Helvetica", 8, 'bold')).grid(row=14) + tkinter.Label(body, text=u"Network Folder",font=("Helvetica", 8, 'bold')).grid(row=current_row) self.networkpath = tkinter.Entry(body, width=40) self.networkpath.grid(row=current_row, column=1, sticky=sticky) button = tkinter.Button(body, text=u"...",width=4,command=lambda: self.get_path("network")) @@ -250,7 +267,7 @@ def __init__(self, root, emme_version = "4.3.7", year = "2022", geo = "1", lu = button.pack(side=constants.RIGHT) #button.grid(row = 13, columns = 2) - self.defaultpath=self.releaseDir+"\\"+self.version+'\\input\\'+self.year + self.defaultpath=self.releaseDir+"\\"+self.version+'\\input\\'+self.year+self.year_suffix self.scenariopath.delete(0, constants.END) self.scenariopath.insert(0, self.defaultScenarioDir) self.networkpath.delete(0, constants.END) @@ -293,7 +310,7 @@ def setyear(self,value): self.year=value #Refresh the GUI with inputs already entered self.destroy() - CreateScenarioGUI(self.root, self.emme_version, self.year, self.geo, self.lu).pack(fill=constants.X, expand=1) + CreateScenarioGUI(self.root, self.emme_version, self.year, self.geo, self.lu, self.year_suffix).pack(fill=constants.X, expand=1) return # set Geography Set ID @@ -305,6 +322,17 @@ def setgeo(self, value): def setLU(self,value): self.lu = value.split("-")[0] return + + # set build/no-build + def setSuffix(self, value): + if value == "No Build": + self.year_suffix = "nb" + else: + self.year_suffix = "" + #Refresh the GUI with inputs already entered + self.destroy() + CreateScenarioGUI(self.root, self.emme_version, self.year, self.geo, self.lu, self.year_suffix).pack(fill=constants.X, expand=1) + return #set cluster def setcluster(self,value): @@ -402,12 +430,13 @@ def executeBatch(self, type): lu_input_path = os.path.join(self.lu_options[self.lu]["location"], "abm_csv", "processed", self.year + "nb") else: lu_input_path = os.path.join(self.lu_options[self.lu]["location"], "abm_csv", "processed", self.year) - commandstr = u"create_scenario.cmd %s %s %s %s %s" % ( + commandstr = u"create_scenario.cmd %s %s %s %s %s %s" % ( self.scenariopath.get(), self.year, self.networkpath.get(), self.emme_version, - lu_input_path + lu_input_path, + '"' + self.year_suffix + '"' ) os.chdir(self.releaseDir+"\\"+self.version+'\\') os.system(commandstr) diff --git a/src/main/python/run_htm.py b/src/main/python/run_htm.py index f841b62a5..08d47b670 100644 --- a/src/main/python/run_htm.py +++ b/src/main/python/run_htm.py @@ -612,6 +612,7 @@ def allocate_trips( htm_input_file_name = arguments[4] skim_tod = arguments[5] scenario_year = arguments[6] +scenario_year_with_suffix = arguments[7] skim_name = 'TRK_H' @@ -881,9 +882,9 @@ def allocate_trips( # Mapping dictionary for conditions -mapping = {'Light': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.light'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.light'].iloc[0], - 'Medium': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.medium'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.medium'].iloc[0], - 'Heavy': df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.fuel.high'].iloc[0] + df_auto_cost[df_auto_cost['year']==int(scenario_year)]['aoc.truck.maintenance.high'].iloc[0]} +mapping = {'Light': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.light'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.light'].iloc[0], + 'Medium': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.medium'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.medium'].iloc[0], + 'Heavy': df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.fuel.high'].iloc[0] + df_auto_cost[df_auto_cost['year']==scenario_year_with_suffix]['aoc.truck.maintenance.high'].iloc[0]} def calculate_new_column(row): diff --git a/src/main/python/update_properties.py b/src/main/python/update_properties.py index e438e770d..111ed446d 100644 --- a/src/main/python/update_properties.py +++ b/src/main/python/update_properties.py @@ -2,9 +2,11 @@ path = sys.argv[1] year = sys.argv[2] +suffix = sys.argv[3] with open(path, 'r') as file: properties = file.read() properties = properties.replace(r"${year}",year) +properties = properties.replace(r"${suffix}",suffix) with open(path, 'w') as file: file.writelines(properties) \ No newline at end of file diff --git a/src/main/resources/create_scenario.cmd b/src/main/resources/create_scenario.cmd index bac2bacdb..1b325ed59 100644 --- a/src/main/resources/create_scenario.cmd +++ b/src/main/resources/create_scenario.cmd @@ -7,12 +7,14 @@ if "%2"=="" goto usage if "%3"=="" goto usage if "%4"=="" goto usage if "%5"=="" goto usage +if "%6"=="" goto usage set SCENARIO_FOLDER=%1 set YEAR=%2 set NETWORKDIR=%3 set EMME_VERSION=%4 set LANDUSE_INPUT_PATH=%5 +set SUFFIX=%6 @echo creating scenario folders set FOLDERS=input application bin conf input_truck logFiles output python report sql uec analysis visualizer visualizer\outputs\summaries input_checker src src\asim src\asim-cvm @@ -45,7 +47,7 @@ xcopy /Y/s/E .\common\src\asim-cvm\"*.*" %SCENARIO_FOLDER%\src\asim-cvm @echo assemble inputs del %SCENARIO_FOLDER%\input /q rem copy pop, hh, landuse, and other input files -xcopy /s/Y .\input\%YEAR%\"*.*" %SCENARIO_FOLDER%\input +xcopy /s/Y .\input\%YEAR%%SUFFIX%\"*.*" %SCENARIO_FOLDER%\input rem copy common geography files to input folder xcopy /Y .\common\input\geography\"*.*" %SCENARIO_FOLDER%\input xcopy /Y .\common\input\geography\mgra\"*.*" %SCENARIO_FOLDER%\input @@ -110,14 +112,14 @@ echo %PROP_FILE% @REM ) @REM del %PROP_FILE% @REM move %TEMP_FILE% %PROP_FILE% -python .\common\python\update_properties.py %PROP_FILE% %YEAR% +python .\common\python\update_properties.py %PROP_FILE% %YEAR% %SUFFIX% @echo init emme folder call init_emme.cmd %SCENARIO_FOLDER% %EMME_VERSION% :usage -@echo Usage: %0 ^ ^ ^ ^ +@echo Usage: %0 ^ ^ ^ ^ ^ ^ @echo If 3rd parameter is empty, default network inputs in standard release are used diff --git a/src/main/resources/cvm.bat b/src/main/resources/cvm.bat index cea0ebe3a..874731619 100644 --- a/src/main/resources/cvm.bat +++ b/src/main/resources/cvm.bat @@ -1,7 +1,7 @@ ECHO ON set PROJECT_DRIVE=%1 set PROJECT_DIRECTORY=%2 -set SCENARIO_YEAR=%3 +set SCENARIO_YEAR_WITH_SUFFIX=%3 SET ANACONDA3_DIR=%CONDA_PREFIX% SET ANACONDA2_DIR=%CONDA_TWO_PREFIX% @@ -60,7 +60,7 @@ IF %ERRORLEVEL% NEQ 0 (GOTO :ERROR) else (GOTO :SUCCESS) :::::::::::::::::::::: :: Post-process CVM outputs - %PYTHON3% src/asim-cvm/scripts/generate_summary.py %MODEL_DIR% %CVM_OUTPUT_DIR% %SCENARIO_YEAR% + %PYTHON3% src/asim-cvm/scripts/generate_summary.py %MODEL_DIR% %CVM_OUTPUT_DIR% %SCENARIO_YEAR_WITH_SUFFIX% :: sort TAZ zone index in omx %PYTHON3% src/asim-cvm/scripts/set_zoneMapping.py cvm output diff --git a/src/main/resources/htm.bat b/src/main/resources/htm.bat index 045bf7ef5..30be52f5e 100644 --- a/src/main/resources/htm.bat +++ b/src/main/resources/htm.bat @@ -5,6 +5,7 @@ set faf_file_name=%3 set htm_input_file_name=%4 set skim_period=%5 set scenario_year=%6 +set scenario_year_with_suffix=%7 SET ANACONDA3_DIR=%CONDA_PREFIX% SET ANACONDA2_DIR=%CONDA_TWO_PREFIX% @@ -48,7 +49,7 @@ SET OUTPUT_DIR=%PROJECT_DRIVE%%PROJECT_DIRECTORY%\output :: run run_htm.py ECHO Run HTM... CD /d %PROJECT_DRIVE%%PROJECT_DIRECTORY%\python\ -%PYTHON3% run_htm.py %MODEL_DIR% %OUTPUT_DIR% %faf_file_name% %htm_input_file_name% %skim_period% %scenario_year% 2>>%PROJECT_DRIVE%%PROJECT_DIRECTORY%\logFiles\event-htm.txt +%PYTHON3% run_htm.py %MODEL_DIR% %OUTPUT_DIR% %faf_file_name% %htm_input_file_name% %skim_period% %scenario_year% %scenario_year_with_suffix% 2>>%PROJECT_DRIVE%%PROJECT_DIRECTORY%\logFiles\event-htm.txt IF %ERRORLEVEL% NEQ 0 (GOTO :ERROR) else (GOTO :SUCCESS) :SUCCESS diff --git a/src/main/resources/runSandag_ScenManagement.cmd b/src/main/resources/runSandag_ScenManagement.cmd index ee7ebbe5b..0723d6980 100644 --- a/src/main/resources/runSandag_ScenManagement.cmd +++ b/src/main/resources/runSandag_ScenManagement.cmd @@ -2,6 +2,7 @@ ECHO OFF set PROJECT_DIRECTORY=%1 set SCENYEAR=%2 +set SCENYEARWITHSUFFIX=%3 %PROJECT_DRIVE% cd /d %PROJECT_DIRECTORY% @@ -29,7 +30,7 @@ SET PYTHON3=%ANACONDA3_DIR%\envs\asim_baydag\python.exe cd /d %PROJECT_DIRECTORY% -%PYTHON3% src/asim/scripts/ScenarioManagement/scenManagement.py %PROJECT_DIRECTORY% %SCENYEAR% +%PYTHON3% src/asim/scripts/ScenarioManagement/scenManagement.py %PROJECT_DIRECTORY% %SCENYEAR% %SCENYEARWITHSUFFIX% diff --git a/src/main/resources/sandag_abm.properties b/src/main/resources/sandag_abm.properties index a29bcad5a..b83a49f6f 100644 --- a/src/main/resources/sandag_abm.properties +++ b/src/main/resources/sandag_abm.properties @@ -25,7 +25,7 @@ sample_rates = 0.25,0.5,1.0 # ##highway assignment convergence criteria convergence = 0.0005 -RunModel.useLocalDrive = false +RunModel.useLocalDrive = true RunModel.skipInitialization = false RunModel.deleteAllMatrices = false RunModel.skip4Ds = false @@ -112,6 +112,7 @@ mgra.socec.file = input/mgra15_based_input${year}.csv cvm.emp.input.file = input/percent_of_establishments_by_luz_size_emp_cat.xlsx ## scenario year scenarioYear = ${year} +scenarioYearSuffix = ${suffix} # ## Auto operating costs: these tokens are referred to in many UECs aoc.fuel = ${aoc.fuel} From eae03c716b6078d58c12686645711e972111da3d Mon Sep 17 00:00:00 2001 From: aber-sandag Date: Fri, 9 Aug 2024 15:09:45 -0700 Subject: [PATCH 2/3] Remove unused tc.everyone.owns parameter --- input/model/parametersByYears.csv | 28 ++++++++++++------------ src/main/resources/sandag_abm.properties | 1 - 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/input/model/parametersByYears.csv b/input/model/parametersByYears.csv index 59d53cac4..151651332 100644 --- a/input/model/parametersByYears.csv +++ b/input/model/parametersByYears.csv @@ -1,14 +1,14 @@ -year,aoc.fuel,aoc.maintenance,aoc.truck.fuel.light,aoc.truck.fuel.medium,aoc.truck.fuel.high,aoc.truck.maintenance.light,aoc.truck.maintenance.medium,aoc.truck.maintenance.high,aoc.truck.fuel.SUT,aoc.truck.fuel.MUT,aoc.truck.maintenance.SUT,aoc.truck.maintenance.MUT,airport.SAN.enplanements,airport.SAN.connecting,airport.SAN.airportMgra,airport.CBX.enplanements,airport.CBX.connecting,airport.CBX.airportMgra,crossBorder.tours,crossBorder.sentriShare,crossBorder.readyShare,taxi.baseFare,taxi.costPerMile,taxi.costPerMinute,TNC.single.baseFare,TNC.single.costPerMile,TNC.single.costPerMinute,TNC.single.costMinimum,TNC.shared.baseFare,TNC.shared.costPerMile,TNC.shared.costPerMinute,TNC.shared.costMinimum,Mobility.AV.RemoteParkingCostPerHour,active.micromobility.variableCost,active.micromobility.fixedCost,active.microtransit.fixedCost,Mobility.AV.Share,smartSignal.factor.LC,smartSignal.factor.MA,smartSignal.factor.PA,atdm.factor,active.ebike.ownership,active.maxdist.bike.taz,active.maxdist.bike.mgra,active.bike.minutes.per.mile,active.coef.distcla0,active.coef.distcla1,active.coef.distcla2,active.coef.distcla3,active.coef.dartne2,active.coef.dwrongwy,active.coef.dcyctrac,active.coef.dbikblvd,tc.everyone.owns,rapid.factor.ivt,rapid.factor.wait,rapid.dwell,poe.OME.start.year,tr.veh.year -2022,22,10.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2093250,0,9350,101343,0.219,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0,0.95,1,0.5,2027,2029 -2023,23.5,11.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2144000,0,9350,105064,0.44,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0,0.95,1,0.5,2027,2029 -2025,21,11.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,15542000,915424,11249,2195456,0,9350,119372,0.483,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.082,21.4,2.14,5.60748,0.79794,0.32364,0.50592,0.79794,0.9765,3.20385,0.39432,0.31899,0,0.95,1,0.5,2027,2029 -2026,20.2,11.9,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,16012000,943107,11249,2221801,0,9350,121272,0.505,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.095,21.6,2.16,5.55556,0.78936,0.32016,0.50048,0.78936,0.966,3.1694,0.39008,0.31556,0,0.87,1,0.5,2027,2029 -2029,18.6,12.3,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17392000,1024389,11249,2301786,0,9350,126844,0.569,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.133,22.2,2.22,5.40541,0.76362,0.30972,0.48416,0.76362,0.9345,3.06605,0.37736,0.30527,1,0.87,0.87,0.425,2027,2029 -2030,18.2,12.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17878000,1053014,11249,2329408,0,9350,128588,0.591,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.146,22.4,2.24,0.75504,0.30624,0.47872,0.75504,0.924,3.0316,0.37312,0.30184,5.35714,1,0.87,0.87,0.425,2027,2029 -2032,17.5,12.6,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,18571000,1093832,11249,2385314,0,9350,131663,0.569,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,0.93,0.172,22.9,2.29,5.24017,0.73359,0.29754,0.46512,0.73359,0.89775,2.94548,0.36252,0.29327,1,0.87,0.87,0.425,2027,2029 -2035,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,1,0.87,0.87,0.425,2027,2029 -2035nb,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,1,0.87,1,0.5,2060,2060 -2040,16.3,13.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19877909,1170809,11249,2619456,0,9350,139207,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.265,24.7,2.47,4.8583,0.65637,0.26622,0.41616,0.65637,0.80325,2.63543,0.32436,0.2624,1,0.87,0.87,0.425,2027,2029 -2045,16.1,14.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20098233,1183786,11249,2776623,0,9350,143214,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.32,25.5,2.55,4.70588,0.62205,0.2523,0.3944,0.62205,0.76125,2.49763,0.3074,0.24868,1,0.87,0.87,0.425,2027,2029 -2050,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,1,0.87,0.87,0.425,2027,2029 -2050nb,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,1,0.87,1,0.5,2060,2060 +year,aoc.fuel,aoc.maintenance,aoc.truck.fuel.light,aoc.truck.fuel.medium,aoc.truck.fuel.high,aoc.truck.maintenance.light,aoc.truck.maintenance.medium,aoc.truck.maintenance.high,aoc.truck.fuel.SUT,aoc.truck.fuel.MUT,aoc.truck.maintenance.SUT,aoc.truck.maintenance.MUT,airport.SAN.enplanements,airport.SAN.connecting,airport.SAN.airportMgra,airport.CBX.enplanements,airport.CBX.connecting,airport.CBX.airportMgra,crossBorder.tours,crossBorder.sentriShare,crossBorder.readyShare,taxi.baseFare,taxi.costPerMile,taxi.costPerMinute,TNC.single.baseFare,TNC.single.costPerMile,TNC.single.costPerMinute,TNC.single.costMinimum,TNC.shared.baseFare,TNC.shared.costPerMile,TNC.shared.costPerMinute,TNC.shared.costMinimum,Mobility.AV.RemoteParkingCostPerHour,active.micromobility.variableCost,active.micromobility.fixedCost,active.microtransit.fixedCost,Mobility.AV.Share,smartSignal.factor.LC,smartSignal.factor.MA,smartSignal.factor.PA,atdm.factor,active.ebike.ownership,active.maxdist.bike.taz,active.maxdist.bike.mgra,active.bike.minutes.per.mile,active.coef.distcla0,active.coef.distcla1,active.coef.distcla2,active.coef.distcla3,active.coef.dartne2,active.coef.dwrongwy,active.coef.dcyctrac,active.coef.dbikblvd,rapid.factor.ivt,rapid.factor.wait,rapid.dwell,poe.OME.start.year,tr.veh.year +2022,22,10.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2093250,0,9350,101343,0.219,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0.95,1,0.5,2027,2029 +2023,23.5,11.5,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,14536000,856170,11249,2144000,0,9350,105064,0.44,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.008,21.1,2.11,5.6872,0.81081,0.32886,0.51408,0.81081,0.99225,3.25553,0.40068,0.32414,0.95,1,0.5,2027,2029 +2025,21,11.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,15542000,915424,11249,2195456,0,9350,119372,0.483,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.082,21.4,2.14,5.60748,0.79794,0.32364,0.50592,0.79794,0.9765,3.20385,0.39432,0.31899,0.95,1,0.5,2027,2029 +2026,20.2,11.9,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,16012000,943107,11249,2221801,0,9350,121272,0.505,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,1,1,1,1,0.095,21.6,2.16,5.55556,0.78936,0.32016,0.50048,0.78936,0.966,3.1694,0.39008,0.31556,0.87,1,0.5,2027,2029 +2029,18.6,12.3,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17392000,1024389,11249,2301786,0,9350,126844,0.569,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.133,22.2,2.22,5.40541,0.76362,0.30972,0.48416,0.76362,0.9345,3.06605,0.37736,0.30527,0.87,0.87,0.425,2027,2029 +2030,18.2,12.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,17878000,1053014,11249,2329408,0,9350,128588,0.591,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,1,0.146,22.4,2.24,0.75504,0.30624,0.47872,0.75504,0.924,3.0316,0.37312,0.30184,5.35714,0.87,0.87,0.425,2027,2029 +2032,17.5,12.6,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,18571000,1093832,11249,2385314,0,9350,131663,0.569,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,2.03,0,0.8,0.8,0.8,0.93,0.172,22.9,2.29,5.24017,0.73359,0.29754,0.46512,0.73359,0.89775,2.94548,0.36252,0.29327,0.87,0.87,0.425,2027,2029 +2035,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,0.87,0.87,0.425,2027,2029 +2035nb,17,13,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19660000,1157974,11249,2471185,0,9350,135025,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.211,23.6,2.36,5.08475,0.70356,0.28536,0.44608,0.70356,0.861,2.8249,0.34768,0.28126,0.87,1,0.5,2060,2060 +2040,16.3,13.7,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,19877909,1170809,11249,2619456,0,9350,139207,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.265,24.7,2.47,4.8583,0.65637,0.26622,0.41616,0.65637,0.80325,2.63543,0.32436,0.2624,0.87,0.87,0.425,2027,2029 +2045,16.1,14.4,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20098233,1183786,11249,2776623,0,9350,143214,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.32,25.5,2.55,4.70588,0.62205,0.2523,0.3944,0.62205,0.76125,2.49763,0.3074,0.24868,0.87,0.87,0.425,2027,2029 +2050,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,4.56,0.96,0.33,9.19,2.31,0.48,0.16,4.6,0.81,0.39,1,1.01,0,0.8,0.8,0.8,0.93,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,0.87,0.87,0.425,2027,2029 +2050nb,16.6,15.1,28.5,47.3,71.9,29,55,62,62.2,100.7,11.1,16.3,20321000,1196907,11249,2943221,0,9350,144682,0.698,0.322,3,3.3,0.46,3.31,0.96,0.33,9.19,1.66,0.48,0.16,4.6,0.81,0.39,1,1.01,0,1,1,1,1,0.375,26.4,2.64,4.54545,0.58344,0.23664,0.36992,0.58344,0.714,2.3426,0.28832,0.23324,0.87,1,0.5,2060,2060 diff --git a/src/main/resources/sandag_abm.properties b/src/main/resources/sandag_abm.properties index b83a49f6f..46e52420e 100644 --- a/src/main/resources/sandag_abm.properties +++ b/src/main/resources/sandag_abm.properties @@ -365,7 +365,6 @@ smartSignal.factor.PA = ${smartSignal.factor.PA} airport.SAN.airportMgra = ${airport.SAN.airportMgra} active.coef.dbikblvd = ${active.coef.dbikblvd} crossBorder.tours = ${crossBorder.tours} -tc.everyone.owns = ${tc.everyone.owns} crossBorder.sentriShare = ${crossBorder.sentriShare} active.coef.dcyctrac = ${active.coef.dcyctrac} TNC.shared.baseFare = ${TNC.shared.baseFare} From 13ae88eb396a4447639752f359cadaf092730d12 Mon Sep 17 00:00:00 2001 From: aber-sandag Date: Fri, 9 Aug 2024 15:15:45 -0700 Subject: [PATCH 3/3] Move airport ivt multipliers to common airport constants --- src/asim/configs/airport.CBX/trip_mode_choice.yaml | 5 ----- src/asim/configs/airport.SAN/trip_mode_choice.yaml | 5 ----- src/asim/configs/common_airport/constants.yaml | 6 +++++- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/asim/configs/airport.CBX/trip_mode_choice.yaml b/src/asim/configs/airport.CBX/trip_mode_choice.yaml index 1077d61e2..19c0d8be6 100644 --- a/src/asim/configs/airport.CBX/trip_mode_choice.yaml +++ b/src/asim/configs/airport.CBX/trip_mode_choice.yaml @@ -263,11 +263,6 @@ CONSTANTS: c_fwt: 1.5 c_xwt: 2 c_waux: 2.5 - ivt_lrt_multiplier: 0.85 - # ivt_brt_multiplier: 0.95 - ivt_cmr_multiplier: 0.85 - ivt_ltd_multiplier: 1.0 - ivt_cost_multiplier: 0.6 # so far, we can use the same spec as for non-joint tours diff --git a/src/asim/configs/airport.SAN/trip_mode_choice.yaml b/src/asim/configs/airport.SAN/trip_mode_choice.yaml index 7ab39ce3f..70e9b23f8 100644 --- a/src/asim/configs/airport.SAN/trip_mode_choice.yaml +++ b/src/asim/configs/airport.SAN/trip_mode_choice.yaml @@ -264,11 +264,6 @@ CONSTANTS: c_fwt: 1.5 c_xwt: 2 c_waux: 2.5 - ivt_lrt_multiplier: 0.85 - # ivt_brt_multiplier: 0.95 - ivt_cmr_multiplier: 0.85 - ivt_ltd_multiplier: 1.0 - ivt_cost_multiplier: 0.6 # so far, we can use the same spec as for non-joint tours diff --git a/src/asim/configs/common_airport/constants.yaml b/src/asim/configs/common_airport/constants.yaml index e356516f5..26f1211f4 100644 --- a/src/asim/configs/common_airport/constants.yaml +++ b/src/asim/configs/common_airport/constants.yaml @@ -8,4 +8,8 @@ ridehailCostPerMile: 0.96 ridehailCostPerMinute: 0.33 ridehailCostMinimum: 9.19 driveSpeed: 25.00 -ivt_brt_multiplier: 0.95 \ No newline at end of file +ivt_lrt_multiplier: 0.85 +ivt_brt_multiplier: 0.95 +ivt_cmr_multiplier: 0.85 +ivt_ltd_multiplier: 1.0 +ivt_cost_multiplier: 0.6 \ No newline at end of file