<ahref="linear__solver_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="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="l00170"></a><spanclass="lineno"> 170</span> <spanclass="comment">// There is a homonymous version taking a MPSolver::OptimizationProblemType.</span></div>
<divclass="line"><aname="l00206"></a><spanclass="lineno"> 206</span> <spanclass="comment">// Boolean optimization problem (requires only integer variables and works</span></div>
<divclass="line"><aname="l00207"></a><spanclass="lineno"> 207</span> <spanclass="comment">// best with only Boolean variables).</span></div>
<divclass="line"><aname="l00210"></a><spanclass="lineno"> 210</span> <spanclass="comment">// SAT based solver (requires only integer and Boolean variables).</span></div>
<divclass="line"><aname="l00211"></a><spanclass="lineno"> 211</span> <spanclass="comment">// If you pass it mixed integer problems, it will scale coefficients to</span></div>
<divclass="line"><aname="l00212"></a><spanclass="lineno"> 212</span> <spanclass="comment">// integer values, and solver continuous variables as integral variables.</span></div>
<divclass="line"><aname="l00278"></a><spanclass="lineno"> 278</span> <spanclass="keywordflow">return</span> name_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00283"></a><spanclass="lineno"> 283</span> <spanclass="keywordflow">return</span> problem_type_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00765"></a><spanclass="lineno"> 765</span> <spanclass="comment">// Does not take ownership of "mp_callback".</span></div>
<divclass="line"><aname="l00767"></a><spanclass="lineno"> 767</span> <spanclass="comment">// As of 2019-10-22, only SCIP and Gurobi support Callbacks.</span></div>
<divclass="line"><aname="l00768"></a><spanclass="lineno"> 768</span> <spanclass="comment">// SCIP does not support suggesting a heuristic solution in the callback.</span></div>
<divclass="line"><aname="l00770"></a><spanclass="lineno"> 770</span> <spanclass="comment">// See go/mpsolver-callbacks for additional documentation.</span></div>
<divclass="line"><aname="l00774"></a><spanclass="lineno"> 774</span> <spanclass="comment">// DEPRECATED: Use TimeLimit() and SetTimeLimit(absl::Duration) instead.</span></div>
<divclass="line"><aname="l00775"></a><spanclass="lineno"> 775</span> <spanclass="comment">// NOTE: These deprecated functions used the convention time_limit = 0 to mean</span></div>
<divclass="line"><aname="l00776"></a><spanclass="lineno"> 776</span> <spanclass="comment">// "no limit", which now corresponds to time_limit_ = InfiniteDuration().</span></div>
<divclass="line"><aname="l00814"></a><spanclass="lineno"> 814</span> <spanclass="comment">// Debugging: verify that the given MPVariable* belongs to this solver.</span></div>
<divclass="line"><aname="l00818"></a><spanclass="lineno"> 818</span> <spanclass="comment">// Computes the size of the constraint with the largest number of</span></div>
<divclass="line"><aname="l00819"></a><spanclass="lineno"> 819</span> <spanclass="comment">// coefficients with index in [min_constraint_index,</span></div>
<divclass="line"><aname="l00824"></a><spanclass="lineno"> 824</span> <spanclass="comment">// Returns true if the model has constraints with lower bound > upper bound.</span></div>
<divclass="line"><aname="l00827"></a><spanclass="lineno"> 827</span> <spanclass="comment">// Returns true if the model has at least 1 integer variable.</span></div>
<divclass="line"><aname="l00830"></a><spanclass="lineno"> 830</span> <spanclass="comment">// Generates the map from variable names to their indices.</span></div>
<divclass="line"><aname="l00833"></a><spanclass="lineno"> 833</span> <spanclass="comment">// Generates the map from constraint names to their indices.</span></div>
<divclass="line"><aname="l00840"></a><spanclass="lineno"> 840</span> <spanclass="comment">// The name of the linear programming problem.</span></div>
<divclass="line"><aname="l00843"></a><spanclass="lineno"> 843</span> <spanclass="comment">// The type of the linear programming problem.</span></div>
<divclass="line"><aname="l00851"></a><spanclass="lineno"> 851</span> <spanclass="comment">// A map from a variable's name to its index in variables_.</span></div>
<divclass="line"><aname="l00854"></a><spanclass="lineno"> 854</span> <spanclass="comment">// Whether variables have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00857"></a><spanclass="lineno"> 857</span> <spanclass="comment">// The vector of constraints in the problem.</span></div>
<divclass="line"><aname="l00859"></a><spanclass="lineno"> 859</span> <spanclass="comment">// A map from a constraint's name to its index in constraints_.</span></div>
<divclass="line"><aname="l00862"></a><spanclass="lineno"> 862</span> <spanclass="comment">// Whether constraints have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00868"></a><spanclass="lineno"> 868</span> <spanclass="comment">// Initial values for all or some of the problem variables that can be</span></div>
<divclass="line"><aname="l00869"></a><spanclass="lineno"> 869</span> <spanclass="comment">// exploited as a starting hint by a solver.</span></div>
<divclass="line"><aname="l00871"></a><spanclass="lineno"> 871</span> <spanclass="comment">// Note(user): as of 05/05/2015, we can't use >> because of some SWIG errors.</span></div>
<divclass="line"><aname="l00873"></a><spanclass="lineno"> 873</span> <spanclass="comment">// TODO(user): replace by two vectors, a std::vector<bool> to indicate if a</span></div>
<divclass="line"><aname="l00874"></a><spanclass="lineno"> 874</span> <spanclass="comment">// hint is provided and a std::vector<double> for the hint value.</span></div>
<divclass="line"><aname="l00881"></a><spanclass="lineno"> 881</span> <spanclass="comment">// Permanent storage for the number of threads.</span></div>
<divclass="line"><aname="l00904"></a><spanclass="lineno"> 904</span> <spanclass="keywordflow">return</span> os <<<aclass="code"href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(optimization_problem_type);</div>
<divclass="line"><aname="l00909"></a><spanclass="lineno"> 909</span> <spanclass="keywordflow">return</span> os << ProtoEnumToString<MPSolverResponseStatus>(</div>
<divclass="line"><aname="l01031"></a><spanclass="lineno"> 1031</span> <spanclass="comment">// Constructor. An objective points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l01032"></a><spanclass="lineno"> 1032</span> <spanclass="comment">// that is specified in the constructor. An objective cannot belong</span></div>
<divclass="line"><aname="l01033"></a><spanclass="lineno"> 1033</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l01034"></a><spanclass="lineno"> 1034</span> <spanclass="comment">// At construction, an MPObjective has no terms (which is equivalent</span></div>
<divclass="line"><aname="l01035"></a><spanclass="lineno"> 1035</span> <spanclass="comment">// on having a coefficient of 0 for all variables), and an offset of 0.</span></div>
<divclass="line"><aname="l01140"></a><spanclass="lineno"> 1140</span> <spanclass="comment">// Constructor. A variable points to a single MPSolverInterface that</span></div>
<divclass="line"><aname="l01141"></a><spanclass="lineno"> 1141</span> <spanclass="comment">// is specified in the constructor. A variable cannot belong to</span></div>
<divclass="line"><aname="l01142"></a><spanclass="lineno"> 1142</span> <spanclass="comment">// several models.</span></div>
<divclass="line"><aname="l01281"></a><spanclass="lineno"> 1281</span> <spanclass="comment">// Constructor. A constraint points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l01282"></a><spanclass="lineno"> 1282</span> <spanclass="comment">// that is specified in the constructor. A constraint cannot belong</span></div>
<divclass="line"><aname="l01283"></a><spanclass="lineno"> 1283</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l01299"></a><spanclass="lineno"> 1299</span> <spanclass="comment">// Returns true if the constraint contains variables that have not</span></div>
<divclass="line"><aname="l01300"></a><spanclass="lineno"> 1300</span> <spanclass="comment">// been extracted yet.</span></div>
<divclass="line"><aname="l01308"></a><spanclass="lineno"> 1308</span> <spanclass="comment">// The lower bound for the linear constraint.</span></div>
<divclass="line"><aname="l01311"></a><spanclass="lineno"> 1311</span> <spanclass="comment">// The upper bound for the linear constraint.</span></div>
<divclass="line"><aname="l01317"></a><spanclass="lineno"> 1317</span> <spanclass="comment">// True if the constraint is "lazy", i.e. the constraint is added to the</span></div>
<divclass="line"><aname="l01318"></a><spanclass="lineno"> 1318</span> <spanclass="comment">// underlying Linear Programming solver only if it is violated.</span></div>
<divclass="line"><aname="l01319"></a><spanclass="lineno"> 1319</span> <spanclass="comment">// By default this parameter is 'false'.</span></div>
<divclass="line"><aname="l01322"></a><spanclass="lineno"> 1322</span> <spanclass="comment">// If given, this constraint is only active if `indicator_variable_`'s value</span></div>
<divclass="line"><aname="l01323"></a><spanclass="lineno"> 1323</span> <spanclass="comment">// is equal to `indicator_value_`.</span></div>
<divclass="line"><aname="l01426"></a><spanclass="lineno"> 1426</span> <spanclass="comment">// Placeholder value to indicate that a parameter is set to</span></div>
<divclass="line"><aname="l01427"></a><spanclass="lineno"> 1427</span> <spanclass="comment">// the default value defined in the wrapper.</span></div>
<divclass="line"><aname="l01431"></a><spanclass="lineno"> 1431</span> <spanclass="comment">// Placeholder value to indicate that a parameter is unknown.</span></div>
<divclass="line"><aname="l01435"></a><spanclass="lineno"> 1435</span> <spanclass="comment">// Default values for parameters. Only parameters that define the</span></div>
<divclass="line"><aname="l01436"></a><spanclass="lineno"> 1436</span> <spanclass="comment">// properties of the solution returned need to have a default value</span></div>
<divclass="line"><aname="l01437"></a><spanclass="lineno"> 1437</span> <spanclass="comment">// (that is the same for all solvers). You can also define a default</span></div>
<divclass="line"><aname="l01438"></a><spanclass="lineno"> 1438</span> <spanclass="comment">// value for performance parameters when you are confident it is a</span></div>
<divclass="line"><aname="l01439"></a><spanclass="lineno"> 1439</span> <spanclass="comment">// good choice (example: always turn presolve on).</span></div>
<divclass="line"><aname="l01490"></a><spanclass="lineno"> 1490</span> <spanclass="comment">// Boolean value indicating whether each parameter is set to the</span></div>
<divclass="line"><aname="l01491"></a><spanclass="lineno"> 1491</span> <spanclass="comment">// solver's default value. Only parameters for which the wrapper</span></div>
<divclass="line"><aname="l01492"></a><spanclass="lineno"> 1492</span> <spanclass="comment">// does not define a default value need such an indicator.</span></div>
<divclass="line"><aname="l01498"></a><spanclass="lineno"> 1498</span> <spanclass="comment">// Whether the given MPSolverResponseStatus (of a solve) would yield an RPC</span></div>
<divclass="line"><aname="l01499"></a><spanclass="lineno"> 1499</span> <spanclass="comment">// error when happening on the linear solver stubby server, see</span></div>
<divclass="line"><aname="l01501"></a><spanclass="lineno"> 1501</span> <spanclass="comment">// Note that RPC errors forbid to carry a response to the client, who can only</span></div>
<divclass="line"><aname="l01502"></a><spanclass="lineno"> 1502</span> <spanclass="comment">// see the RPC error itself (error code + error message).</span></div>
<divclass="line"><aname="l01505"></a><spanclass="lineno"> 1505</span> <spanclass="comment">// This class wraps the actual mathematical programming solvers. Each</span></div>
<divclass="line"><aname="l01506"></a><spanclass="lineno"> 1506</span> <spanclass="comment">// solver (GLOP, CLP, CBC, GLPK, SCIP) has its own interface class that</span></div>
<divclass="line"><aname="l01507"></a><spanclass="lineno"> 1507</span> <spanclass="comment">// derives from this abstract class. This class is never directly</span></div>
<divclass="line"><aname="l01508"></a><spanclass="lineno"> 1508</span> <spanclass="comment">// accessed by the user.</span></div>
<divclass="line"><aname="l01517"></a><spanclass="lineno"> 1517</span> <spanclass="comment">// The underlying solver (CLP, GLPK, ...) and MPSolver are not in</span></div>
<divclass="line"><aname="l01518"></a><spanclass="lineno"> 1518</span> <spanclass="comment">// sync for the model nor for the solution.</span></div>
<divclass="line"><aname="l01520"></a><spanclass="lineno"> 1520</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model</span></div>
<divclass="line"><aname="l01521"></a><spanclass="lineno"> 1521</span> <spanclass="comment">// but not for the solution: the model has changed since the</span></div>
<divclass="line"><aname="l01522"></a><spanclass="lineno"> 1522</span> <spanclass="comment">// solution was computed last.</span></div>
<divclass="line"><aname="l01524"></a><spanclass="lineno"> 1524</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model and</span></div>
<divclass="line"><aname="l01525"></a><spanclass="lineno"> 1525</span> <spanclass="comment">// the solution.</span></div>
<divclass="line"><aname="l01529"></a><spanclass="lineno"> 1529</span> <spanclass="comment">// When the underlying solver does not provide the number of simplex</span></div>
<divclass="line"><aname="l01532"></a><spanclass="lineno"> 1532</span> <spanclass="comment">// When the underlying solver does not provide the number of</span></div>
<divclass="line"><aname="l01536"></a><spanclass="lineno"> 1536</span> <spanclass="comment">// Constructor. The user will access the MPSolverInterface through the</span></div>
<divclass="line"><aname="l01537"></a><spanclass="lineno"> 1537</span> <spanclass="comment">// MPSolver passed as argument.</span></div>
<divclass="line"><aname="l01542"></a><spanclass="lineno"> 1542</span> <spanclass="comment">// Solves problem with specified parameter values. Returns true if the</span></div>
<divclass="line"><aname="l01543"></a><spanclass="lineno"> 1543</span> <spanclass="comment">// solution is optimal.</span></div>
<divclass="line"><aname="l01546"></a><spanclass="lineno"> 1546</span> <spanclass="comment">// Directly solves a MPModelRequest, bypassing the MPSolver data structures</span></div>
<divclass="line"><aname="l01547"></a><spanclass="lineno"> 1547</span> <spanclass="comment">// entirely. Returns {} (eg. absl::nullopt) if the feature is not supported by</span></div>
<divclass="line"><aname="l01548"></a><spanclass="lineno"> 1548</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01554"></a><spanclass="lineno"> 1554</span> <spanclass="comment">// Writes the model using the solver internal write function. Currently only</span></div>
<divclass="line"><aname="l01555"></a><spanclass="lineno"> 1555</span> <spanclass="comment">// available for GurobiInterface.</span></div>
<divclass="line"><aname="l01558"></a><spanclass="lineno"> 1558</span> <spanclass="comment">// ----- Model modifications and extraction -----</span></div>
<divclass="line"><aname="l01562"></a><spanclass="lineno"> 1562</span> <spanclass="comment">// Sets the optimization direction (min/max).</span></div>
<divclass="line"><aname="l01565"></a><spanclass="lineno"> 1565</span> <spanclass="comment">// Modifies bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01568"></a><spanclass="lineno"> 1568</span> <spanclass="comment">// Modifies integrality of an extracted variable.</span></div>
<divclass="line"><aname="l01571"></a><spanclass="lineno"> 1571</span> <spanclass="comment">// Modify bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01577"></a><spanclass="lineno"> 1577</span> <spanclass="comment">// Adds an indicator constraint. Returns true if the feature is supported by</span></div>
<divclass="line"><aname="l01578"></a><spanclass="lineno"> 1578</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01592"></a><spanclass="lineno"> 1592</span> <spanclass="comment">// Clears a constraint from all its terms.</span></div>
<divclass="line"><aname="l01595"></a><spanclass="lineno"> 1595</span> <spanclass="comment">// Changes a coefficient in the linear objective.</span></div>
<divclass="line"><aname="l01599"></a><spanclass="lineno"> 1599</span> <spanclass="comment">// Changes the constant term in the linear objective.</span></div>
<divclass="line"><aname="l01602"></a><spanclass="lineno"> 1602</span> <spanclass="comment">// Clears the objective from all its terms.</span></div>
<divclass="line"><aname="l01606"></a><spanclass="lineno"> 1606</span> <spanclass="comment">// ------ Query statistics on the solution and the solve ------</span></div>
<divclass="line"><aname="l01607"></a><spanclass="lineno"> 1607</span> <spanclass="comment">// Returns the number of simplex iterations. The problem must be discrete,</span></div>
<divclass="line"><aname="l01608"></a><spanclass="lineno"> 1608</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfIterations in NDEBUG mode.</span></div>
<divclass="line"><aname="l01610"></a><spanclass="lineno"> 1610</span> <spanclass="comment">// Returns the number of branch-and-bound nodes. The problem must be discrete,</span></div>
<divclass="line"><aname="l01611"></a><spanclass="lineno"> 1611</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfNodes in NDEBUG mode.</span></div>
<divclass="line"><aname="l01613"></a><spanclass="lineno"> 1613</span> <spanclass="comment">// Returns the best objective bound. The problem must be discrete, otherwise</span></div>
<divclass="line"><aname="l01614"></a><spanclass="lineno"> 1614</span> <spanclass="comment">// it crashes, or returns trivial_worst_objective_bound() in NDEBUG mode.</span></div>
<divclass="line"><aname="l01616"></a><spanclass="lineno"> 1616</span> <spanclass="comment">// A trivial objective bound: the worst possible value of the objective,</span></div>
<divclass="line"><aname="l01617"></a><spanclass="lineno"> 1617</span> <spanclass="comment">// which will be +infinity if minimizing and -infinity if maximing.</span></div>
<divclass="line"><aname="l01619"></a><spanclass="lineno"> 1619</span> <spanclass="comment">// Returns the objective value of the best solution found so far.</span></div>
<divclass="line"><aname="l01624"></a><spanclass="lineno"> 1624</span> <spanclass="comment">// Returns the basis status of a constraint.</span></div>
<divclass="line"><aname="l01627"></a><spanclass="lineno"> 1627</span> <spanclass="comment">// Checks whether the solution is synchronized with the model, i.e. whether</span></div>
<divclass="line"><aname="l01628"></a><spanclass="lineno"> 1628</span> <spanclass="comment">// the model has changed since the solution was computed last.</span></div>
<divclass="line"><aname="l01629"></a><spanclass="lineno"> 1629</span> <spanclass="comment">// If it isn't, it crashes in NDEBUG, and returns false othwerwise.</span></div>
<divclass="line"><aname="l01631"></a><spanclass="lineno"> 1631</span> <spanclass="comment">// Checks whether a feasible solution exists. The behavior is similar to</span></div>
<divclass="line"><aname="l01634"></a><spanclass="lineno"> 1634</span> <spanclass="comment">// Handy shortcut to do both checks above (it is often used).</span></div>
<divclass="line"><aname="l01638"></a><spanclass="lineno"> 1638</span> <spanclass="comment">// Checks whether information on the best objective bound exists. The behavior</span></div>
<divclass="line"><aname="l01639"></a><spanclass="lineno"> 1639</span> <spanclass="comment">// is similar to CheckSolutionIsSynchronized() above.</span></div>
<divclass="line"><aname="l01643"></a><spanclass="lineno"> 1643</span> <spanclass="comment">// Queries problem type. For simplicity, the distinction between</span></div>
<divclass="line"><aname="l01644"></a><spanclass="lineno"> 1644</span> <spanclass="comment">// continuous and discrete is based on the declaration of the user</span></div>
<divclass="line"><aname="l01645"></a><spanclass="lineno"> 1645</span> <spanclass="comment">// when the solver is created (example: GLPK_LINEAR_PROGRAMMING</span></div>
<divclass="line"><aname="l01646"></a><spanclass="lineno"> 1646</span> <spanclass="comment">// vs. GLPK_MIXED_INTEGER_PROGRAMMING), not on the actual content of</span></div>
<divclass="line"><aname="l01647"></a><spanclass="lineno"> 1647</span> <spanclass="comment">// the model.</span></div>
<divclass="line"><aname="l01648"></a><spanclass="lineno"> 1648</span> <spanclass="comment">// Returns true if the problem is continuous.</span></div>
<divclass="line"><aname="l01650"></a><spanclass="lineno"> 1650</span> <spanclass="comment">// Returns true if the problem is continuous and linear.</span></div>
<divclass="line"><aname="l01652"></a><spanclass="lineno"> 1652</span> <spanclass="comment">// Returns true if the problem is discrete and linear.</span></div>
<divclass="line"><aname="l01655"></a><spanclass="lineno"> 1655</span> <spanclass="comment">// Returns the index of the last variable extracted.</span></div>
<divclass="line"><aname="l01671"></a><spanclass="lineno"> 1671</span> <spanclass="comment">// Returns the boolean indicating the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01673"></a><spanclass="lineno"> 1673</span> <spanclass="comment">// Sets the boolean indicating the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01676"></a><spanclass="lineno"> 1676</span> <spanclass="comment">// Returns the result status of the last solve.</span></div>
<divclass="line"><aname="l01682"></a><spanclass="lineno"> 1682</span> <spanclass="comment">// Returns a string describing the underlying solver and its version.</span></div>
<divclass="line"><aname="l01688"></a><spanclass="lineno"> 1688</span> <spanclass="comment">// Computes exact condition number. Only available for continuous</span></div>
<divclass="line"><aname="l01689"></a><spanclass="lineno"> 1689</span> <spanclass="comment">// problems and only implemented in GLPK.</span></div>
<divclass="line"><aname="l01696"></a><spanclass="lineno"> 1696</span>  LOG(FATAL) <<<spanclass="stringliteral">"Not supported by this solver."</span>;</div>
<divclass="line"><aname="l01701"></a><spanclass="lineno"> 1701</span> <spanclass="comment">// See MPSolver::NextSolution() for contract.</span></div>
<divclass="line"><aname="l01704"></a><spanclass="lineno"> 1704</span> <spanclass="comment">// See MPSolver::SetCallback() for details.</span></div>
<divclass="line"><aname="l01706"></a><spanclass="lineno"> 1706</span>  LOG(FATAL) <<<spanclass="stringliteral">"Callbacks not supported for this solver."</span>;</div>
<divclass="line"><aname="l01713"></a><spanclass="lineno"> 1713</span> <spanclass="comment">// To access the maximize_ bool and the MPSolver.</span></div>
<divclass="line"><aname="l01719"></a><spanclass="lineno"> 1719</span> <spanclass="comment">// Indicates whether the model and the solution are synchronized.</span></div>
<divclass="line"><aname="l01721"></a><spanclass="lineno"> 1721</span> <spanclass="comment">// Indicates whether the solve has reached optimality,</span></div>
<divclass="line"><aname="l01722"></a><spanclass="lineno"> 1722</span> <spanclass="comment">// infeasibility, a limit, etc.</span></div>
<divclass="line"><aname="l01727"></a><spanclass="lineno"> 1727</span> <spanclass="comment">// Index in MPSolver::variables_ of last constraint extracted.</span></div>
<divclass="line"><aname="l01729"></a><spanclass="lineno"> 1729</span> <spanclass="comment">// Index in MPSolver::constraints_ of last variable extracted.</span></div>
<divclass="line"><aname="l01735"></a><spanclass="lineno"> 1735</span> <spanclass="comment">// Boolean indicator for the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01738"></a><spanclass="lineno"> 1738</span> <spanclass="comment">// Index of dummy variable created for empty constraints or the</span></div>
<divclass="line"><aname="l01744"></a><spanclass="lineno"> 1744</span> <spanclass="comment">// Extracts the variables that have not been extracted yet.</span></div>
<divclass="line"><aname="l01746"></a><spanclass="lineno"> 1746</span> <spanclass="comment">// Extracts the constraints that have not been extracted yet.</span></div>
<divclass="line"><aname="l01752"></a><spanclass="lineno"> 1752</span> <spanclass="comment">// Change synchronization status from SOLUTION_SYNCHRONIZED to</span></div>
<divclass="line"><aname="l01753"></a><spanclass="lineno"> 1753</span> <spanclass="comment">// MODEL_SYNCHRONIZED. To be used for model changes.</span></div>
<divclass="line"><aname="l01756"></a><spanclass="lineno"> 1756</span> <spanclass="comment">// Sets parameters common to LP and MIP in the underlying solver.</span></div>
<divclass="line"><aname="l01758"></a><spanclass="lineno"> 1758</span> <spanclass="comment">// Sets MIP specific parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01760"></a><spanclass="lineno"> 1760</span> <spanclass="comment">// Sets all parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01767"></a><spanclass="lineno"> 1767</span> <spanclass="comment">// Sets a supported double parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01770"></a><spanclass="lineno"> 1770</span> <spanclass="comment">// Sets a supported integer parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01773"></a><spanclass="lineno"> 1773</span> <spanclass="comment">// Sets each parameter in the underlying solver.</span></div>
<divclass="line"><aname="l01779"></a><spanclass="lineno"> 1779</span> <spanclass="comment">// Sets the number of threads to be used by the solver.</span></div>
<divclass="line"><aname="l01782"></a><spanclass="lineno"> 1782</span> <spanclass="comment">// Pass solver specific parameters in text format. The format is</span></div>
<divclass="line"><aname="l01783"></a><spanclass="lineno"> 1783</span> <spanclass="comment">// solver-specific and is the same as the corresponding solver configuration</span></div>
<divclass="line"><aname="l01784"></a><spanclass="lineno"> 1784</span> <spanclass="comment">// file format. Returns true if the operation was successful.</span></div>
<divclass="line"><aname="l01786"></a><spanclass="lineno"> 1786</span> <spanclass="comment">// The default implementation of this method stores the parameters in a</span></div>
<divclass="line"><aname="l01787"></a><spanclass="lineno"> 1787</span> <spanclass="comment">// temporary file and calls ReadParameterFile to import the parameter file</span></div>
<divclass="line"><aname="l01788"></a><spanclass="lineno"> 1788</span> <spanclass="comment">// into the solver. Solvers that support passing the parameters directly can</span></div>
<divclass="line"><aname="l01789"></a><spanclass="lineno"> 1789</span> <spanclass="comment">// override this method to skip the temporary file logic.</span></div>
<divclass="line"><aname="l01793"></a><spanclass="lineno"> 1793</span> <spanclass="comment">// Reads a solver-specific file of parameters and set them.</span></div>
<divclass="line"><aname="l01794"></a><spanclass="lineno"> 1794</span> <spanclass="comment">// Returns true if there was no errors.</span></div>
<divclass="line"><aname="l01797"></a><spanclass="lineno"> 1797</span> <spanclass="comment">// Returns a file extension like ".tmp", this is needed because some solvers</span></div>
<divclass="line"><aname="l01798"></a><spanclass="lineno"> 1798</span> <spanclass="comment">// require a given extension for the ReadParameterFile() filename and we need</span></div>
<divclass="line"><aname="l01799"></a><spanclass="lineno"> 1799</span> <spanclass="comment">// to know it to generate a temporary parameter file.</span></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a03666f2e70e42a9560aa9ce7416d2644"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a03666f2e70e42a9560aa9ce7416d2644">operations_research::MPSolver::NumConstraints</a></div><divclass="ttdeci">int NumConstraints() const</div><divclass="ttdoc">Returns the number of constraints.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00359">linear_solver.h:359</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a0ae674872034b9d61b389da66cb9503a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a0ae674872034b9d61b389da66cb9503a">operations_research::MPObjective::SetMaximization</a></div><divclass="ttdeci">void SetMaximization()</div><divclass="ttdoc">Sets the optimization direction to maximize.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00986">linear_solver.h:986</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_aeae0a6e1e84d015690573b08d62b1395"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#aeae0a6e1e84d015690573b08d62b1395">operations_research::MPSolverParameters::GetIntegerParam</a></div><divclass="ttdeci">int GetIntegerParam(MPSolverParameters::IntegerParam param) const</div><divclass="ttdoc">Returns the value of an integer parameter.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784a420e8170e7ec327dd847b9610fc4565b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784a420e8170e7ec327dd847b9610fc4565b">operations_research::MPSolverParameters::LP_ALGORITHM</a></div><divclass="ttdeci">@ LP_ALGORITHM</div><divclass="ttdoc">Algorithm to solve linear programs.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01381">linear_solver.h:1381</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a2def997791a2a5119c3502aa68c34181">operations_research::MPConstraint::SetCoefficient</a></div><divclass="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><divclass="ttdoc">Sets the coefficient of the variable on the constraint.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a1269e748520719b9d11f6ef2d1c28c42"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a1269e748520719b9d11f6ef2d1c28c42">operations_research::MPSolver::underlying_solver</a></div><divclass="ttdeci">void * underlying_solver()</div><divclass="ttdoc">Advanced usage: returns the underlying solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_af63f7de45a05eb7439a7a1c9ca594fd8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#af63f7de45a05eb7439a7a1c9ca594fd8">operations_research::MPSolver::SupportsProblemType</a></div><divclass="ttdeci">static bool SupportsProblemType(OptimizationProblemType problem_type)</div><divclass="ttdoc">Whether the given problem type is supported (this will depend on the targets that you linked).</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a372de693ad40b3f42839c8ec6ac845f4">operations_research::MPSolver::Reset</a></div><divclass="ttdeci">void Reset()</div><divclass="ttdoc">Advanced usage: resets extracted model to solve from scratch.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPObjective::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01025">linear_solver.h:1025</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html">operations_research::MPVariable</a></div><divclass="ttdoc">The class for variables of a Mathematical Programming (MP) model.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01050">linear_solver.h:1050</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html">operations_research::MPSolver</a></div><divclass="ttdoc">This mathematical programming (MP) solver class is the main class though which users build and solve ...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00177">linear_solver.h:177</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_af89ed33216d227599a7752bc0dc97ce3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#af89ed33216d227599a7752bc0dc97ce3">operations_research::MPSolverParameters::ResetDoubleParam</a></div><divclass="ttdeci">void ResetDoubleParam(MPSolverParameters::DoubleParam param)</div><divclass="ttdoc">Sets a double parameter to its default value (default value defined in MPSolverParameters if it exist...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_abbf4c26107aac610a00471f41740b01e"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#abbf4c26107aac610a00471f41740b01e">operations_research::MPSolver::LookupConstraintOrNull</a></div><divclass="ttdeci">MPConstraint * LookupConstraintOrNull(const std::string &constraint_name) const</div><divclass="ttdoc">Looks up a constraint by name, and returns nullptr if it does not exist.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aee1ddf25e86286c16face31551751bda">operations_research::MPObjective::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01029">linear_solver.h:1029</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8a9d70aea1ff48f145644d82953fd4322a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8a9d70aea1ff48f145644d82953fd4322a">operations_research::MPSolverParameters::PRESOLVE_OFF</a></div><divclass="ttdeci">@ PRESOLVE_OFF</div><divclass="ttdoc">Presolve is off.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01391">linear_solver.h:1391</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aee1ddf25e86286c16face31551751bda">operations_research::MPConstraint::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01279">linear_solver.h:1279</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab17a7a859c6e429296e55570c06337cf"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab17a7a859c6e429296e55570c06337cf">operations_research::MPSolver::ComputeConstraintActivities</a></div><divclass="ttdeci">std::vector< double > ComputeConstraintActivities() const</div><divclass="ttdoc">Advanced usage: compute the "activities" of all constraints, which are the sums of their linear terms...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPObjective::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01019">linear_solver.h:1019</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932a184546f243ecb7d9be48659f8be82992"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932a184546f243ecb7d9be48659f8be82992">operations_research::MPSolverParameters::DUAL_TOLERANCE</a></div><divclass="ttdeci">@ DUAL_TOLERANCE</div><divclass="ttdoc">Advanced usage: tolerance for dual feasibility of basic solutions.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01374">linear_solver.h:1373</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#acca41811e8aaab0112b987749c0ecb93">operations_research::MPVariable::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the variable in the MPSolver::variables_.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01071">linear_solver.h:1071</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPConstraint::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears all variables and coefficients. Does not clear the bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPVariable::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01136">linear_solver.h:1136</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a2def997791a2a5119c3502aa68c34181">operations_research::MPObjective::SetCoefficient</a></div><divclass="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><divclass="ttdoc">Sets the coefficient of the variable in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPSolver::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00811">linear_solver.h:811</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a3e8b0f4b22e58bfd3ec683807e9b97b4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a3e8b0f4b22e58bfd3ec683807e9b97b4">operations_research::MPSolver::ParseSolverType</a></div><divclass="ttdeci">static bool ParseSolverType(absl::string_view solver_id, OptimizationProblemType *type)</div><divclass="ttdoc">Parses the name of the solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a68da85394a0aa65bda40355466afba93"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a68da85394a0aa65bda40355466afba93">operations_research::MPObjective::MinimizeLinearExpr</a></div><divclass="ttdeci">void MinimizeLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Resets the current objective to minimize linear_expr.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00972">linear_solver.h:972</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aa9a00625dd56e64b32c97b95445a1b9c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aa9a00625dd56e64b32c97b95445a1b9c">operations_research::MPSolver::ExportModelAsLpFormat</a></div><divclass="ttdeci">bool ExportModelAsLpFormat(bool obfuscate, std::string *model_str) const</div><divclass="ttdoc">Shortcuts to the homonymous MPModelProtoExporter methods, via exporting to a MPModelProto with Export...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPSolver::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00805">linear_solver.h:805</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html">operations_research::MPConstraint</a></div><divclass="ttdoc">The class for constraints of a Mathematical Programming (MP) model.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01175">linear_solver.h:1175</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_afc5409af80c8d0d848fa354e5c8ea0b0"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#afc5409af80c8d0d848fa354e5c8ea0b0">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint(const LinearRange &range, const std::string &name)</div><divclass="ttdoc">As above, but also names the constraint.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPVariable::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01133">linear_solver.h:1133</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPSolver::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00802">linear_solver.h:802</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587da03f919221217f95d21a593a7120165e1"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587da03f919221217f95d21a593a7120165e1">operations_research::MPSolver::FEASIBLE</a></div><divclass="ttdeci">@ FEASIBLE</div><divclass="ttdoc">feasible, or stopped by limit.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00429">linear_solver.h:429</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a18daa488abaa904f23c8f74158290883"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a18daa488abaa904f23c8f74158290883">operations_research::MPSolver::NextSolution</a></div><divclass="ttdeci">ABSL_MUST_USE_RESULT bool NextSolution()</div><divclass="ttdoc">Some solvers (MIP only, not LP) can produce multiple solutions to the problem.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPVariable::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01126">linear_solver.h:1126</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ae189b253817210ee7e605b089ccf47e4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ae189b253817210ee7e605b089ccf47e4">operations_research::MPSolverParameters::SetIntegerParam</a></div><divclass="ttdeci">void SetIntegerParam(MPSolverParameters::IntegerParam param, int value)</div><divclass="ttdoc">Sets a integer parameter to a specific value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a2ee6dd214598834edf57d950333b11f7"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a2ee6dd214598834edf57d950333b11f7">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint(const std::string &name)</div><divclass="ttdoc">Creates a named constraint with -infinity and +infinity bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a25a1112e410b183f49ef4ce8da1bdc74ab3f9de74d2d20c2eebcec60b7273d485"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a25a1112e410b183f49ef4ce8da1bdc74ab3f9de74d2d20c2eebcec60b7273d485">operations_research::MPSolverParameters::SCALING_OFF</a></div><divclass="ttdeci">@ SCALING_OFF</div><divclass="ttdoc">Scaling is off.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01421">linear_solver.h:1421</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a356d08f701ec7c64a00c19818bb72886">operations_research::MPObjective::GetCoefficient</a></div><divclass="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><divclass="ttdoc">Gets the coefficient of a given variable in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aa3d71b1d66352ee439fdcdf8f3b93067"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aa3d71b1d66352ee439fdcdf8f3b93067">operations_research::MPObjective::minimization</a></div><divclass="ttdeci">bool minimization() const</div><divclass="ttdoc">Is the optimization direction set to minimize?</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a96ffc785b7b2135c7980c985883ffdd3"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a96ffc785b7b2135c7980c985883ffdd3">operations_research::MPObjective::offset</a></div><divclass="ttdeci">double offset() const</div><divclass="ttdoc">Gets the constant term in the objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00959">linear_solver.h:959</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ac75b700ead5ff5d0944b5161e6dac9e8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ac75b700ead5ff5d0944b5161e6dac9e8">operations_research::MPSolver::InterruptSolve</a></div><divclass="ttdeci">bool InterruptSolve()</div><divclass="ttdoc">Interrupts the Solve() execution to terminate processing if possible.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a0f97f44428bff07c2308b45bfb62223b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a0f97f44428bff07c2308b45bfb62223b">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint(double lb, double ub)</div><divclass="ttdoc">Creates a linear constraint with given bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aee1ddf25e86286c16face31551751bda">operations_research::MPSolver::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00812">linear_solver.h:812</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPConstraint::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01275">linear_solver.h:1275</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a665001590f89bb9446d0030e2ef8047b">operations_research::MPObjective::terms</a></div><divclass="ttdeci">const absl::flat_hash_map< const MPVariable *, double >& terms() const</div><divclass="ttdoc">Returns a map from variables to their coefficients in the objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00951">linear_solver.h:951</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPVariable::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01131">linear_solver.h:1131</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8">operations_research::MPSolverParameters::PresolveValues</a></div><divclass="ttdeci">PresolveValues</div><divclass="ttdoc">For each categorical parameter, enumeration of possible values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01389">linear_solver.h:1389</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a880227c1bbe5a1a2a21796a947804615"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a880227c1bbe5a1a2a21796a947804615">operations_research::MPSolver::ExportModelToProto</a></div><divclass="ttdeci">void ExportModelToProto(MPModelProto *output_model) const</div><divclass="ttdoc">Exports model to protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverInterface_html_a2cb8082675772ca81d04e87b6f4b1c8b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverInterface.html#a2cb8082675772ca81d04e87b6f4b1c8b">operations_research::MPSolverInterface::kDummyVariableIndex</a></div><divclass="ttdeci">static const int kDummyVariableIndex</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01740">linear_solver.h:1740</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a4584733ca3a135bb0e29e7b29988901d"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a4584733ca3a135bb0e29e7b29988901d">operations_research::MPConstraint::SetUB</a></div><divclass="ttdeci">void SetUB(double ub)</div><divclass="ttdoc">Sets the upper bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01216">linear_solver.h:1216</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPConstraint::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01276">linear_solver.h:1276</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a79b59c0c868544afdaa05d89c8f8541f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a79b59c0c868544afdaa05d89c8f8541f">operations_research::MPSolverParameters::LpAlgorithmValues</a></div><divclass="ttdeci">LpAlgorithmValues</div><divclass="ttdoc">LP algorithm to use.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01397">linear_solver.h:1397</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae74ce5ecb0dd3b4bcddb31bd59da7089"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae74ce5ecb0dd3b4bcddb31bd59da7089">operations_research::MPSolver::LoadModelFromProtoWithUniqueNamesOrDie</a></div><divclass="ttdeci">MPSolverResponseStatus LoadModelFromProtoWithUniqueNamesOrDie(const MPModelProto &input_model, std::string *error_message)</div><divclass="ttdoc">Loads model from protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPConstraint::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01278">linear_solver.h:1278</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ad8227ba86a01f26e4f173cd5e219d5d1">operations_research::MPVariable::name</a></div><divclass="ttdeci">const std::string & name() const</div><divclass="ttdoc">Returns the name of the variable.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01053">linear_solver.h:1053</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aeec48f5c4d2d1cc79926734f9b586ad5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aeec48f5c4d2d1cc79926734f9b586ad5">operations_research::MPConstraint::dual_value</a></div><divclass="ttdeci">double dual_value() const</div><divclass="ttdoc">Advanced usage: returns the dual value of the constraint in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html">operations_research::MPSolverParameters</a></div><divclass="ttdoc">This class stores parameter settings for LP and MIP solvers.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01358">linear_solver.h:1358</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a570e7e2c973cc96bedb0db08f5e062e3"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a570e7e2c973cc96bedb0db08f5e062e3">operations_research::MPConstraint::ub</a></div><divclass="ttdeci">double ub() const</div><divclass="ttdoc">Returns the upper bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01210">linear_solver.h:1210</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1LinearRange_html"><divclass="ttname"><ahref="classoperations__research_1_1LinearRange.html">operations_research::LinearRange</a></div><divclass="ttdoc">An expression of the form:</div><divclass="ttdef"><b>Definition:</b><ahref="linear__expr_8h_source.html#l00192">linear_expr.h:192</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a2c50b77c283c82d632f0dc605ceca3c3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a2c50b77c283c82d632f0dc605ceca3c3">operations_research::MPSolver::VerifySolution</a></div><divclass="ttdeci">bool VerifySolution(double tolerance, bool log_errors) const</div><divclass="ttdoc">Advanced usage: Verifies the correctness of the solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9f55f5e7a62b45961982063ebc1e9945"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9f55f5e7a62b45961982063ebc1e9945">operations_research::MPSolver::Solve</a></div><divclass="ttdeci">ResultStatus Solve()</div><divclass="ttdoc">Solves the problem using the default parameter values.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aee8250cf90d66d569534338248924469"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aee8250cf90d66d569534338248924469">operations_research::MPSolver::ProblemType</a></div><divclass="ttdeci">virtual OptimizationProblemType ProblemType() const</div><divclass="ttdoc">Returns the optimization problem type set at construction.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00282">linear_solver.h:282</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac187b2ba08422f3a06b8d1e1502ceea6"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac187b2ba08422f3a06b8d1e1502ceea6">operations_research::MPObjective::SetMinimization</a></div><divclass="ttdeci">void SetMinimization()</div><divclass="ttdoc">Sets the optimization direction to minimize.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00983">linear_solver.h:983</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPConstraint::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01273">linear_solver.h:1273</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a8844020cc1376123531cd53c831acdef"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a8844020cc1376123531cd53c831acdef">operations_research::MPVariable::MPVariableSolutionValueTest</a></div><divclass="ttdeci">friend class MPVariableSolutionValueTest</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01135">linear_solver.h:1135</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784adabd0cf2fcb5726b7fc2aa3d54d5f3ff"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784adabd0cf2fcb5726b7fc2aa3d54d5f3ff">operations_research::MPSolverParameters::INCREMENTALITY</a></div><divclass="ttdeci">@ INCREMENTALITY</div><divclass="ttdoc">Advanced usage: incrementality from one solve to the next.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01383">linear_solver.h:1383</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#aecd5fee61b6013b1207c2ea622c849b5">operations_research::MPVariable::basis_status</a></div><divclass="ttdeci">MPSolver::BasisStatus basis_status() const</div><divclass="ttdoc">Advanced usage: returns the basis status of the variable in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ad8227ba86a01f26e4f173cd5e219d5d1">operations_research::MPConstraint::name</a></div><divclass="ttdeci">const std::string & name() const</div><divclass="ttdoc">Returns the name of the constraint.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01178">linear_solver.h:1178</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3d269786b0c64ba034e7e8a8a09213fc"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3d269786b0c64ba034e7e8a8a09213fc">operations_research::MPObjective::SetOffset</a></div><divclass="ttdeci">void SetOffset(double value)</div><divclass="ttdoc">Sets the constant term in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPObjective::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01026">linear_solver.h:1026</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPConstraint::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01277">linear_solver.h:1277</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPVariable::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01134">linear_solver.h:1134</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#acca41811e8aaab0112b987749c0ecb93">operations_research::MPConstraint::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the constraint in the MPSolver::constraints_.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01243">linear_solver.h:1243</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aaa2bb34f1712b9d7c36d75b1ec704563"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aaa2bb34f1712b9d7c36d75b1ec704563">operations_research::MPSolver::Solve</a></div><divclass="ttdeci">ResultStatus Solve(const MPSolverParameters &param)</div><divclass="ttdoc">Solves the problem using the specified parameter values.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a372de693ad40b3f42839c8ec6ac845f4">operations_research::MPSolverParameters::Reset</a></div><divclass="ttdeci">void Reset()</div><divclass="ttdoc">Sets all parameters to their default value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPSolver::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears the objective (including the optimization direction), all variables and constraints.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ab0c809243bacbba99e083bddd16ebcaa"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ab0c809243bacbba99e083bddd16ebcaa">operations_research::MPConstraint::is_lazy</a></div><divclass="ttdeci">bool is_lazy() const</div><divclass="ttdoc">Advanced usage: returns true if the constraint is "lazy" (see below).</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01222">linear_solver.h:1222</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a356d08f701ec7c64a00c19818bb72886">operations_research::MPConstraint::GetCoefficient</a></div><divclass="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><divclass="ttdoc">Gets the coefficient of a given variable on the constraint (which is 0 if the variable does not appea...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a7a302239fbb1f938a513636a6c7a3e2d"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a7a302239fbb1f938a513636a6c7a3e2d">operations_research::MPVariable::reduced_cost</a></div><divclass="ttdeci">double reduced_cost() const</div><divclass="ttdoc">Advanced usage: returns the reduced cost of the variable in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a51ae17fc48ac80f494d7ed2202d61f29"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a51ae17fc48ac80f494d7ed2202d61f29">operations_research::MPSolver::nodes</a></div><divclass="ttdeci">int64 nodes() const</div><divclass="ttdoc">Returns the number of branch-and-bound nodes evaluated during the solve.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aecd5fee61b6013b1207c2ea622c849b5">operations_research::MPConstraint::basis_status</a></div><divclass="ttdeci">MPSolver::BasisStatus basis_status() const</div><divclass="ttdoc">Advanced usage: returns the basis status of the constraint.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPVariable::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01137">linear_solver.h:1137</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_aeeef6511f130ba8a9db2c308dbeada5c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#aeeef6511f130ba8a9db2c308dbeada5c">operations_research::MPSolverParameters::MPSolverParameters</a></div><divclass="ttdeci">MPSolverParameters()</div><divclass="ttdoc">The constructor sets all parameters to their default value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad7c866ce738bfb6ac5fcee91fed998ed"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad7c866ce738bfb6ac5fcee91fed998ed">operations_research::MPSolverParameters::kDefaultIntegerParamValue</a></div><divclass="ttdeci">static const int kDefaultIntegerParamValue</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01429">linear_solver.h:1429</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587dadd7ccc352d727224d39519584ed37cd7"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587dadd7ccc352d727224d39519584ed37cd7">operations_research::MPSolver::ABNORMAL</a></div><divclass="ttdeci">@ ABNORMAL</div><divclass="ttdoc">abnormal, i.e., error of some kind.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00435">linear_solver.h:435</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a02bfb5cd5deeb2d5149f6976ee0456d6">operations_research::MPVariable::SetBounds</a></div><divclass="ttdeci">void SetBounds(double lb, double ub)</div><divclass="ttdoc">Sets both the lower and upper bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPVariable::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01127">linear_solver.h:1127</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a849bf49baad56df58c018e8ab09456fb"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a849bf49baad56df58c018e8ab09456fb">operations_research::MPSolver::SetNumThreads</a></div><divclass="ttdeci">absl::Status SetNumThreads(int num_threads)</div><divclass="ttdoc">Sets the number of threads to use by the underlying solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1LinearExpr_html"><divclass="ttname"><ahref="classoperations__research_1_1LinearExpr.html">operations_research::LinearExpr</a></div><divclass="ttdoc">LinearExpr models a quantity that is linear in the decision variables (MPVariable) of an optimization...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__expr_8h_source.html#l00114">linear_expr.h:114</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a215b66c2ff063ffbf5b538ee402304cba01f385fe2acfe85efe038aa62b31edfb"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a215b66c2ff063ffbf5b538ee402304cba01f385fe2acfe85efe038aa62b31edfb">operations_research::MPSolverParameters::INCREMENTALITY_OFF</a></div><divclass="ttdeci">@ INCREMENTALITY_OFF</div><divclass="ttdoc">Start solve from scratch.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01409">linear_solver.h:1409</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPVariable::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01130">linear_solver.h:1130</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a0623b9007b18f0e4bb078fb6eb4dadaa"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a0623b9007b18f0e4bb078fb6eb4dadaa">operations_research::MPSolverParameters::kUnknownIntegerParamValue</a></div><divclass="ttdeci">static const int kUnknownIntegerParamValue</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01433">linear_solver.h:1433</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a981cdf256aa33e518b8747c96bf1a9c7"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a981cdf256aa33e518b8747c96bf1a9c7">operations_research::MPSolver::LookupVariableOrNull</a></div><divclass="ttdeci">MPVariable * LookupVariableOrNull(const std::string &var_name) const</div><divclass="ttdoc">Looks up a variable by name, and returns nullptr if it does not exist.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_accc4f1882f13ad57ef6bbe8fbe5d365d"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#accc4f1882f13ad57ef6bbe8fbe5d365d">operations_research::MPVariable::lb</a></div><divclass="ttdeci">double lb() const</div><divclass="ttdoc">Returns the lower bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01074">linear_solver.h:1074</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPObjective::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01024">linear_solver.h:1024</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a94743823a7ad3c565902fcf7956d4ae2"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a94743823a7ad3c565902fcf7956d4ae2">operations_research::MPVariable::SetInteger</a></div><divclass="ttdeci">void SetInteger(bool integer)</div><divclass="ttdoc">Sets the integrality requirement of the variable.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPConstraint::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01272">linear_solver.h:1272</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_abc6bcaac179c603ad3386fa7449c86a7"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#abc6bcaac179c603ad3386fa7449c86a7">operations_research::MPVariable::integer</a></div><divclass="ttdeci">bool integer() const</div><divclass="ttdoc">Returns the integrality requirement of the variable.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01059">linear_solver.h:1059</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784">operations_research::MPSolverParameters::IntegerParam</a></div><divclass="ttdeci">IntegerParam</div><divclass="ttdoc">Enumeration of parameters that take integer or categorical values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01377">linear_solver.h:1377</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a25a1112e410b183f49ef4ce8da1bdc74a62fd26c37f80b6aabec3b463c55a1c85"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a25a1112e410b183f49ef4ce8da1bdc74a62fd26c37f80b6aabec3b463c55a1c85">operations_research::MPSolverParameters::SCALING_ON</a></div><divclass="ttdeci">@ SCALING_ON</div><divclass="ttdoc">Scaling is on.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01424">linear_solver.h:1423</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPSolver::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00803">linear_solver.h:803</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac195da617c5cdd546ab7ecc67a2e7235"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac195da617c5cdd546ab7ecc67a2e7235">operations_research::MPObjective::MaximizeLinearExpr</a></div><divclass="ttdeci">void MaximizeLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Resets the current objective to maximize linear_expr.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00968">linear_solver.h:968</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a018794097e44ee8189380eef2b0f267f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a018794097e44ee8189380eef2b0f267f">operations_research::MPSolver::FillSolutionResponseProto</a></div><divclass="ttdeci">void FillSolutionResponseProto(MPSolutionResponse *response) const</div><divclass="ttdoc">Encodes the current solution in a solution response protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPSolver::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00804">linear_solver.h:804</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a34cfddb524394d766e725ed228f74ea3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a34cfddb524394d766e725ed228f74ea3">operations_research::MPSolver::CreateSolver</a></div><divclass="ttdeci">static MPSolver * CreateSolver(const std::string &solver_id)</div><divclass="ttdoc">Recommended factory method to create a MPSolver instance, especially in non C++ languages.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae233b0f771236fe24ad255830012159f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae233b0f771236fe24ad255830012159f">operations_research::MPSolver::LoadSolutionFromProto</a></div><divclass="ttdeci">absl::Status LoadSolutionFromProto(const MPSolutionResponse &response, double tolerance=kDefaultPrimalTolerance)</div><divclass="ttdoc">Load a solution encoded in a protocol buffer onto this solver for easy access via the MPSolver interf...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPSolver::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00800">linear_solver.h:800</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9df947ed3bb70075e234f8f0f78bc8ee"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9df947ed3bb70075e234f8f0f78bc8ee">operations_research::MPSolver::ClampSolutionWithinBounds</a></div><divclass="ttdeci">absl::Status ClampSolutionWithinBounds()</div><divclass="ttdoc">Resets values of out of bound variables to the corresponding bound and returns an error if any of the...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a77083241e8bdb93b619c7b9feaf82dec"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a77083241e8bdb93b619c7b9feaf82dec">operations_research::MPSolver::SetSolverSpecificParametersAsString</a></div><divclass="ttdeci">bool SetSolverSpecificParametersAsString(const std::string &parameters)</div><divclass="ttdoc">Advanced usage: pass solver specific parameters in text format.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5004489a36bc1393efa043044a63732f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5004489a36bc1393efa043044a63732f">operations_research::MPSolver::Objective</a></div><divclass="ttdeci">const MPObjective & Objective() const</div><divclass="ttdoc">Returns the objective object.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00414">linear_solver.h:414</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPObjective::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01018">linear_solver.h:1018</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPVariable::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01129">linear_solver.h:1129</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587d">operations_research::MPSolver::ResultStatus</a></div><divclass="ttdeci">ResultStatus</div><divclass="ttdoc">The status of solving the problem.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00425">linear_solver.h:425</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPSolver::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00806">linear_solver.h:806</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a76c87990aabadd148304b95332a60ff8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a76c87990aabadd148304b95332a60ff8">operations_research::MPSolver::OptimizationProblemType</a></div><divclass="ttdeci">OptimizationProblemType</div><divclass="ttdoc">The type of problems (LP or MIP) that will be solved and the underlying solver (GLOP,...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00185">linear_solver.h:185</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a191cd9b1ba3e3c01a558a1f6c02a4429"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a191cd9b1ba3e3c01a558a1f6c02a4429">operations_research::MPSolver::Name</a></div><divclass="ttdeci">const std::string & Name() const</div><divclass="ttdoc">Returns the name of the model set at construction.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00277">linear_solver.h:277</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a692014f815d7927760762b046675f658"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a692014f815d7927760762b046675f658">operations_research::MPSolverParameters::GetDoubleParam</a></div><divclass="ttdeci">double GetDoubleParam(MPSolverParameters::DoubleParam param) const</div><divclass="ttdoc">Returns the value of a double parameter.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a02bfb5cd5deeb2d5149f6976ee0456d6">operations_research::MPConstraint::SetBounds</a></div><divclass="ttdeci">void SetBounds(double lb, double ub)</div><divclass="ttdoc">Sets both the lower and upper bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a09343ed6dde3059443fe6f4caa16e986"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a09343ed6dde3059443fe6f4caa16e986">operations_research::MPSolverParameters::ResetIntegerParam</a></div><divclass="ttdeci">void ResetIntegerParam(MPSolverParameters::IntegerParam param)</div><divclass="ttdoc">Sets an integer parameter to its default value (default value defined in MPSolverParameters if it exi...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587dae071e79c23f061c9dd00ee09519a0031"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587dae071e79c23f061c9dd00ee09519a0031">operations_research::MPSolver::MODEL_INVALID</a></div><divclass="ttdeci">@ MODEL_INVALID</div><divclass="ttdoc">the model is trivially invalid (NaN coefficients, etc).</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00437">linear_solver.h:437</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5ff11cd513c803ba3f75f2f672f1cf6f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5ff11cd513c803ba3f75f2f672f1cf6f">operations_research::MPSolver::constraints</a></div><divclass="ttdeci">const std::vector< MPConstraint * >& constraints() const</div><divclass="ttdoc">Returns the array of constraints handled by the MPSolver.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00366">linear_solver.h:366</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPConstraint::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01269">linear_solver.h:1269</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aaa766a9aa802903bf7a6e5b8fb82c70c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aaa766a9aa802903bf7a6e5b8fb82c70c">operations_research::MPSolver::Write</a></div><divclass="ttdeci">void Write(const std::string &file_name)</div><divclass="ttdoc">Writes the model using the solver internal write function.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3df780d69d67985929c76e750f913e21"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3df780d69d67985929c76e750f913e21">operations_research::MPObjective::maximization</a></div><divclass="ttdeci">bool maximization() const</div><divclass="ttdoc">Is the optimization direction set to maximize?</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPObjective::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01028">linear_solver.h:1028</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPObjective::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01022">linear_solver.h:1022</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a8eb213aafa3773dfb6a05d184e61bb8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a8eb213aafa3773dfb6a05d184e61bb8a">operations_research::MPSolver::GetNumThreads</a></div><divclass="ttdeci">int GetNumThreads() const</div><divclass="ttdoc">Returns the number of threads to be used during solve.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00608">linear_solver.h:608</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPObjective::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01020">linear_solver.h:1020</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a8554e97d98d05016f16300cedf2be9f6"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a8554e97d98d05016f16300cedf2be9f6">operations_research::MPObjective::Value</a></div><divclass="ttdeci">double Value() const</div><divclass="ttdoc">Returns the objective value of the best solution found so far.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPObjective::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01023">linear_solver.h:1023</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a665001590f89bb9446d0030e2ef8047b">operations_research::MPConstraint::terms</a></div><divclass="ttdeci">const absl::flat_hash_map< const MPVariable *, double >& terms() const</div><divclass="ttdoc">Returns a map from variables to their coefficients in the constraint.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01202">linear_solver.h:1202</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3eee00e1029a4006afbd791f78d91657"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3eee00e1029a4006afbd791f78d91657">operations_research::MPObjective::OptimizeLinearExpr</a></div><divclass="ttdeci">void OptimizeLinearExpr(const LinearExpr &linear_expr, bool is_maximization)</div><divclass="ttdoc">Resets the current objective to take the value of linear_expr, and sets the objective direction to ma...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a728f0121faaa95a451eaef6eb13e2242"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a728f0121faaa95a451eaef6eb13e2242">operations_research::MPSolver::MakeVar</a></div><divclass="ttdeci">MPVariable * MakeVar(double lb, double ub, bool integer, const std::string &name)</div><divclass="ttdoc">Creates a variable with the given bounds, integrality requirement and name.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html">operations_research::MPObjective</a></div><divclass="ttdoc">A class to express a linear objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00923">linear_solver.h:923</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9d3beb2afe4ae647674b054bf29290e2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9d3beb2afe4ae647674b054bf29290e2">operations_research::MPSolver::NumVariables</a></div><divclass="ttdeci">int NumVariables() const</div><divclass="ttdoc">Returns the number of variables.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00294">linear_solver.h:294</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932a8c7c9aed0dcd36fc9a9af2fab295caf3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932a8c7c9aed0dcd36fc9a9af2fab295caf3">operations_research::MPSolverParameters::PRIMAL_TOLERANCE</a></div><divclass="ttdeci">@ PRIMAL_TOLERANCE</div><divclass="ttdoc">Advanced usage: tolerance for primal feasibility of basic solutions.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01371">linear_solver.h:1371</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPVariable::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01132">linear_solver.h:1132</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPConstraint::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01271">linear_solver.h:1271</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5cf8f81a46598a4ef20ae7674696c40d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5cf8f81a46598a4ef20ae7674696c40d">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint(double lb, double ub, const std::string &name)</div><divclass="ttdoc">Creates a named constraint with given bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a858f72e8c0c03339c8d797d41a6fd4b8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a858f72e8c0c03339c8d797d41a6fd4b8">operations_research::MPSolver::SolverVersion</a></div><divclass="ttdeci">std::string SolverVersion() const</div><divclass="ttdoc">Returns a string describing the underlying solver and its version.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPConstraint::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01270">linear_solver.h:1270</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPObjective::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01027">linear_solver.h:1027</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_afd922eb2bef96597c426557a8056f76d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#afd922eb2bef96597c426557a8056f76d">operations_research::MPSolver::BasisStatus</a></div><divclass="ttdeci">BasisStatus</div><divclass="ttdoc">Advanced usage: possible basis status values for a variable and the slack variable of a linear constr...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00640">linear_solver.h:640</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_acdb0e5753d20e4d3ece49a0451d24c4f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#acdb0e5753d20e4d3ece49a0451d24c4f">operations_research::MPSolver::MPSolver</a></div><divclass="ttdeci">MPSolver(const std::string &name, OptimizationProblemType problem_type)</div><divclass="ttdoc">Create a solver with the given name and underlying solver backend.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab0f83070e72cee887e874382ee6d6958"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab0f83070e72cee887e874382ee6d6958">operations_research::MPSolver::LoadModelFromProto</a></div><divclass="ttdeci">MPSolverResponseStatus LoadModelFromProto(const MPModelProto &input_model, std::string *error_message)</div><divclass="ttdoc">Loads model from protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPSolver::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00807">linear_solver.h:807</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a615d9bd9c0c88aa56d31fdf95fbb5749"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a615d9bd9c0c88aa56d31fdf95fbb5749">operations_research::MPObjective::AddLinearExpr</a></div><divclass="ttdeci">void AddLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Adds linear_expr to the current objective, does not change the direction.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPSolver::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00801">linear_solver.h:801</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPObjective::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01021">linear_solver.h:1021</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a4eef77bb51bde41e69bed87ea44b86e1"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a4eef77bb51bde41e69bed87ea44b86e1">operations_research::MPSolver::ComputeExactConditionNumber</a></div><divclass="ttdeci">double ComputeExactConditionNumber() const</div><divclass="ttdoc">Advanced usage: computes the exact condition number of the current scaled basis: L1norm(B) * L1norm(i...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a215b66c2ff063ffbf5b538ee402304cba34d17de87fc7339e07256ca5319dfa67"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a215b66c2ff063ffbf5b538ee402304cba34d17de87fc7339e07256ca5319dfa67">operations_research::MPSolverParameters::INCREMENTALITY_ON</a></div><divclass="ttdeci">@ INCREMENTALITY_ON</div><divclass="ttdoc">Reuse results from previous solve as much as the underlying solver allows.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01416">linear_solver.h:1415</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932">operations_research::MPSolverParameters::DoubleParam</a></div><divclass="ttdeci">DoubleParam</div><divclass="ttdoc">Enumeration of parameters that take continuous values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01361">linear_solver.h:1361</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_adf1a0cc6a3736f3db9880392efe02f0e"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#adf1a0cc6a3736f3db9880392efe02f0e">operations_research::MPVariable::solution_value</a></div><divclass="ttdeci">double solution_value() const</div><divclass="ttdoc">Returns the value of the variable in the current solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab32654406932f9a6afcf44c4d5a143d2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab32654406932f9a6afcf44c4d5a143d2">operations_research::MPSolver::OutputIsEnabled</a></div><divclass="ttdeci">bool OutputIsEnabled() const</div><divclass="ttdoc">Controls (or queries) the amount of output produced by the underlying solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a34caaebb9e2b365ef0ec449e870f5b5d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a34caaebb9e2b365ef0ec449e870f5b5d">operations_research::MPSolver::variables</a></div><divclass="ttdeci">const std::vector< MPVariable * >& variables() const</div><divclass="ttdoc">Returns the array of variables handled by the MPSolver.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00300">linear_solver.h:300</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a4bf4b01cb836a567c90aeeea374ca2a2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a4bf4b01cb836a567c90aeeea374ca2a2">operations_research::MPSolver::SetHint</a></div><divclass="ttdeci">void SetHint(std::vector< std::pair< const MPVariable *, double >> hint)</div><divclass="ttdoc">Sets a hint for solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPConstraint::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01268">linear_solver.h:1268</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8a3b48e7f264e3228b1494312657fd611a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8a3b48e7f264e3228b1494312657fd611a">operations_research::MPSolverParameters::PRESOLVE_ON</a></div><divclass="ttdeci">@ PRESOLVE_ON</div><divclass="ttdoc">Presolve is on.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01394">linear_solver.h:1393</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#aee1ddf25e86286c16face31551751bda">operations_research::MPVariable::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01138">linear_solver.h:1138</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a9ec8e5b1017d35c4ce048c67330b0a10"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a9ec8e5b1017d35c4ce048c67330b0a10">operations_research::MPObjective::BestBound</a></div><divclass="ttdeci">double BestBound() const</div><divclass="ttdoc">Returns the best objective bound.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPObjective::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears the offset, all variables and coefficients, and the optimization direction.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a40ac97031cb9dfac6b4810f4d7dad835"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a40ac97031cb9dfac6b4810f4d7dad835">operations_research::MPSolver::ParseSolverTypeOrDie</a></div><divclass="ttdeci">static OptimizationProblemType ParseSolverTypeOrDie(const std::string &solver_id)</div><divclass="ttdoc">Parses the name of the solver and returns the correct optimization type or dies.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPSolver::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00809">linear_solver.h:809</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a1816929ef3ed29e5884291472b1b8739"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a1816929ef3ed29e5884291472b1b8739">operations_research::MPSolverParameters::SetDoubleParam</a></div><divclass="ttdeci">void SetDoubleParam(MPSolverParameters::DoubleParam param, double value)</div><divclass="ttdoc">Sets a double parameter to a specific value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPSolver::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00810">linear_solver.h:810</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_addbc1b5c5e43ec84e2ffc8ec3ab9d830"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#addbc1b5c5e43ec84e2ffc8ec3ab9d830">operations_research::MPObjective::SetOptimizationDirection</a></div><divclass="ttdeci">void SetOptimizationDirection(bool maximize)</div><divclass="ttdoc">Sets the optimization direction (maximize: true or minimize: false).</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPConstraint::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01274">linear_solver.h:1274</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a8f94769e8f7f3e051ba504be9ed1fa6f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a8f94769e8f7f3e051ba504be9ed1fa6f">operations_research::MPSolver::iterations</a></div><divclass="ttdeci">int64 iterations() const</div><divclass="ttdoc">Returns the number of simplex iterations.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a99ad12b13903108544b594819a65b793"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a99ad12b13903108544b594819a65b793">operations_research::MPSolver::SolveWithProto</a></div><divclass="ttdeci">static void SolveWithProto(const MPModelRequest &model_request, MPSolutionResponse *response)</div><divclass="ttdoc">Solves the model encoded by a MPModelRequest protocol buffer and fills the solution encoded as a MPSo...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab60f33fbc8132eda10c296885625b7d9"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab60f33fbc8132eda10c296885625b7d9">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint()</div><divclass="ttdoc">Creates a constraint with -infinity and +infinity bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587da0e6873a155f86a4695f463bf8601d05f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587da0e6873a155f86a4695f463bf8601d05f">operations_research::MPSolver::NOT_SOLVED</a></div><divclass="ttdeci">@ NOT_SOLVED</div><divclass="ttdoc">not been solved yet.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00440">linear_solver.h:439</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPVariable::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01128">linear_solver.h:1128</a></div></div>