@ -22,4 +22,4 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.</code></pre></article><navclass="docs-footer"><aclass="docs-footer-nextpage"href="tutorials/usage/">Getting started »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
POSSIBILITY OF SUCH DAMAGE.</code></pre></article><navclass="docs-footer"><aclass="docs-footer-nextpage"href="tutorials/usage/">Getting started »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computing line outage factors...
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computed LODF in 0.00 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Applying PTDF and LODF cutoffs (0.00800, 0.00300)
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Built model in 0.94 seconds</code></pre><h2id="Accessing-decision-variables"><aclass="docs-heading-anchor"href="#Accessing-decision-variables">Accessing decision variables</a><aid="Accessing-decision-variables-1"></a><aclass="docs-heading-anchor-permalink"href="#Accessing-decision-variables"title="Permalink"></a></h2><p>In the previous tutorial, we saw how to access the optimal solution through <code>UnitCommitment.solution</code>. While this approach works well for basic usage, it is also possible to get a direct reference to the JuMP decision variables and query their values, as the next example illustrates.</p><p>First, we load a benchmark instance and solve it, as before.</p><pre><codeclass="language-julia hljs">instance = UnitCommitment.read_benchmark("matpower/case14/2017-01-01");
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Built model in 0.89 seconds</code></pre><h2id="Accessing-decision-variables"><aclass="docs-heading-anchor"href="#Accessing-decision-variables">Accessing decision variables</a><aid="Accessing-decision-variables-1"></a><aclass="docs-heading-anchor-permalink"href="#Accessing-decision-variables"title="Permalink"></a></h2><p>In the previous tutorial, we saw how to access the optimal solution through <code>UnitCommitment.solution</code>. While this approach works well for basic usage, it is also possible to get a direct reference to the JuMP decision variables and query their values, as the next example illustrates.</p><p>First, we load a benchmark instance and solve it, as before.</p><pre><codeclass="language-julia hljs">instance = UnitCommitment.read_benchmark("matpower/case14/2017-01-01");
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Verified transmission limits in 0.55 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Verified transmission limits in 0.59 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>No violations found</code></pre><p>At this point, it is possible to obtain a reference to the decision variables by calling <code>model[:varname][index]</code>. For example, <code>model[:is_on]["g1",1]</code> returns a direct reference to the JuMP variable indicating whether generator named "g1" is on at time 1. For a complete list of decision variables available, and how are they indexed, see the <ahref="../../guides/problem/">problem definition</a>.</p><pre><codeclass="language-julia hljs">@show JuMP.value(model[:is_on]["g1", 1])</code></pre><preclass="documenter-example-output"><codeclass="nohighlight hljs ansi">1.0</code></pre><p>To access second-stage decisions, it is necessary to specify the scenario name. UnitCommitment.jl models deterministic instances as a particular case in which there is a single scenario named "s1", so we need to use this key.</p><pre><codeclass="language-julia hljs">@show JuMP.value(model[:prod_above]["s1", "g1", 1])</code></pre><preclass="documenter-example-output"><codeclass="nohighlight hljs ansi">145.16900936037393</code></pre><h2id="Modifying-variables-and-constraints"><aclass="docs-heading-anchor"href="#Modifying-variables-and-constraints">Modifying variables and constraints</a><aid="Modifying-variables-and-constraints-1"></a><aclass="docs-heading-anchor-permalink"href="#Modifying-variables-and-constraints"title="Permalink"></a></h2><p>When testing variations of the unit commitment problem, it is often necessary to modify the objective function, variables and constraints of the formulation. UnitCommitment.jl makes this process relatively easy. The first step is to construct the standard model using <code>UnitCommitment.build_model</code>:</p><pre><codeclass="language-julia hljs">instance = UnitCommitment.read_benchmark("matpower/case14/2017-01-01");
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computed ISF in 0.24 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computed ISF in 0.23 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computing line outage factors...
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Computed LODF in 0.00 seconds
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Applying PTDF and LODF cutoffs (0.00500, 0.00100)
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Built model in 0.44 seconds</code></pre><p>Next, we create decision variables for the new grid component. In this example, we assume that the new component can inject up to 10 MW of power at each time step, so we create new continuous variables <span>$0 \leq x_t \leq 10$</span>.</p><pre><codeclass="language-julia hljs">T = instance.time
<spanclass="sgr36"><spanclass="sgr1">[ Info: </span></span>Built model in 0.41 seconds</code></pre><p>Next, we create decision variables for the new grid component. In this example, we assume that the new component can inject up to 10 MW of power at each time step, so we create new continuous variables <span>$0 \leq x_t \leq 10$</span>.</p><pre><codeclass="language-julia hljs">T = instance.time
@variable(model, x[1:T], lower_bound = 0.0, upper_bound = 10.0);</code></pre><p>Next, we add the production costs to the objective function. In this example, we assume a generation cost of <span>$</span>5/MW:</p><pre><codeclass="language-julia hljs">for t in 1:T
set_objective_coefficient(model, x[t], 5.0)
end</code></pre><p>We then attach the new component to bus <code>b1</code> by modifying the net injection constraint (<code>eq_net_injection</code>):</p><pre><codeclass="language-julia hljs">for t in 1:T
@ -131,8 +131,8 @@ Solving MIP model with:
Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work
Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time
10.0</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../usage/">« Getting started</a><aclass="docs-footer-nextpage"href="../lmp/">Locational Marginal Prices »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
10.0</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../usage/">« Getting started</a><aclass="docs-footer-nextpage"href="../lmp/">Locational Marginal Prices »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
MPI.Finalize()</code></pre><p>When using PH, the model can be customized as usual, with different formulations or additional user-provided constraints. Note that <code>read</code>, in this case, takes <code>ph</code> as an argument. This allows each Julia process to read only the instance files that are relevant to it. Similarly, the <code>solution</code> function gathers the optimal solution of each processes and returns a combined dictionary.</p><p>Each process solves a sub-problem with <span>$\frac{s}{p}$</span> scenarios, where <span>$s$</span> is the total number of scenarios and <span>$p$</span> is the number of MPI processes. For instance, if we have 15 scenario files and 5 processes, then each process will solve a JuMP model that contains data for 3 scenarios. If the total number of scenarios is not divisible by the number of processes, then an error will be thrown.</p><divclass="admonition is-warning"><headerclass="admonition-header">Warning</header><divclass="admonition-body"><p>Currently, PH can handle only equiprobable scenarios. Further, <code>solution(model, ph)</code> can only handle cases where only one scenario is modeled in each process.</p></div></div></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../market/">« Market Clearing</a><aclass="docs-footer-nextpage"href="../../guides/problem/">Problem definition »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
MPI.Finalize()</code></pre><p>When using PH, the model can be customized as usual, with different formulations or additional user-provided constraints. Note that <code>read</code>, in this case, takes <code>ph</code> as an argument. This allows each Julia process to read only the instance files that are relevant to it. Similarly, the <code>solution</code> function gathers the optimal solution of each processes and returns a combined dictionary.</p><p>Each process solves a sub-problem with <span>$\frac{s}{p}$</span> scenarios, where <span>$s$</span> is the total number of scenarios and <span>$p$</span> is the number of MPI processes. For instance, if we have 15 scenario files and 5 processes, then each process will solve a JuMP model that contains data for 3 scenarios. If the total number of scenarios is not divisible by the number of processes, then an error will be thrown.</p><divclass="admonition is-warning"><headerclass="admonition-header">Warning</header><divclass="admonition-body"><p>Currently, PH can handle only equiprobable scenarios. Further, <code>solution(model, ph)</code> can only handle cases where only one scenario is modeled in each process.</p></div></div></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../market/">« Market Clearing</a><aclass="docs-footer-nextpage"href="../../guides/problem/">Problem definition »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
@show lmp["s1", "B1", 1]</code></pre><preclass="documenter-example-output"><codeclass="nohighlight hljs ansi">274.3333333333333</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../customizing/">« Model customization</a><aclass="docs-footer-nextpage"href="../market/">Market Clearing »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
@show lmp["s1", "B1", 1]</code></pre><preclass="documenter-example-output"><codeclass="nohighlight hljs ansi">274.3333333333333</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../customizing/">« Model customization</a><aclass="docs-footer-nextpage"href="../market/">Market Clearing »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
)</code></pre><preclass="documenter-example-output"><codeclass="nohighlight hljs ansi">OrderedCollections.OrderedDict{Any, Any} with 2 entries:
"DA" => OrderedDict{Any, Any}("Thermal production (MW)"=>OrderedDict("g1"=>[2…
"RT" => Any[OrderedDict{Any, Any}("Thermal production (MW)"=>OrderedDict("g1"…</code></pre><h2id="Additional-considerations"><aclass="docs-heading-anchor"href="#Additional-considerations">Additional considerations</a><aid="Additional-considerations-1"></a><aclass="docs-heading-anchor-permalink"href="#Additional-considerations"title="Permalink"></a></h2><ul><li>UC.jl supports two-stage stochastic DA market problems. In this case, we need one file for each DA market scenario. All RT market problems must be deterministic.</li><li>UC.jl also supports multi-period RT market problems. Assume, for example, that the DA market problem is an hourly problem with 24 time periods, whereas the RT market problem uses 5-minute granularity with 4 time periods. UC.jl assumes that the first RT file covers period <code>0:00</code> to <code>0:20</code>, the second covers <code>0:05</code> to <code>0:25</code> and so on. We therefore still need 288 RT market files. To avoid going beyond the 24-hour period covered by the DA market solution, however, the last few RT market problems must have only 3, 2, and 1 time periods, covering <code>23:45</code> to <code>24:00</code>, <code>23:50</code> to <code>24:00</code> and <code>23:55</code> to <code>24:00</code>, respectively.</li><li>Some MILP solvers (such as Cbc) have issues handling linear programming problems, which are required for the RT market. In this case, a separate linear programming solver can be provided to <code>solve_market</code> using the <code>lp_optimizer</code> argument. For example, <code>solve_market(da_file, rt_files, optimizer=Cbc.Optimizer, lp_optimizer=Clp.Optimizer)</code>.</li></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../lmp/">« Locational Marginal Prices</a><aclass="docs-footer-nextpage"href="../decomposition/">Decomposition methods »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
"RT" => Any[OrderedDict{Any, Any}("Thermal production (MW)"=>OrderedDict("g1"…</code></pre><h2id="Additional-considerations"><aclass="docs-heading-anchor"href="#Additional-considerations">Additional considerations</a><aid="Additional-considerations-1"></a><aclass="docs-heading-anchor-permalink"href="#Additional-considerations"title="Permalink"></a></h2><ul><li>UC.jl supports two-stage stochastic DA market problems. In this case, we need one file for each DA market scenario. All RT market problems must be deterministic.</li><li>UC.jl also supports multi-period RT market problems. Assume, for example, that the DA market problem is an hourly problem with 24 time periods, whereas the RT market problem uses 5-minute granularity with 4 time periods. UC.jl assumes that the first RT file covers period <code>0:00</code> to <code>0:20</code>, the second covers <code>0:05</code> to <code>0:25</code> and so on. We therefore still need 288 RT market files. To avoid going beyond the 24-hour period covered by the DA market solution, however, the last few RT market problems must have only 3, 2, and 1 time periods, covering <code>23:45</code> to <code>24:00</code>, <code>23:50</code> to <code>24:00</code> and <code>23:55</code> to <code>24:00</code>, respectively.</li><li>Some MILP solvers (such as Cbc) have issues handling linear programming problems, which are required for the RT market. In this case, a separate linear programming solver can be provided to <code>solve_market</code> using the <code>lp_optimizer</code> argument. For example, <code>solve_market(da_file, rt_files, optimizer=Cbc.Optimizer, lp_optimizer=Clp.Optimizer)</code>.</li></ul></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../lmp/">« Locational Marginal Prices</a><aclass="docs-footer-nextpage"href="../decomposition/">Decomposition methods »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
"Down-flexiramp shortfall (MW)" => OrderedDict{Any, Any}()</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../../">« Home</a><aclass="docs-footer-nextpage"href="../customizing/">Model customization »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:39">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>
"Down-flexiramp shortfall (MW)" => OrderedDict{Any, Any}()</code></pre></article><navclass="docs-footer"><aclass="docs-footer-prevpage"href="../../">« Home</a><aclass="docs-footer-nextpage"href="../customizing/">Model customization »</a><divclass="flexbox-break"></div><pclass="footer-message">Powered by <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <ahref="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><divclass="modal"id="documenter-settings"><divclass="modal-background"></div><divclass="modal-card"><headerclass="modal-card-head"><pclass="modal-card-title">Settings</p><buttonclass="delete"></button></header><sectionclass="modal-card-body"><p><labelclass="label">Theme</label><divclass="select"><selectid="documenter-themepicker"><optionvalue="documenter-light">documenter-light</option><optionvalue="documenter-dark">documenter-dark</option><optionvalue="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <ahref="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <spanclass="colophon-date"title="Tuesday 21 May 2024 10:56">Tuesday 21 May 2024</span>. Using Julia version 1.10.3.</p></section><footerclass="modal-card-foot"></footer></div></div></div></body></html>