From 34dd6bd86fff9d37817728fac20e1f63fb9a39af Mon Sep 17 00:00:00 2001 From: Alinson S Xavier Date: Wed, 2 Jun 2021 08:35:26 -0500 Subject: [PATCH] Docs: Add DOIs --- README.md | 31 +++++++++++++------ docs/index.md | 15 +++++++-- src/model/formulations/ArrCon2000/structs.jl | 2 +- src/model/formulations/CarArr2006/structs.jl | 1 + .../formulations/DamKucRajAta2016/structs.jl | 1 + src/model/formulations/Gar1962/structs.jl | 1 + .../formulations/KnuOstWat2018/structs.jl | 2 +- .../formulations/MorLatRam2013/structs.jl | 2 +- src/model/formulations/PanGua2016/structs.jl | 1 + .../methods/XavQiuWanThi2019/structs.jl | 1 + 10 files changed, 41 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 50fa4dd..9885376 100755 --- a/README.md +++ b/README.md @@ -20,9 +20,18 @@ * **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, converted into a common data format, and extended using data-driven methods to make them more challenging and realistic. -* **Model Implementation**: The package provides a Julia/JuMP implementations of state-of-the-art formulations and solution methods for SCUC, including multiple ramping formulations (*ArrCon2000*, *MorLatRam2013*, *DamKucRajAta2016*, *PanGua2016*), multiple piecewise-linear costs formulations (*Gar1962*, *CarArr2006*, *KnuOstWat2018*) and contingency screening methods (*XavQiuWanThi2019*). Our goal is to keep these implementations up-to-date as new methods are proposed in the literature. +* **Model Implementation**: The package provides a Julia/JuMP implementations of state-of-the-art formulations and solution methods for SCUC, including multiple ramping formulations ([ArrCon2000][ArrCon2000], [MorLatRam2013][MorLatRam2013], [DamKucRajAta2016][DamKucRajAta2016], [PanGua2016][PanGua2016]), multiple piecewise-linear costs formulations ([Gar1962][Gar1962], [CarArr2006][CarArr2006], [KnuOstWat2018][KnuOstWat2018]) and contingency screening methods ([XavQiuWanThi2019][XavQiuWanThi2019]). Our goal is to keep these implementations 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. +[ArrCon2000]: https://doi.org/10.1109/59.871739 +[CarArr2006]: https://doi.org/10.1109/TPWRS.2006.876672 +[DamKucRajAta2016]: https://doi.org/10.1007/s10107-015-0919-9 +[Gar1962]: https://doi.org/10.1109/AIEEPAS.1962.4501405 +[KnuOstWat2018]: https://doi.org/10.1109/TPWRS.2017.2783850 +[MorLatRam2013]: https://doi.org/10.1109/TPWRS.2013.2251373 +[PanGua2016]: https://doi.org/10.1287/opre.2016.1520 +[XavQiuWanThi2019]: https://doi.org/10.1109/TPWRS.2019.2892620 + ## Sample Usage ```julia @@ -37,25 +46,27 @@ import UnitCommitment: ShiftFactorsFormulation # Read benchmark instance -instance = UnitCommitment.read_benchmark("matpower/case118/2017-02-01") +instance = UnitCommitment.read_benchmark( + "matpower/case118/2017-02-01", +) # Construct model (using state-of-the-art defaults) model = UnitCommitment.build_model( - instance=instance, - optimizer=Cbc.Optimizer, + instance = instance, + optimizer = Cbc.Optimizer, ) # Construct model (using customized formulation) model = UnitCommitment.build_model( - instance=instance, - optimizer=Cbc.Optimizer, - formulation=Formulation( + instance = instance, + optimizer = Cbc.Optimizer, + formulation = Formulation( pwl_costs = KnuOstWat2018.PwlCosts(), ramping = MorLatRam2013.Ramping(), startup_costs = MorLatRam2013.StartupCosts(), transmission = ShiftFactorsFormulation( - isf_cutoff = 0.005, - lodf_cutoff = 0.001, + isf_cutoff = 0.005, + lodf_cutoff = 0.001, ), ), ) @@ -63,7 +74,7 @@ model = UnitCommitment.build_model( # Modify the model (e.g. add custom constraints) @constraint( model, - model[:is_on]["g3",1] + model[:is_on]["g4",1] <= 1, + model[:is_on]["g3", 1] + model[:is_on]["g4", 1] <= 1, ) # Solve model diff --git a/docs/index.md b/docs/index.md index 3546108..a7305df 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,13 +2,22 @@ **UnitCommitment.jl** (UC.jl) is a Julia/JuMP 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 Julia/JuMP implementations of state-of-the-art mixed-integer programming formulations. -### Package Components +## 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. 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 Instances:** The package provides a diverse collection of large-scale benchmark instances collected from the literature, converted into a common data format, and extended using data-driven methods to make them more challenging and realistic. +* **Model Implementation**: The package provides a Julia/JuMP implementations of state-of-the-art formulations and solution methods for SCUC, including multiple ramping formulations ([ArrCon2000][ArrCon2000], [MorLatRam2013][MorLatRam2013], [DamKucRajAta2016][DamKucRajAta2016], [PanGua2016][PanGua2016]), multiple piecewise-linear costs formulations ([Gar1962][Gar1962], [CarArr2006][CarArr2006], [KnuOstWat2018][KnuOstWat2018]) and contingency screening methods ([XavQiuWanThi2019][XavQiuWanThi2019]). Our goal is to keep these implementations 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. +[ArrCon2000]: https://doi.org/10.1109/59.871739 +[CarArr2006]: https://doi.org/10.1109/TPWRS.2006.876672 +[DamKucRajAta2016]: https://doi.org/10.1007/s10107-015-0919-9 +[Gar1962]: https://doi.org/10.1109/AIEEPAS.1962.4501405 +[KnuOstWat2018]: https://doi.org/10.1109/TPWRS.2017.2783850 +[MorLatRam2013]: https://doi.org/10.1109/TPWRS.2013.2251373 +[PanGua2016]: https://doi.org/10.1287/opre.2016.1520 +[XavQiuWanThi2019]: https://doi.org/10.1109/TPWRS.2019.2892620 + ### Authors * **Alinson Santos Xavier** (Argonne National Laboratory) * **Aleksandr M. Kazachkov** (University of Florida) diff --git a/src/model/formulations/ArrCon2000/structs.jl b/src/model/formulations/ArrCon2000/structs.jl index 1580462..29e3ebb 100644 --- a/src/model/formulations/ArrCon2000/structs.jl +++ b/src/model/formulations/ArrCon2000/structs.jl @@ -7,7 +7,7 @@ Formulation described in: Arroyo, J. M., & Conejo, A. J. (2000). Optimal response of a thermal unit to an electricity spot market. IEEE Transactions on power systems, 15(3), - 1098-1104. + 1098-1104. DOI: https://doi.org/10.1109/59.871739 """ module ArrCon2000 diff --git a/src/model/formulations/CarArr2006/structs.jl b/src/model/formulations/CarArr2006/structs.jl index f028a32..61909ee 100644 --- a/src/model/formulations/CarArr2006/structs.jl +++ b/src/model/formulations/CarArr2006/structs.jl @@ -8,6 +8,7 @@ Formulation described in: Carrión, M., & Arroyo, J. M. (2006). A computationally efficient mixed-integer linear formulation for the thermal unit commitment problem. IEEE Transactions on power systems, 21(3), 1371-1378. + DOI: https://doi.org/10.1109/TPWRS.2006.876672 """ module CarArr2006 diff --git a/src/model/formulations/DamKucRajAta2016/structs.jl b/src/model/formulations/DamKucRajAta2016/structs.jl index 1f223fb..6cd7f0b 100644 --- a/src/model/formulations/DamKucRajAta2016/structs.jl +++ b/src/model/formulations/DamKucRajAta2016/structs.jl @@ -7,6 +7,7 @@ Formulation described in: Damcı-Kurt, P., Küçükyavuz, S., Rajan, D., & Atamtürk, A. (2016). A polyhedral study of production ramping. Mathematical Programming, 158(1), 175-205. + DOI: https://doi.org/10.1007/s10107-015-0919-9 """ module DamKucRajAta2016 diff --git a/src/model/formulations/Gar1962/structs.jl b/src/model/formulations/Gar1962/structs.jl index 502a67c..25b7ac4 100644 --- a/src/model/formulations/Gar1962/structs.jl +++ b/src/model/formulations/Gar1962/structs.jl @@ -8,6 +8,7 @@ Formulation described in: Garver, L. L. (1962). Power generation scheduling by integer programming-development of theory. Transactions of the American Institute of Electrical Engineers. Part III: Power Apparatus and Systems, 81(3), 730-734. + DOI: https://doi.org/10.1109/AIEEPAS.1962.4501405 """ module Gar1962 diff --git a/src/model/formulations/KnuOstWat2018/structs.jl b/src/model/formulations/KnuOstWat2018/structs.jl index 5155995..8866b1a 100644 --- a/src/model/formulations/KnuOstWat2018/structs.jl +++ b/src/model/formulations/KnuOstWat2018/structs.jl @@ -7,7 +7,7 @@ Formulation described in: Knueven, B., Ostrowski, J., & Watson, J. P. (2018). Exploiting identical generators in unit commitment. IEEE Transactions on Power Systems, 33(4), - 4496-4507. + 4496-4507. DOI: https://doi.org/10.1109/TPWRS.2017.2783850 """ module KnuOstWat2018 diff --git a/src/model/formulations/MorLatRam2013/structs.jl b/src/model/formulations/MorLatRam2013/structs.jl index fe68b89..708f5e0 100644 --- a/src/model/formulations/MorLatRam2013/structs.jl +++ b/src/model/formulations/MorLatRam2013/structs.jl @@ -7,7 +7,7 @@ Formulation described in: Morales-España, G., Latorre, J. M., & Ramos, A. (2013). Tight and compact MILP formulation for the thermal unit commitment problem. IEEE Transactions - on Power Systems, 28(4), 4897-4908. + on Power Systems, 28(4), 4897-4908. DOI: https://doi.org/10.1109/TPWRS.2013.2251373 """ module MorLatRam2013 diff --git a/src/model/formulations/PanGua2016/structs.jl b/src/model/formulations/PanGua2016/structs.jl index 11d9084..3d30904 100644 --- a/src/model/formulations/PanGua2016/structs.jl +++ b/src/model/formulations/PanGua2016/structs.jl @@ -7,6 +7,7 @@ Formulation described in: Pan, K., & Guan, Y. (2016). Strong formulations for multistage stochastic self-scheduling unit commitment. Operations Research, 64(6), 1482-1498. + DOI: https://doi.org/10.1287/opre.2016.1520 """ module PanGua2016 diff --git a/src/solution/methods/XavQiuWanThi2019/structs.jl b/src/solution/methods/XavQiuWanThi2019/structs.jl index 4f54d80..fc16383 100644 --- a/src/solution/methods/XavQiuWanThi2019/structs.jl +++ b/src/solution/methods/XavQiuWanThi2019/structs.jl @@ -8,6 +8,7 @@ Lazy constraint solution method described in: Xavier, A. S., Qiu, F., Wang, F., & Thimmapuram, P. R. (2019). Transmission constraint filtering in large-scale security-constrained unit commitment. IEEE Transactions on Power Systems, 34(3), 2457-2460. + DOI: https://doi.org/10.1109/TPWRS.2019.2892620 """ module XavQiuWanThi2019 import ..SolutionMethod