cvxgrp / pv_bundt_cake

Code reproducing results of the paper "Time Dilated Bundt Cake Analysis of PV Output"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PV Bundt Cake

Abstract

We present a method for modeling the power generated by a photovoltaic (PV) system that takes into account seasonal variation. The method is interpretable and auditable, and works directly from observed PV output data, which can include missing data. It relies on multiperiodic basis functions and convex optimization, and so is reliable and efficient.

The first step is to model the variation in PV sunrise and sunset times across the year. We then time dilate the original PV signals, given in uniform time segments, into uniform `PV days', which start at PV sunrise and end at PV sunset, which vary over the year. A 3D plot of this time dilated data shows the variations of cloud and obstruction effects across a year, and resembles a Bundt cake, which gives the method its name.

We can then use a multiperiodic basis to fit marginal quantiles of PV output, taking into account variation over the year and within one PV day. These quantiles can be used for several applications, such as anomaly detection or automatic clear sky modeling.

Paper

For more details, you can read the full paper here.

Figures

Figure 1: Bundt Cake Plot

The time dilated PV output can be visualized by plotting the data in 3D with height denoting PV output on an annulus, with radius corresponding to the PV time, and angle corresponding to the day. The outer ring corresponds to PV sunrise and the inner ring corresponds to PV sunset. The angle corresponds to the day of the year. For obvious reasons we call this a Bundt cake plot.

Bundt Cake Plot

Figure 2: Toast Plot

An alternative 2D visualization uses a heat map on an annulus.

Toast Plot

Dependencies

To reproduce the results using the notebook, the following packages are required:

Package Version
cvxpy 1.4.2
ipykernel 6.29.4
jupyterlab 4.1.5
matplotlib 3.8.3
Mosek 10.1.28
numpy 1.26.4
pandas 1.5.3
scipy 1.11.4

You can obtain a free MOSEK license by visiting their website.

Usage

Clone the repository and install the required packages using pip.
Then launch pv_bundt_cake_analysis.ipynb file and sequentially execute cells.

About

Code reproducing results of the paper "Time Dilated Bundt Cake Analysis of PV Output"


Languages

Language:Jupyter Notebook 100.0%