Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
name = "UnitCommitment"
uuid = "64606440-39ea-11e9-0f29-3303a1d3d877"
version = "0.4.2"
authors = ["Santos Xavier, Alinson <axavier@anl.gov>"]
repo = "https://github.com/ANL-CEEESA/UnitCommitment.jl"
version = "0.4.2"

[deps]
CodecZlib = "944b1d66-785c-5afd-91f1-9de20f533193"
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
GZip = "92fee26a-97fe-5a0c-ad85-20a5f3185b63"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
PackageCompiler = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"

[compat]
CodecZlib = "0.7.8"
DataStructures = "0.18"
Distributions = "0.25"
GZip = "0.5"
JSON = "0.21"
JuMP = "1"
MathOptInterface = "1"
MPI = "0.20"
MathOptInterface = "1"
PackageCompiler = "1"
julia = "1.10"
TimerOutputs = "0.5"
julia = "1.10"
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
## Sample Usage

```julia
using Cbc
using HiGHS
using JuMP
using UnitCommitment

Expand All @@ -53,13 +53,13 @@ instance = UnitCommitment.read_benchmark(
# Construct model (using state-of-the-art defaults)
model = UnitCommitment.build_model(
instance = instance,
optimizer = Cbc.Optimizer,
optimizer = HiGHS.Optimizer,
)

# Construct model (using customized formulation)
model = UnitCommitment.build_model(
instance = instance,
optimizer = Cbc.Optimizer,
optimizer = HiGHS.Optimizer,
formulation = Formulation(
pwl_costs = KnuOstWat2018.PwlCosts(),
ramping = MorLatRam2013.Ramping(),
Expand Down
18 changes: 13 additions & 5 deletions docs/src/guides/format.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ This section describes system-wide parameters, such as power balance penalty, an
| `Time step (min)` | Length of each time step (in minutes). Must be a divisor of 60 (e.g. 60, 30, 20, 15, etc). | `60` | No | No |
| `Power balance penalty ($/MW)` | Penalty for system-wide shortage or surplus in production (in $/MW). This is charged per time step. For example, if there is a shortage of 1 MW for three time steps, three times this amount will be charged. | `1000.0` | No | Yes |
| `Scenario name` | Name of the scenario. | `"s1"` | No | --- |
| `Scenario weight` | Weight of the scenario. The scenario weight can be any positive real number, that is, it does not have to be between zero and one. The package normalizes the weights to ensure that the probability of all scenarios sum up to one. | 1.0 | No | --- |
| `Scenario weight` | Weight of the scenario. The scenario weight can be any positive real number, that is, it does not have to be between zero and one. The package normalizes the weights to ensure that the probability of all scenarios sum up to one. | `1.0` | No | --- |
| `Operation cost weight` | Weighting factor to make operation costs comparable to investment costs. Required for transmission expansion planning problem. | `1.0` | No | --- |

#### Example

Expand All @@ -35,7 +36,8 @@ This section describes system-wide parameters, such as power balance penalty, an
"Time horizon (h)": 4,
"Power balance penalty ($/MW)": 1000.0,
"Scenario name": "s1",
"Scenario weight": 0.5
"Scenario weight": 0.5,
"Operation cost weight": 1.0
}
}
```
Expand Down Expand Up @@ -89,6 +91,7 @@ This section describes all generators in the system. Two types of units can be s
| `Must run?` | If `true`, the generator should be committed, even if that is not economical (Boolean). | `false` | Yes | Yes |
| `Reserve eligibility` | List of reserve products this generator is eligibe to provide. By default, the generator is not eligible to provide any reserves. | `[]` | No | Yes |
| `Commitment status` | List of commitment status over the time horizon. At time `t`, if `true`, the generator must be commited at that time period; if `false`, the generator must not be commited at that time period. If `null` at time `t`, the generator's commitment status is then decided by the model. By default, the status is a list of `null` values. | `null` | Yes | Yes |
| `Investment cost ($)` | Cost to build a candidate generation unit. $0.0 for existing units. | `0.0` | No | No |

#### Profiled Units

Expand All @@ -99,7 +102,7 @@ This section describes all generators in the system. Two types of units can be s
| `Cost ($/MW)` | Cost incurred for serving each MW of power by this generator. | Required | Yes | Yes |
| `Minimum power (MW)` | Minimum amount of power this generator may supply. | `0.0` | Yes | Yes |
| `Maximum power (MW)` | Maximum amount of power this generator may supply. | Required | Yes | Yes |

