161 lines
19 KiB
HTML
161 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"/>-->
|
|
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="banner-container">
|
|
<div id="banner">
|
|
<span id="sfml">Google OR-Tools 7.5</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.16 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_a7cc1eeded8f693d0da6c729bc88c45a.html">ortools</a></li><li class="navelem"><a class="el" href="dir_dddac007a45022d9da6ea1dee012c3b9.html">sat</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#namespaces">Namespaces</a> |
|
|
<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">"rabbits"</span>);</div>
|
|
<div class="line">IntVar pheasants = cp_model.NewIntVar(all_animals).WithName(<span class="stringliteral">"pheasants"</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) << <a class="code" href="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">SolutionIntegerValue</a>(response, rabbits)</div>
|
|
<div class="line"> << <span class="stringliteral">" rabbits, and "</span> << <a class="code" href="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">SolutionIntegerValue</a>(response, pheasants)</div>
|
|
<div class="line"> << <span class="stringliteral">" pheasants."</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  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1BoolVar.html">BoolVar</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A Boolean variable. <a href="classoperations__research_1_1sat_1_1BoolVar.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1IntVar.html">IntVar</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An integer variable. <a href="classoperations__research_1_1sat_1_1IntVar.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1LinearExpr.html">LinearExpr</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A dedicated container for linear expressions. <a href="classoperations__research_1_1sat_1_1LinearExpr.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1IntervalVar.html">IntervalVar</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents a Interval variable. <a href="classoperations__research_1_1sat_1_1IntervalVar.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1Constraint.html">Constraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A constraint. <a href="classoperations__research_1_1sat_1_1Constraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1CircuitConstraint.html">CircuitConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized circuit constraint. <a href="classoperations__research_1_1sat_1_1CircuitConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1MultipleCircuitConstraint.html">MultipleCircuitConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized circuit constraint. <a href="classoperations__research_1_1sat_1_1MultipleCircuitConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1TableConstraint.html">TableConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized assignment constraint. <a href="classoperations__research_1_1sat_1_1TableConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1ReservoirConstraint.html">ReservoirConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized reservoir constraint. <a href="classoperations__research_1_1sat_1_1ReservoirConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1AutomatonConstraint.html">AutomatonConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized automaton constraint. <a href="classoperations__research_1_1sat_1_1AutomatonConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1NoOverlap2DConstraint.html">NoOverlap2DConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized no_overlap2D constraint. <a href="classoperations__research_1_1sat_1_1NoOverlap2DConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1CumulativeConstraint.html">CumulativeConstraint</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialized cumulative constraint. <a href="classoperations__research_1_1sat_1_1CumulativeConstraint.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1sat_1_1CpModelBuilder.html">CpModelBuilder</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper class around the cp_model proto. <a href="classoperations__research_1_1sat_1_1CpModelBuilder.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </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">  </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"> </td></tr>
|
|
<tr class="memitem:namespaceoperations__research_1_1sat"><td class="memItemLeft" align="right" valign="top">  </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"> </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 & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a9c0ae0d048a431656985fc79428bbe67">operator<<</a> (std::ostream &os, const BoolVar &var)</td></tr>
|
|
<tr class="separator:a9c0ae0d048a431656985fc79428bbe67"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5e3de118c1f8dd5a7ec21704e05684b9"><td class="memItemLeft" align="right" valign="top">BoolVar </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"> </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"> </td></tr>
|
|
<tr class="memitem:a57b8aabbc5b3c1d177d35b3ebcf9b5fa"><td class="memItemLeft" align="right" valign="top">std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a57b8aabbc5b3c1d177d35b3ebcf9b5fa">operator<<</a> (std::ostream &os, const IntVar &var)</td></tr>
|
|
<tr class="separator:a57b8aabbc5b3c1d177d35b3ebcf9b5fa"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae9f86b31794751c624a783d15306280c"><td class="memItemLeft" align="right" valign="top">std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#ae9f86b31794751c624a783d15306280c">operator<<</a> (std::ostream &os, const IntervalVar &var)</td></tr>
|
|
<tr class="separator:ae9f86b31794751c624a783d15306280c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aeaed9bdf2a27bb778ba397666cb874d7"><td class="memItemLeft" align="right" valign="top">int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">SolutionIntegerValue</a> (const CpSolverResponse &r, const LinearExpr &expr)</td></tr>
|
|
<tr class="memdesc:aeaed9bdf2a27bb778ba397666cb874d7"><td class="mdescLeft"> </td><td class="mdescRight">Evaluates the value of an linear expression in a solver response. <a href="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">More...</a><br /></td></tr>
|
|
<tr class="separator:aeaed9bdf2a27bb778ba397666cb874d7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a671200a31003492dbef21f2b4ee3dcbd"><td class="memItemLeft" align="right" valign="top">int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a671200a31003492dbef21f2b4ee3dcbd">SolutionIntegerMin</a> (const CpSolverResponse &r, IntVar x)</td></tr>
|
|
<tr class="memdesc:a671200a31003492dbef21f2b4ee3dcbd"><td class="mdescLeft"> </td><td class="mdescRight">Returns the min of an integer variable in a solution. <a href="namespaceoperations__research_1_1sat.html#a671200a31003492dbef21f2b4ee3dcbd">More...</a><br /></td></tr>
|
|
<tr class="separator:a671200a31003492dbef21f2b4ee3dcbd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8ec893fa736de5b95135ecb9314ee6d8"><td class="memItemLeft" align="right" valign="top">int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#a8ec893fa736de5b95135ecb9314ee6d8">SolutionIntegerMax</a> (const CpSolverResponse &r, IntVar x)</td></tr>
|
|
<tr class="memdesc:a8ec893fa736de5b95135ecb9314ee6d8"><td class="mdescLeft"> </td><td class="mdescRight">Returns the max of an integer variable in a solution. <a href="namespaceoperations__research_1_1sat.html#a8ec893fa736de5b95135ecb9314ee6d8">More...</a><br /></td></tr>
|
|
<tr class="separator:a8ec893fa736de5b95135ecb9314ee6d8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afa415e372a9d64eede869ed98666c29c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoperations__research_1_1sat.html#afa415e372a9d64eede869ed98666c29c">SolutionBooleanValue</a> (const CpSolverResponse &r, BoolVar x)</td></tr>
|
|
<tr class="memdesc:afa415e372a9d64eede869ed98666c29c"><td class="mdescLeft"> </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"> </td></tr>
|
|
</table>
|
|
</div><!-- contents -->
|
|
<div class="ttc" id="anamespaceoperations__research_1_1sat_html_aedc4ddb96acc28481c09828d2e016815a03f919221217f95d21a593a7120165e1"><div class="ttname"><a href="namespaceoperations__research_1_1sat.html#aedc4ddb96acc28481c09828d2e016815a03f919221217f95d21a593a7120165e1">operations_research::sat::FEASIBLE</a></div><div class="ttdef"><b>Definition:</b> <a href="cp__model_8pb_8h_source.html#l00230">cp_model.pb.h:230</a></div></div>
|
|
<div class="ttc" id="anamespaceoperations__research_1_1sat_html_a09d851f944ab4f305c3d9f8df99b7bf8"><div class="ttname"><a href="namespaceoperations__research_1_1sat.html#a09d851f944ab4f305c3d9f8df99b7bf8">operations_research::sat::Solve</a></div><div class="ttdeci">CpSolverResponse Solve(const CpModelProto &model_proto)</div><div class="ttdoc">Solves the given CpModelProto and returns an instance of CpSolverResponse.</div></div>
|
|
<div class="ttc" id="anamespaceoperations__research_1_1sat_html_aeaed9bdf2a27bb778ba397666cb874d7"><div class="ttname"><a href="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">operations_research::sat::SolutionIntegerValue</a></div><div class="ttdeci">int64 SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)</div><div class="ttdoc">Evaluates the value of an linear expression in a solver response.</div></div>
|
|
</div>
|
|
</div>
|
|
<div id="footer-container">
|
|
<div id="footer">
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|