From a070359b5d0b8964b0d7cb9c135cd4ff4a9ba8f9 Mon Sep 17 00:00:00 2001 From: Alinson S Xavier Date: Tue, 3 Nov 2020 17:18:17 -0600 Subject: [PATCH] Minor changes to README.md; rename LICENSE.md --- COPYING.md => LICENSE.md | 0 README.md | 26 ++++++++----- mkdocs.yml | 4 +- src/docs/index.md | 28 ++++++++------ src/docs/install.md | 21 ----------- src/docs/solvers.md | 81 ---------------------------------------- 6 files changed, 35 insertions(+), 125 deletions(-) rename COPYING.md => LICENSE.md (100%) delete mode 100644 src/docs/install.md delete mode 100644 src/docs/solvers.md diff --git a/COPYING.md b/LICENSE.md similarity index 100% rename from COPYING.md rename to LICENSE.md diff --git a/README.md b/README.md index a660802..d89922a 100755 --- a/README.md +++ b/README.md @@ -3,24 +3,30 @@ # UnitCommitment.jl -**UnitCommitment.jl** is an optimization package for the Security-Constrained Unit Commitment Problem (SCUC), a fundamental optimization problem in power systems which is used, for example, to clear the day-ahead electricity markets. The problem asks for the most cost-effective power generation schedule under a number of physical, operational and economic constraints. +**UnitCommitment.jl** (UC.jl) is an optimization package for the Security-Constrained Unit Commitment Problem (SCUC), a fundamental optimization problem in power systems used, for example, to clear the day-ahead electricity markets. The package provides benchmark instances for the problem and JuMP implementations of state-of-the-art mixed-integer programming formulations. ### Package Components -* **Data Format:** The package proposes an extensible and fully-documented JSON-based data specification format for SCUC, developed in collaboration with Independent System Operators (ISOs), which describes the most important aspects of the problem. -* **Benchmark Instances:** The package provides a diverse collection of large-scale benchmark instances collected from the literature and extended to make them more challenging and realistic, based on publicly available data. +* **Data Format:** The package proposes an extensible and fully-documented JSON-based data specification format for SCUC, developed in collaboration with Independent System Operators (ISOs), which describes the most important aspects of the problem. The format supports all the most common generator characteristics (including ramping, piecewise-linear production cost curves and time-dependent startup costs), as well as operating reserves, price-sensitive loads, transmission networks and contingencies. +* **Benchmark Instances:** The package provides a diverse collection of large-scale benchmark instances collected from the literature and extended to make them more challenging and realistic. * **Model Implementation**: The package provides a Julia/JuMP implementation of state-of-the-art formulations and solution methods for SCUC. Our goal is to keep this implementation up-to-date, as new methods are proposed in the literature. * **Benchmark Tools:** The package provides automated benchmark scripts to accurately evaluate the performance impact of proposed code changes. ### Documentation -* [Installation Guide](https://axavier.org/projects/UnitCommitment.jl/install/) -* [Data Format Specification](https://axavier.org/projects/UnitCommitment.jl/format/) +* [Usage](https://axavier.org/projects/UnitCommitment.jl/usage/) +* [Data Format](https://axavier.org/projects/UnitCommitment.jl/format/) ### Authors -* **Alinson Santos Xavier,** Argonne National Laboratory -* **Feng Qiu,** Argonne National Laboratory +* **Alinson Santos Xavier** (Argonne National Laboratory) +* **Feng Qiu** (Argonne National Laboratory) -### Collaborators -* **Yonghong Chen,** Midcontinent Independent System Operator -* **Feng Pan,** Pacific Northwest National Laboratory +### Acknowledgments + +* We would like to thank **Aleksandr M. Kazachkov** (University of Florida), **Yonghong Chen** (Midcontinent Independent System Operator), **Feng Pan** (Pacific Northwest National Laboratory) for valuable feedback on early versions of this package. + +* Based upon work supported by **Laboratory Directed Research and Development** (LDRD) funding from Argonne National Laboratory, provided by the Director, Office of Science, of the U.S. Department of Energy under Contract No. DE-AC02-06CH11357. + +### License + +Released under the modified BSD license. See `LICENSE.md` for more details. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 08fbcad..444e2ae 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,8 +5,8 @@ repo_url: https://github.com/ edit_uri: edit/master/src/docs/ nav: - Home: index.md - - Install: install.md - - Data: format.md + - Usage: usage.md + - Format: format.md plugins: - search markdown_extensions: diff --git a/src/docs/index.md b/src/docs/index.md index 58ed244..d34ad8c 100644 --- a/src/docs/index.md +++ b/src/docs/index.md @@ -1,23 +1,29 @@ # UnitCommitment.jl -**UnitCommitment.jl** is an optimization package for the Security-Constrained Unit Commitment Problem (SCUC), a fundamental optimization problem in power systems which is used, for example, to clear the day-ahead electricity markets. The problem asks for the most cost-effective power generation schedule under a number of physical, operational and economic constraints. +**UnitCommitment.jl** (UC.jl) is an optimization package for the Security-Constrained Unit Commitment Problem (SCUC), a fundamental optimization problem in power systems used, for example, to clear the day-ahead electricity markets. The package provides benchmark instances for the problem and JuMP implementations of state-of-the-art mixed-integer programming formulations. ### Package Components -* **Data Format:** The package proposes an extensible and fully-documented JSON-based data specification format for SCUC, developed in collaboration with Independent System Operators (ISOs), which describes the most important aspects of the problem. -* **Benchmark Instances:** The package provides a diverse collection of large-scale benchmark instances collected from the literature and extended to make them more challenging and realistic, based on publicly available data from ISOs. +* **Data Format:** The package proposes an extensible and fully-documented JSON-based data specification format for SCUC, developed in collaboration with Independent System Operators (ISOs), which describes the most important aspects of the problem. The format supports all the most common generator characteristics (including ramping, piecewise-linear production cost curves and time-dependent startup costs), as well as operating reserves, price-sensitive loads, transmission networks and contingencies. +* **Benchmark Instances:** The package provides a diverse collection of large-scale benchmark instances collected from the literature and extended to make them more challenging and realistic. * **Model Implementation**: The package provides a Julia/JuMP implementation of state-of-the-art formulations and solution methods for SCUC. Our goal is to keep this implementation up-to-date, as new methods are proposed in the literature. * **Benchmark Tools:** The package provides automated benchmark scripts to accurately evaluate the performance impact of proposed code changes. -### Contents +### Documentation -* [Installation Guide](install.md) -* [Data Format Specification](format.md) +* [Usage](usage.md) +* [Data Format](format.md) ### Authors -* **Alinson Santos Xavier,** Argonne National Laboratory -* **Feng Qiu,** Argonne National Laboratory +* **Alinson Santos Xavier** (Argonne National Laboratory) +* **Feng Qiu** (Argonne National Laboratory) -### Collaborators -* **Yonghong Chen,** Midcontinent Independent System Operator -* **Feng Pan,** Pacific Northwest National Laboratory \ No newline at end of file +### Acknowledgments + +* We would like to thank **Aleksandr M. Kazachkov** (University of Florida), **Yonghong Chen** (Midcontinent Independent System Operator), **Feng Pan** (Pacific Northwest National Laboratory) for valuable feedback on early versions of this package. + +* Based upon work supported by **Laboratory Directed Research and Development** (LDRD) funding from Argonne National Laboratory, provided by the Director, Office of Science, of the U.S. Department of Energy under Contract No. DE-AC02-06CH11357. + +### License + +Released under the modified BSD license. See `LICENSE.md` for more details. \ No newline at end of file diff --git a/src/docs/install.md b/src/docs/install.md deleted file mode 100644 index da07480..0000000 --- a/src/docs/install.md +++ /dev/null @@ -1,21 +0,0 @@ -# Installation Guide - -This package was tested and developed with [Julia 1.4](https://julialang.org/). To install Julia, please -follow the [installation guide on their website](https://julialang.org/downloads/platform.html). -To install `UnitCommitment.jl`, run the Julia interpreter, type `]` to open the -package manager, then type: - -```text -pkg> add https://github.com/ANL-CEEESA/UnitCommitment.jl.git -``` - -To test that the package has been correctly installed, run: - -```text -pkg> test UnitCommitment -``` - -If all tests pass, the package should now be ready to be used by any Julia script on the machine. To try it out in the julia interpreter hit `backspace` to return to the regular interpreter, and type the following command: -```julia -using UnitCommitment -``` diff --git a/src/docs/solvers.md b/src/docs/solvers.md deleted file mode 100644 index 65e42aa..0000000 --- a/src/docs/solvers.md +++ /dev/null @@ -1,81 +0,0 @@ -Benchmark Solver -================ - -Solving an instance of the Unit Commitment problem typically involves more -than simply building a Mixed-Integer Linear Programming and handing it over to the -solver. Since the number of transmission and N-1 security constraints can -easily exceed hundreds of millions for large instances of the problem, it is often -necessary to iterate between MILP optimization and contingency screening, so -that only necessary transmission constraints are added to the MILP. - -`UnitCommitment.jl` includes a fast implementation of the contingency -screening method described in -[[1]](https://doi.org/10.1109/TPWRS.2019.2892620), which is able to -efficiently handle even ISO-scale instances of the problem. The method makes -use of Injection Shift Factors (ISFs) and Line Outage Distribution Factors -(LODFs) to model DC power flows and N-1 contingencies. If Julia is configured -to use multiple threads (through the environment variable `JULIA_NUM_THREADS`) -then multiple contingency scenarios are evaluated in parallel. - -Usage ------ - -To solve one of the benchmark instances using the included benchmark solver, use the method `UnitCommitment.solve` -as shown in the example below. - - julia> UnitCommitment.solve("ieee_rts/case118") - [ Info: Loading instance: ieee_rts/case118 - [ Info: 54 units - [ Info: 118 buses - [ Info: 186 lines - [ Info: Scaling problem (0.6 demands, 1.0 limits)... - [ Info: Using Cbc as MILP solver (0.001 gap, 4 threads) - [ Info: Computing sensitivity factors (0.001 ISF cutoff, 0.0001 LODF cutoff)... - [ Info: Building MILP model (24 hours, 0.01 reserve)... - [ Info: Optimizing... - [ Info: Optimal value: 4.033106e+06 - [ Info: Solved in 8.73 seconds - -With default settings, the solver does not consider any transmission or -security constraints, and the peak load is automatically set to 60% of the -installed capacity of the system. These, and many other settings, can be -configured using keyword arguments. See the reference section below for more -details. Sample usage: - - julia> UnitCommitment.solve("ieee_rts/case118", demand_scale=0.7, security=true) - [ Info: Loading instance: ieee_rts/case118 - [ Info: 54 units - [ Info: 118 buses - [ Info: 186 lines - [ Info: Scaling problem (0.7 demands, 1.0 limits)... - [ Info: Using Cbc as MILP solver (0.001 gap, 4 threads) - [ Info: Computing sensitivity factors (0.001 ISF cutoff, 0.0001 LODF cutoff)... - [ Info: Building MILP model (24 hours, 0.01 reserve)... - [ Info: Optimizing... - [ Info: Verifying flow constraints... - [ Info: Optimal value: 4.888740e+06 - [ Info: Solved in 4.50 seconds - -When transmission or N-1 security constraints are activated, the solver uses an -iterative method to lazily enforce them. See [this -paper](https://doi.org/10.1109/TPWRS.2019.2892620) for a detailed description -of the method. Injection Shift Factors (ISF) and Line Outage Distribution -Factors (LODF) are used for the computation of DC power flows. - -!!! note - Many of the benchmark instances were not originally designed for N-1 - security-constrained studies, and may become infeasible if these constraints - are enforced. To avoid infeasibilities, the transmission limits can be - increased through the keyword argument `limit_scale`. - -By default, the MILP is solved using [Cbc, the COIN-OR Branch and Cut -solver](https://github.com/coin-or/Cbc). If `UnitCommitment` is loaded after -either [CPLEX](https://github.com/JuliaOpt/CPLEX.jl) or -[SCIP](https://github.com/SCIP-Interfaces/SCIP.jl), then these solvers will be -used instead. A detailed solver log can be displayed by setting `verbose=true`. - -## Reference - -```@docs -UnitCommitment.solve -```