| `Investment cost ($)`| Cost to build a candidate generation unit. $0.0 for existing units. | `0.0`. | No | No |
#### Production costs and limits

Production costs are represented as piecewise-linear curves. Figure 1 shows an example cost curve with three segments, where it costs \$1400, \$1600, \$2200 and \$2400 to generate, respectively, 100, 110, 130 and 135 MW of power. To model this generator, `Production cost curve (MW)` should be set to `[100, 110, 130, 135]`, and `Production cost curve ($)` should be set to `[1400, 1600, 2200, 2400]`.
Expand Down Expand Up @@ -158,7 +161,8 @@ Note that this curve also specifies the production limits. Specifically, the fir
"Type": "Profiled",
"Minimum power (MW)": 10.0,
"Maximum power (MW)": 120.0,
"Cost ($/MW)": 100.0
"Cost ($/MW)": 100.0,
"Investment cost ($)": 3000000.0
}
}
}
Expand Down Expand Up @@ -276,6 +280,8 @@ This section describes the characteristics of transmission system, such as its t
| `Normal flow limit (MW)` | Maximum amount of power (in MW) allowed to flow through the line when the system is in its regular, fully-operational state. | `+inf` | Yes | Yes |
| `Emergency flow limit (MW)` | Maximum amount of power (in MW) allowed to flow through the line when the system is in degraded state (for example, after the failure of another transmission line). | `+inf` | Y | Yes |
| `Flow limit penalty ($/MW)` | Penalty for violating the flow limits of the transmission line (in $/MW). This is charged per time step. For example, if there is a thermal violation of 1 MW for three time steps, then three times this amount will be charged. | `5000.0` | Yes | Yes |
| `Investment cost ($)` | Cost to build a candidate transmission line. $0 for existing lines. | `0.0` | No | No |
| `Max number of parallel circuits`| Maximum number of lines can be built in this corridor. | `1` | No | No |

#### Example

Expand All @@ -288,7 +294,9 @@ This section describes the characteristics of transmission system, such as its t
"Susceptance (S)": 29.49686,
"Normal flow limit (MW)": 15000.0,
"Emergency flow limit (MW)": 20000.0,
"Flow limit penalty ($/MW)": 5000.0
"Flow limit penalty ($/MW)": 5000.0,
"Investment cost ($)": 3000000.0,
"Max number of parallel circuits": 2
}
}
}
Expand Down
37 changes: 36 additions & 1 deletion docs/src/guides/instances.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,23 @@ Test cases used in [TeLuSa19]. These instances are similar to OR-LIB/UC, in the
| `tejada19/UC_168h_192g` | 168 | 1 | 192 | 0 | 0 | [TeLuSa19] |
| `tejada19/UC_168h_199g` | 168 | 1 | 199 | 0 | 0 | [TeLuSa19] |

### Transmission and Expansion Planning Instances

We curate a list of popular [MuSe21] transmission and expansion planning (TEP) instances used in academia paper. These TEP instances follow [UCJL format](format.md), with information on candidate transmission lines and investment costs.

| Name | Buses | Generators | Lines | Generator Expension? | Transmission Expension? | Power Balance Penalty | References |
| ---------------------- | ----- | ---------- | ----- | -------------------- | ----------------------- | --------------------- | ---------- |
| `tep/garver6` | 6 | 3 | 6 | No | Yes | No | [Ga70] |
| `tep/ieee14` | 14 | 2 | 20 | No | Yes | Yes | [ZhDoLi09] |
| `tep/ieee24` | 24 | 32 | 35 | No | Yes | Yes | [FaHi03] |
| `tep/ieee30` | 30 | 6 | 41 | No | Yes | No | [AlDeAm13] |
| `tep/ieee118` | 118 | 70 | 186 | Yes | Yes | 1 | [KhShKa10] |
| `tep/ieee300` | 300 | 60 | 411 | No | Yes | Yes | [ZhChZa17] |
| `tep/south_brazilian` | 242 | 53 | 467 | No | Yes | 1000 | [HaMoGa00] |
| `tep/north_brazilian` | 87 | 14 | 299 | No | Yes | 1000 | [RoMoGa02] |
| `tep/polish2383` | 2383 | 326 | 2896 | No | Yes | Yes | [ZhChZa17] |


## References

