Data and a supporting lightweight Python package that describes possible costs for enabling EV managed charging from 2025 to 2050 for three dispatch mechanisms: Time-of-Use (TOU), Real Time Pricing (RTP), and direct load control (DLC) and four flexibility scenarios (Flat and Low, Mid, and High Flex).
Data Access: Outputs | Data Access: Inputs | Install | Usage
Data files include:
-
cost_inputs/scenario_vars.csvcontains costs and other supply curve parameters (upper limits of participation, enrollment response to a given incentive, and ratio of customers expected to require a new charger). -
outputs/costs_table_1_pct.csvis a table of per EV costs for all years ($ per vehicle in 2025 dollars), vehicle types, and programs at 1% increments of customer participation. -
outputs/betas_table.csvis a table of beta values, or values that determine the customer participation rate as a function of incentives. This function is a decaying exponential response of the form r*(1-e^(-beta*x)) where x is the annual incentive value in USD/vehicle-year and r is a maximum participation rate.
The first file is essential to generating EVMC supply curves, while the last two tables are provided for users who would like the supply curve data without needing to install or run code.
Key functions to generate data tables can be found in supplycurve_helpers.py. These include:
supplycurve_helpers.SupplyCurvescreates an instance of a table of EVMC supply curves for all scenarios, programs, vehicle types, and years. Users can create new tables at a specified resolution of percent enrollment by passing enrollment_resolution argument. If no enrollment_resolution is passed, the 1% enrollment table provided will be used by default. Users can also use their own table by providing a path with table_path. For example, users can generate a table with 10% enrollment resolution with:
from evmc_supply_curves.supplycurve_helpers import SupplyCurves
sc=SupplyCurves(enrollment_resolution=10) -
supplycurve_helpers.create_betas_tablereturns a dataframe of beta values (a variable that determines customer participation as a response to incentives or marketing costs). A .csv is also saved to the 'outputs' directory. -
supplycurve_helpers.create_cost_tablegenerates all 288 supply curves as a dataframe of per vehicle costs for a given enrollment resolution. A .csv of this table of supply curves for this resolution, saved to the 'table_path'. An option to overwrite previous tables can be used withsc.create_cost_table(overwrite=True). -
supplycurve_helpers.load_existing_tableloads a table of supply curves that has already been generated, such as the table provided at a resolution of 1% enrollment increments, or a user-generated table. This can then be used to find a per EV cost ($ per vehicle in 2025 dollars) given a targeted percent of customer enrollment using cost_per_EV. -
supplycurve_helpers.cost_per_EVreturns a DataFrame with per vehicle cost in USD for a specified percentage of enrollment and additional optional parameters. If more than one possible cost exists, this will return a DataFrame for all costs. Arguments are as follows:percent: Must be an int between 0 and 100 (required argument).EV_Type:LDVorMHDVProgram:DLC,RTP, orTOUScenario:high,mid,low, orflatYear: 2025, 2030, 2035, 2040, 2045, or 2050Customer_Type:neworrecurring
After cloning the repository, create a virtual environment in the repository root:
python -m venv .venvactivate it (Windows):
.venv\Scripts\activateor (for macOS/Unix):
source .venv/bin/activateand install the project in editable mode with its development dependencies:
pip install -e .This automatically installs all project dependencies documented in pyproject.toml.
examples/basic_example.ipynb contains examples to create cost tables and use 1% resolution particiption data to determine per EV costs of given a targeted percent participation.
from evmc_supply_curves.supplycurve_helpers import SupplyCurves
sc=SupplyCurves()
sc.load_existing_table() # creates an instance of a supply curve table that can be queried
sc.cost_per_EV(PERCENT, EV_Type='LDV') # returns a per EV cost NREL Software Record SWR-25-69 "Electric Vehicle Managed Charging (EVMC) Supply Curves"