DACF: Day-ahead Carbon Intensity Forecasting of Power Grids using Machine Learning.
(Refer DACF.pdf
for the paper)
We have built CarbonCast, which is an extension of DACF. CarbonCast is more up-to-date and covers more regions. Please refer to that repo for further information.
Version: 1.0
Authors: Diptyaroop Maji, Ramesh K Sitaraman, Prashant Shenoy
Affiliation: University of Massachusetts, Amherst
If you use DACF, please consider citing our paper. The BibTex format is as follows:
@inproceedings{maji2022dacf,
title={DACF: Day-ahead Carbon Intensity Forecasting of Power Grids using Machine Learning},
author={Maji, Diptyaroop and Sitaraman, Ramesh K and Shenoy, Prashant},
booktitle={Proceedings of the Thirteenth ACM International Conference on Future Energy Systems},
year={2022}
}
- US:
- Europe (European regions are monitored by ENTSOE):
- Sweden
- Germany
US ISO electricity generation by source: EIA hourly grid monitor
European regions electricity generation by source: ENTSOE
Weather forecasts: GFS weather forecast archive
Solar/Wind Forecasts:
- CISO: OASIS
- European regions: ENTSOE
- We currently do not have solar/wind forecasts for other regions, Hence, we generate them using ANN models along with pther source production forecasts.
DACF requires Python 3, Keras & Tensorflow 2.x
Other required packages:
Numpy, Pandas, MatplotLib, SKLearn, Pytz, Datetime
For getting source production forecasts, run the following file:
python3 sourceProductionForecast.py <region> <source>
Example: python3 sourceProductionForecast.py CISO nat_gas
Regions: CISO, PJM, ERCO, ISNE, SE, DE
Sources: coal, nat_gas, oil, solar, wind, hydro, unknown, geothermal, biomass, nuclear
We use the following formula for calculating both real-time and forecasted avg carbon intensity:
, where
CIavg = Average carbon intensity (real-time or forecast) of a region
Ei = Electricity produced by source i, when we are calculating real-time avg. carbon intensity, & day-ahead predicted
electricity produced by source i, when we are calculating day-ahead carbon intensity forecasts.
CRi = Median operational (direct) carbon emission rate (also known as carbon emission factor) of source i.
To calculate carbon intensity, run the following file:
python3 carbonIntensityCalculator.py <region> <f/r> <num_sources>
Example: python3 carbonIntensityCalculator.py CISO r 8
Regions: CISO, PJM, ERCO, ISNE, SE, DE
f : forecast (based on source production forecasts), r : real-time (based on historical electricity production data)
No. of sources producting electricity: CISO: 8, PJM: 8, ERCO: 7, ISNE: 8, SE: 4, DE: 10
DACF is a working prototype. However, we understand that it still needs a lot of improvements. We will be updating the codebase periodically to add new things (features, regions, improved models etc.). In addition to that, we welcome users to suggest modifications to improve DACF and/or add new features or models to the existing codebase.
This work is part of the CarbonFirst project, supported by NSF grants 2105494, 2021693, and 2020888, and a grant from VMware.