<ahref="cp__model_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">// Copyright 2010-2018 Google LLC</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment">// you may not use this file except in compliance with the License.</span></div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment">// You may obtain a copy of the License at</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment">// Unless required by applicable law or agreed to in writing, software</span></div><divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// See the License for the specific language governing permissions and</span></div><divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment">// limitations under the License.</span></div><divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> </div><divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="comment">// This file implements a wrapper around the CP-SAT model proto.</span></div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment">// Here is a minimal example that shows how to create a model, solve it, and</span></div><divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment">// print out the solution.</span></div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment">// CpModelBuilder cp_model;</span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="comment">// Domain all_animals(0, 20);</span></div><divclass="line"><aname="l00021"></a><spanclass="lineno"> 21</span> <spanclass="comment">// IntVar rabbits = cp_model.NewIntVar(all_animals).WithName("rabbits");</span></div><divclass="line"><aname="l00022"></a><spanclass="lineno"> 22</span> <spanclass="comment">// IntVar pheasants = cp_model.NewIntVar(all_animals).WithName("pheasants");</span></div><divclass="line"><aname="l00023"></a><spanclass="lineno"> 23</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00024"></a><spanclass="lineno"> 24</span> <spanclass="comment">// cp_model.AddEquality(LinearExpr::Sum({rabbits, pheasants}), 20);</span></div><divclass="line"><aname="l00025"></a><spanclass="lineno"> 25</span> <spanclass="comment">// cp_model.AddEquality(LinearExpr::ScalProd({rabbits, pheasants}, {4, 2}), 56);</span></div><divclass="line"><aname="l00026"></a><spanclass="lineno"> 26</s
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_acf4c5429ec08207e147b65bd1330ba92"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#acf4c5429ec08207e147b65bd1330ba92">operations_research::sat::CpModelBuilder::AddGreaterThan</a></div><divclass="ttdeci">Constraint AddGreaterThan(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left > right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a0887a2fe4518bde7bbde18f592b6243f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a0887a2fe4518bde7bbde18f592b6243f">operations_research::sat::CpModelBuilder::NewIntVar</a></div><divclass="ttdeci">IntVar NewIntVar(const Domain &domain)</div><divclass="ttdoc">Creates an integer variable with the given domain.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_ae8bd984917b305dc49abae6c19b69ea3"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#ae8bd984917b305dc49abae6c19b69ea3">operations_research::sat::CpModelBuilder::AddBoolOr</a></div><divclass="ttdeci">Constraint AddBoolOr(absl::Span< const BoolVar > literals)</div><divclass="ttdoc">Adds the constraint that at least one of the literals must be true.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a3559ac1f9f840b2d5637f1d26cd18f0b"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a3559ac1f9f840b2d5637f1d26cd18f0b">operations_research::sat::CpModelBuilder::Maximize</a></div><divclass="ttdeci">void Maximize(const LinearExpr &expr)</div><divclass="ttdoc">Adds a linear maximization objective.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1AutomatonConstraint_html_a4fa8634eeba27c91397c58105ff50eb7"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1AutomatonConstraint.html#a4fa8634eeba27c91397c58105ff50eb7">operations_research::sat::AutomatonConstraint::AddTransition</a></div><divclass="ttdeci">void AddTransition(int tail, int head, int64 transition_label)</div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_a9c0ae0d048a431656985fc79428bbe67"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#a9c0ae0d048a431656985fc79428bbe67">operations_research::sat::operator<<</a></div><divclass="ttdeci">std::ostream & operator<<(std::ostream &os, const BoolVar &var)</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1Constraint_html_a9401ab195650160402df5b61f8ac9bda"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1Constraint.html#a9401ab195650160402df5b61f8ac9bda">operations_research::sat::Constraint::WithName</a></div><divclass="ttdeci">Constraint WithName(const std::string &name)</div><divclass="ttdoc">Sets the name of the constraint.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_af5805ba35a6efa9460c5d8eab8301172"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#af5805ba35a6efa9460c5d8eab8301172">operations_research::sat::LinearExpr::variables</a></div><divclass="ttdeci">const std::vector< IntVar >& variables() const</div><divclass="ttdoc">Useful for testing.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00246">cp_model.h:246</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1Constraint_html_aa0b277df64333f670b66c8d5295b8250"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1Constraint.html#aa0b277df64333f670b66c8d5295b8250">operations_research::sat::Constraint::Proto</a></div><divclass="ttdeci">const ConstraintProto & Proto() const</div><divclass="ttdoc">Useful for testing.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00367">cp_model.h:367</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntegerVariableProto_html_a5ae2400b8a1bbf76d789a2dfd6dcfcee"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntegerVariableProto.html#a5ae2400b8a1bbf76d789a2dfd6dcfcee">operations_research::sat::IntegerVariableProto::name</a></div><divclass="ttdeci">const std::string & name() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8pb_8h_source.html#l04475">cp_model.pb.h:4475</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1ReservoirConstraint_html_aad9028f0c33c7d4799891b9f742148b6"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1ReservoirConstraint.html#aad9028f0c33c7d4799891b9f742148b6">operations_research::sat::ReservoirConstraint::AddOptionalEvent</a></div><divclass="ttdeci">void AddOptionalEvent(IntVar time, int64 demand, BoolVar is_active)</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a43ca3f9c073ea5078c1abd3bb0c563d4"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a43ca3f9c073ea5078c1abd3bb0c563d4">operations_research::sat::CpModelBuilder::AddImplication</a></div><divclass="ttdeci">Constraint AddImplication(BoolVar a, BoolVar b)</div><divclass="ttdoc">Adds a => b.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00507">cp_model.h:507</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1Constraint_html_acaa17b2fbfd62f6845329ae944835654"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1Constraint.html#acaa17b2fbfd62f6845329ae944835654">operations_research::sat::Constraint::MutableProto</a></div><divclass="ttdeci">ConstraintProto * MutableProto() const</div><divclass="ttdoc">Useful for model edition.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00370">cp_model.h:370</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_a6228ce653636516ab2b2f760aa61a57e"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#a6228ce653636516ab2b2f760aa61a57e">operations_research::sat::IntervalVar::StartVar</a></div><divclass="ttdeci">IntVar StartVar() const</div><divclass="ttdoc">Returns the start variable.</div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_a671200a31003492dbef21f2b4ee3dcbd"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#a671200a31003492dbef21f2b4ee3dcbd">operations_research::sat::SolutionIntegerMin</a></div><divclass="ttdeci">int64 SolutionIntegerMin(const CpSolverResponse &r, IntVar x)</div><divclass="ttdoc">Returns the min of an integer variable in a solution.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_abd73201c6fbc455ca4783ff99ca2eed1"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#abd73201c6fbc455ca4783ff99ca2eed1">operations_research::sat::CpModelBuilder::AddModuloEquality</a></div><divclass="ttdeci">Constraint AddModuloEquality(IntVar target, IntVar var, IntVar mod)</div><divclass="ttdoc">Adds target = var % mod.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html">operations_research::sat::CpModelBuilder</a></div><divclass="ttdoc">Wrapper class around the cp_model proto.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00473">cp_model.h:473</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_ac86513192443e57e505b8e8c9ffb77f2"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#ac86513192443e57e505b8e8c9ffb77f2">operations_research::sat::IntervalVar::EndVar</a></div><divclass="ttdeci">IntVar EndVar() const</div><divclass="ttdoc">Returns the end variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_a4d10907c6da83ee20c29312f1064361f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#a4d10907c6da83ee20c29312f1064361f">operations_research::sat::IntervalVar::MutableProto</a></div><divclass="ttdeci">IntervalConstraintProto * MutableProto() const</div><divclass="ttdoc">Useful for model edition.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00314">cp_model.h:314</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a0c391768bc423a43875a7867ee247a4b"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a0c391768bc423a43875a7867ee247a4b">operations_research::sat::CpModelBuilder::AddInverseConstraint</a></div><divclass="ttdeci">Constraint AddInverseConstraint(absl::Span< const IntVar > variables, absl::Span< const IntVar > inverse_variables)</div><divclass="ttdoc">An inverse constraint enforces that if 'variables[i]' is assigned a value 'j', then inverse_variables...</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a791f54d4afefc05d6462fa9a9f1f304d"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a791f54d4afefc05d6462fa9a9f1f304d">operations_research::sat::CpModelBuilder::Proto</a></div><divclass="ttdeci">const CpModelProto & Proto() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00686">cp_model.h:686</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html">operations_research::sat::LinearExpr</a></div><divclass="ttdoc">A dedicated container for linear expressions.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00208">cp_model.h:208</a></div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_a8ec893fa736de5b95135ecb9314ee6d8"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#a8ec893fa736de5b95135ecb9314ee6d8">operations_research::sat::SolutionIntegerMax</a></div><divclass="ttdeci">int64 SolutionIntegerMax(const CpSolverResponse &r, IntVar x)</div><divclass="ttdoc">Returns the max of an integer variable in a solution.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a4d0cfb231f4bed2420d0aff928f3a980"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a4d0cfb231f4bed2420d0aff928f3a980">operations_research::sat::CpModelBuilder::AddDecisionStrategy</a></div><divclass="ttdeci">void AddDecisionStrategy(absl::Span< const IntVar > variables, DecisionStrategyProto::VariableSelectionStrategy var_strategy, DecisionStrategyProto::DomainReductionStrategy domain_strategy)</div><divclass="ttdoc">Adds a decision strategy on a list of integer variables.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_a74026647307b38916135e8c3dad3421f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#a74026647307b38916135e8c3dad3421f">operations_research::sat::LinearExpr::Sum</a></div><divclass="ttdeci">static LinearExpr Sum(absl::Span< const IntVar > vars)</div><divclass="ttdoc">Constructs the sum of a list of variables.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_ad5ec615a9107ebcb8a7516bb3ccfbcd2"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#ad5ec615a9107ebcb8a7516bb3ccfbcd2">operations_research::sat::CpModelBuilder::AddCircuitConstraint</a></div><divclass="ttdeci">CircuitConstraint AddCircuitConstraint()</div><divclass="ttdoc">Adds a circuit constraint.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a3088d984ab4874140f7c367dc457ac0f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a3088d984ab4874140f7c367dc457ac0f">operations_research::sat::CpModelBuilder::AddBoolAnd</a></div><divclass="ttdeci">Constraint AddBoolAnd(absl::Span< const BoolVar > literals)</div><divclass="ttdoc">Adds the constraint that all literals must be true.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a8fc4a0c717f985687d63a586dba04641"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a8fc4a0c717f985687d63a586dba04641">operations_research::sat::CpModelBuilder::NewBoolVar</a></div><divclass="ttdeci">BoolVar NewBoolVar()</div><divclass="ttdoc">Creates a Boolean variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a9a53531099bebddbf54dd15418817326"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a9a53531099bebddbf54dd15418817326">operations_research::sat::CpModelBuilder::FalseVar</a></div><divclass="ttdeci">BoolVar FalseVar()</div><divclass="ttdoc">Creates an always false Boolean variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_a8391a20c25890ccbf3f5e3982afed236"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#a8391a20c25890ccbf3f5e3982afed236">operations_research::sat::BoolVar::SolutionBooleanValue</a></div><divclass="ttdeci">friend bool SolutionBooleanValue(const CpSolverResponse &r, BoolVar x)</div><divclass="ttdoc">Returns the value of a Boolean literal (a Boolean variable or its negation) in a solver response.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a6620906cabb980393d9433df9a7f7b70"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a6620906cabb980393d9433df9a7f7b70">operations_research::sat::CpModelBuilder::AddCumulative</a></div><divclass="ttdeci">CumulativeConstraint AddCumulative(IntVar capacity)</div><divclass="ttdoc">The cumulative constraint ensures that for any integer point, the sum of the demands of the intervals...</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_adffb8e57735762a6f321279f2e60ae65"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#adffb8e57735762a6f321279f2e60ae65">operations_research::sat::CpModelBuilder::AddDivisionEquality</a></div><divclass="ttdeci">Constraint AddDivisionEquality(IntVar target, IntVar numerator, IntVar denominator)</div><divclass="ttdoc">Adds target = num / denom (integer division rounded towards 0).</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html">operations_research::sat::IntervalVar</a></div><divclass="ttdoc">Represents a Interval variable.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00275">cp_model.h:275</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_a34c3fc0d93697326a7e398cd45b1374d"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#a34c3fc0d93697326a7e398cd45b1374d">operations_research::sat::IntervalVar::Proto</a></div><divclass="ttdeci">const IntervalConstraintProto & Proto() const</div><divclass="ttdoc">Useful for testing.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00309">cp_model.h:309</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a5f1761c6d2c5f7908f5f92bb16b91de9"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a5f1761c6d2c5f7908f5f92bb16b91de9">operations_research::sat::IntVar::WithName</a></div><divclass="ttdeci">IntVar WithName(const std::string &name)</div><divclass="ttdoc">Sets the name of the variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_a1963637fcd9bfe8f9bd85a0971c0270d"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#a1963637fcd9bfe8f9bd85a0971c0270d">operations_research::sat::BoolVar::WithName</a></div><divclass="ttdeci">BoolVar WithName(const std::string &name)</div><divclass="ttdoc">Sets the name of the variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1ReservoirConstraint_html_aff0e9a5c156c176def60cf2985919bd6"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1ReservoirConstraint.html#aff0e9a5c156c176def60cf2985919bd6">operations_research::sat::ReservoirConstraint::AddEvent</a></div><divclass="ttdeci">void AddEvent(IntVar time, int64 demand)</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a7a718730caef4f258e1cbbb2e3e3b452"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a7a718730caef4f258e1cbbb2e3e3b452">operations_research::sat::CpModelBuilder::AddGreaterOrEqual</a></div><divclass="ttdeci">Constraint AddGreaterOrEqual(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left >= right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_aa5cc77b54d51bda6a6c8e30907b9a917"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#aa5cc77b54d51bda6a6c8e30907b9a917">operations_research::sat::IntervalVar::PresenceBoolVar</a></div><divclass="ttdeci">BoolVar PresenceBoolVar() const</div><divclass="ttdoc">Returns a BoolVar indicating the presence of this interval.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_ac591e644d995d2520e859ee639695754"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#ac591e644d995d2520e859ee639695754">operations_research::sat::IntervalVar::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the interval constraint in the model.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00319">cp_model.h:319</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a605cc0b904f4d9b2de5fffbf6fa40c68"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a605cc0b904f4d9b2de5fffbf6fa40c68">operations_research::sat::CpModelBuilder::AddAllDifferent</a></div><divclass="ttdeci">Constraint AddAllDifferent(absl::Span< const IntVar > vars)</div><divclass="ttdoc">this constraint forces all variables to have different values.</div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_a5e3de118c1f8dd5a7ec21704e05684b9"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#a5e3de118c1f8dd5a7ec21704e05684b9">operations_research::sat::Not</a></div><divclass="ttdeci">BoolVar Not(BoolVar x)</div><divclass="ttdoc">A convenient wrapper so we can write Not(x) instead of x.Not() which is sometimes clearer.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_ac93a7c7467278afb9eac2bb4a8dec6d3"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#ac93a7c7467278afb9eac2bb4a8dec6d3">operations_research::sat::CpModelBuilder::ScaleObjectiveBy</a></div><divclass="ttdeci">void ScaleObjectiveBy(double scaling)</div><divclass="ttdoc">Sets scaling of the objective.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a8e1b64644f124be491431bbae9d5d843"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a8e1b64644f124be491431bbae9d5d843">operations_research::sat::CpModelBuilder::Build</a></div><divclass="ttdeci">const CpModelProto & Build() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00684">cp_model.h:684</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a79061f94ca7a97d0616f8b270358c771"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a79061f94ca7a97d0616f8b270358c771">operations_research::sat::IntVar::SolutionIntegerMax</a></div><divclass="ttdeci">friend int64 SolutionIntegerMax(const CpSolverResponse &r, IntVar x)</div><divclass="ttdoc">Returns the max of an integer variable in a solution.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a7cf9ff9df25ff433286b4f5bda41f990"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a7cf9ff9df25ff433286b4f5bda41f990">operations_research::sat::CpModelBuilder::AddLessThan</a></div><divclass="ttdeci">Constraint AddLessThan(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left < right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1Constraint_html_aeaf30f4ee7d141e68905f1ac2432b937"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1Constraint.html#aeaf30f4ee7d141e68905f1ac2432b937">operations_research::sat::Constraint::Name</a></div><divclass="ttdeci">const std::string & Name() const</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_aa8460c813c17ec5b7a137739c448bb98"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#aa8460c813c17ec5b7a137739c448bb98">operations_research::sat::IntVar::Name</a></div><divclass="ttdeci">const std::string & Name() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00134">cp_model.h:134</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_adac551c8b80fc7bdd7b30779fd20a4ea"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#adac551c8b80fc7bdd7b30779fd20a4ea">operations_research::sat::CpModelBuilder::NewConstant</a></div><divclass="ttdeci">IntVar NewConstant(int64 value)</div><divclass="ttdoc">Creates a constant variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a8ec929aea42c9e50e2f1daf56525e379"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a8ec929aea42c9e50e2f1daf56525e379">operations_research::sat::IntVar::SolutionIntegerMin</a></div><divclass="ttdeci">friend int64 SolutionIntegerMin(const CpSolverResponse &r, IntVar x)</div><divclass="ttdoc">Returns the min of an integer variable in a solution.</div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_afa415e372a9d64eede869ed98666c29c"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#afa415e372a9d64eede869ed98666c29c">operations_research::sat::SolutionBooleanValue</a></div><divclass="ttdeci">bool SolutionBooleanValue(const CpSolverResponse &r, BoolVar x)</div><divclass="ttdoc">Returns the value of a Boolean literal (a Boolean variable or its negation) in a solver response.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a18d2ca2be01dd3e67893f4e1dbe4af43"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a18d2ca2be01dd3e67893f4e1dbe4af43">operations_research::sat::CpModelBuilder::AddBoolXor</a></div><divclass="ttdeci">Constraint AddBoolXor(absl::Span< const BoolVar > literals)</div><divclass="ttdoc">Adds the constraint that a odd number of literal is true.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a64bd6fadf44a9840c837cc701b2b9043"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a64bd6fadf44a9840c837cc701b2b9043">operations_research::sat::IntVar::SolutionIntegerValue</a></div><divclass="ttdeci">friend int64 SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)</div><divclass="ttdoc">Evaluates the value of an linear expression in a solver response.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_abcebeff89abbdb6b0b812616f1517f25"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#abcebeff89abbdb6b0b812616f1517f25">operations_research::sat::BoolVar::Name</a></div><divclass="ttdeci">const std::string & Name() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00066">cp_model.h:66</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a7d05d91ffdd70f16ad170e25fd47e200"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a7d05d91ffdd70f16ad170e25fd47e200">operations_research::sat::CpModelBuilder::AddAllowedAssignments</a></div><divclass="ttdeci">TableConstraint AddAllowedAssignments(absl::Span< const IntVar > vars)</div><divclass="ttdoc">Adds an allowed assignments constraint.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_a3b49fe9924ad61a609f65f4a7bc4c861"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#a3b49fe9924ad61a609f65f4a7bc4c861">operations_research::sat::LinearExpr::ScalProd</a></div><divclass="ttdeci">static LinearExpr ScalProd(absl::Span< const IntVar > vars, absl::Span< const int64 > coeffs)</div><divclass="ttdoc">Constructs the scalar product of variables and coefficients.</div></div>
<divclass="ttc"id="namespaceoperations__research_1_1sat_html_aeaed9bdf2a27bb778ba397666cb874d7"><divclass="ttname"><ahref="namespaceoperations__research_1_1sat.html#aeaed9bdf2a27bb778ba397666cb874d7">operations_research::sat::SolutionIntegerValue</a></div><divclass="ttdeci">int64 SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)</div><divclass="ttdoc">Evaluates the value of an linear expression in a solver response.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_a379713d334c199eeb834c338385293ba"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#a379713d334c199eeb834c338385293ba">operations_research::sat::BoolVar::Proto</a></div><divclass="ttdeci">const IntegerVariableProto & Proto() const</div><divclass="ttdoc">Useful for testing.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00082">cp_model.h:82</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a0faf578c69fe9ae80ee0ea9f671dc5e7"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a0faf578c69fe9ae80ee0ea9f671dc5e7">operations_research::sat::CpModelBuilder::Minimize</a></div><divclass="ttdeci">void Minimize(const LinearExpr &expr)</div><divclass="ttdoc">Adds a linear minimization objective.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_aa8bfd52517f0e1ca2a9adef474f1ff0c"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#aa8bfd52517f0e1ca2a9adef474f1ff0c">operations_research::sat::LinearExpr::AddTerm</a></div><divclass="ttdeci">void AddTerm(IntVar var, int64 coeff)</div><divclass="ttdoc">Adds a term (var * coeff) to the linear expression.</div></div>
<divclass="ttc"id="classoperations__research_1_1Domain_html"><divclass="ttname"><ahref="classoperations__research_1_1Domain.html">operations_research::Domain</a></div><divclass="ttdoc">We call "domain" any subset of Int64 = [kint64min, kint64max].</div><divclass="ttdef"><b>Definition:</b><ahref="sorted__interval__list_8h_source.html#l00070">sorted_interval_list.h:70</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_abed3c016b025d92058b1c29ddeef9341"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#abed3c016b025d92058b1c29ddeef9341">operations_research::sat::LinearExpr::AddConstant</a></div><divclass="ttdeci">LinearExpr & AddConstant(int64 value)</div><divclass="ttdoc">Adds a constant value to the linear expression.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_ae7e96dfb8ae534a787632d78711f9a44"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#ae7e96dfb8ae534a787632d78711f9a44">operations_research::sat::BoolVar::MutableProto</a></div><divclass="ttdeci">IntegerVariableProto * MutableProto() const</div><divclass="ttdoc">Useful for model edition.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00087">cp_model.h:87</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a5738c98c07c2e0ec747877eb3813a134"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a5738c98c07c2e0ec747877eb3813a134">operations_research::sat::CpModelBuilder::AddAutomaton</a></div><divclass="ttdeci">AutomatonConstraint AddAutomaton(absl::Span< const IntVar > transition_variables, int starting_state, absl::Span< const int > final_states)</div><divclass="ttdoc">An automaton constraint takes a list of variables (of size n), an initial state, a set of final state...</div></div>
<divclass="ttc"id="namespaceoperations__research_html"><divclass="ttname"><ahref="namespaceoperations__research.html">operations_research</a></div><divclass="ttdoc">Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in c...</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00048">cp_model.h:48</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a10d61bc6bc9584cadfc0b87537ada9eb"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a10d61bc6bc9584cadfc0b87537ada9eb">operations_research::sat::CpModelBuilder::AddNoOverlap2D</a></div><divclass="ttdeci">NoOverlap2DConstraint AddNoOverlap2D()</div><divclass="ttdoc">The no_overlap_2d constraint prevents a set of boxes from overlapping.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntervalVar_html_a1b7333dffeb56f1cffe35973cab19dd1"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntervalVar.html#a1b7333dffeb56f1cffe35973cab19dd1">operations_research::sat::IntervalVar::WithName</a></div><divclass="ttdeci">IntervalVar WithName(const std::string &name)</div><divclass="ttdoc">Sets the name of the variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_a27d52277902e0d08306697a43863b5e8"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#a27d52277902e0d08306697a43863b5e8">operations_research::sat::BoolVar::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the variable in the model.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00093">cp_model.h:93</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a426492195e6cdd88354def292ffa112f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a426492195e6cdd88354def292ffa112f">operations_research::sat::IntVar::Proto</a></div><divclass="ttdeci">const IntegerVariableProto & Proto() const</div><divclass="ttdoc">Useful for testing.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00147">cp_model.h:147</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a89c4590eaf404f0ef3b80d4ce584fbda"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a89c4590eaf404f0ef3b80d4ce584fbda">operations_research::sat::CpModelBuilder::AddNoOverlap</a></div><divclass="ttdeci">Constraint AddNoOverlap(absl::Span< const IntervalVar > vars)</div><divclass="ttdoc">Adds a constraint than ensures that all present intervals do not overlap in time.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_a68349a30f6936d8f5a3d00d342ec5f3a"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#a68349a30f6936d8f5a3d00d342ec5f3a">operations_research::sat::IntVar::MutableProto</a></div><divclass="ttdeci">IntegerVariableProto * MutableProto() const</div><divclass="ttdoc">Useful for model edition.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00152">cp_model.h:152</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a001974a3f1f5e9d791ae10cd435f07cf"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a001974a3f1f5e9d791ae10cd435f07cf">operations_research::sat::CpModelBuilder::AddVariableElement</a></div><divclass="ttdeci">Constraint AddVariableElement(IntVar index, absl::Span< const IntVar > variables, IntVar target)</div><divclass="ttdoc">Adds the element constraint: variables[index] == target.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_ad941d4f0156fc746c4ed12790bce7af7"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#ad941d4f0156fc746c4ed12790bce7af7">operations_research::sat::CpModelBuilder::AddEquality</a></div><divclass="ttdeci">Constraint AddEquality(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left == right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a4f1c8c11f9f840728e5c037249192b8f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a4f1c8c11f9f840728e5c037249192b8f">operations_research::sat::CpModelBuilder::AddLessOrEqual</a></div><divclass="ttdeci">Constraint AddLessOrEqual(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left <= right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_a0a6ff6ac94b7e556ff06df6f8211182f"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#a0a6ff6ac94b7e556ff06df6f8211182f">operations_research::sat::LinearExpr::BooleanSum</a></div><divclass="ttdeci">static LinearExpr BooleanSum(absl::Span< const BoolVar > vars)</div><divclass="ttdoc">Constructs the sum of a list of Booleans.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_aa64c33dd1487bf4f0d575edf33ef2dc9"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#aa64c33dd1487bf4f0d575edf33ef2dc9">operations_research::sat::CpModelBuilder::AddNotEqual</a></div><divclass="ttdeci">Constraint AddNotEqual(const LinearExpr &left, const LinearExpr &right)</div><divclass="ttdoc">Adds left != right.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1LinearExpr_html_afb9c31fb1176a9ba22d4b82fa285a5c7"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1LinearExpr.html#afb9c31fb1176a9ba22d4b82fa285a5c7">operations_research::sat::LinearExpr::AddVar</a></div><divclass="ttdeci">void AddVar(IntVar var)</div><divclass="ttdoc">Adds a single integer variable to the linear expression.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1ConstraintProto_html_ade0baf9bbe5b09d470ab30ae8b730cc4"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1ConstraintProto.html#ade0baf9bbe5b09d470ab30ae8b730cc4">operations_research::sat::ConstraintProto::interval</a></div><divclass="ttdeci">const ::operations_research::sat::IntervalConstraintProto & interval() const</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8pb_8h_source.html#l06679">cp_model.pb.h:6679</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1CpModelBuilder_html_a6dc655a67c5213fcefb82a213dac5e2c"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1CpModelBuilder.html#a6dc655a67c5213fcefb82a213dac5e2c">operations_research::sat::CpModelBuilder::TrueVar</a></div><divclass="ttdeci">BoolVar TrueVar()</div><divclass="ttdoc">Creates an always true Boolean variable.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1Constraint_html_a9052e9e1dd8248433909b5542f314add"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1Constraint.html#a9052e9e1dd8248433909b5542f314add">operations_research::sat::Constraint::OnlyEnforceIf</a></div><divclass="ttdeci">Constraint OnlyEnforceIf(absl::Span< const BoolVar > literals)</div><divclass="ttdoc">The constraint will be enforced iff all literals listed here are true.</div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1IntVar_html_ade91cda36a02fffbd115f1ec65746af1"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1IntVar.html#ade91cda36a02fffbd115f1ec65746af1">operations_research::sat::IntVar::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the variable in the model.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00157">cp_model.h:157</a></div></div>
<divclass="ttc"id="classoperations__research_1_1sat_1_1BoolVar_html_ac5a3346c2302559c71bd9cd1e989edf9"><divclass="ttname"><ahref="classoperations__research_1_1sat_1_1BoolVar.html#ac5a3346c2302559c71bd9cd1e989edf9">operations_research::sat::BoolVar::Not</a></div><divclass="ttdeci">BoolVar Not() const</div><divclass="ttdoc">Returns the logical negation of the current Boolean variable.</div><divclass="ttdef"><b>Definition:</b><ahref="cp__model_8h_source.html#l00069">cp_model.h:69</a></div></div>