Heating and Cooling Load Forecast

Heating, Ventilation, and Air Conditioning (HVAC) systems are the greediest energy-consuming devices in most buildings. So having a national 7-day forecast of how much energy those buildings’ HVAC systems are likely to expend is a very valuable tool for predicting energy loads by geographic region.

Knowing that energy usage forecasts are directly related to temperature forecasts, I can estimate heating and cooling load by using a concept called heating and cooling degree days, also known as heating-degree-hours (HDH) and cooling-degree-hours (CDH).

The idea is fairly simple. We assume a comfortable temperature, which we call the balance point, and see how far the forecast temperature will be from that balance point. The number of degrees that the forecast temperature point falls below the balance point, we call heating degrees. Similarly, the number of degrees that the forecast temperature is above the balance point, we call cooling degrees. In both cases, we disallow negative degree-hours, such that there will always be zero or more HDHs and CDHs. In practice, choosing the right balance point can be tricky. For the sake of this exercise, we'll use 16°C.

This direct correlation between temperature and degree hours could of course be treated more rigorously. To delve deeper in the implementation details, the complexity of this problem and important caveats that surround it, READ MORE HERE.»

Using weather forecast data from the National Digital Forecast Database (NDFD), I'm able to implement the CDH/HDH balance-point algorithm for the continental United States, and plot the 7-day heating and cooling load forecast. In this implementation, positive degree-hours denote heating and negative degree-hours denote cooling, which facilitates a plot that includes both metrics in a single view.

Caveats:

Given more time, I would implement more nuanced methods to represent the complex relationship between degree-hours and weather forecast. Several important issues would be top-of-mind as I expanded my analysis:

  • HDD and CDD methods for estimating load are inherently problematic.
  • Due to the fact that we're using raw high resolution forecasts (i.e. 3-6 hour, instead of Day), loads will be skewed by short-term differences in temperature, showing more extreme heating and cooling forecasts. That said, from a certain lens, one might consider this a "feature", since we also benefit from more granular forecasts.
  • A good next step would be to introduce regional average set points for load estimation, using the EIA's regional average balance points.
  • Obviously, we could determine even more accurate load forecasts using state-of-the-art methodologies. If we were doing a deeper analysis, we might consider calculating heat buildup over time, humidity, and individual household set points.
  • The dates and times are very likely off by up to three hours, and almost definitely have the wrong time zone, since we're using the current system time as an estimate for the start of the forecasts. We need to dig into the NDFD API and see if there's metadata we can use to address this.

You can view the source at yoni/load-forecast. Tools and APIs included:

  • The National Weather Service's National Digital Forecast Database. We're using their FTP end point, which is updated every three hours.
  • The R Project for Statistical Programming, used to load weather forecast data, calculate heating and cooling degree days, and plot results. Additional R package dependencies are required for this project to run. These may be found in the DESCRIPTION file under the R package root.
  • gdal -- Geospatial Data Abstraction Library. Backs the rgdal R package, which is used to load and plot weather forecast data.
  • ffmpeg -- used to generate the MPEG animated forecast.
  • ImageMagick -- used to generate the GIF and MPEG animated forecasts.
  • Panoply -- an excellent tool built by NASA. Used to explore raw GRIB weather forecast data.

In the plots below, the blue areas represent locations where we forecast larger cooling loads, whereas the red areas represent forecasted heating loads. Zero and near-zero loads are represented by white hues.

{{forecast.name}}

{{forecast.description}}

{{$index * forecast.hoursPerFrame}} - {{$index * forecast.hoursPerFrame + forecast.hoursPerFrame}}

The color scheme ranges from the highest Cooling Degree Hours (CDH) in dark blue to the highest Heating Degree Hours (HDH) in dark red.