What is RouteE?#
RouteE-Powertrain is a Python package that allows users to work with a set of pre-trained mesoscopic vehicle energy prediction models for a varity of vehicle types. Additionally, users can train their own models if "ground truth" energy consumption and driving data are available. RouteE-Powertrain models predict vehicle energy consumption over links in a road network, so the features considered for prediction often include traffic speeds, road grade, turns, etc. Common applications of RouteE-Powertrain are energy-aware ("eco") routing (like RouteE-Compass), energy accounting in mesoscopic simulations, and range estimation (especially for EVs). The diagrams below illustrate the logic and data flows for training custom RouteE-Powertrain models and performing prediction with previously trained models.
Training#
Training new RouteE-Powertrain models requires a set of link aggregate driving data with energy consumption on each link in the road network. Often this data comes from high-frequency GPS or telematics data collected by dedicated loggers or from connected vehicles that are always streaming telematics data. The energy consumption can either be vehicle reported/measured or simulated using a powertrain simulation software like NREL's FASTSim.
Prediction#
In application, trained RouteE-Powertrain models expect link features as inputs and return predicted energy consumption for a particular vehicle over a link with the particular feature set. The RouteE developers maintain a separate repository for previously trained RouteE-Powertrain models, available for prediction "off the shelf". To see which models are available you can use the pt.list_available_models()
function.
A couple of models are distributed with the package itself and you can list those like:
import nrel.routee.powertrain as pt
pt.list_available_models(external=False)
['2016_TOYOTA_Camry_4cyl_2WD', '2017_CHEVROLET_Bolt']
In addition, a larger number of models are available for download and can be listed like:
pt.list_available_models(local=False)
['2010_Mazda_3_i-Stop',
'2012_Ford_Focus',
'2012_Ford_Fusion',
'2016_AUDI_A3_4cyl_2WD',
'2016_BMW_328d_4cyl_2WD',
'2016_BMW_i3_REx_PHEV_Charge_Depleting',
'2016_BMW_i3_REx_PHEV_Charge_Sustaining',
'2016_CHEVROLET_Malibu_4cyl_2WD',
'2016_CHEVROLET_Spark_EV',
'2016_CHEVROLET_Volt_Charge_Depleting',
'2016_CHEVROLET_Volt_Charge_Sustaining',
'2016_FORD_C-MAX_(PHEV)_Charge_Depleting',
'2016_FORD_C-MAX_(PHEV)_Charge_Sustaining',
'2016_FORD_C-MAX_HEV',
'2016_FORD_Escape_4cyl_2WD',
'2016_FORD_Explorer_4cyl_2WD',
'2016_HYUNDAI_Elantra_4cyl_2WD',
'2016_HYUNDAI_Sonata_PHEV_Charge_Depleting',
'2016_HYUNDAI_Sonata_PHEV_Charge_Sustaining',
'2016_Hyundai_Tucson_Fuel_Cell',
'2016_KIA_Optima_Hybrid',
'2016_Leaf_24_kWh',
'2016_MITSUBISHI_i-MiEV',
'2016_Nissan_Leaf_30_kWh',
'2016_TESLA_Model_S60_2WD',
'2016_TOYOTA_Camry_4cyl_2WD',
'2016_TOYOTA_Corolla_4cyl_2WD',
'2016_TOYOTA_Corolla_4cyl_2WD_Stochastic',
'2016_TOYOTA_Highlander_Hybrid',
'2016_Toyota_Prius_Two_FWD',
'2017_CHEVROLET_Bolt',
'2017_Maruti_Dzire_VDI',
'2017_Prius_Prime_Charge_Depleting',
'2017_Prius_Prime_Charge_Sustaining',
'2017_Toyota_Highlander_3',
'2020_Chevrolet_Colorado_2WD_Diesel',
'2020_Chevrolet_Colorado_2WD_Diesel_Stochastic',
'2020_VW_Golf_1',
'2020_VW_Golf_2',
'2021_BMW_iX_xDrive40',
'2021_Cupra_Born',
'2021_Fiat_Panda_Mild_Hybrid',
'2021_Honda_N-Box_G',
'2021_Peugot_3008',
'2022_Ford_F-150_Lightning_4WD',
'2022_MINI_Cooper_SE_Hardtop_2_door',
'2022_Renault_Megane_E-Tech',
'2022_Renault_Zoe_ZE50_R135',
'2022_Tesla_Model_3_RWD',
'2022_Tesla_Model_Y_RWD',
'2022_Tesla_Model_Y_RWD_Stochastic',
'2022_Toyota_Avanza_E_J_MT',
'2022_Toyota_RAV4_Hybrid_LE',
'2022_Toyota_RAV4_Hybrid_LE_Stochastic',
'2022_Toyota_Yaris_Hybrid_Mid',
'2022_Volvo_XC40_Recharge_twin',
'2023_Mitsubishi_Pajero_Sport',
'2023_Polestar_2_Long_range_Dual_motor',
'2023_Volvo_C40_Recharge',
'2024_BYD_Dolphin_Active',
'2024_Toyota_Vios_1',
'2024_VinFast_VF_e34',
'2024_Volkswagen_Polo_1',
'BYD_ATTO_3',
'Daycab_new_300kW',
'Daycab_new_400kW',
'Daycab_old_300kW',
'Daycab_old_400kW',
'Maruti_Swift_4cyl_2WD',
'Nissan_Navara',
'Renault_Clio_IV_diesel',
'Renault_Megane_1',
'Sleeper_new_300kW',
'Sleeper_new_400kW',
'Sleeper_old_300kW',
'Sleeper_old_400kW',
'Toyota_Corolla_Cross_Hybrid',
'Toyota_Etios_Liva_diesel',
'Toyota_Hilux_Double_Cab_4WD',
'Toyota_Mirai']
To predict with any of these models you can use the pt.load_model()
function. Here's an example of loading both a local model and an external model.
camry = pt.load_model('2016_TOYOTA_Camry_4cyl_2WD')
tesla = pt.load_model('2022_Tesla_Model_Y_RWD')