Skip to content

Commit

Permalink
Merge pull request #258 from SANDAG/ebike_calib
Browse files Browse the repository at this point in the history
Bike modes calibration
  • Loading branch information
bhargavasana authored Nov 23, 2024
2 parents 6f86d67 + cc716a5 commit 08dc513
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 82 deletions.
2 changes: 1 addition & 1 deletion input/model/parametersByYears.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
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,rapid.factor.ivt,rapid.factor.wait,rapid.dwell,poe.OME.start.year,tr.veh.year,ev.rebate.lowinc.bev,ev.rebate.lowinc.pev,ev.rebate.medinc.bev,ev.rebate.medinc.pev,ev.chargers
2022,22,10.6,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,0.95,1,0.5,2027,2029,0,0,0,0,7716
2022,22,10.6,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.047,0.95,1,0.5,2027,2029,0,0,0,0,7716
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,0.95,1,0.5,2027,2029,0,0,0,0,10553
2026,20.1,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,0.87,1,0.5,2027,2029,0,0,0,0,11714
2029,18.5,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,0.87,0.87,0.425,2027,2029,0,0,0,0,16021
Expand Down
1 change: 0 additions & 1 deletion src/asim/configs/common/constants.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ microSpeed: 12
microVarCost: 39 #cents
microFixedCost: 100 #cents
microRentTime: 1
microConstant: 60
microAccessThreshold: 100
ebikeownership: 0.008
ebikeMaxDist: 10.50
Expand Down
9 changes: 5 additions & 4 deletions src/asim/configs/resident/tour_mode_choice.csv
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,6 @@ util_calib_autosufficienth,abm2+ calibration constant,@(df.is_indiv & (df.auto_o
util_calib_zeroautohhjoint,abm2+ calibration constant,@(df.is_joint & (df.auto_ownership == 0)),,,coef_calib_zeroautohhjointtou_SHARED3,coef_calib_zeroautohhjointtou_WALK,coef_calib_zeroautohhjointtou_BIKE,coef_calib_zeroautohhjointtou_WALK_TRANSIT,coef_calib_zeroautohhjointtou_WALK_TRANSIT,coef_calib_zeroautohhjointtou_WALK_TRANSIT,coef_calib_zeroautohhjointtou_PNR_TRANSIT,coef_calib_zeroautohhjointtou_PNR_TRANSIT,coef_calib_zeroautohhjointtou_PNR_TRANSIT,coef_calib_zeroautohhjointtou_KNR_TRANSIT,coef_calib_zeroautohhjointtou_KNR_TRANSIT,coef_calib_zeroautohhjointtou_KNR_TRANSIT,coef_calib_zeroautohhjointtou_TNC_TRANSIT,coef_calib_zeroautohhjointtou_TNC_TRANSIT,coef_calib_zeroautohhjointtou_TNC_TRANSIT,coef_calib_zeroautohhjointtou_TAXI,coef_calib_zeroautohhjointtou_TNC_SINGLE,coef_calib_zeroautohhjointtou_TNC_SHARED,,coef_calib_zeroautohhjointtou_EBIKE,coef_calib_zeroautohhjointtou_ESCOOTER
util_calib_autodeficienthh,abm2+ calibration constant,@(df.is_joint & (df.auto_ownership < df.num_adults) & (df.auto_ownership > 0)),,,coef_calib_autodeficienthhjoi_SHARED3,coef_calib_autodeficienthhjoi_WALK,coef_calib_autodeficienthhjoi_BIKE,coef_calib_autodeficienthhjoi_WALK_TRANSIT,coef_calib_autodeficienthhjoi_WALK_TRANSIT,coef_calib_autodeficienthhjoi_WALK_TRANSIT,coef_calib_autodeficienthhjoi_PNR_TRANSIT,coef_calib_autodeficienthhjoi_PNR_TRANSIT,coef_calib_autodeficienthhjoi_PNR_TRANSIT,coef_calib_autodeficienthhjoi_KNR_TRANSIT,coef_calib_autodeficienthhjoi_KNR_TRANSIT,coef_calib_autodeficienthhjoi_KNR_TRANSIT,coef_calib_autodeficienthhjoi_TNC_TRANSIT,coef_calib_autodeficienthhjoi_TNC_TRANSIT,coef_calib_autodeficienthhjoi_TNC_TRANSIT,coef_calib_autodeficienthhjoi_TAXI,coef_calib_autodeficienthhjoi_TNC_SINGLE,coef_calib_autodeficienthhjoi_TNC_SHARED,,coef_calib_autodeficienthhjoi_EBIKE,coef_calib_autodeficienthhjoi_ESCOOTER
util_calib_autosufficienth,abm2+ calibration constant,@(df.is_joint & (df.auto_ownership >= df.num_adults) & (df.auto_ownership > 0)),,,coef_calib_autosufficienthhjo_SHARED3,coef_calib_autosufficienthhjo_WALK,coef_calib_autosufficienthhjo_BIKE,coef_calib_autosufficienthhjo_WALK_TRANSIT,coef_calib_autosufficienthhjo_WALK_TRANSIT,coef_calib_autosufficienthhjo_WALK_TRANSIT,coef_calib_autosufficienthhjo_PNR_TRANSIT,coef_calib_autosufficienthhjo_PNR_TRANSIT,coef_calib_autosufficienthhjo_PNR_TRANSIT,coef_calib_autosufficienthhjo_KNR_TRANSIT,coef_calib_autosufficienthhjo_KNR_TRANSIT,coef_calib_autosufficienthhjo_KNR_TRANSIT,coef_calib_autosufficienthhjo_TNC_TRANSIT,coef_calib_autosufficienthhjo_TNC_TRANSIT,coef_calib_autosufficienthhjo_TNC_TRANSIT,coef_calib_autosufficienthhjo_TAXI,coef_calib_autosufficienthhjo_TNC_SINGLE,coef_calib_autosufficienthhjo_TNC_SHARED,,coef_calib_autosufficienthhjo_EBIKE,coef_calib_autosufficienthhjo_ESCOOTER
#util_calib_c_ivtebikeowner,abm2+ calibration constant,time_factor*(ebikeOwnership*(maxEbikeBenefit*(-1))),,,,,coef_calib_civtebikeownership_BIKE,,,,,,,,,,,,,,,,,,
util_calib_escorttour,abm2+ calibration constant,tour_type == 'escort',,,,coef_calib_escorttour_WALK,coef_calib_escorttour_BIKE,coef_calib_escorttour_WALK_TRANSIT,coef_calib_escorttour_WALK_TRANSIT,coef_calib_escorttour_WALK_TRANSIT,coef_calib_escorttour_PNR_TRANSIT,coef_calib_escorttour_PNR_TRANSIT,coef_calib_escorttour_PNR_TRANSIT,coef_calib_escorttour_KNR_TRANSIT,coef_calib_escorttour_KNR_TRANSIT,coef_calib_escorttour_KNR_TRANSIT,coef_calib_escorttour_TNC_TRANSIT,coef_calib_escorttour_TNC_TRANSIT,coef_calib_escorttour_TNC_TRANSIT,,,,,,
#, School Escorting eligibility-odd looking where/isnan is to allow this to work with numba fastmath,,,,,,,,,,,,,,,,,,,,,,,,
util_one_or_more_school_escort,No SOV if on school escort tour,"@(np.where(np.isnan(df.get('num_escortees', 0)), 0 , df.get('num_escortees', 0)) >= 1)",-999,,,,,,,,,,,,,,,,,,,,,,
Expand All @@ -387,15 +386,17 @@ util_escooter_long_access,Shut off escooter if access time > threshold,"@((df.mi
util_micromobility_long_trip,Shut off ebike if distance > threshold,ebikeMaxDistance,,,,,,,,,,,,,,,,,,,,,,-999,
util_micromobility_long_trip,Shut off escooter if distance > threshold,escooterMaxDistance,,,,,,,,,,,,,,,,,,,,,,,-999
util_ebike_ivt,Ebike utility for in-vehicle time,@(df.ebike_time_inb + df.ebike_time_out)*df.time_factor,,,,,,,,,,,,,,,,,,,,,,coef_ivt,
util_ebike_access,Ebike utility for access/egress time,"@(microConstant + np.where(df.ebike_owner, 0, microRentTime + df.micro_access_inb + df.micro_access_out))*df.time_factor",,,,,,,,,,,,,,,,,,,,,,coef_acctime,
util_ebike_access,Ebike utility for access/egress time,"@(np.where(df.ebike_owner, 0, microRentTime + df.micro_access_inb + df.micro_access_out))*df.time_factor",,,,,,,,,,,,,,,,,,,,,,coef_acctime,
util_ebike_cost_inb,Ebike utility for inbound cost,@((~df.ebike_owner)&((microFixedCost + microVarCost*df.ebike_time_inb)/df.cost_sensitivity)),,,,,,,,,,,,,,,,,,,,,,coef_income,
util_ebike_cost_out,Ebike utility for outbound cost,@((~df.ebike_owner)&((microFixedCost + microVarCost*df.ebike_time_out)/df.cost_sensitivity)),,,,,,,,,,,,,,,,,,,,,,coef_income,
util_escooter_ivt,escooter utility for in-vehicle time,@(df.escooter_time_inb + df.escooter_time_out)*df.time_factor,,,,,,,,,,,,,,,,,,,,,,,coef_ivt
util_escooter_access,escooter utility for in-vehicle time,@(microConstant + microRentTime + df.micro_access_inb + df.micro_access_out)*df.time_factor,,,,,,,,,,,,,,,,,,,,,,,coef_acctime
util_escooter_access,escooter utility for in-vehicle time,@(microRentTime + df.micro_access_inb + df.micro_access_out)*df.time_factor,,,,,,,,,,,,,,,,,,,,,,,coef_acctime
util_escooter_cost_inb,escooter utility for inbound cost,@((microFixedCost + microVarCost*df.escooter_time_inb)/df.cost_sensitivity),,,,,,,,,,,,,,,,,,,,,,,coef_income
util_escooter_cost_out,escooter utility for outbound cost,@((microFixedCost + microVarCost*df.escooter_time_out)/df.cost_sensitivity),,,,,,,,,,,,,,,,,,,,,,,coef_income
#,Calibration from on-board survey
util_calib_onboard,Calibration coefficient to match implied number of tours from on-board survey,1,,,,,,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,coef_calib_onboard,,,,,,
#,Flexible fleet calibration for zero-auto households
util_calib_mt_zeroautohh,Calibration coefficient for zero-auto households traveling within microtransit service area,@(df.microtransit_available & (df.auto_ownership == 0)),,,,,,,,,,,,,,,,,,,,coef_calib_mt_zeroautohh,,,
util_calib_nev_zeroautohh,Calibration coefficient for zero-auto households traveling within NEV service area,@(df.nev_available & (df.auto_ownership == 0)),,,,,,,,,,,,,,,,,,,,coef_calib_nev_zeroautohh,,,
util_calib_nev_zeroautohh,Calibration coefficient for zero-auto households traveling within NEV service area,@(df.nev_available & (df.auto_ownership == 0)),,,,,,,,,,,,,,,,,,,,coef_calib_nev_zeroautohh,,,
util_calib_ebike_owner,Calibration coefficient for ebike owners,@(df.ebike_owner),,,,,coef_calib_ebike_owner_BIKE,,,,,,,,,,,,,,,,,coef_calib_ebike_owner_EBIKE,
util_calib_shared_ebike,Calibration coefficient for shared ebike,@(~df.ebike_owner),,,,,,,,,,,,,,,,,,,,,,coef_calib_ebike_shared,
Loading

0 comments on commit 08dc513

Please sign in to comment.