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.
UnitCommitment.jl/0.1/solvers/index.html

289 lines
11 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Solvers - UnitCommitment.jl</title>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/v4-shims.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/hack-font@3.3.0/build/web/hack.min.css">
<link href='//rsms.me/inter/inter.css' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,600,700&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
<link href="../css/bootstrap-custom.min.css" rel="stylesheet">
<link href="../css/base.min.css" rel="stylesheet">
<link href="../css/cinder.min.css" rel="stylesheet">
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.0/build/styles/github.min.css">
<link href="../css/custom.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Main title -->
<a class="navbar-brand" href="..">UnitCommitment.jl</a>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li >
<a href="..">Home</a>
</li>
<li >
<a href="../install/">Install</a>
</li>
<li >
<a href="../format/">Data</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" data-toggle="modal" data-target="#mkdocs_search_modal">
<i class="fas fa-search"></i> Search
</a>
</li>
<li>
<a href="https://github.com/edit/master/src/docs/solvers.md"><i class="fab fa-github"></i> Edit on GitHub</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
<ul class="nav bs-sidenav">
<li class="first-level active"><a href="#benchmark-solver">Benchmark Solver</a></li>
<li class="second-level"><a href="#usage">Usage</a></li>
<li class="second-level"><a href="#reference">Reference</a></li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<h1 id="benchmark-solver">Benchmark Solver</h1>
<p>Solving an instance of the Unit Commitment problem typically involves more
than simply building a Mixed-Integer Linear Programming and handing it over to the
solver. Since the number of transmission and N-1 security constraints can
easily exceed hundreds of millions for large instances of the problem, it is often
necessary to iterate between MILP optimization and contingency screening, so
that only necessary transmission constraints are added to the MILP.</p>
<p><code>UnitCommitment.jl</code> includes a fast implementation of the contingency
screening method described in
<a href="https://doi.org/10.1109/TPWRS.2019.2892620">[1]</a>, which is able to
efficiently handle even ISO-scale instances of the problem. The method makes
use of Injection Shift Factors (ISFs) and Line Outage Distribution Factors
(LODFs) to model DC power flows and N-1 contingencies. If Julia is configured
to use multiple threads (through the environment variable <code>JULIA_NUM_THREADS</code>)
then multiple contingency scenarios are evaluated in parallel.</p>
<h2 id="usage">Usage</h2>
<p>To solve one of the benchmark instances using the included benchmark solver, use the method <code>UnitCommitment.solve</code>
as shown in the example below.</p>
<pre><code>julia&gt; UnitCommitment.solve("ieee_rts/case118")
[ Info: Loading instance: ieee_rts/case118
[ Info: 54 units
[ Info: 118 buses
[ Info: 186 lines
[ Info: Scaling problem (0.6 demands, 1.0 limits)...
[ Info: Using Cbc as MILP solver (0.001 gap, 4 threads)
[ Info: Computing sensitivity factors (0.001 ISF cutoff, 0.0001 LODF cutoff)...
[ Info: Building MILP model (24 hours, 0.01 reserve)...
[ Info: Optimizing...
[ Info: Optimal value: 4.033106e+06
[ Info: Solved in 8.73 seconds
</code></pre>
<p>With default settings, the solver does not consider any transmission or
security constraints, and the peak load is automatically set to 60% of the
installed capacity of the system. These, and many other settings, can be
configured using keyword arguments. See the reference section below for more
details. Sample usage:</p>
<pre><code>julia&gt; UnitCommitment.solve("ieee_rts/case118", demand_scale=0.7, security=true)
[ Info: Loading instance: ieee_rts/case118
[ Info: 54 units
[ Info: 118 buses
[ Info: 186 lines
[ Info: Scaling problem (0.7 demands, 1.0 limits)...
[ Info: Using Cbc as MILP solver (0.001 gap, 4 threads)
[ Info: Computing sensitivity factors (0.001 ISF cutoff, 0.0001 LODF cutoff)...
[ Info: Building MILP model (24 hours, 0.01 reserve)...
[ Info: Optimizing...
[ Info: Verifying flow constraints...
[ Info: Optimal value: 4.888740e+06
[ Info: Solved in 4.50 seconds
</code></pre>
<p>When transmission or N-1 security constraints are activated, the solver uses an
iterative method to lazily enforce them. See <a href="https://doi.org/10.1109/TPWRS.2019.2892620">this
paper</a> for a detailed description
of the method. Injection Shift Factors (ISF) and Line Outage Distribution
Factors (LODF) are used for the computation of DC power flows. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Many of the benchmark instances were not originally designed for N-1
security-constrained studies, and may become infeasible if these constraints
are enforced. To avoid infeasibilities, the transmission limits can be
increased through the keyword argument <code>limit_scale</code>.</p>
</div>
<p>By default, the MILP is solved using <a href="https://github.com/coin-or/Cbc">Cbc, the COIN-OR Branch and Cut
solver</a>. If <code>UnitCommitment</code> is loaded after
either <a href="https://github.com/JuliaOpt/CPLEX.jl">CPLEX</a> or
<a href="https://github.com/SCIP-Interfaces/SCIP.jl">SCIP</a>, then these solvers will be
used instead. A detailed solver log can be displayed by setting <code>verbose=true</code>.</p>
<h2 id="reference">Reference</h2>
<p><code>@docs
UnitCommitment.solve</code></p></div>
</div>
<footer class="col-md-12 text-center">
<hr>
<p>
<small>Copyright © 2020, UChicago Argonne, LLC. All Rights Reserved.</small><br>
<small>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</small>
</p>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script>
<script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.0/build/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script>var base_url = ".."</script>
<script src="../js/base.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="../js/mathjax.js"></script>
<script src="../search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="searchModalLabel">Search</h4>
</div>
<div class="modal-body">
<p>
From here you can search these documents. Enter
your search terms below.
</p>
<form>
<div class="form-group">
<input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>