Welcome

The TulipaClustering.jl package is a Julia package for finding representative periods (e.g., hours, days, or weeks) and their weights based on time series profiles for the energy sector (e.g., demand, availability, hydro inflows). The package uses DuckDB to handle the time series input data, then uses the parameter definition in the model and the main function cluster!, and exports the results to DuckDB again. The user can export the results to other formats, e.g., CSV, if needed.

TulipaClustering.jl overview

What is the Novelty in this Package?

This method employs a novel approach known as hull clustering with blended representative periods (RPs), which improves upon traditional clustering-based methods in two significant ways.

First, instead of selecting typical cluster centers, such as centroids or medoids, as RPs, the TulipaClustering hull methods utilize extreme points that are more likely to be constraint-binding.

Second, it represents base periods, or non-representative periods, as weighted combinations of RPs, such as convex or conic blends. This methods allows for a more accurate approximation of the entire time horizon using fewer representative periods.

One example of the improvements achieved by using this package to find representative periods is illustrated in the figure below. We compare the results from the energy system model TulipaEnergyModel.jl after applying TulipaClustering.jl to obtain the representative periods, using both the traditional setup and the hull clustering with blended RPs. The results demonstrate that hull clustering with blended RPs can effectively represent seasonal storage—such as the hydro reservoirs in Norway—while achieving lower regret (i.e., less approximation error), requiring fewer representatives and less time.

Norway's hydro reservoir results

Can I use `TulipaClustering.jl` with other energy system optimization models?

Yes, you can 😁 Thanks to our DuckDB interface for inputs and outputs, the results can be exported to several formats, and as long as your energy system optimization model is able to use representative periods in its formulation, then you are ready to match the output of TulipaClustering.jl to your model and run your optimization. Have fun!

License

This content is released under the Apache License 2.0 License.

Contributors

Greg Neustroev
Greg Neustroev

💻 📖 🚧 👀
Germán Morales
Germán Morales

🤔
Abel Soares Siqueira
Abel Soares Siqueira

💻 👀
Diego Alejandro Tejada Arango
Diego Alejandro Tejada Arango

💻 📖 👀 🚧
Lauren Clisby
Lauren Clisby

📆 🤔
Lotte Kremer
Lotte Kremer

💻 🤔