Open JackKelly opened 2 years ago
I've made a start on this on Friday, and found a few PV systems with pretty obvious shading issues (the plot shows power on the y axis and time-of-day on the x axis for June):
Here's pvlib prediction using clearsky irradiance (and default wind speed and air temperature):
Next step: Predict using NWPs
Actually, NWP irradiance isn't terrible: (this is using the NWP irradiance produced by the most recent NWP model run).
And showing cloud cover. And with data from 10 nearby PV systems in grey:
Hmm, I think one big source of error when using pvlib
is likely to be the calculation of GHI, DNI and DHI.
The issue is that the NWP doesn't provide GHI, DNI and DHI. Instead it just provides "downwards short-wave radiation flux".
The pvlib docs provide a method to compute GHI, DNI and DHI purely from NWP total cloud cover (which already makes me nervous: we know that clouds at different vertical levels affect sunlight in different ways).
If we do this, then we get something that looks quite different to the NWP DSWRF:
If we use NWP DSWRF as GHI (which I'd guess is the right thing to do?! But I'm really not sure! Especially because none of the pvlib.forecast
models do this) then we get this:
Next steps:
MAE for predicting PV power with PVLib using NWP directly above the PV system (ignoring times when the sun is less than 10 degrees above the horizon):
Both these values are closer to 7% MAPE if using the complete time series (including nighttime).
to convert the vector line which represents the line-of-sight of the Sun through the lower 10 km of the atmosphere, I'm planning to adapt Xiaolin Wu's line drawing algorithm.
Maybe something like this:
Give the ML model: solar azimuth, angle, and irradiance at the top of the atmosphere
Note to self: See the "next steps" in the ipython notebook.
tl:dr: Yes, tracing the clouds along the sun's path seems to help!
Experiments computing GHI, DNI and DHI using the clouds, selecting the NWP grid boxes in the Sun's path:
Next steps:
This is the first step of the "new ML research direction" outlined in issue #7.
TODO:
solarforecastarbiter.pvmodel.irradiance_to_power
. See this comment from Will. Also see the Forecasting section of the pvlib docs.pvanalytics.system.infer_orientation_fit_pvwatts
. Also see this conversation with Will Holmgren on Twitter.Context
I'm increasingly convinced that we need to accurately model each individual PV system as accurately as possible (especially local shading and inverter clipping). For two main reasons: