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: joss_submission/paper.md
+27-13Lines changed: 27 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,48 +13,62 @@ authors:
13
13
- name: Hisham Eldardiry
14
14
orcid: 0000-0002-2932-7459
15
15
affiliation: 1
16
+
- name: Matija Pavičević
17
+
Orcid: 0000-0002-6524-5581
18
+
Affiliation: 2
19
+
- name: Jerry Zhuoer Feng
20
+
orcid: 0009-0004-5129-1167
21
+
Affiliation: 1
16
22
- name: Stefano Galelli
17
23
orcid: 0000-0003-2316-3243
18
24
affiliation: 1
19
25
affiliations:
20
26
- name: Cornell University, USA
21
27
index: 1
28
+
- name: Argonne National Laboratory, USA
29
+
Index: 2
22
30
date: 6 October 2024
23
31
bibliography: paper.bib
24
32
---
25
33
34
+
26
35
# Summary
27
36
28
-
Managing the complex network of power stations and transmission lines that deliver electricity across large spatial domains (e.g., country and continental scale) requires a variety of mathematical models, most of which are formulated as mathematical optimization problems. Production Cost Models (PCM) are among the most common types of models found in the power systems literature; their task is for planning the short-term operation of generators [@garver1962threebin]. In contrast to other power system models, PCMs thus employ a simpler representation of power flow and do not account for long-term investment decisions for system components. `PowNet 2.0` is a Python-based production cost modeling framework that simulates and analyzes the most cost-effective way of meeting electricity demand using various electricity sources (coal, natural gas, and renewables) such that sufficient electricity is generated at each hour while considering factors like fuel prices, availability of renewables, and regulatory requirements.
37
+
Managing the complex network of power stations and transmission lines that deliver electricity across large spatial domains (e.g., country and continental scale) requires a variety of mathematical models, most of which are formulated as mathematical programs. Production Cost Models (PCM) are among the most common types of models found in the power systems literature: their task is to support the short-term operation of power grids [@garver1962threebin]. Specifically, PCMs schedule the production of generation fleets as well as the dispatch of electricity through the transmission lines over planning horizons that range from a few hours to a few days.
38
+
39
+
`PowNet 2.0` is a Python-based PCM framework that simulates and analyzes the most cost-effective way of meeting electricity demand using various electricity sources (e.g., coal, natural gas, and renewables) such that sufficient electricity is generated at each hour while considering factors like fuel prices, availability of renewables, and regulatory requirements. The framework also allows us to study the integration between hydropower and power systems.
29
40
30
-
The framework is designed to be accessible to a wide range of users, especially those with only basic Python knowledge. To use `PowNet 2.0`, a user can supply data on power stations, transmission lines, and electricity demand as spreadsheets and run a script to handle the complex calculations and produce modeling outputs as either data frames or spreadsheet files. While a basic user does not need to touch the codebase, an advanced user can instead leverage the software’s flexible and modular design for complex tasks like modeling the interaction between water and power systems or exploring customized algorithms.
41
+
The framework is designed to be accessible to a wide range of users, especially those with only basic Python knowledge. To use `PowNet 2.0`, a user can supply data on power stations, transmission lines, and electricity demand as spreadsheets, and run a script to handle the complex calculations and to produce modeling outputs as either data frames or spreadsheet files. While a basic user does not need to modify the codebase, an advanced user can instead leverage the software‚ flexible and modular design for more complex tasks, like modeling the interaction between water and power systems or exploring customized optimization algorithms.
31
42
32
43
33
44
# Statement of need
34
45
35
-
PCMs share similar features [@oikonomou2022core] and are widely used in both industry and academia. While proprietary options like `PLEXOS` and `PROMOD` offer comprehensive features and user-friendly interfaces, they do not follow the Findable, Accessible, Interoperable, and Reusable (FAIR) principles [@wilkinson2016fair], which help us improve the transparency and applicability of models. Furthermore, the cost of proprietary PCMs can be prohibitive for many researchers and institutions. In response to these limitations, the open-source community has developed PCMs in various programming languages. Notable examples include `SIENNA`[@lara2021pcm], written in Julia, and Python-based frameworks like `PyPSA`[@brown2017pypsa], `Grid Operations`[@akdemir2024open], and `PowNet`[@chowdhury2020pownet]. A detailed taxonomy and comparison of different PCMs can be found in [@hoffmann2024review, @oberle2019open].
46
+
PCMs share similar features [@oikonomou2022core] and are widely used in both industry and academia. While proprietary options like `PLEXOS` and `PROMOD` offer comprehensive features and user-friendly interfaces, they do not follow the Findable, Accessible, Interoperable, and Reusable (FAIR) principles [@wilkinson2016fair], which help us improve the transparency and applicability of models. Furthermore, the cost of proprietary PCMs can be prohibitive for many researchers and institutions. In response to these limitations, the open-source community has developed PCMs in various programming languages. Notable examples include `SIENNA`[@lara2021pcm], written in Julia, and Python-based frameworks like `PyPSA`[@brown2017pypsa], `Grid Operations`[@akdemir2024open], and `PowNet`[@chowdhury2020pownet]. A detailed taxonomy and comparison of different PCMs can be found in [@hoffmann2024review,@oberle2019open].
47
+
48
+
However, not all existing PCM frameworks have a full suite of features for addressing specific needs within the power systems domain, namely (1) the flexibility to incorporate diverse mathematical formulations and solution algorithms, (2) the capacity to generate stochastic input data (e.g., load, solar availability) to support uncertainty analyses, and (3) the ability to integrate hydropower and power system models. All these features are seamlessly integrated.
36
49
37
-
However, not all existing PCM frameworks have a full suite of features for addressing specific needs within the power systems domain: (1) the ability to efficiently handle large-scale systems with numerous nodes and edges, (2) the flexibility to incorporate diverse mathematical formulations and solution algorithms, (3) the capacity to generate stochastic input data for uncertainty analysis, and (4) the seamless integration of these functionalities.
50
+
`PowNet 2.0` is specifically designed to run multiple simulations of large-scale power systems. While sharing a similar name, `PowNet 2.0` represents a significant advancement over its predecessor, `PowNet`. Specifically, the new software has a few key functionalities that address the aforementioned needs:
38
51
39
-
`PowNet 2.0`is specifically designed to run multiple simulations of large-scale power systems. While sharing a similar name,`PowNet 2.0`represents a significant advancement over its predecessor, `PowNet`. Specifically, the new software has several desirable features that address the aforementioned needs:
52
+
**Mathematical Formulations**: Selecting a set of computationally efficient mathematical formulations is an ongoing research effort [@tejada2019unit,@chen2022security]. The set of formulations implemented in `PowNet 2.0`was chosen based on thorough benchmarking exercises that compare the runtime of several different formulations [@horsch2018linear,@knueven2020mixed].`PowNet 2.0`also allows a user to experiment with different formulations, such as representing the direct-current power flow with either the voltage-angle formulation or the Kirchhoff formulation.
40
53
41
-
**Modeling Framework**: `PowNet 2.0`leverages the Gurobipy package for building instances of the optimization problem. Gurobipy has a proven performance when compared to other Python-based modeling frameworks as shown in [@hofmann2023linopy, @gams2023perf]. Furthermore, Gurobipy allows a user to leverage the Python ecosystem by using popular libraries like Pandas, SciPy, and NetworkX.
54
+
**Solution Method**: `PowNet 2.0`supports both Gurobi and HiGHS as the mathematical solver. While Gurobi is a powerful commercial solver, its free usage is limited to an academic license. Consequently, HiGHs was chosen as an alternative due to its competitive performance among open-source solvers [@parzen2022opt]. A user can also explore solution methods like rounding heuristics [@bunnak2024bridging].
42
55
43
-
**Mathematical Formulations**: Selecting a set of computationally efficient mathematical formulations is an on-going research [@tejada2019unit, @chen2022security]. The set of formulations implemented in `PowNet 2.0` was chosen based on thorough benchmarking exercises that compare the runtime of several different formulations [@knueven2020mixed, @horsch2018linear]. `PowNet 2.0` also allows a user to experiment with different formulations, such as representing the direct-current power flow with either the voltage-angle formulation or the Kirchhoff formulation.
56
+
**Stochastic generation of input variables**: A user can automatically generate stochastic time series of load, solar, wind, and hydropower availability. These time series are created by the SARIMAX model, which requires as input one deterministic time series. Through this functionality, the user can then explore the impact of uncertainty in weather and climatic conditions on power system performance.
44
57
45
-
**Solution Method**: `PowNet 2.0` supports both Gurobi and HiGHS as the mathematical solver. While Gurobi is a powerful commercial solver, its free usage is limited to an academic license. Consequently, HiGHs was chosen as an alternative due to its competitive performance among open-source solvers [@parzen2022opt]. Furthermore, a user can also explore solution methods like rounding heuristics [@bunnak2024bridging].
58
+
**Reservoir simulation**: The reservoir module simulates the operation of hydropower reservoirs, thus providing time series of available hydropower. It requires dam design specifications and inflow as input data. This feature makes the model more detailed (by avoiding the use of static capacity factors) while reducing reliance on external hydrologic models.
46
59
47
-
**Stochastic generation of input variables**: A user can automatically generate stochastic time series given a historical time series. Through this functionality, the user can then explore the impact of weather and climate on power system performance.
60
+
**Water-power system coupling**: The reservoir simulation module can be either soft- or hard-coupled with the ‘core’ module simulating the unit commitment and economic dispatch problem. In the former case, the hydropower availability is passed as input (unidirectional information flow). In the latter case, the two modules are run in parallel, ensuring that dam release decisions follow the exact needs of the entire power system – representing a tighter integration between water and power system operations [@koh2022hard].
48
61
49
-
**Reservoir simulation**: A reservoir module simulates the operation of a cascade of reservoirs. This allows for a detailed modeling of hydropower availability given inflow data.
50
62
63
+
# Software Design and Implementation
51
64
52
-
# Software Design, Implementation, and Validation
65
+
`PowNet 2.0` offers an end-to-end modeling framework through functionalities from generating synthetic time series of external forcings (i.e., load, solar, wind, and hydropower availability) to plotting the modeling outputs. `PowNet 2.0` leverages the `Gurobipy` package for building instances of the optimization problem. This package was chosen because of its proven performance when compared to other Python-based modeling frameworks as shown in [@hofmann2023linopy,@gams2023perf]. Furthermore, `Gurobipy` allows a user to leverage the Python ecosystem by using popular libraries like `Pandas`, `SciPy`, and `NetworkX`.
53
66
54
-
`PowNet 2.0`offers an end-to-end modeling framework through functionalities from generating synthetic time series to plotting the modeling outputs. The software is specifically designed to support power-water systems coupling, featuring a reservoir simulation module and the ability to modify modeling inputs at each simulation timestep.
67
+
The modeling workflow of `PowNet 2.0`is illustrated in Figure\autoref{fig:workflow}. For each modeling task represented by a rectangle, there is a corresponding module to accomplish the task. This modular design facilitates unit testing of individual class objects and functions, ensuring code reliability and maintainability. It also enables future extension and customization, empowering users to adapt `PowNet 2.0` to their specific research needs and contribute to its ongoing development.
55
68
56
69

57
70
58
-
The modeling workflow of `PowNet 2.0` is illustrated in Figure\autoref{fig:workflow}. For each modeling task represented by a rectangle, there is a corresponding module to accomplish the task. This modular design facilitates unit testing of individual class objects and functions, ensuring code reliability and maintainability. It also enables future extension and customization, empowering users to adapt `PowNet 2.0` to their specific research needs and contribute to its ongoing development.
71
+
Future development efforts could focus on modeling power purchase agreements, regional electricity trading schemes, and computational algorithms.
0 commit comments