<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-2021 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="l00174"></a><spanclass="lineno"> 174</span> <spanclass="comment">// There is a homonymous version taking a MPSolver::OptimizationProblemType.</span></div>
<divclass="line"><aname="l00210"></a><spanclass="lineno"> 210</span> <spanclass="comment">// Boolean optimization problem (requires only integer variables and works</span></div>
<divclass="line"><aname="l00211"></a><spanclass="lineno"> 211</span> <spanclass="comment">// best with only Boolean variables).</span></div>
<divclass="line"><aname="l00214"></a><spanclass="lineno"> 214</span> <spanclass="comment">// SAT based solver (requires only integer and Boolean variables).</span></div>
<divclass="line"><aname="l00215"></a><spanclass="lineno"> 215</span> <spanclass="comment">// If you pass it mixed integer problems, it will scale coefficients to</span></div>
<divclass="line"><aname="l00216"></a><spanclass="lineno"> 216</span> <spanclass="comment">// integer values, and solver continuous variables as integral variables.</span></div>
<divclass="line"><aname="l00282"></a><spanclass="lineno"> 282</span> <spanclass="keywordflow">return</span> name_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00287"></a><spanclass="lineno"> 287</span> <spanclass="keywordflow">return</span> problem_type_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00779"></a><spanclass="lineno"> 779</span> <spanclass="comment">// Does not take ownership of "mp_callback".</span></div>
<divclass="line"><aname="l00781"></a><spanclass="lineno"> 781</span> <spanclass="comment">// As of 2019-10-22, only SCIP and Gurobi support Callbacks.</span></div>
<divclass="line"><aname="l00782"></a><spanclass="lineno"> 782</span> <spanclass="comment">// SCIP does not support suggesting a heuristic solution in the callback.</span></div>
<divclass="line"><aname="l00784"></a><spanclass="lineno"> 784</span> <spanclass="comment">// See go/mpsolver-callbacks for additional documentation.</span></div>
<divclass="line"><aname="l00788"></a><spanclass="lineno"> 788</span> <spanclass="comment">// DEPRECATED: Use TimeLimit() and SetTimeLimit(absl::Duration) instead.</span></div>
<divclass="line"><aname="l00789"></a><spanclass="lineno"> 789</span> <spanclass="comment">// NOTE: These deprecated functions used the convention time_limit = 0 to mean</span></div>
<divclass="line"><aname="l00790"></a><spanclass="lineno"> 790</span> <spanclass="comment">// "no limit", which now corresponds to time_limit_ = InfiniteDuration().</span></div>
<divclass="line"><aname="l00824"></a><spanclass="lineno"> 824</span> <spanclass="comment">// Debugging: verify that the given MPVariable* belongs to this solver.</span></div>
<divclass="line"><aname="l00828"></a><spanclass="lineno"> 828</span> <spanclass="comment">// Computes the size of the constraint with the largest number of</span></div>
<divclass="line"><aname="l00829"></a><spanclass="lineno"> 829</span> <spanclass="comment">// coefficients with index in [min_constraint_index,</span></div>
<divclass="line"><aname="l00834"></a><spanclass="lineno"> 834</span> <spanclass="comment">// Returns true if the model has constraints with lower bound > upper bound.</span></div>
<divclass="line"><aname="l00837"></a><spanclass="lineno"> 837</span> <spanclass="comment">// Returns true if the model has at least 1 integer variable.</span></div>
<divclass="line"><aname="l00840"></a><spanclass="lineno"> 840</span> <spanclass="comment">// Generates the map from variable names to their indices.</span></div>
<divclass="line"><aname="l00843"></a><spanclass="lineno"> 843</span> <spanclass="comment">// Generates the map from constraint names to their indices.</span></div>
<divclass="line"><aname="l00846"></a><spanclass="lineno"> 846</span> <spanclass="comment">// The name of the linear programming problem.</span></div>
<divclass="line"><aname="l00849"></a><spanclass="lineno"> 849</span> <spanclass="comment">// The type of the linear programming problem.</span></div>
<divclass="line"><aname="l00857"></a><spanclass="lineno"> 857</span> <spanclass="comment">// A map from a variable's name to its index in variables_.</span></div>
<divclass="line"><aname="l00860"></a><spanclass="lineno"> 860</span> <spanclass="comment">// Whether variables have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00863"></a><spanclass="lineno"> 863</span> <spanclass="comment">// The vector of constraints in the problem.</span></div>
<divclass="line"><aname="l00865"></a><spanclass="lineno"> 865</span> <spanclass="comment">// A map from a constraint's name to its index in constraints_.</span></div>
<divclass="line"><aname="l00868"></a><spanclass="lineno"> 868</span> <spanclass="comment">// Whether constraints have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00874"></a><spanclass="lineno"> 874</span> <spanclass="comment">// Initial values for all or some of the problem variables that can be</span></div>
<divclass="line"><aname="l00875"></a><spanclass="lineno"> 875</span> <spanclass="comment">// exploited as a starting hint by a solver.</span></div>
<divclass="line"><aname="l00877"></a><spanclass="lineno"> 877</span> <spanclass="comment">// Note(user): as of 05/05/2015, we can't use >> because of some SWIG errors.</span></div>
<divclass="line"><aname="l00879"></a><spanclass="lineno"> 879</span> <spanclass="comment">// TODO(user): replace by two vectors, a std::vector<bool> to indicate if a</span></div>
<divclass="line"><aname="l00880"></a><spanclass="lineno"> 880</span> <spanclass="comment">// hint is provided and a std::vector<double> for the hint value.</span></div>
<divclass="line"><aname="l00887"></a><spanclass="lineno"> 887</span> <spanclass="comment">// Permanent storage for the number of threads.</span></div>
<divclass="line"><aname="l00910"></a><spanclass="lineno"> 910</span> <spanclass="keywordflow">return</span> os <<<aclass="code"href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(optimization_problem_type);</div>
<divclass="line"><aname="l00915"></a><spanclass="lineno"> 915</span> <spanclass="keywordflow">return</span> os << ProtoEnumToString<MPSolverResponseStatus>(</div>
<divclass="line"><aname="l01037"></a><spanclass="lineno"> 1037</span> <spanclass="comment">// Constructor. An objective points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l01038"></a><spanclass="lineno"> 1038</span> <spanclass="comment">// that is specified in the constructor. An objective cannot belong</span></div>
<divclass="line"><aname="l01039"></a><spanclass="lineno"> 1039</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l01040"></a><spanclass="lineno"> 1040</span> <spanclass="comment">// At construction, an MPObjective has no terms (which is equivalent</span></div>
<divclass="line"><aname="l01041"></a><spanclass="lineno"> 1041</span> <spanclass="comment">// on having a coefficient of 0 for all variables), and an offset of 0.</span></div>
<divclass="line"><aname="l01146"></a><spanclass="lineno"> 1146</span> <spanclass="comment">// Constructor. A variable points to a single MPSolverInterface that</span></div>
<divclass="line"><aname="l01147"></a><spanclass="lineno"> 1147</span> <spanclass="comment">// is specified in the constructor. A variable cannot belong to</span></div>
<divclass="line"><aname="l01148"></a><spanclass="lineno"> 1148</span> <spanclass="comment">// several models.</span></div>
<divclass="line"><aname="l01287"></a><spanclass="lineno"> 1287</span> <spanclass="comment">// Constructor. A constraint points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l01288"></a><spanclass="lineno"> 1288</span> <spanclass="comment">// that is specified in the constructor. A constraint cannot belong</span></div>
<divclass="line"><aname="l01289"></a><spanclass="lineno"> 1289</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l01305"></a><spanclass="lineno"> 1305</span> <spanclass="comment">// Returns true if the constraint contains variables that have not</span></div>
<divclass="line"><aname="l01306"></a><spanclass="lineno"> 1306</span> <spanclass="comment">// been extracted yet.</span></div>
<divclass="line"><aname="l01314"></a><spanclass="lineno"> 1314</span> <spanclass="comment">// The lower bound for the linear constraint.</span></div>
<divclass="line"><aname="l01317"></a><spanclass="lineno"> 1317</span> <spanclass="comment">// The upper bound for the linear constraint.</span></div>
<divclass="line"><aname="l01323"></a><spanclass="lineno"> 1323</span> <spanclass="comment">// True if the constraint is "lazy", i.e. the constraint is added to the</span></div>
<divclass="line"><aname="l01324"></a><spanclass="lineno"> 1324</span> <spanclass="comment">// underlying Linear Programming solver only if it is violated.</span></div>
<divclass="line"><aname="l01325"></a><spanclass="lineno"> 1325</span> <spanclass="comment">// By default this parameter is 'false'.</span></div>
<divclass="line"><aname="l01328"></a><spanclass="lineno"> 1328</span> <spanclass="comment">// If given, this constraint is only active if `indicator_variable_`'s value</span></div>
<divclass="line"><aname="l01329"></a><spanclass="lineno"> 1329</span> <spanclass="comment">// is equal to `indicator_value_`.</span></div>
<divclass="line"><aname="l01432"></a><spanclass="lineno"> 1432</span> <spanclass="comment">// Placeholder value to indicate that a parameter is set to</span></div>
<divclass="line"><aname="l01433"></a><spanclass="lineno"> 1433</span> <spanclass="comment">// the default value defined in the wrapper.</span></div>
<divclass="line"><aname="l01437"></a><spanclass="lineno"> 1437</span> <spanclass="comment">// Placeholder value to indicate that a parameter is unknown.</span></div>
<divclass="line"><aname="l01441"></a><spanclass="lineno"> 1441</span> <spanclass="comment">// Default values for parameters. Only parameters that define the</span></div>
<divclass="line"><aname="l01442"></a><spanclass="lineno"> 1442</span> <spanclass="comment">// properties of the solution returned need to have a default value</span></div>
<divclass="line"><aname="l01443"></a><spanclass="lineno"> 1443</span> <spanclass="comment">// (that is the same for all solvers). You can also define a default</span></div>
<divclass="line"><aname="l01444"></a><spanclass="lineno"> 1444</span> <spanclass="comment">// value for performance parameters when you are confident it is a</span></div>
<divclass="line"><aname="l01445"></a><spanclass="lineno"> 1445</span> <spanclass="comment">// good choice (example: always turn presolve on).</span></div>
<divclass="line"><aname="l01496"></a><spanclass="lineno"> 1496</span> <spanclass="comment">// Boolean value indicating whether each parameter is set to the</span></div>
<divclass="line"><aname="l01497"></a><spanclass="lineno"> 1497</span> <spanclass="comment">// solver's default value. Only parameters for which the wrapper</span></div>
<divclass="line"><aname="l01498"></a><spanclass="lineno"> 1498</span> <spanclass="comment">// does not define a default value need such an indicator.</span></div>
<divclass="line"><aname="l01504"></a><spanclass="lineno"> 1504</span> <spanclass="comment">// Whether the given MPSolverResponseStatus (of a solve) would yield an RPC</span></div>
<divclass="line"><aname="l01505"></a><spanclass="lineno"> 1505</span> <spanclass="comment">// error when happening on the linear solver stubby server, see</span></div>
<divclass="line"><aname="l01507"></a><spanclass="lineno"> 1507</span> <spanclass="comment">// Note that RPC errors forbid to carry a response to the client, who can only</span></div>
<divclass="line"><aname="l01508"></a><spanclass="lineno"> 1508</span> <spanclass="comment">// see the RPC error itself (error code + error message).</span></div>
<divclass="line"><aname="l01511"></a><spanclass="lineno"> 1511</span> <spanclass="comment">// This class wraps the actual mathematical programming solvers. Each</span></div>
<divclass="line"><aname="l01512"></a><spanclass="lineno"> 1512</span> <spanclass="comment">// solver (GLOP, CLP, CBC, GLPK, SCIP) has its own interface class that</span></div>
<divclass="line"><aname="l01513"></a><spanclass="lineno"> 1513</span> <spanclass="comment">// derives from this abstract class. This class is never directly</span></div>
<divclass="line"><aname="l01514"></a><spanclass="lineno"> 1514</span> <spanclass="comment">// accessed by the user.</span></div>
<divclass="line"><aname="l01523"></a><spanclass="lineno"> 1523</span> <spanclass="comment">// The underlying solver (CLP, GLPK, ...) and MPSolver are not in</span></div>
<divclass="line"><aname="l01524"></a><spanclass="lineno"> 1524</span> <spanclass="comment">// sync for the model nor for the solution.</span></div>
<divclass="line"><aname="l01526"></a><spanclass="lineno"> 1526</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model</span></div>
<divclass="line"><aname="l01527"></a><spanclass="lineno"> 1527</span> <spanclass="comment">// but not for the solution: the model has changed since the</span></div>
<divclass="line"><aname="l01528"></a><spanclass="lineno"> 1528</span> <spanclass="comment">// solution was computed last.</span></div>
<divclass="line"><aname="l01530"></a><spanclass="lineno"> 1530</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model and</span></div>
<divclass="line"><aname="l01531"></a><spanclass="lineno"> 1531</span> <spanclass="comment">// the solution.</span></div>
<divclass="line"><aname="l01535"></a><spanclass="lineno"> 1535</span> <spanclass="comment">// When the underlying solver does not provide the number of simplex</span></div>
<divclass="line"><aname="l01538"></a><spanclass="lineno"> 1538</span> <spanclass="comment">// When the underlying solver does not provide the number of</span></div>
<divclass="line"><aname="l01542"></a><spanclass="lineno"> 1542</span> <spanclass="comment">// Constructor. The user will access the MPSolverInterface through the</span></div>
<divclass="line"><aname="l01543"></a><spanclass="lineno"> 1543</span> <spanclass="comment">// MPSolver passed as argument.</span></div>
<divclass="line"><aname="l01548"></a><spanclass="lineno"> 1548</span> <spanclass="comment">// Solves problem with specified parameter values. Returns true if the</span></div>
<divclass="line"><aname="l01549"></a><spanclass="lineno"> 1549</span> <spanclass="comment">// solution is optimal.</span></div>
<divclass="line"><aname="l01552"></a><spanclass="lineno"> 1552</span> <spanclass="comment">// Directly solves a MPModelRequest, bypassing the MPSolver data structures</span></div>
<divclass="line"><aname="l01553"></a><spanclass="lineno"> 1553</span> <spanclass="comment">// entirely. Returns {} (eg. absl::nullopt) if the feature is not supported by</span></div>
<divclass="line"><aname="l01554"></a><spanclass="lineno"> 1554</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01560"></a><spanclass="lineno"> 1560</span> <spanclass="comment">// Writes the model using the solver internal write function. Currently only</span></div>
<divclass="line"><aname="l01561"></a><spanclass="lineno"> 1561</span> <spanclass="comment">// available for GurobiInterface.</span></div>
<divclass="line"><aname="l01564"></a><spanclass="lineno"> 1564</span> <spanclass="comment">// ----- Model modifications and extraction -----</span></div>
<divclass="line"><aname="l01568"></a><spanclass="lineno"> 1568</span> <spanclass="comment">// Sets the optimization direction (min/max).</span></div>
<divclass="line"><aname="l01571"></a><spanclass="lineno"> 1571</span> <spanclass="comment">// Modifies bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01574"></a><spanclass="lineno"> 1574</span> <spanclass="comment">// Modifies integrality of an extracted variable.</span></div>
<divclass="line"><aname="l01577"></a><spanclass="lineno"> 1577</span> <spanclass="comment">// Modify bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01583"></a><spanclass="lineno"> 1583</span> <spanclass="comment">// Adds an indicator constraint. Returns true if the feature is supported by</span></div>
<divclass="line"><aname="l01584"></a><spanclass="lineno"> 1584</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01598"></a><spanclass="lineno"> 1598</span> <spanclass="comment">// Clears a constraint from all its terms.</span></div>
<divclass="line"><aname="l01601"></a><spanclass="lineno"> 1601</span> <spanclass="comment">// Changes a coefficient in the linear objective.</span></div>
<divclass="line"><aname="l01605"></a><spanclass="lineno"> 1605</span> <spanclass="comment">// Changes the constant term in the linear objective.</span></div>
<divclass="line"><aname="l01608"></a><spanclass="lineno"> 1608</span> <spanclass="comment">// Clears the objective from all its terms.</span></div>
<divclass="line"><aname="l01612"></a><spanclass="lineno"> 1612</span> <spanclass="comment">// ------ Query statistics on the solution and the solve ------</span></div>
<divclass="line"><aname="l01613"></a><spanclass="lineno"> 1613</span> <spanclass="comment">// Returns the number of simplex iterations. The problem must be discrete,</span></div>
<divclass="line"><aname="l01614"></a><spanclass="lineno"> 1614</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfIterations in NDEBUG mode.</span></div>
<divclass="line"><aname="l01616"></a><spanclass="lineno"> 1616</span> <spanclass="comment">// Returns the number of branch-and-bound nodes. The problem must be discrete,</span></div>
<divclass="line"><aname="l01617"></a><spanclass="lineno"> 1617</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfNodes in NDEBUG mode.</span></div>
<divclass="line"><aname="l01619"></a><spanclass="lineno"> 1619</span> <spanclass="comment">// Returns the best objective bound. The problem must be discrete, otherwise</span></div>
<divclass="line"><aname="l01620"></a><spanclass="lineno"> 1620</span> <spanclass="comment">// it crashes, or returns trivial bound (+/- inf) in NDEBUG mode.</span></div>
<divclass="line"><aname="l01622"></a><spanclass="lineno"> 1622</span> <spanclass="comment">// Returns the objective value of the best solution found so far.</span></div>
<divclass="line"><aname="l01627"></a><spanclass="lineno"> 1627</span> <spanclass="comment">// Returns the basis status of a constraint.</span></div>
<divclass="line"><aname="l01630"></a><spanclass="lineno"> 1630</span> <spanclass="comment">// Checks whether the solution is synchronized with the model, i.e. whether</span></div>
<divclass="line"><aname="l01631"></a><spanclass="lineno"> 1631</span> <spanclass="comment">// the model has changed since the solution was computed last.</span></div>
<divclass="line"><aname="l01632"></a><spanclass="lineno"> 1632</span> <spanclass="comment">// If it isn't, it crashes in NDEBUG, and returns false othwerwise.</span></div>
<divclass="line"><aname="l01634"></a><spanclass="lineno"> 1634</span> <spanclass="comment">// Checks whether a feasible solution exists. The behavior is similar to</span></div>
<divclass="line"><aname="l01637"></a><spanclass="lineno"> 1637</span> <spanclass="comment">// Handy shortcut to do both checks above (it is often used).</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">// The value of the best objective bound. Used only for MIP solvers.</span></div>
<divclass="line"><aname="l01738"></a><spanclass="lineno"> 1738</span> <spanclass="comment">// Boolean indicator for the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01741"></a><spanclass="lineno"> 1741</span> <spanclass="comment">// Index of dummy variable created for empty constraints or the</span></div>
<divclass="line"><aname="l01747"></a><spanclass="lineno"> 1747</span> <spanclass="comment">// Extracts the variables that have not been extracted yet.</span></div>
<divclass="line"><aname="l01749"></a><spanclass="lineno"> 1749</span> <spanclass="comment">// Extracts the constraints that have not been extracted yet.</span></div>
<divclass="line"><aname="l01755"></a><spanclass="lineno"> 1755</span> <spanclass="comment">// Change synchronization status from SOLUTION_SYNCHRONIZED to</span></div>
<divclass="line"><aname="l01756"></a><spanclass="lineno"> 1756</span> <spanclass="comment">// MODEL_SYNCHRONIZED. To be used for model changes.</span></div>
<divclass="line"><aname="l01759"></a><spanclass="lineno"> 1759</span> <spanclass="comment">// Sets parameters common to LP and MIP in the underlying solver.</span></div>
<divclass="line"><aname="l01761"></a><spanclass="lineno"> 1761</span> <spanclass="comment">// Sets MIP specific parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01763"></a><spanclass="lineno"> 1763</span> <spanclass="comment">// Sets all parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01770"></a><spanclass="lineno"> 1770</span> <spanclass="comment">// Sets a supported double parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01773"></a><spanclass="lineno"> 1773</span> <spanclass="comment">// Sets a supported integer parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01776"></a><spanclass="lineno"> 1776</span> <spanclass="comment">// Sets each parameter in the underlying solver.</span></div>
<divclass="line"><aname="l01782"></a><spanclass="lineno"> 1782</span> <spanclass="comment">// Sets the number of threads to be used by the solver.</span></div>
<divclass="line"><aname="l01785"></a><spanclass="lineno"> 1785</span> <spanclass="comment">// Pass solver specific parameters in text format. The format is</span></div>
<divclass="line"><aname="l01786"></a><spanclass="lineno"> 1786</span> <spanclass="comment">// solver-specific and is the same as the corresponding solver configuration</span></div>
<divclass="line"><aname="l01787"></a><spanclass="lineno"> 1787</span> <spanclass="comment">// file format. Returns true if the operation was successful.</span></div>
<divclass="line"><aname="l01789"></a><spanclass="lineno"> 1789</span> <spanclass="comment">// Default implementation returns true if the input is empty. It returns false</span></div>
<divclass="line"><aname="l01790"></a><spanclass="lineno"> 1790</span> <spanclass="comment">// and logs a WARNING if the input is not empty.</span></div>
<divclass="ttc"id="aclassoperations__research_1_1_linear_expr_html"><divclass="ttname"><ahref="classoperations__research_1_1_linear_expr.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_1_linear_range_html"><divclass="ttname"><ahref="classoperations__research_1_1_linear_range.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_1_m_p_constraint_html"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01181">linear_solver.h:1181</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01277">linear_solver.h:1277</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01278">linear_solver.h:1278</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01275">linear_solver.h:1275</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01208">linear_solver.h:1208</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01282">linear_solver.h:1282</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01283">linear_solver.h:1283</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_ab0c809243bacbba99e083bddd16ebcaa"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01228">linear_solver.h:1228</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01281">linear_solver.h:1281</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01279">linear_solver.h:1279</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ac7502afa7413b2969adcfe572accefde"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.html#ac7502afa7413b2969adcfe572accefde">operations_research::MPConstraint::set_is_lazy</a></div><divclass="ttdeci">void set_is_lazy(bool laziness)</div><divclass="ttdoc">Advanced usage: sets the constraint "laziness".</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_1_m_p_constraint_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01284">linear_solver.h:1284</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01249">linear_solver.h:1249</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_accc4f1882f13ad57ef6bbe8fbe5d365d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.html#accc4f1882f13ad57ef6bbe8fbe5d365d">operations_research::MPConstraint::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#l01213">linear_solver.h:1213</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01184">linear_solver.h:1184</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ad90797a6c268fa29b515bdb5972c7bfb"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.html#ad90797a6c268fa29b515bdb5972c7bfb">operations_research::MPConstraint::SetLB</a></div><divclass="ttdeci">void SetLB(double lb)</div><divclass="ttdoc">Sets the lower bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01219">linear_solver.h:1219</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01276">linear_solver.h:1276</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01280">linear_solver.h:1280</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01285">linear_solver.h:1285</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_constraint_html_aeec48f5c4d2d1cc79926734f9b586ad5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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_1_m_p_constraint_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_constraint.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#l01274">linear_solver.h:1274</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00929">linear_solver.h:929</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a0ae674872034b9d61b389da66cb9503a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00992">linear_solver.h:992</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01027">linear_solver.h:1027</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a3d269786b0c64ba034e7e8a8a09213fc"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a3df780d69d67985929c76e750f913e21"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a3eee00e1029a4006afbd791f78d91657"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01028">linear_solver.h:1028</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01025">linear_solver.h:1025</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a615d9bd9c0c88aa56d31fdf95fbb5749"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00957">linear_solver.h:957</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a68da85394a0aa65bda40355466afba93"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00978">linear_solver.h:978</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01032">linear_solver.h:1032</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01033">linear_solver.h:1033</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a8554e97d98d05016f16300cedf2be9f6"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_a96ffc785b7b2135c7980c985883ffdd3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00965">linear_solver.h:965</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_a9ec8e5b1017d35c4ce048c67330b0a10"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_aa3d71b1d66352ee439fdcdf8f3b93067"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01031">linear_solver.h:1031</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_ac187b2ba08422f3a06b8d1e1502ceea6"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00989">linear_solver.h:989</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_ac195da617c5cdd546ab7ecc67a2e7235"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l00974">linear_solver.h:974</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01029">linear_solver.h:1029</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01034">linear_solver.h:1034</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_addbc1b5c5e43ec84e2ffc8ec3ab9d830"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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_1_m_p_objective_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01026">linear_solver.h:1026</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01030">linear_solver.h:1030</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01035">linear_solver.h:1035</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_objective_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_objective.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#l01024">linear_solver.h:1024</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00181">linear_solver.h:181</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a018794097e44ee8189380eef2b0f267f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a03666f2e70e42a9560aa9ce7416d2644"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00368">linear_solver.h:368</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a0f97f44428bff07c2308b45bfb62223b"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a1269e748520719b9d11f6ef2d1c28c42"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a18daa488abaa904f23c8f74158290883"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a191cd9b1ba3e3c01a558a1f6c02a4429"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00281">linear_solver.h:281</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a19476a1c421b9ee05231ee9af2387057"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.html#a19476a1c421b9ee05231ee9af2387057">operations_research::MPSolver::constraint</a></div><divclass="ttdeci">MPConstraint * constraint(int index) const</div><divclass="ttdoc">Returns the constraint at the given index.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00378">linear_solver.h:378</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a226456dfb15300dd4e59d0bf80d0ce07"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.html#a226456dfb15300dd4e59d0bf80d0ce07">operations_research::MPSolver::MutableObjective</a></div><divclass="ttdeci">MPObjective * MutableObjective()</div><divclass="ttdoc">Returns the mutable objective object.</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_1_m_p_solver_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00813">linear_solver.h:813</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a2c50b77c283c82d632f0dc605ceca3c3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a2ee6dd214598834edf57d950333b11f7"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a34caaebb9e2b365ef0ec449e870f5b5d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00304">linear_solver.h:304</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a34cfddb524394d766e725ed228f74ea3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a3e8b0f4b22e58bfd3ec683807e9b97b4"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a40ac97031cb9dfac6b4810f4d7dad835"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a4198b9880783bbbea8b517cc8ce868b3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.html#a4198b9880783bbbea8b517cc8ce868b3">operations_research::MPSolver::iterations</a></div><divclass="ttdeci">int64_t iterations() const</div><divclass="ttdoc">Returns the number of simplex iterations.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a4bf4b01cb836a567c90aeeea374ca2a2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a4eef77bb51bde41e69bed87ea44b86e1"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a5004489a36bc1393efa043044a63732f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00426">linear_solver.h:426</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a573d479910e373f5d771d303e440587d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00437">linear_solver.h:437</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a573d479910e373f5d771d303e440587da03f919221217f95d21a593a7120165e1"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00441">linear_solver.h:441</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a573d479910e373f5d771d303e440587da0e6873a155f86a4695f463bf8601d05f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00452">linear_solver.h:451</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a573d479910e373f5d771d303e440587dadd7ccc352d727224d39519584ed37cd7"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00447">linear_solver.h:447</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a573d479910e373f5d771d303e440587dae071e79c23f061c9dd00ee09519a0031"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00449">linear_solver.h:449</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00817">linear_solver.h:817</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a5cf8f81a46598a4ef20ae7674696c40d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a5ff11cd513c803ba3f75f2f672f1cf6f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00375">linear_solver.h:375</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00811">linear_solver.h:811</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00819">linear_solver.h:819</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a728f0121faaa95a451eaef6eb13e2242"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00820">linear_solver.h:820</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a76c87990aabadd148304b95332a60ff8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00189">linear_solver.h:189</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a77083241e8bdb93b619c7b9feaf82dec"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a849bf49baad56df58c018e8ab09456fb"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a858f72e8c0c03339c8d797d41a6fd4b8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a880227c1bbe5a1a2a21796a947804615"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a8eb213aafa3773dfb6a05d184e61bb8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00622">linear_solver.h:622</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a981cdf256aa33e518b8747c96bf1a9c7"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a99ad12b13903108544b594819a65b793"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a9d3beb2afe4ae647674b054bf29290e2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00298">linear_solver.h:298</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_a9df947ed3bb70075e234f8f0f78bc8ee"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_a9f55f5e7a62b45961982063ebc1e9945"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_aa38b5851203ddc9f64f01b87ad346ea1"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.html#aa38b5851203ddc9f64f01b87ad346ea1">operations_research::MPSolver::nodes</a></div><divclass="ttdeci">int64_t 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_1_m_p_solver_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_aa9a00625dd56e64b32c97b95445a1b9c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_aaa2bb34f1712b9d7c36d75b1ec704563"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_aaa766a9aa802903bf7a6e5b8fb82c70c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ab0f83070e72cee887e874382ee6d6958"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ab17a7a859c6e429296e55570c06337cf"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ab32654406932f9a6afcf44c4d5a143d2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ab60f33fbc8132eda10c296885625b7d9"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_abbf4c26107aac610a00471f41740b01e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00816">linear_solver.h:816</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00814">linear_solver.h:814</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_ac75b700ead5ff5d0944b5161e6dac9e8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00821">linear_solver.h:821</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_acd4056eff31d3008809b2e0b8a823373"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.html#acd4056eff31d3008809b2e0b8a823373">operations_research::MPSolver::variable</a></div><divclass="ttdeci">MPVariable * variable(int index) const</div><divclass="ttdoc">Returns the variable at position index.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00309">linear_solver.h:309</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_acdb0e5753d20e4d3ece49a0451d24c4f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00810">linear_solver.h:810</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_ae233b0f771236fe24ad255830012159f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ae74ce5ecb0dd3b4bcddb31bd59da7089"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00815">linear_solver.h:815</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00822">linear_solver.h:822</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_aee8250cf90d66d569534338248924469"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00286">linear_solver.h:286</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00812">linear_solver.h:812</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_html_af63f7de45a05eb7439a7a1c9ca594fd8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_afc5409af80c8d0d848fa354e5c8ea0b0"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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_1_m_p_solver_html_afd922eb2bef96597c426557a8056f76d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver.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#l00654">linear_solver.h:654</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_interface_html_a2cb8082675772ca81d04e87b6f4b1c8b"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_interface.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#l01743">linear_solver.h:1743</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01364">linear_solver.h:1364</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a0623b9007b18f0e4bb078fb6eb4dadaa"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01439">linear_solver.h:1439</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a09343ed6dde3059443fe6f4caa16e986"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_a1816929ef3ed29e5884291472b1b8739"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_a215b66c2ff063ffbf5b538ee402304cba01f385fe2acfe85efe038aa62b31edfb"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01415">linear_solver.h:1415</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a215b66c2ff063ffbf5b538ee402304cba34d17de87fc7339e07256ca5319dfa67"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01422">linear_solver.h:1421</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a25a1112e410b183f49ef4ce8da1bdc74a62fd26c37f80b6aabec3b463c55a1c85"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01430">linear_solver.h:1429</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a25a1112e410b183f49ef4ce8da1bdc74ab3f9de74d2d20c2eebcec60b7273d485"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01427">linear_solver.h:1427</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_a397e8c8da87415d5408e2dd5ec3e9932"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01367">linear_solver.h:1367</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a397e8c8da87415d5408e2dd5ec3e9932a184546f243ecb7d9be48659f8be82992"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01380">linear_solver.h:1379</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a397e8c8da87415d5408e2dd5ec3e9932a8c7c9aed0dcd36fc9a9af2fab295caf3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01377">linear_solver.h:1377</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a397e8c8da87415d5408e2dd5ec3e9932af5546ac8a26f50d8798bf634598a7eba"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.html#a397e8c8da87415d5408e2dd5ec3e9932af5546ac8a26f50d8798bf634598a7eba">operations_research::MPSolverParameters::RELATIVE_MIP_GAP</a></div><divclass="ttdeci">@ RELATIVE_MIP_GAP</div><divclass="ttdoc">Limit for relative MIP gap.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01369">linear_solver.h:1369</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a692014f815d7927760762b046675f658"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_a7319655592ea63d50ef2a6645e309784"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01383">linear_solver.h:1383</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a7319655592ea63d50ef2a6645e309784a420e8170e7ec327dd847b9610fc4565b"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01387">linear_solver.h:1387</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a7319655592ea63d50ef2a6645e309784a4d52eb956c0c02b9cbc37720f27abbb0"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.html#a7319655592ea63d50ef2a6645e309784a4d52eb956c0c02b9cbc37720f27abbb0">operations_research::MPSolverParameters::SCALING</a></div><divclass="ttdeci">@ SCALING</div><divclass="ttdoc">Advanced usage: enable or disable matrix scaling.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01392">linear_solver.h:1391</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a7319655592ea63d50ef2a6645e309784adabd0cf2fcb5726b7fc2aa3d54d5f3ff"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01389">linear_solver.h:1389</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_a79b59c0c868544afdaa05d89c8f8541f"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01403">linear_solver.h:1403</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_ad01b184e1c49d8aabd15a268ff976ac8"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01395">linear_solver.h:1395</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_ad01b184e1c49d8aabd15a268ff976ac8a3b48e7f264e3228b1494312657fd611a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01400">linear_solver.h:1399</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_ad01b184e1c49d8aabd15a268ff976ac8a9d70aea1ff48f145644d82953fd4322a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01397">linear_solver.h:1397</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_ad7c866ce738bfb6ac5fcee91fed998ed"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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#l01435">linear_solver.h:1435</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_solver_parameters_html_ae189b253817210ee7e605b089ccf47e4"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_aeae0a6e1e84d015690573b08d62b1395"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_aeeef6511f130ba8a9db2c308dbeada5c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_solver_parameters_html_af89ed33216d227599a7752bc0dc97ce3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_solver_parameters.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_1_m_p_variable_html"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01056">linear_solver.h:1056</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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_1_m_p_variable_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01135">linear_solver.h:1135</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a2bf24627eb5f1b609cd2704bddc3750d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.html#a2bf24627eb5f1b609cd2704bddc3750d">operations_research::MPVariable::branching_priority</a></div><divclass="ttdeci">int branching_priority() const</div><divclass="ttdoc">Advanced usage: Certain MIP solvers (e.g.</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_1_m_p_variable_html_a4584733ca3a135bb0e29e7b29988901d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.html#a4584733ca3a135bb0e29e7b29988901d">operations_research::MPVariable::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#l01089">linear_solver.h:1089</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a570e7e2c973cc96bedb0db08f5e062e3"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.html#a570e7e2c973cc96bedb0db08f5e062e3">operations_research::MPVariable::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#l01083">linear_solver.h:1083</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01136">linear_solver.h:1136</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01133">linear_solver.h:1133</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01140">linear_solver.h:1140</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01142">linear_solver.h:1142</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a7a302239fbb1f938a513636a6c7a3e2d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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_1_m_p_variable_html_a8844020cc1376123531cd53c831acdef"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01141">linear_solver.h:1141</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_a94743823a7ad3c565902fcf7956d4ae2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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_1_m_p_variable_html_abc6bcaac179c603ad3386fa7449c86a7"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01065">linear_solver.h:1065</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01139">linear_solver.h:1139</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01137">linear_solver.h:1137</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01143">linear_solver.h:1143</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01077">linear_solver.h:1077</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_accc4f1882f13ad57ef6bbe8fbe5d365d"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01080">linear_solver.h:1080</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01059">linear_solver.h:1059</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_ad90797a6c268fa29b515bdb5972c7bfb"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.html#ad90797a6c268fa29b515bdb5972c7bfb">operations_research::MPVariable::SetLB</a></div><divclass="ttdeci">void SetLB(double lb)</div><divclass="ttdoc">Sets the lower bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01086">linear_solver.h:1086</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_adf1a0cc6a3736f3db9880392efe02f0e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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_1_m_p_variable_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01134">linear_solver.h:1134</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01138">linear_solver.h:1138</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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_1_m_p_variable_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01144">linear_solver.h:1144</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1_m_p_variable_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1_m_p_variable.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#l01132">linear_solver.h:1132</a></div></div>
<divclass="ttc"id="alinear__expr_8h_html"><divclass="ttname"><ahref="linear__expr_8h.html">linear_expr.h</a></div><divclass="ttdoc">This file allows you to write natural code (like a mathematical equation) to model optimization probl...</div></div>