Files
ortools-clone/docs/cpp_sat/cp__model_8h.html
2021-09-20 15:57:27 +02:00

182 lines
19 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OR-Tools</title>
<meta http-equiv="Content-Type" content="text/html;"/>
<meta charset="utf-8"/>
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="styleSheet.tmp.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">Google OR-Tools 9.1</span>
</div>
</div>
<div id="content" style="width: 100%; overflow: hidden;">
<div style="margin-left: 15px; margin-top: 5px; float: left; color: #145A32;">
<h2>C++ Reference</h2>
<ul>
<li><a href="../cpp_algorithms/annotated.html">Algorithms</a></li>
<li><a href="../cpp_sat/annotated.html">CP-SAT</a></li>
<li><a href="../cpp_graph/annotated.html">Graph</a></li>
<li><a href="../cpp_routing/annotated.html">Routing</a></li>
<li><a href="../cpp_linear/annotated.html">Linear solver</a></li>
</ul>
</div>
<div id="content">
<div align="center">
<h1 style="color: #145A32;">C++ Reference: CP-SAT</h1>
</div>
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('cp__model_8h.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">cp_model.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file implements a wrapper around the CP-SAT model proto. </p>
<p>Here is a minimal example that shows how to create a model, solve it, and print out the solution. </p><div class="fragment"><div class="line">CpModelBuilder cp_model;</div><div class="line">Domain all_animals(0, 20);</div><div class="line">IntVar rabbits = cp_model.NewIntVar(all_animals).WithName(<span class="stringliteral">&quot;rabbits&quot;</span>);</div><div class="line">IntVar pheasants = cp_model.NewIntVar(all_animals).WithName(<span class="stringliteral">&quot;pheasants&quot;</span>);</div><div class="line"></div><div class="line">cp_model.AddEquality(LinearExpr::Sum({rabbits, pheasants}), 20);</div><div class="line">cp_model.AddEquality(LinearExpr::ScalProd({rabbits, pheasants}, {4, 2}), 56);</div><div class="line"></div><div class="line"><span class="keyword">const</span> CpSolverResponse response = <a class="code" href="namespaceoperations__research_1_1sat.html#a09d851f944ab4f305c3d9f8df99b7bf8">Solve</a>(cp_model.Build());</div><div class="line"><span class="keywordflow">if</span> (response.status() == <a class="code" href="namespaceoperations__research_1_1sat.html#aedc4ddb96acc28481c09828d2e016815a03f919221217f95d21a593a7120165e1">CpSolverStatus::FEASIBLE</a>) {</div><div class="line"> LOG(INFO) &lt;&lt; <a class="code" href="namespaceoperations__research_1_1sat.html#ab6fe86bc876c281163a053a9581346c3">SolutionIntegerValue</a>(response, rabbits)</div><div class="line"> &lt;&lt; <span class="stringliteral">&quot; rabbits, and &quot;</span> &lt;&lt; <a class="code" href="namespaceoperations__research_1_1sat.html#ab6fe86bc876c281163a053a9581346c3">SolutionIntegerValue</a>(response, pheasants)</div><div class="line"> &lt;&lt; <span class="stringliteral">&quot; pheasants.&quot;</span>;</div><div class="line">}</div></div><!-- fragment -->
<p class="definition">Definition in file <a class="el" href="cp__model_8h_source.html">cp_model.h</a>.</p>
</div>
<p><a href="cp__model_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_bool_var.html">BoolVar</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A Boolean variable. <a href="classoperations__research_1_1sat_1_1_bool_var.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_int_var.html">IntVar</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An integer variable. <a href="classoperations__research_1_1sat_1_1_int_var.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_linear_expr.html">LinearExpr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A dedicated container for linear expressions. <a href="classoperations__research_1_1sat_1_1_linear_expr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_interval_var.html">IntervalVar</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a Interval variable. <a href="classoperations__research_1_1sat_1_1_interval_var.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_constraint.html">Constraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A constraint. <a href="classoperations__research_1_1sat_1_1_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_circuit_constraint.html">CircuitConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized circuit constraint. <a href="classoperations__research_1_1sat_1_1_circuit_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_multiple_circuit_constraint.html">MultipleCircuitConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized circuit constraint. <a href="classoperations__research_1_1sat_1_1_multiple_circuit_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_table_constraint.html">TableConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized assignment constraint. <a href="classoperations__research_1_1sat_1_1_table_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_reservoir_constraint.html">ReservoirConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized reservoir constraint. <a href="classoperations__research_1_1sat_1_1_reservoir_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_automaton_constraint.html">AutomatonConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized automaton constraint. <a href="classoperations__research_1_1sat_1_1_automaton_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_no_overlap2_d_constraint.html">NoOverlap2DConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized no_overlap2D constraint. <a href="classoperations__research_1_1sat_1_1_no_overlap2_d_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_cumulative_constraint.html">CumulativeConstraint</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized cumulative constraint. <a href="classoperations__research_1_1sat_1_1_cumulative_constraint.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1_cp_model_builder.html">CpModelBuilder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper class around the cp_model proto. <a href="classoperations__research_1_1sat_1_1_cp_model_builder.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceoperations__research"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research.html">operations_research</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceoperations__research_1_1sat"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html">operations_research::sat</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9c0ae0d048a431656985fc79428bbe67"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a9c0ae0d048a431656985fc79428bbe67">operator&lt;&lt;</a> (std::ostream &amp;os, const BoolVar &amp;var)</td></tr>
<tr class="separator:a9c0ae0d048a431656985fc79428bbe67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e3de118c1f8dd5a7ec21704e05684b9"><td class="memItemLeft" align="right" valign="top">BoolVar&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a5e3de118c1f8dd5a7ec21704e05684b9">Not</a> (BoolVar x)</td></tr>
<tr class="memdesc:a5e3de118c1f8dd5a7ec21704e05684b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A convenient wrapper so we can write Not(x) instead of <a class="el" href="namespaceoperations__research_1_1sat.html#a5e3de118c1f8dd5a7ec21704e05684b9" title="A convenient wrapper so we can write Not(x) instead of x.Not() which is sometimes clearer.">x.Not()</a> which is sometimes clearer. <a href="namespaceoperations__research_1_1sat.html#a5e3de118c1f8dd5a7ec21704e05684b9">More...</a><br /></td></tr>
<tr class="separator:a5e3de118c1f8dd5a7ec21704e05684b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57b8aabbc5b3c1d177d35b3ebcf9b5fa"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a57b8aabbc5b3c1d177d35b3ebcf9b5fa">operator&lt;&lt;</a> (std::ostream &amp;os, const IntVar &amp;var)</td></tr>
<tr class="separator:a57b8aabbc5b3c1d177d35b3ebcf9b5fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35837eb833296fb7990f195eebeb2023"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a35837eb833296fb7990f195eebeb2023">operator&lt;&lt;</a> (std::ostream &amp;os, const LinearExpr &amp;e)</td></tr>
<tr class="separator:a35837eb833296fb7990f195eebeb2023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9f86b31794751c624a783d15306280c"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#ae9f86b31794751c624a783d15306280c">operator&lt;&lt;</a> (std::ostream &amp;os, const IntervalVar &amp;var)</td></tr>
<tr class="separator:ae9f86b31794751c624a783d15306280c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6fe86bc876c281163a053a9581346c3"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#ab6fe86bc876c281163a053a9581346c3">SolutionIntegerValue</a> (const CpSolverResponse &amp;r, const LinearExpr &amp;expr)</td></tr>
<tr class="memdesc:ab6fe86bc876c281163a053a9581346c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates the value of an linear expression in a solver response. <a href="namespaceoperations__research_1_1sat.html#ab6fe86bc876c281163a053a9581346c3">More...</a><br /></td></tr>
<tr class="separator:ab6fe86bc876c281163a053a9581346c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7857084f34282d9c30370db7d63faa7"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#af7857084f34282d9c30370db7d63faa7">SolutionIntegerMin</a> (const CpSolverResponse &amp;r, IntVar x)</td></tr>
<tr class="memdesc:af7857084f34282d9c30370db7d63faa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the min of an integer variable in a solution. <a href="namespaceoperations__research_1_1sat.html#af7857084f34282d9c30370db7d63faa7">More...</a><br /></td></tr>
<tr class="separator:af7857084f34282d9c30370db7d63faa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0205c1cb83c849b1f47dab55ad6ada5c"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a0205c1cb83c849b1f47dab55ad6ada5c">SolutionIntegerMax</a> (const CpSolverResponse &amp;r, IntVar x)</td></tr>
<tr class="memdesc:a0205c1cb83c849b1f47dab55ad6ada5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the max of an integer variable in a solution. <a href="namespaceoperations__research_1_1sat.html#a0205c1cb83c849b1f47dab55ad6ada5c">More...</a><br /></td></tr>
<tr class="separator:a0205c1cb83c849b1f47dab55ad6ada5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa415e372a9d64eede869ed98666c29c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#afa415e372a9d64eede869ed98666c29c">SolutionBooleanValue</a> (const CpSolverResponse &amp;r, BoolVar x)</td></tr>
<tr class="memdesc:afa415e372a9d64eede869ed98666c29c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates the value of a Boolean literal in a solver response. <a href="namespaceoperations__research_1_1sat.html#afa415e372a9d64eede869ed98666c29c">More...</a><br /></td></tr>
<tr class="separator:afa415e372a9d64eede869ed98666c29c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
</div>
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>