You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3 lines
16 KiB
3 lines
16 KiB
<!DOCTYPE html>
|
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>JuMP Model · UnitCommitment.jl</title><meta name="title" content="JuMP Model · UnitCommitment.jl"/><meta property="og:title" content="JuMP Model · UnitCommitment.jl"/><meta property="twitter:title" content="JuMP Model · UnitCommitment.jl"/><meta name="description" content="Documentation for UnitCommitment.jl."/><meta property="og:description" content="Documentation for UnitCommitment.jl."/><meta property="twitter:description" content="Documentation for UnitCommitment.jl."/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href="../../">UnitCommitment.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><span class="tocitem">Tutorials</span><ul><li><a class="tocitem" href="../../tutorials/usage/">Getting started</a></li><li><a class="tocitem" href="../../tutorials/customizing/">Model customization</a></li><li><a class="tocitem" href="../../tutorials/market/">Market clearing and LMPs</a></li><li><a class="tocitem" href="../../tutorials/decomposition/">Decomposition methods</a></li></ul></li><li><span class="tocitem">User guide</span><ul><li><a class="tocitem" href="../problem/">Problem definition</a></li><li><a class="tocitem" href="../format/">JSON data format</a></li><li><a class="tocitem" href="../instances/">Benchmark instances</a></li></ul></li><li><a class="tocitem" href="../../api/">API Reference</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>JuMP Model</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>JuMP Model</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/ANL-CEEESA/UnitCommitment.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/ANL-CEEESA/UnitCommitment.jl/blob/dev/docs/src/guides/model.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="JuMP-Model"><a class="docs-heading-anchor" href="#JuMP-Model">JuMP Model</a><a id="JuMP-Model-1"></a><a class="docs-heading-anchor-permalink" href="#JuMP-Model" title="Permalink"></a></h1><p>In this page, we describe the JuMP optimization model produced by the function <code>build_model</code>. A detailed understanding of this model is not necessary if you are just interested in using the package to solve some standard unit commitment cases, but it may be useful, for example, if you need to solve a slightly different problem, with additional variables and constraints. The notation in this page generally follows [KnOsWa20].</p><h2 id="Decision-variables"><a class="docs-heading-anchor" href="#Decision-variables">Decision variables</a><a id="Decision-variables-1"></a><a class="docs-heading-anchor-permalink" href="#Decision-variables" title="Permalink"></a></h2><p>UC.jl models the security-constrained unit commitment problem as a two-stage stochastic program. In this approach, some of the decision variables are <em>first-stage decisions</em>, which are taken before the uncertainty is realized and must therefore be the same across all scenarios, while the remaining variables are <em>second-stage decisions</em>, which can attain a different values in each scenario. In the current version of the package, all binary variables (which model commitment decisions of thermal units) are first-stage decisions and all continuous variables are second-stage decisions.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>UC.jl treats deterministic SCUC instances as a special case of the stochastic problem in which there is only one scenario, named <code>"s1"</code> by default. To access second-stage decisions, therefore, you must provide this scenario name as the value for <code>sn</code>. For example, <code>model[:prod_above]["s1", g, t]</code>. </p></div></div><h3 id="Generators"><a class="docs-heading-anchor" href="#Generators">Generators</a><a id="Generators-1"></a><a class="docs-heading-anchor-permalink" href="#Generators" title="Permalink"></a></h3><p>In this section, we describe the decision variables associated with the generators, which include both thermal units (e.g., natural gas-fired power plant) and profiled units (e.g., wind turbine). </p><h4 id="Thermal-Units"><a class="docs-heading-anchor" href="#Thermal-Units">Thermal Units</a><a id="Thermal-Units-1"></a><a class="docs-heading-anchor-permalink" href="#Thermal-Units" title="Permalink"></a></h4><table><tr><th style="text-align: left">Name</th><th style="text-align: left">Description</th><th style="text-align: center">Unit</th><th style="text-align: center">Stage</th></tr><tr><td style="text-align: left"><code>is_on[g,t]</code></td><td style="text-align: left">True if generator <code>g</code> is on at time <code>t</code>.</td><td style="text-align: center">Binary</td><td style="text-align: center">1</td></tr><tr><td style="text-align: left"><code>switch_on[g,t]</code></td><td style="text-align: left">True is generator <code>g</code> switches on at time <code>t</code>.</td><td style="text-align: center">Binary</td><td style="text-align: center">1</td></tr><tr><td style="text-align: left"><code>switch_off[g,t]</code></td><td style="text-align: left">True if generator <code>g</code> switches off at time <code>t</code>.</td><td style="text-align: center">Binary</td><td style="text-align: center">1</td></tr><tr><td style="text-align: left"><code>startup[g,t,s]</code></td><td style="text-align: left">True if generator <code>g</code> switches on at time <code>t</code> incurring start-up costs from start-up category <code>s</code>.</td><td style="text-align: center">Binary</td><td style="text-align: center">1</td></tr><tr><td style="text-align: left"><code>prod_above[sn,g,t]</code></td><td style="text-align: left">Amount of power produced by generator <code>g</code> above its minimum power output at time <code>t</code> in scenario <code>sn</code>. For example, if the minimum power of generator <code>g</code> is 100 MW and <code>g</code> is producing 115 MW of power at time <code>t</code> in scenario <code>sn</code>, then <code>prod_above[sn,g,t]</code> equals <code>15.0</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr><tr><td style="text-align: left"><code>segprod[sn,g,t,k]</code></td><td style="text-align: left">Amount of power from piecewise linear segment <code>k</code> produced by generator <code>g</code> at time <code>t</code> in scenario <code>sn</code>. For example, if cost curve for generator <code>g</code> is defined by the points <code>(100, 1400)</code>, <code>(110, 1600)</code>, <code>(130, 2200)</code> and <code>(135, 2400)</code>, and if the generator is producing 115 MW of power at time <code>t</code> in scenario <code>sn</code>, then <code>segprod[sn,g,t,:]</code> equals <code>[10.0, 5.0, 0.0]</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr><tr><td style="text-align: left"><code>reserve[sn,r,g,t]</code></td><td style="text-align: left">Amount of reserve <code>r</code> provided by unit <code>g</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr></table><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>The first-stage decision variables of the JuMP model are <code>is_on[g,t]</code>, <code>switch_on[g,t]</code>, <code>switch_off[g,t]</code>, and <code>startup[g,t,s]</code>. As such, the dictionaries corresponding to these variables do not include the scenario index in their keys. In contrast, all other variables of the created JuMP model are allowed to obtain a different value in each scenario and are thus modeled as second-stage decision variables. Accordingly, the dictionaries of all second-stage decision variables have the scenario index in their keys. This is true even if the model is created to solve the deterministic SCUC, in which case the default scenario index <code>s1</code> is included in the dictionary key.</p></div></div><h4 id="Profiled-Units"><a class="docs-heading-anchor" href="#Profiled-Units">Profiled Units</a><a id="Profiled-Units-1"></a><a class="docs-heading-anchor-permalink" href="#Profiled-Units" title="Permalink"></a></h4><table><tr><th style="text-align: left">Name</th><th style="text-align: left">Description</th><th style="text-align: center">Unit</th><th style="text-align: center">Stage</th></tr><tr><td style="text-align: left"><code>prod_profiled[s,t]</code></td><td style="text-align: left">Amount of power produced by profiled unit <code>g</code> at time <code>t</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr></table><h3 id="Buses"><a class="docs-heading-anchor" href="#Buses">Buses</a><a id="Buses-1"></a><a class="docs-heading-anchor-permalink" href="#Buses" title="Permalink"></a></h3><table><tr><th style="text-align: left">Name</th><th style="text-align: left">Description</th><th style="text-align: center">Unit</th><th style="text-align: center">Stage</th></tr><tr><td style="text-align: left"><code>net_injection[sn,b,t]</code></td><td style="text-align: left">Net injection at bus <code>b</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr><tr><td style="text-align: left"><code>curtail[sn,b,t]</code></td><td style="text-align: left">Amount of load curtailed at bus <code>b</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr></table><h3 id="Price-sensitive-loads"><a class="docs-heading-anchor" href="#Price-sensitive-loads">Price-sensitive loads</a><a id="Price-sensitive-loads-1"></a><a class="docs-heading-anchor-permalink" href="#Price-sensitive-loads" title="Permalink"></a></h3><table><tr><th style="text-align: left">Name</th><th style="text-align: left">Description</th><th style="text-align: center">Unit</th><th style="text-align: center">Stage</th></tr><tr><td style="text-align: left"><code>loads[sn,s,t]</code></td><td style="text-align: left">Amount of power served to price-sensitive load <code>s</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr></table><h3 id="Transmission-lines"><a class="docs-heading-anchor" href="#Transmission-lines">Transmission lines</a><a id="Transmission-lines-1"></a><a class="docs-heading-anchor-permalink" href="#Transmission-lines" title="Permalink"></a></h3><table><tr><th style="text-align: left">Name</th><th style="text-align: left">Description</th><th style="text-align: center">Unit</th><th style="text-align: center">Stage</th></tr><tr><td style="text-align: left"><code>flow[sn,l,t]</code></td><td style="text-align: left">Power flow on line <code>l</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr><tr><td style="text-align: left"><code>overflow[sn,l,t]</code></td><td style="text-align: left">Amount of flow above the limit for line <code>l</code> at time <code>t</code> in scenario <code>sn</code>.</td><td style="text-align: center">MW</td><td style="text-align: center">2</td></tr></table><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>Since transmission and N-1 security constraints are enforced in a lazy way, most of the <code>flow[l,t]</code> variables are never added to the model. Accessing <code>model[:flow][sn,l,t]</code> without first checking that the variable exists will likely generate an error.</p></div></div><h2 id="Objective-function"><a class="docs-heading-anchor" href="#Objective-function">Objective function</a><a id="Objective-function-1"></a><a class="docs-heading-anchor-permalink" href="#Objective-function" title="Permalink"></a></h2><p>TODO</p><h2 id="Constraints"><a class="docs-heading-anchor" href="#Constraints">Constraints</a><a id="Constraints-1"></a><a class="docs-heading-anchor-permalink" href="#Constraints" title="Permalink"></a></h2><p>TODO</p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <span class="colophon-date" title="Thursday 9 May 2024 13:50">Thursday 9 May 2024</span>. Using Julia version 1.10.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|