- [UCJL] **Alinson S. Xavier, Aleksandr M. Kazachkov, Ogün Yurdakul, Feng Qiu.** "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment (Version 0.3)". Zenodo (2022). [DOI: 10.5281/zenodo.4269874](https://doi.org/10.5281/zenodo.4269874)
Expand All @@ -286,4 +303,22 @@ Test cases used in [TeLuSa19]. These instances are similar to OR-LIB/UC, in the

- [FrGe06] **A. Frangioni, C. Gentile.** "Solving nonlinear single-unit commitment problems with ramping constraints" Operations Research 54(4), p. 767 - 775, 2006. [DOI: 10.1287/opre.1060.0309](https://doi.org/10.1287/opre.1060.0309)

- [TeLuSa19] **D. A. Tejada-Arango, S. Lumbreras, P. Sanchez-Martin and A. Ramos.** "Which Unit-Commitment Formulation is Best? A Systematic Comparison," in IEEE Transactions on Power Systems. [DOI: 10.1109/TPWRS.2019.2962024](https://ieeexplore.ieee.org/document/8941313/).
- [TeLuSa19] **D. A. Tejada-Arango, S. Lumbreras, P. Sanchez-Martin and A. Ramos.** "Which unit-commitment formulation is best? A systematic comparison," in IEEE Transactions on Power Systems. [DOI: 10.1109/TPWRS.2019.2962024](https://ieeexplore.ieee.org/document/8941313/).

- [MuSe21] **Selçuk Mutlu and Ercan Şenyiğit.** "Literature review of transmission expansion planning problem test systems: detailed analysis of IEEE-24," in Electric Power Systems Research 201 (2021). [DOI: 10.1016/j.epsr.2021.107543](https://doi.org/10.1016/j.epsr.2021.107543)

- [Ga70] **Len L. Garver.** "Transmission network estimation using linear programming," in IEEE Transactions on Power Apparatus and Systems, vol. PAS-89, no. 7, pp. 1688-1697, Sept. 1970. [DOI: 10.1109/TPAS.1970.292825](https://ieeexplore.ieee.org/abstract/document/4074249)

- [ZhDoLi09] **J. Zhao, Z. Dong, P. Lindsay and K. Wong.** "Flexible transmission expansion planning with uncertainties in an electricity market," IEEE Transactions on Power Systems, Vol. 24, No. 1, February 2009. [DOI: 10.1109/TPWRS.2008.2008681](https://doi.org/10.1109/TPWRS.2008.2008681)

- [FaHi03] **Risheng Fang, David J. Hill.** "A new strategy for transmission expansion in competitive electricity markets." IEEE Transactions on power systems 18.1 (2003): 374-380. [DOI: 10.1109/TPWRS.2002.807083](https://ieeexplore.ieee.org/document/1178822)

- [AlDeAm13] **Behnam Alizadeh, Shahab Dehghan, Nima Amjady, Shahram Jadid and Ahad Kazemi.** "Robust transmission system expansion considering planning uncertainties," IET Generation, Transmission & Distribution (2013). [DOI: 10.1049/iet-gtd.2012.0137](https://doi.org/10.1049/iet-gtd.2012.0137)

- [KhShKa10] **Amin Khodaei, Mohammad Shahidehpour and Saeed Kamalinia.** "Transmission switching in expansion planning," IEEE Transactions on Power Systems, VOL. 25, NO. 3, AUGUST 2010. [DOI: 10.1109/TPWRS.2009.2039946](https://doi.org/10.1109/TPWRS.2009.2039946)

- [ZhChZa17] **J. Zhan, C. Chung and A. Zare.** "A fast solution method for stochastic transmission expansion planning," IEEE Transactions on Power Systems, Vol. 32, No. 6, Novermber 2017. [DOI: 10.1109/TPWRS.2017.2665695](https://doi.org/10.1109/TPWRS.2017.2665695)

- [HaMoGa00] **S. Haffner, A. Monticelli, A. Garcia, J. Mantovani and R. Romero.** "Branch and bound algorithm for transmission system expansion planning using a transportation model," IEE Proceedings - Generation Transmission and Distribution, Vol. 147, No. 3, May 2000. [DOI: 10.1049/ip-gtd:20000337](https://doi.org/10.1049/ip-gtd:20000337)

- [RoMoGa02] **R. Romero, A. Monticelli, A. Garcia and S. Haffner.** "Test systems and mathematical models for transmission network expansion planning," IEEE Proceeding - Generation Transmission and Distribution, Vol. 149, No. 1, January 2002. [DOI: 10.1049/ip-gtd:20020026](https://doi.org/10.1049/ip-gtd:20020026)
Loading