You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: paper/paper.bib
+13-1Lines changed: 13 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ @article{Teichgraeber:2019
13
13
14
14
15
15
@article{Lindenmeyer:2019,
16
-
author = {Lindenmeyer, Constantin, Teichgraeber, Holger and Brandt, Adam R},
16
+
author = {Lindenmeyer, Constantin and Teichgraeber, Holger and Baumgaertner, Nils and Kotzur, Leander and Robinius, Martin and Bardow, Andre and Brandt, Adam R},
17
17
journal = {Working Paper},
18
18
title = {{The average is not enough: Extreme values as part of representative periods for the optimization of energy systems}},
19
19
year = {2019}
@@ -169,3 +169,15 @@ @article{Dunning:2017
169
169
year = {2017},
170
170
doi = {10.1137/15M1020575},
171
171
}
172
+
173
+
174
+
@article{Bezanson2017,
175
+
author = {Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B.},
176
+
journal = {SIAM Review},
177
+
doi = {10.1137/141000671},
178
+
number = {1},
179
+
pages = {65--98},
180
+
title = {{Julia: A Fresh Approach to Numerical Computing}},
Copy file name to clipboardExpand all lines: paper/paper.md
+13-12Lines changed: 13 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
-
title: 'ClustForOpt: Time-series aggregation for optimization in julia'
2
+
title: 'ClustForOpt: Time-series aggregation for optimization in Julia'
3
3
tags:
4
-
- julia
4
+
- Julia
5
5
- clustering
6
6
- representative periods
7
7
- optimization
@@ -19,13 +19,13 @@ authors:
19
19
affiliations:
20
20
- name: Department of Energy Resources Engineering, Stanford University
21
21
index: 1
22
-
date: 28 June 2019
22
+
date: 5 July 2019
23
23
bibliography: paper.bib
24
24
---
25
25
26
26
# Summary
27
27
28
-
``ClustForOpt`` is an extensible framework for time-series aggregation in julia. It is designed specifically to perform time series aggregation for energy systems optimization problems, though could be adapated to be used with arbitrary time series datasets. ``ClustForOpt`` provides a type system for temporal data that can easily be integrated with the formulation of optimization problems, and provides an implementation of the most commonly used clustering methods and extreme value selection methods for temporal data. ``ClustForOpt`` provides simple integration of multiple attributes (e.g. wind availability, solar availability, and electricity demand) in a single aggregation process.
28
+
``ClustForOpt`` is an extensible framework for time-series aggregation in Julia. It is designed specifically to perform time series aggregation for energy systems optimization problems, though could be adapated to be used with arbitrary time series datasets. ``ClustForOpt`` provides a type system for temporal data that can easily be integrated with the formulation of optimization problems, and provides an implementation of the most commonly used clustering methods and extreme value selection methods for temporal data. ``ClustForOpt`` provides simple integration of multiple attributes (e.g. wind availability, solar availability, and electricity demand) in a single aggregation process.
29
29
30
30
The unique design of ``ClustForOpt`` allows for scientific comparison of the performance of different time-series aggregation methods, both in terms of the statistical error measure and in terms of optimization outcome.
31
31
The choice of temporal modeling, especially of time-series aggregation methods, can have significant impact on overall optimization outcome, which in the end is used to make policy and business decisions. It is thus important to not view time-series aggregation and optimization model formulation as two seperate, consecutive steps, but to integrate time-series aggregation into the overall process of building an optimization model in an iterative manner. ``ClustForOpt`` allows for this iterative integration in a simple way.
@@ -36,15 +36,15 @@ The Julia package [``CapacityExpansion``](https://github.com/YoungFaithful/Capac
36
36
37
37
The clustering methods that are implemented in ``ClustForOpt`` follow the framework presented by @Teichgraeber:2019, and the extreme value selection methods follow the framework presented by @Lindenmeyer:2019. Using these frameworks allows ``ClustForOpt`` to be generally extensible to new aggregation methods in the future.
38
38
39
-
To the best of our knowledge, time-series aggregation has been included in two open-source packages to date, both in written in python.
40
-
@TSAM provides an implementation of several time-series aggregation methods in python.
41
-
Calliope [@Pfenninger:2018] is a capacity expansion modeling software in python that includes time-series aggregation for the use case of generation and transmission capacity expansion modeling.
39
+
To the best of our knowledge, time-series aggregation has been included in two open-source packages to date, both in written in Python.
40
+
@TSAM provides an implementation of several time-series aggregation methods in Python.
41
+
Calliope [@Pfenninger:2018] is a capacity expansion modeling software in Python that includes time-series aggregation for the use case of generation and transmission capacity expansion modeling.
42
42
43
-
``ClustForOpt`` is the first package to provide time-series aggregation in Julia. This is advantageous because it can be used in conjunction with the JuMP [@Dunning:2017] package in Julia, which provides an excellent modeling language for optimization problems. Furthermore, ``ClustForOpt`` includes both clustering and extreme value selection and integrates them into the same output type. This is important in order to retain the characteristics of the time-series that are relevant to many optimization problems.
43
+
``ClustForOpt`` is the first package to provide time-series aggregation in Julia[@Bezanson:2017]. This is advantageous because it can be used in conjunction with the JuMP [@Dunning:2017] package in Julia, which provides an excellent modeling language for optimization problems. Furthermore, ``ClustForOpt`` includes both clustering and extreme value selection and integrates them into the same output type. This is important in order to retain the characteristics of the time-series that are relevant to many optimization problems.
44
44
45
45
At this point, we would like to point to the key features that ``ClustForOpt`` provides. Implementation details can be found in the software's documentation.
46
46
47
-
-*The type system*: The data type (called struct in julia) ``ClustData`` stores all time-series data in a common format. Besides the data itself, it automatically processes and stores information such as number of periods, the number of time steps per period, which is called the period length, and the chronology of the periods, which are relevant to formulating the sets of the optimization problem later. The data type ``ClustResult`` additionally stores information relevant for evaluating clustering performance. These data types make ``ClustForOpt`` to be easily integrated with any optimization problem and analysis.
47
+
-*The type system*: The data type (called struct in Julia) ``ClustData`` stores all time-series data in a common format. Besides the data itself, it automatically processes and stores information which are relevant to formulating the sets of the optimization problem later, such as number of periods, the number of time steps per period, and the chronology of the periods. The data type ``ClustResult`` additionally stores information relevant for evaluating clustering performance. These data types make ``ClustForOpt`` to be easily integrated with any optimization problem and analysis.
48
48
49
49
-*The aggregation methods*: The most commonly used clustering methods and extreme value selection methods are implemented with a common interface, allowing for simple comparison of these methods on a given data set and optimization problem.
50
50
@@ -56,10 +56,11 @@ At this point, we would like to point to the key features that ``ClustForOpt`` p
56
56
57
57
Generally, optimization is concerned with the maximization or minimization of a certain objective subject to a number of constraints. The range of optimization problems ``ClustForOpt`` is applicable to is broad.
58
58
They generally fall into the class of design and operations problems, also called planning problems or two-stage optimization problems. In these problems, decisions on two time horizons have to be made: Long-term design decisions, as to what equipment to buy, and short-term operating decisions, as to when to operate that equipment. Because the two time horizons are intertwined, operating decisions impact the system design, and vice versa. Operating decisions are of temporal nature, and the amount of temporal input data for these optimization problems often makes them computationally intractable.
59
-
Usually, time series of length N (e.g. hourly electricity demand for one year, where N=8760) are split into $\hat{K}$ periods of length $T=\frac{N}{\hat{K}}$ (e.g. $\hat{K}=365$ daily periods, with $T=24$), and each of the $\hat{K}$ periods is treated independently in the operations stage of the optimization problem. Using time-series aggregation methods, we can represent the data with $K < \hat{K}$ periods, which results in reduced computational complexity and improved modeling performance.
59
+
Usually, time series of length $N$ (e.g. hourly electricity demand for one year, where $N=8760$) are split into $\hat{K}$ periods of length $T=\frac{N}{\hat{K}}$ (e.g. $\hat{K}=365$ daily periods, with $T=24$), and each of the $\hat{K}$ periods is treated independently in the operations stage of the optimization problem. Using time-series aggregation methods, we can represent the data with $K < \hat{K}$ periods, which results in reduced computational complexity and improved modeling performance.
60
60
61
61
Many of the design and operations optimization problems that time-series aggregation has been applied to are in the general domain of energy systems optimization. These problems include generation and transmission capacity expansion problems [@Nahmmacher:2016; @Pfenninger:2017], local energy supply system design problems [@Bahl:2017; @Kotzur:2018], and individual technology design problems [@Brodrick:2017; @Teichgraeber:2017].
62
62
Time series of interest in these problems include energy demands (electricity, heating, cooling), electricity prices, wind and solar availability factors, and temperatures.
63
+
63
64
Many other planning problems in operations research that involve time-varying operations have similar characteristics that make them suitable for time-series aggregation. Some examples are aggregate and detailed production scheduling, job shop design and scheduling, distribution system (warehouse) design and control [@Dempster:1981], and electric vehicle charging station sizing [@Jia:2012].
64
65
Time series of interest in these problems include product demands, electricity prices, and electricity demands.
65
66
A related class of problems that ``ClustForOpt`` can be useful to is scenario reduction for stochastic programming [@Karuppiah:2010]. Two-stage stochastic programs have similar characteristics to the previously described two-stage problems, and are often computationally intractable due to a large number of scenarios. ``ClustForOpt`` can be used to reduce a large number of scenarios $\hat{K}$ into a computationally tractable number of scenarios $K < \hat{K}$.
@@ -68,7 +69,7 @@ Because it keeps track of the chronology of the periods, it can also be used to
68
69
69
70
``ClustForOpt`` has been used in several research projects to date. It has been used to compare both conventionally-used clustering methods and shape-based clustering methods and their characteristics [@Teichgraeber:2019], and also to compare extreme value selection methods [@Lindenmeyer:2019].
70
71
It has also been used to analyze temporal modeling detail in energy systems modeling with high renewable energy penetration [@Kuepper:2019].
71
-
``ClustForOpt`` also serves as input to [``CapacityExpansion``](https://github.com/YoungFaithful/CapacityExpansion.jl), a scalable capacity expansion model in julia.
72
-
Furthermore, ``ClustForOpt`` has been used as an educational tool. It is frequently used for class projects in the Stanford University course "Optimization of Energy Systems", and has also served as a basis for the capacity expansion studies evaluated in homeworks for Stanford University course "Advanced Methods in Modeling for Climate and Energy Policy".
72
+
``ClustForOpt`` also serves as input to [``CapacityExpansion``](https://github.com/YoungFaithful/CapacityExpansion.jl), a scalable capacity expansion model in Julia.
73
+
Furthermore, ``ClustForOpt`` has been used as an educational tool. It is frequently used for class projects in the Stanford University course "Optimization of Energy Systems", and has also served as a basis for the capacity expansion studies evaluated in homeworks for the Stanford University course "Advanced Methods in Modeling for Climate and Energy Policy".
0 commit comments