Update 0.2 docs; remove 0.3

docs
Alinson S. Xavier 4 years ago
parent f245821753
commit ecdef9ad0d

@ -2,20 +2,30 @@
**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)
* **Alinson S. Xavier** (Argonne National Laboratory)
* **Aleksandr M. Kazachkov** (University of Florida)
* **Feng Qiu** (Argonne 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.
* We would like to thank **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
@ -25,7 +35,7 @@
If you use UnitCommitment.jl in your research (instances, models or algorithms), we kindly request that you cite the package as follows:
* **Alinson S. Xavier, Feng Qiu**, "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment". Zenodo (2020). [DOI: 10.5281/zenodo.4269874](https://doi.org/10.5281/zenodo.4269874).
* **Alinson S. Xavier, Aleksandr M. Kazachkov, Feng Qiu**, "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment". Zenodo (2020). [DOI: 10.5281/zenodo.4269874](https://doi.org/10.5281/zenodo.4269874).
If you use the instances, we additionally request that you cite the original sources, as described in the [instances page](instances.md).

@ -315,7 +315,7 @@ Tejada19
References
----------
* [UCJL] **Alinson S. Xavier, Feng Qiu.** "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment". Zenodo (2020). [DOI: 10.5281/zenodo.4269874](https://doi.org/10.5281/zenodo.4269874)
* [UCJL] **Alinson S. Xavier, Aleksandr M. Kazachkov, Feng Qiu.** "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment". Zenodo (2020). [DOI: 10.5281/zenodo.4269874](https://doi.org/10.5281/zenodo.4269874)
* [KnOsWa20] **Bernard Knueven, James Ostrowski and Jean-Paul Watson.** "On Mixed-Integer Programming Formulations for the Unit Commitment Problem". INFORMS Journal on Computing (2020). [DOI: 10.1287/ijoc.2019.0944](https://doi.org/10.1287/ijoc.2019.0944)

@ -33,35 +33,33 @@ Typical Usage
### Solving user-provided instances
The first step to use UC.jl is to construct a JSON file describing your unit commitment instance. See the [data format page]() for a complete description of the data format UC.jl expects. The next steps, as shown below, are to read the instance from file, construct the optimization model, run the optimization and extract the optimal solution.
The first step to use UC.jl is to construct a JSON file describing your unit commitment instance. See [Data Format](format.md) for a complete description of the data format UC.jl expects. The next steps, as shown below, are to: (1) read the instance from file; (2) construct the optimization model; (3) run the optimization; and (4) extract the optimal solution.
```julia
using Cbc
using JSON
using UnitCommitment
# Read instance
# 1. Read instance
instance = UnitCommitment.read("/path/to/input.json")
# Construct optimization model
# 2. Construct optimization model
model = UnitCommitment.build_model(
instance=instance,
optimizer=Cbc.Optimizer,
)
# Solve model
# 3. Solve model
UnitCommitment.optimize!(model)
# Extract solution
# 4. Write solution to a file
solution = UnitCommitment.solution(model)
# Write solution to a file
UnitCommitment.write("/path/to/output.json", solution)
```
### Solving benchmark instances
As described in the [Instances page](instances.md), UnitCommitment.jl contains a number of benchmark instances collected from the literature. To solve one of these instances individually, instead of constructing your own, the function `read_benchmark` can be used:
UnitCommitment.jl contains a large number of benchmark instances collected from the literature and converted into a common data format. To solve one of these instances individually, instead of constructing your own, the function `read_benchmark` can be used, as shown below. See [Instances](instances.md) for the complete list of available instances.
```julia
using UnitCommitment
@ -71,10 +69,38 @@ instance = UnitCommitment.read_benchmark("matpower/case3375wp/2017-02-01")
Advanced usage
--------------
### Customizing the formulation
By default, `build_model` uses a formulation that combines modeling components from different publications, and that has been carefully tested, using our own benchmark scripts, to provide good performance across a wide variety of instances. This default formulation is expected to change over time, as new methods are proposed in the literature. You can, however, construct your own formulation, based the modeling components that you choose, as shown in the next example.
```julia
using Cbc
using UnitCommitment
import UnitCommitment:
Formulation,
KnuOstWat2018,
MorLatRam2013,
ShiftFactorsFormulation
### Modifying the formulation
instance = UnitCommitment.read_benchmark(
"matpower/case118/2017-02-01",
)
For the time being, the recommended way of modifying the MILP formulation used by UC.jl is to create a local copy of our git repository and directly modify the source code of the package. In a future version, it will be possible to switch between multiple formulations, or to simply add/remove constraints after the model has been generated.
model = UnitCommitment.build_model(
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,
),
),
)
```
### Generating initial conditions

@ -180,26 +180,28 @@
<a class="reference internal nav-link" href="#package-components">
Package Components
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#authors">
Authors
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#acknowledgments">
Acknowledgments
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#citing">
Citing
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#license">
License
</a>
<ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#authors">
Authors
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#acknowledgments">
Acknowledgments
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#citing">
Citing
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#license">
License
</a>
</li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#site-contents">
@ -224,36 +226,36 @@
<h2>Package Components<a class="headerlink" href="#package-components" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><strong>Data Format:</strong> 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.</p></li>
<li><p><strong>Benchmark Instances:</strong> The package provides a diverse collection of large-scale benchmark instances collected from the literature and extended to make them more challenging and realistic.</p></li>
<li><p><strong>Model Implementation</strong>: 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.</p></li>
<li><p><strong>Benchmark Instances:</strong> 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.</p></li>
<li><p><strong>Model Implementation</strong>: The package provides a Julia/JuMP implementations of state-of-the-art formulations and solution methods for SCUC, including multiple ramping formulations (<a class="reference external" href="https://doi.org/10.1109/59.871739">ArrCon2000</a>, <a class="reference external" href="https://doi.org/10.1109/TPWRS.2013.2251373">MorLatRam2013</a>, <a class="reference external" href="https://doi.org/10.1007/s10107-015-0919-9">DamKucRajAta2016</a>, <a class="reference external" href="https://doi.org/10.1287/opre.2016.1520">PanGua2016</a>), multiple piecewise-linear costs formulations (<a class="reference external" href="https://doi.org/10.1109/AIEEPAS.1962.4501405">Gar1962</a>, <a class="reference external" href="https://doi.org/10.1109/TPWRS.2006.876672">CarArr2006</a>, <a class="reference external" href="https://doi.org/10.1109/TPWRS.2017.2783850">KnuOstWat2018</a>) and contingency screening methods (<a class="reference external" href="https://doi.org/10.1109/TPWRS.2019.2892620">XavQiuWanThi2019</a>). Our goal is to keep these implementations up-to-date as new methods are proposed in the literature.</p></li>
<li><p><strong>Benchmark Tools:</strong> The package provides automated benchmark scripts to accurately evaluate the performance impact of proposed code changes.</p></li>
</ul>
</div>
<div class="section" id="authors">
<h2>Authors<a class="headerlink" href="#authors" title="Permalink to this headline"></a></h2>
<h3>Authors<a class="headerlink" href="#authors" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p><strong>Alinson Santos Xavier</strong> (Argonne National Laboratory)</p></li>
<li><p><strong>Alinson S. Xavier</strong> (Argonne National Laboratory)</p></li>
<li><p><strong>Aleksandr M. Kazachkov</strong> (University of Florida)</p></li>
<li><p><strong>Feng Qiu</strong> (Argonne National Laboratory)</p></li>
</ul>
</div>
<div class="section" id="acknowledgments">
<h2>Acknowledgments<a class="headerlink" href="#acknowledgments" title="Permalink to this headline"></a></h2>
<h3>Acknowledgments<a class="headerlink" href="#acknowledgments" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>We would like to thank <strong>Aleksandr M. Kazachkov</strong> (University of Florida), <strong>Yonghong Chen</strong> (Midcontinent Independent System Operator), <strong>Feng Pan</strong> (Pacific Northwest National Laboratory) for valuable feedback on early versions of this package.</p></li>
<li><p>We would like to thank <strong>Yonghong Chen</strong> (Midcontinent Independent System Operator), <strong>Feng Pan</strong> (Pacific Northwest National Laboratory) for valuable feedback on early versions of this package.</p></li>
<li><p>Based upon work supported by <strong>Laboratory Directed Research and Development</strong> (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</p></li>
<li><p>Based upon work supported by the <strong>U.S. Department of Energy Advanced Grid Modeling Program</strong> under Grant DE-OE0000875.</p></li>
</ul>
</div>
<div class="section" id="citing">
<h2>Citing<a class="headerlink" href="#citing" title="Permalink to this headline"></a></h2>
<h3>Citing<a class="headerlink" href="#citing" title="Permalink to this headline"></a></h3>
<p>If you use UnitCommitment.jl in your research (instances, models or algorithms), we kindly request that you cite the package as follows:</p>
<ul class="simple">
<li><p><strong>Alinson S. Xavier, Feng Qiu</strong>, “UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment”. Zenodo (2020). <a class="reference external" href="https://doi.org/10.5281/zenodo.4269874">DOI: 10.5281/zenodo.4269874</a>.</p></li>
<li><p><strong>Alinson S. Xavier, Aleksandr M. Kazachkov, Feng Qiu</strong>, “UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment”. Zenodo (2020). <a class="reference external" href="https://doi.org/10.5281/zenodo.4269874">DOI: 10.5281/zenodo.4269874</a>.</p></li>
</ul>
<p>If you use the instances, we additionally request that you cite the original sources, as described in the <a class="reference internal" href="instances/"><span class="doc std std-doc">instances page</span></a>.</p>
</div>
<div class="section" id="license">
<h2>License<a class="headerlink" href="#license" title="Permalink to this headline"></a></h2>
<h3>License<a class="headerlink" href="#license" title="Permalink to this headline"></a></h3>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment
Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.
@ -281,6 +283,7 @@ POSSIBILITY OF SUCH DAMAGE.
</pre></div>
</div>
</div>
</div>
<div class="section" id="site-contents">
<h2>Site contents<a class="headerlink" href="#site-contents" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">

@ -1933,7 +1933,7 @@ If you use these instances in your research, we request that you cite UnitCommit
<div class="section" id="references">
<h2><span class="sectnum">3.5.</span> References<a class="headerlink" href="#references" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>[UCJL] <strong>Alinson S. Xavier, Feng Qiu.</strong> “UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment”. Zenodo (2020). <a class="reference external" href="https://doi.org/10.5281/zenodo.4269874">DOI: 10.5281/zenodo.4269874</a></p></li>
<li><p>[UCJL] <strong>Alinson S. Xavier, Aleksandr M. Kazachkov, Feng Qiu.</strong> “UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment”. Zenodo (2020). <a class="reference external" href="https://doi.org/10.5281/zenodo.4269874">DOI: 10.5281/zenodo.4269874</a></p></li>
<li><p>[KnOsWa20] <strong>Bernard Knueven, James Ostrowski and Jean-Paul Watson.</strong> “On Mixed-Integer Programming Formulations for the Unit Commitment Problem”. INFORMS Journal on Computing (2020). <a class="reference external" href="https://doi.org/10.1287/ijoc.2019.0944">DOI: 10.1287/ijoc.2019.0944</a></p></li>
<li><p>[KrHiOn12] <strong>Eric Krall, Michael Higgins and Richard P. ONeill.</strong> “RTO unit commitment test system.” Federal Energy Regulatory Commission. Available at: <a class="reference external" href="https://www.ferc.gov/industries-data/electric/power-sales-and-markets/increasing-efficiency-through-improved-software-1">https://www.ferc.gov/industries-data/electric/power-sales-and-markets/increasing-efficiency-through-improved-software-1</a> (Accessed: Nov 14, 2020)</p></li>
<li><p>[BaBlEh19] <strong>Clayton Barrows, Aaron Bloom, Ali Ehlen, Jussi Ikaheimo, Jennie Jorgenson, Dheepak Krishnamurthy, Jessica Lau et al.</strong> “The IEEE Reliability Test System: A Proposed 2019 Update.” IEEE Transactions on Power Systems (2019). <a class="reference external" href="https://doi.org/10.1109/TPWRS.2019.2925557">DOI: 10.1109/TPWRS.2019.2925557</a></p></li>

File diff suppressed because one or more lines are too long

@ -214,8 +214,8 @@
</a>
<ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#modifying-the-formulation">
Modifying the formulation
<a class="reference internal nav-link" href="#customizing-the-formulation">
Customizing the formulation
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
@ -260,34 +260,32 @@
<h2><span class="sectnum">1.2.</span> Typical Usage<a class="headerlink" href="#typical-usage" title="Permalink to this headline"></a></h2>
<div class="section" id="solving-user-provided-instances">
<h3>Solving user-provided instances<a class="headerlink" href="#solving-user-provided-instances" title="Permalink to this headline"></a></h3>
<p>The first step to use UC.jl is to construct a JSON file describing your unit commitment instance. See the <span class="xref myst">data format page</span> for a complete description of the data format UC.jl expects. The next steps, as shown below, are to read the instance from file, construct the optimization model, run the optimization and extract the optimal solution.</p>
<p>The first step to use UC.jl is to construct a JSON file describing your unit commitment instance. See <a class="reference internal" href="../format/"><span class="doc std std-doc">Data Format</span></a> for a complete description of the data format UC.jl expects. The next steps, as shown below, are to: (1) read the instance from file; (2) construct the optimization model; (3) run the optimization; and (4) extract the optimal solution.</p>
<div class="highlight-julia notranslate"><div class="highlight"><pre><span></span><span class="k">using</span> <span class="n">Cbc</span>
<span class="k">using</span> <span class="n">JSON</span>
<span class="k">using</span> <span class="n">UnitCommitment</span>
<span class="c"># Read instance</span>
<span class="c"># 1. Read instance</span>
<span class="n">instance</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="s">&quot;/path/to/input.json&quot;</span><span class="p">)</span>
<span class="c"># Construct optimization model</span>
<span class="c"># 2. Construct optimization model</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">build_model</span><span class="p">(</span>
<span class="n">instance</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="n">Cbc</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">,</span>
<span class="p">)</span>
<span class="c"># Solve model</span>
<span class="c"># 3. Solve model</span>
<span class="n">UnitCommitment</span><span class="o">.</span><span class="n">optimize!</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
<span class="c"># Extract solution</span>
<span class="c"># 4. Write solution to a file</span>
<span class="n">solution</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
<span class="c"># Write solution to a file</span>
<span class="n">UnitCommitment</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;/path/to/output.json&quot;</span><span class="p">,</span> <span class="n">solution</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="solving-benchmark-instances">
<h3>Solving benchmark instances<a class="headerlink" href="#solving-benchmark-instances" title="Permalink to this headline"></a></h3>
<p>As described in the <a class="reference internal" href="../instances/"><span class="doc std std-doc">Instances page</span></a>, UnitCommitment.jl contains a number of benchmark instances collected from the literature. To solve one of these instances individually, instead of constructing your own, the function <code class="docutils literal notranslate"><span class="pre">read_benchmark</span></code> can be used:</p>
<p>UnitCommitment.jl contains a large number of benchmark instances collected from the literature and converted into a common data format. To solve one of these instances individually, instead of constructing your own, the function <code class="docutils literal notranslate"><span class="pre">read_benchmark</span></code> can be used, as shown below. See <a class="reference internal" href="../instances/"><span class="doc std std-doc">Instances</span></a> for the complete list of available instances.</p>
<div class="highlight-julia notranslate"><div class="highlight"><pre><span></span><span class="k">using</span> <span class="n">UnitCommitment</span>
<span class="n">instance</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">read_benchmark</span><span class="p">(</span><span class="s">&quot;matpower/case3375wp/2017-02-01&quot;</span><span class="p">)</span>
</pre></div>
@ -296,9 +294,37 @@
</div>
<div class="section" id="advanced-usage">
<h2><span class="sectnum">1.3.</span> Advanced usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline"></a></h2>
<div class="section" id="modifying-the-formulation">
<h3>Modifying the formulation<a class="headerlink" href="#modifying-the-formulation" title="Permalink to this headline"></a></h3>
<p>For the time being, the recommended way of modifying the MILP formulation used by UC.jl is to create a local copy of our git repository and directly modify the source code of the package. In a future version, it will be possible to switch between multiple formulations, or to simply add/remove constraints after the model has been generated.</p>
<div class="section" id="customizing-the-formulation">
<h3>Customizing the formulation<a class="headerlink" href="#customizing-the-formulation" title="Permalink to this headline"></a></h3>
<p>By default, <code class="docutils literal notranslate"><span class="pre">build_model</span></code> uses a formulation that combines modeling components from different publications, and that has been carefully tested, using our own benchmark scripts, to provide good performance across a wide variety of instances. This default formulation is expected to change over time, as new methods are proposed in the literature. You can, however, construct your own formulation, based the modeling components that you choose, as shown in the next example.</p>
<div class="highlight-julia notranslate"><div class="highlight"><pre><span></span><span class="k">using</span> <span class="n">Cbc</span>
<span class="k">using</span> <span class="n">UnitCommitment</span>
<span class="k">import</span> <span class="n">UnitCommitment</span><span class="o">:</span>
<span class="n">Formulation</span><span class="p">,</span>
<span class="n">KnuOstWat2018</span><span class="p">,</span>
<span class="n">MorLatRam2013</span><span class="p">,</span>
<span class="n">ShiftFactorsFormulation</span>
<span class="n">instance</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">read_benchmark</span><span class="p">(</span>
<span class="s">&quot;matpower/case118/2017-02-01&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">UnitCommitment</span><span class="o">.</span><span class="n">build_model</span><span class="p">(</span>
<span class="n">instance</span> <span class="o">=</span> <span class="n">instance</span><span class="p">,</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="n">Cbc</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">,</span>
<span class="n">formulation</span> <span class="o">=</span> <span class="n">Formulation</span><span class="p">(</span>
<span class="n">pwl_costs</span> <span class="o">=</span> <span class="n">KnuOstWat2018</span><span class="o">.</span><span class="n">PwlCosts</span><span class="p">(),</span>
<span class="n">ramping</span> <span class="o">=</span> <span class="n">MorLatRam2013</span><span class="o">.</span><span class="n">Ramping</span><span class="p">(),</span>
<span class="n">startup_costs</span> <span class="o">=</span> <span class="n">MorLatRam2013</span><span class="o">.</span><span class="n">StartupCosts</span><span class="p">(),</span>
<span class="n">transmission</span> <span class="o">=</span> <span class="n">ShiftFactorsFormulation</span><span class="p">(</span>
<span class="n">isf_cutoff</span> <span class="o">=</span> <span class="mf">0.005</span><span class="p">,</span>
<span class="n">lodf_cutoff</span> <span class="o">=</span> <span class="mf">0.001</span><span class="p">,</span>
<span class="p">),</span>
<span class="p">),</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="generating-initial-conditions">
<h3>Generating initial conditions<a class="headerlink" href="#generating-initial-conditions" title="Permalink to this headline"></a></h3>

Loading…
Cancel
Save