<ahref="linear__solver_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">// Copyright 2010-2018 Google LLC</span></div>
<divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div>
<divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment">// you may not use this file except in compliance with the License.</span></div>
<divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment">// You may obtain a copy of the License at</span></div>
<divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment">// Unless required by applicable law or agreed to in writing, software</span></div>
<divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div>
<divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// See the License for the specific language governing permissions and</span></div>
<divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment">// limitations under the License.</span></div>
<divclass="line"><aname="l00255"></a><spanclass="lineno"> 255</span> <spanclass="keywordflow">return</span> name_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00260"></a><spanclass="lineno"> 260</span> <spanclass="keywordflow">return</span> problem_type_; <spanclass="comment">// Set at construction.</span></div>
<divclass="line"><aname="l00736"></a><spanclass="lineno"> 736</span> <spanclass="comment">// DEPRECATED: Use TimeLimit() and SetTimeLimit(absl::Duration) instead.</span></div>
<divclass="line"><aname="l00737"></a><spanclass="lineno"> 737</span> <spanclass="comment">// NOTE: These deprecated functions used the convention time_limit = 0 to mean</span></div>
<divclass="line"><aname="l00738"></a><spanclass="lineno"> 738</span> <spanclass="comment">// "no limit", which now corresponds to time_limit_ = InfiniteDuration().</span></div>
<divclass="line"><aname="l00772"></a><spanclass="lineno"> 772</span> <spanclass="comment">// Debugging: verify that the given MPVariable* belongs to this solver.</span></div>
<divclass="line"><aname="l00776"></a><spanclass="lineno"> 776</span> <spanclass="comment">// Computes the size of the constraint with the largest number of</span></div>
<divclass="line"><aname="l00777"></a><spanclass="lineno"> 777</span> <spanclass="comment">// coefficients with index in [min_constraint_index,</span></div>
<divclass="line"><aname="l00782"></a><spanclass="lineno"> 782</span> <spanclass="comment">// Returns true if the model has constraints with lower bound > upper bound.</span></div>
<divclass="line"><aname="l00785"></a><spanclass="lineno"> 785</span> <spanclass="comment">// Returns true if the model has at least 1 integer variable.</span></div>
<divclass="line"><aname="l00788"></a><spanclass="lineno"> 788</span> <spanclass="comment">// Generates the map from variable names to their indices.</span></div>
<divclass="line"><aname="l00791"></a><spanclass="lineno"> 791</span> <spanclass="comment">// Generates the map from constraint names to their indices.</span></div>
<divclass="line"><aname="l00794"></a><spanclass="lineno"> 794</span> <spanclass="comment">// The name of the linear programming problem.</span></div>
<divclass="line"><aname="l00797"></a><spanclass="lineno"> 797</span> <spanclass="comment">// The type of the linear programming problem.</span></div>
<divclass="line"><aname="l00805"></a><spanclass="lineno"> 805</span> <spanclass="comment">// A map from a variable's name to its index in variables_.</span></div>
<divclass="line"><aname="l00808"></a><spanclass="lineno"> 808</span> <spanclass="comment">// Whether variables have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00811"></a><spanclass="lineno"> 811</span> <spanclass="comment">// The vector of constraints in the problem.</span></div>
<divclass="line"><aname="l00813"></a><spanclass="lineno"> 813</span> <spanclass="comment">// A map from a constraint's name to its index in constraints_.</span></div>
<divclass="line"><aname="l00816"></a><spanclass="lineno"> 816</span> <spanclass="comment">// Whether constraints have been extracted to the underlying interface.</span></div>
<divclass="line"><aname="l00822"></a><spanclass="lineno"> 822</span> <spanclass="comment">// Initial values for all or some of the problem variables that can be</span></div>
<divclass="line"><aname="l00823"></a><spanclass="lineno"> 823</span> <spanclass="comment">// exploited as a starting hint by a solver.</span></div>
<divclass="line"><aname="l00825"></a><spanclass="lineno"> 825</span> <spanclass="comment">// Note(user): as of 05/05/2015, we can't use >> because of some SWIG errors.</span></div>
<divclass="line"><aname="l00827"></a><spanclass="lineno"> 827</span> <spanclass="comment">// TODO(user): replace by two vectors, a std::vector<bool> to indicate if a</span></div>
<divclass="line"><aname="l00828"></a><spanclass="lineno"> 828</span> <spanclass="comment">// hint is provided and a std::vector<double> for the hint value.</span></div>
<divclass="line"><aname="l00835"></a><spanclass="lineno"> 835</span> <spanclass="comment">// Permanent storage for the number of threads.</span></div>
<divclass="line"><aname="l00854"></a><spanclass="lineno"> 854</span> <spanclass="keywordflow">return</span> os <<<aclass="code"href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(optimization_problem_type);</div>
<divclass="line"><aname="l00859"></a><spanclass="lineno"> 859</span> <spanclass="keywordflow">return</span> os << ProtoEnumToString<MPSolverResponseStatus>(</div>
<divclass="line"><aname="l00981"></a><spanclass="lineno"> 981</span> <spanclass="comment">// Constructor. An objective points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l00982"></a><spanclass="lineno"> 982</span> <spanclass="comment">// that is specified in the constructor. An objective cannot belong</span></div>
<divclass="line"><aname="l00983"></a><spanclass="lineno"> 983</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l00984"></a><spanclass="lineno"> 984</span> <spanclass="comment">// At construction, an MPObjective has no terms (which is equivalent</span></div>
<divclass="line"><aname="l00985"></a><spanclass="lineno"> 985</span> <spanclass="comment">// on having a coefficient of 0 for all variables), and an offset of 0.</span></div>
<divclass="line"><aname="l01090"></a><spanclass="lineno"> 1090</span> <spanclass="comment">// Constructor. A variable points to a single MPSolverInterface that</span></div>
<divclass="line"><aname="l01091"></a><spanclass="lineno"> 1091</span> <spanclass="comment">// is specified in the constructor. A variable cannot belong to</span></div>
<divclass="line"><aname="l01092"></a><spanclass="lineno"> 1092</span> <spanclass="comment">// several models.</span></div>
<divclass="line"><aname="l01231"></a><spanclass="lineno"> 1231</span> <spanclass="comment">// Constructor. A constraint points to a single MPSolverInterface</span></div>
<divclass="line"><aname="l01232"></a><spanclass="lineno"> 1232</span> <spanclass="comment">// that is specified in the constructor. A constraint cannot belong</span></div>
<divclass="line"><aname="l01233"></a><spanclass="lineno"> 1233</span> <spanclass="comment">// to several models.</span></div>
<divclass="line"><aname="l01249"></a><spanclass="lineno"> 1249</span> <spanclass="comment">// Returns true if the constraint contains variables that have not</span></div>
<divclass="line"><aname="l01250"></a><spanclass="lineno"> 1250</span> <spanclass="comment">// been extracted yet.</span></div>
<divclass="line"><aname="l01258"></a><spanclass="lineno"> 1258</span> <spanclass="comment">// The lower bound for the linear constraint.</span></div>
<divclass="line"><aname="l01261"></a><spanclass="lineno"> 1261</span> <spanclass="comment">// The upper bound for the linear constraint.</span></div>
<divclass="line"><aname="l01267"></a><spanclass="lineno"> 1267</span> <spanclass="comment">// If given, this constraint is only active if `indicator_variable_`'s value</span></div>
<divclass="line"><aname="l01268"></a><spanclass="lineno"> 1268</span> <spanclass="comment">// is equal to `indicator_value_`.</span></div>
<divclass="line"><aname="l01272"></a><spanclass="lineno"> 1272</span> <spanclass="comment">// True if the constraint is "lazy", i.e. the constraint is added to the</span></div>
<divclass="line"><aname="l01273"></a><spanclass="lineno"> 1273</span> <spanclass="comment">// underlying Linear Programming solver only if it is violated.</span></div>
<divclass="line"><aname="l01274"></a><spanclass="lineno"> 1274</span> <spanclass="comment">// By default this parameter is 'false'.</span></div>
<divclass="line"><aname="l01376"></a><spanclass="lineno"> 1376</span> <spanclass="comment">// Placeholder value to indicate that a parameter is set to</span></div>
<divclass="line"><aname="l01377"></a><spanclass="lineno"> 1377</span> <spanclass="comment">// the default value defined in the wrapper.</span></div>
<divclass="line"><aname="l01381"></a><spanclass="lineno"> 1381</span> <spanclass="comment">// Placeholder value to indicate that a parameter is unknown.</span></div>
<divclass="line"><aname="l01385"></a><spanclass="lineno"> 1385</span> <spanclass="comment">// Default values for parameters. Only parameters that define the</span></div>
<divclass="line"><aname="l01386"></a><spanclass="lineno"> 1386</span> <spanclass="comment">// properties of the solution returned need to have a default value</span></div>
<divclass="line"><aname="l01387"></a><spanclass="lineno"> 1387</span> <spanclass="comment">// (that is the same for all solvers). You can also define a default</span></div>
<divclass="line"><aname="l01388"></a><spanclass="lineno"> 1388</span> <spanclass="comment">// value for performance parameters when you are confident it is a</span></div>
<divclass="line"><aname="l01389"></a><spanclass="lineno"> 1389</span> <spanclass="comment">// good choice (example: always turn presolve on).</span></div>
<divclass="line"><aname="l01440"></a><spanclass="lineno"> 1440</span> <spanclass="comment">// Boolean value indicating whether each parameter is set to the</span></div>
<divclass="line"><aname="l01441"></a><spanclass="lineno"> 1441</span> <spanclass="comment">// solver's default value. Only parameters for which the wrapper</span></div>
<divclass="line"><aname="l01442"></a><spanclass="lineno"> 1442</span> <spanclass="comment">// does not define a default value need such an indicator.</span></div>
<divclass="line"><aname="l01448"></a><spanclass="lineno"> 1448</span> <spanclass="comment">// This class wraps the actual mathematical programming solvers. Each</span></div>
<divclass="line"><aname="l01449"></a><spanclass="lineno"> 1449</span> <spanclass="comment">// solver (GLOP, CLP, CBC, GLPK, SCIP) has its own interface class that</span></div>
<divclass="line"><aname="l01450"></a><spanclass="lineno"> 1450</span> <spanclass="comment">// derives from this abstract class. This class is never directly</span></div>
<divclass="line"><aname="l01451"></a><spanclass="lineno"> 1451</span> <spanclass="comment">// accessed by the user.</span></div>
<divclass="line"><aname="l01460"></a><spanclass="lineno"> 1460</span> <spanclass="comment">// The underlying solver (CLP, GLPK, ...) and MPSolver are not in</span></div>
<divclass="line"><aname="l01461"></a><spanclass="lineno"> 1461</span> <spanclass="comment">// sync for the model nor for the solution.</span></div>
<divclass="line"><aname="l01463"></a><spanclass="lineno"> 1463</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model</span></div>
<divclass="line"><aname="l01464"></a><spanclass="lineno"> 1464</span> <spanclass="comment">// but not for the solution: the model has changed since the</span></div>
<divclass="line"><aname="l01465"></a><spanclass="lineno"> 1465</span> <spanclass="comment">// solution was computed last.</span></div>
<divclass="line"><aname="l01467"></a><spanclass="lineno"> 1467</span> <spanclass="comment">// The underlying solver and MPSolver are in sync for the model and</span></div>
<divclass="line"><aname="l01468"></a><spanclass="lineno"> 1468</span> <spanclass="comment">// the solution.</span></div>
<divclass="line"><aname="l01472"></a><spanclass="lineno"> 1472</span> <spanclass="comment">// When the underlying solver does not provide the number of simplex</span></div>
<divclass="line"><aname="l01475"></a><spanclass="lineno"> 1475</span> <spanclass="comment">// When the underlying solver does not provide the number of</span></div>
<divclass="line"><aname="l01479"></a><spanclass="lineno"> 1479</span> <spanclass="comment">// Constructor. The user will access the MPSolverInterface through the</span></div>
<divclass="line"><aname="l01480"></a><spanclass="lineno"> 1480</span> <spanclass="comment">// MPSolver passed as argument.</span></div>
<divclass="line"><aname="l01485"></a><spanclass="lineno"> 1485</span> <spanclass="comment">// Solves problem with specified parameter values. Returns true if the</span></div>
<divclass="line"><aname="l01486"></a><spanclass="lineno"> 1486</span> <spanclass="comment">// solution is optimal.</span></div>
<divclass="line"><aname="l01489"></a><spanclass="lineno"> 1489</span> <spanclass="comment">// Directly solves a MPModelRequest, bypassing the MPSolver data structures</span></div>
<divclass="line"><aname="l01490"></a><spanclass="lineno"> 1490</span> <spanclass="comment">// entirely. Returns {} (eg. absl::nullopt) if the feature is not supported by</span></div>
<divclass="line"><aname="l01491"></a><spanclass="lineno"> 1491</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01497"></a><spanclass="lineno"> 1497</span> <spanclass="comment">// Writes the model using the solver internal write function. Currently only</span></div>
<divclass="line"><aname="l01498"></a><spanclass="lineno"> 1498</span> <spanclass="comment">// available for GurobiInterface.</span></div>
<divclass="line"><aname="l01501"></a><spanclass="lineno"> 1501</span> <spanclass="comment">// ----- Model modifications and extraction -----</span></div>
<divclass="line"><aname="l01505"></a><spanclass="lineno"> 1505</span> <spanclass="comment">// Sets the optimization direction (min/max).</span></div>
<divclass="line"><aname="l01508"></a><spanclass="lineno"> 1508</span> <spanclass="comment">// Modifies bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01511"></a><spanclass="lineno"> 1511</span> <spanclass="comment">// Modifies integrality of an extracted variable.</span></div>
<divclass="line"><aname="l01514"></a><spanclass="lineno"> 1514</span> <spanclass="comment">// Modify bounds of an extracted variable.</span></div>
<divclass="line"><aname="l01520"></a><spanclass="lineno"> 1520</span> <spanclass="comment">// Adds an indicator constraint. Returns true if the feature is supported by</span></div>
<divclass="line"><aname="l01521"></a><spanclass="lineno"> 1521</span> <spanclass="comment">// the underlying solver.</span></div>
<divclass="line"><aname="l01535"></a><spanclass="lineno"> 1535</span> <spanclass="comment">// Clears a constraint from all its terms.</span></div>
<divclass="line"><aname="l01538"></a><spanclass="lineno"> 1538</span> <spanclass="comment">// Changes a coefficient in the linear objective.</span></div>
<divclass="line"><aname="l01542"></a><spanclass="lineno"> 1542</span> <spanclass="comment">// Changes the constant term in the linear objective.</span></div>
<divclass="line"><aname="l01545"></a><spanclass="lineno"> 1545</span> <spanclass="comment">// Clears the objective from all its terms.</span></div>
<divclass="line"><aname="l01549"></a><spanclass="lineno"> 1549</span> <spanclass="comment">// ------ Query statistics on the solution and the solve ------</span></div>
<divclass="line"><aname="l01550"></a><spanclass="lineno"> 1550</span> <spanclass="comment">// Returns the number of simplex iterations. The problem must be discrete,</span></div>
<divclass="line"><aname="l01551"></a><spanclass="lineno"> 1551</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfIterations in NDEBUG mode.</span></div>
<divclass="line"><aname="l01553"></a><spanclass="lineno"> 1553</span> <spanclass="comment">// Returns the number of branch-and-bound nodes. The problem must be discrete,</span></div>
<divclass="line"><aname="l01554"></a><spanclass="lineno"> 1554</span> <spanclass="comment">// otherwise it crashes, or returns kUnknownNumberOfNodes in NDEBUG mode.</span></div>
<divclass="line"><aname="l01556"></a><spanclass="lineno"> 1556</span> <spanclass="comment">// Returns the best objective bound. The problem must be discrete, otherwise</span></div>
<divclass="line"><aname="l01557"></a><spanclass="lineno"> 1557</span> <spanclass="comment">// it crashes, or returns trivial_worst_objective_bound() in NDEBUG mode.</span></div>
<divclass="line"><aname="l01559"></a><spanclass="lineno"> 1559</span> <spanclass="comment">// A trivial objective bound: the worst possible value of the objective,</span></div>
<divclass="line"><aname="l01560"></a><spanclass="lineno"> 1560</span> <spanclass="comment">// which will be +infinity if minimizing and -infinity if maximing.</span></div>
<divclass="line"><aname="l01562"></a><spanclass="lineno"> 1562</span> <spanclass="comment">// Returns the objective value of the best solution found so far.</span></div>
<divclass="line"><aname="l01567"></a><spanclass="lineno"> 1567</span> <spanclass="comment">// Returns the basis status of a constraint.</span></div>
<divclass="line"><aname="l01570"></a><spanclass="lineno"> 1570</span> <spanclass="comment">// Checks whether the solution is synchronized with the model, i.e. whether</span></div>
<divclass="line"><aname="l01571"></a><spanclass="lineno"> 1571</span> <spanclass="comment">// the model has changed since the solution was computed last.</span></div>
<divclass="line"><aname="l01572"></a><spanclass="lineno"> 1572</span> <spanclass="comment">// If it isn't, it crashes in NDEBUG, and returns false othwerwise.</span></div>
<divclass="line"><aname="l01574"></a><spanclass="lineno"> 1574</span> <spanclass="comment">// Checks whether a feasible solution exists. The behavior is similar to</span></div>
<divclass="line"><aname="l01577"></a><spanclass="lineno"> 1577</span> <spanclass="comment">// Handy shortcut to do both checks above (it is often used).</span></div>
<divclass="line"><aname="l01581"></a><spanclass="lineno"> 1581</span> <spanclass="comment">// Checks whether information on the best objective bound exists. The behavior</span></div>
<divclass="line"><aname="l01582"></a><spanclass="lineno"> 1582</span> <spanclass="comment">// is similar to CheckSolutionIsSynchronized() above.</span></div>
<divclass="line"><aname="l01586"></a><spanclass="lineno"> 1586</span> <spanclass="comment">// Queries problem type. For simplicity, the distinction between</span></div>
<divclass="line"><aname="l01587"></a><spanclass="lineno"> 1587</span> <spanclass="comment">// continuous and discrete is based on the declaration of the user</span></div>
<divclass="line"><aname="l01588"></a><spanclass="lineno"> 1588</span> <spanclass="comment">// when the solver is created (example: GLPK_LINEAR_PROGRAMMING</span></div>
<divclass="line"><aname="l01589"></a><spanclass="lineno"> 1589</span> <spanclass="comment">// vs. GLPK_MIXED_INTEGER_PROGRAMMING), not on the actual content of</span></div>
<divclass="line"><aname="l01590"></a><spanclass="lineno"> 1590</span> <spanclass="comment">// the model.</span></div>
<divclass="line"><aname="l01591"></a><spanclass="lineno"> 1591</span> <spanclass="comment">// Returns true if the problem is continuous.</span></div>
<divclass="line"><aname="l01593"></a><spanclass="lineno"> 1593</span> <spanclass="comment">// Returns true if the problem is continuous and linear.</span></div>
<divclass="line"><aname="l01595"></a><spanclass="lineno"> 1595</span> <spanclass="comment">// Returns true if the problem is discrete and linear.</span></div>
<divclass="line"><aname="l01598"></a><spanclass="lineno"> 1598</span> <spanclass="comment">// Returns the index of the last variable extracted.</span></div>
<divclass="line"><aname="l01614"></a><spanclass="lineno"> 1614</span> <spanclass="comment">// Returns the boolean indicating the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01616"></a><spanclass="lineno"> 1616</span> <spanclass="comment">// Sets the boolean indicating the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01619"></a><spanclass="lineno"> 1619</span> <spanclass="comment">// Returns the result status of the last solve.</span></div>
<divclass="line"><aname="l01625"></a><spanclass="lineno"> 1625</span> <spanclass="comment">// Returns a string describing the underlying solver and its version.</span></div>
<divclass="line"><aname="l01631"></a><spanclass="lineno"> 1631</span> <spanclass="comment">// Computes exact condition number. Only available for continuous</span></div>
<divclass="line"><aname="l01632"></a><spanclass="lineno"> 1632</span> <spanclass="comment">// problems and only implemented in GLPK.</span></div>
<divclass="line"><aname="l01639"></a><spanclass="lineno"> 1639</span>  LOG(FATAL) <<<spanclass="stringliteral">"Not supported by this solver."</span>;</div>
<divclass="line"><aname="l01644"></a><spanclass="lineno"> 1644</span> <spanclass="comment">// See MPSolver::NextSolution() for contract.</span></div>
<divclass="line"><aname="l01649"></a><spanclass="lineno"> 1649</span> <spanclass="comment">// To access the maximize_ bool and the MPSolver.</span></div>
<divclass="line"><aname="l01655"></a><spanclass="lineno"> 1655</span> <spanclass="comment">// Indicates whether the model and the solution are synchronized.</span></div>
<divclass="line"><aname="l01657"></a><spanclass="lineno"> 1657</span> <spanclass="comment">// Indicates whether the solve has reached optimality,</span></div>
<divclass="line"><aname="l01658"></a><spanclass="lineno"> 1658</span> <spanclass="comment">// infeasibility, a limit, etc.</span></div>
<divclass="line"><aname="l01663"></a><spanclass="lineno"> 1663</span> <spanclass="comment">// Index in MPSolver::variables_ of last constraint extracted.</span></div>
<divclass="line"><aname="l01665"></a><spanclass="lineno"> 1665</span> <spanclass="comment">// Index in MPSolver::constraints_ of last variable extracted.</span></div>
<divclass="line"><aname="l01671"></a><spanclass="lineno"> 1671</span> <spanclass="comment">// Boolean indicator for the verbosity of the solver output.</span></div>
<divclass="line"><aname="l01674"></a><spanclass="lineno"> 1674</span> <spanclass="comment">// Index of dummy variable created for empty constraints or the</span></div>
<divclass="line"><aname="l01680"></a><spanclass="lineno"> 1680</span> <spanclass="comment">// Extracts the variables that have not been extracted yet.</span></div>
<divclass="line"><aname="l01682"></a><spanclass="lineno"> 1682</span> <spanclass="comment">// Extracts the constraints that have not been extracted yet.</span></div>
<divclass="line"><aname="l01688"></a><spanclass="lineno"> 1688</span> <spanclass="comment">// Change synchronization status from SOLUTION_SYNCHRONIZED to</span></div>
<divclass="line"><aname="l01689"></a><spanclass="lineno"> 1689</span> <spanclass="comment">// MODEL_SYNCHRONIZED. To be used for model changes.</span></div>
<divclass="line"><aname="l01692"></a><spanclass="lineno"> 1692</span> <spanclass="comment">// Sets parameters common to LP and MIP in the underlying solver.</span></div>
<divclass="line"><aname="l01694"></a><spanclass="lineno"> 1694</span> <spanclass="comment">// Sets MIP specific parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01696"></a><spanclass="lineno"> 1696</span> <spanclass="comment">// Sets all parameters in the underlying solver.</span></div>
<divclass="line"><aname="l01703"></a><spanclass="lineno"> 1703</span> <spanclass="comment">// Sets a supported double parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01706"></a><spanclass="lineno"> 1706</span> <spanclass="comment">// Sets a supported integer parameter to an unsupported value.</span></div>
<divclass="line"><aname="l01709"></a><spanclass="lineno"> 1709</span> <spanclass="comment">// Sets each parameter in the underlying solver.</span></div>
<divclass="line"><aname="l01715"></a><spanclass="lineno"> 1715</span> <spanclass="comment">// Sets the number of threads to be used by the solver.</span></div>
<divclass="line"><aname="l01718"></a><spanclass="lineno"> 1718</span> <spanclass="comment">// Pass solver specific parameters in text format. The format is</span></div>
<divclass="line"><aname="l01719"></a><spanclass="lineno"> 1719</span> <spanclass="comment">// solver-specific and is the same as the corresponding solver configuration</span></div>
<divclass="line"><aname="l01720"></a><spanclass="lineno"> 1720</span> <spanclass="comment">// file format. Returns true if the operation was successful.</span></div>
<divclass="line"><aname="l01722"></a><spanclass="lineno"> 1722</span> <spanclass="comment">// The default implementation of this method stores the parameters in a</span></div>
<divclass="line"><aname="l01723"></a><spanclass="lineno"> 1723</span> <spanclass="comment">// temporary file and calls ReadParameterFile to import the parameter file</span></div>
<divclass="line"><aname="l01724"></a><spanclass="lineno"> 1724</span> <spanclass="comment">// into the solver. Solvers that support passing the parameters directly can</span></div>
<divclass="line"><aname="l01725"></a><spanclass="lineno"> 1725</span> <spanclass="comment">// override this method to skip the temporary file logic.</span></div>
<divclass="line"><aname="l01729"></a><spanclass="lineno"> 1729</span> <spanclass="comment">// Reads a solver-specific file of parameters and set them.</span></div>
<divclass="line"><aname="l01730"></a><spanclass="lineno"> 1730</span> <spanclass="comment">// Returns true if there was no errors.</span></div>
<divclass="line"><aname="l01733"></a><spanclass="lineno"> 1733</span> <spanclass="comment">// Returns a file extension like ".tmp", this is needed because some solvers</span></div>
<divclass="line"><aname="l01734"></a><spanclass="lineno"> 1734</span> <spanclass="comment">// require a given extension for the ReadParameterFile() filename and we need</span></div>
<divclass="line"><aname="l01735"></a><spanclass="lineno"> 1735</span> <spanclass="comment">// to know it to generate a temporary parameter file.</span></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a03666f2e70e42a9560aa9ce7416d2644"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a03666f2e70e42a9560aa9ce7416d2644">operations_research::MPSolver::NumConstraints</a></div><divclass="ttdeci">int NumConstraints() const</div><divclass="ttdoc">Returns the number of constraints.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00336">linear_solver.h:336</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a0ae674872034b9d61b389da66cb9503a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a0ae674872034b9d61b389da66cb9503a">operations_research::MPObjective::SetMaximization</a></div><divclass="ttdeci">void SetMaximization()</div><divclass="ttdoc">Sets the optimization direction to maximize.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00936">linear_solver.h:936</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_aeae0a6e1e84d015690573b08d62b1395"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#aeae0a6e1e84d015690573b08d62b1395">operations_research::MPSolverParameters::GetIntegerParam</a></div><divclass="ttdeci">int GetIntegerParam(MPSolverParameters::IntegerParam param) const</div><divclass="ttdoc">Returns the value of an integer parameter.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784a420e8170e7ec327dd847b9610fc4565b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784a420e8170e7ec327dd847b9610fc4565b">operations_research::MPSolverParameters::LP_ALGORITHM</a></div><divclass="ttdeci">@ LP_ALGORITHM</div><divclass="ttdoc">Algorithm to solve linear programs.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01331">linear_solver.h:1331</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a2def997791a2a5119c3502aa68c34181">operations_research::MPConstraint::SetCoefficient</a></div><divclass="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><divclass="ttdoc">Sets the coefficient of the variable on the constraint.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a1269e748520719b9d11f6ef2d1c28c42"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a1269e748520719b9d11f6ef2d1c28c42">operations_research::MPSolver::underlying_solver</a></div><divclass="ttdeci">void * underlying_solver()</div><divclass="ttdoc">Advanced usage: returns the underlying solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_af63f7de45a05eb7439a7a1c9ca594fd8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#af63f7de45a05eb7439a7a1c9ca594fd8">operations_research::MPSolver::SupportsProblemType</a></div><divclass="ttdeci">static bool SupportsProblemType(OptimizationProblemType problem_type)</div><divclass="ttdoc">Whether the given problem type is supported (this will depend on the targets that you linked).</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a372de693ad40b3f42839c8ec6ac845f4">operations_research::MPSolver::Reset</a></div><divclass="ttdeci">void Reset()</div><divclass="ttdoc">Advanced usage: resets extracted model to solve from scratch.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPObjective::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00975">linear_solver.h:975</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html">operations_research::MPVariable</a></div><divclass="ttdoc">The class for variables of a Mathematical Programming (MP) model.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01000">linear_solver.h:1000</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html">operations_research::MPSolver</a></div><divclass="ttdoc">This mathematical programming (MP) solver class is the main class though which users build and solve ...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00173">linear_solver.h:173</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_af89ed33216d227599a7752bc0dc97ce3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#af89ed33216d227599a7752bc0dc97ce3">operations_research::MPSolverParameters::ResetDoubleParam</a></div><divclass="ttdeci">void ResetDoubleParam(MPSolverParameters::DoubleParam param)</div><divclass="ttdoc">Sets a double parameter to its default value (default value defined in MPSolverParameters if it exist...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_abbf4c26107aac610a00471f41740b01e"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#abbf4c26107aac610a00471f41740b01e">operations_research::MPSolver::LookupConstraintOrNull</a></div><divclass="ttdeci">MPConstraint * LookupConstraintOrNull(const std::string &constraint_name) const</div><divclass="ttdoc">Looks up a constraint by name, and returns nullptr if it does not exist.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aee1ddf25e86286c16face31551751bda">operations_research::MPObjective::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00979">linear_solver.h:979</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8a9d70aea1ff48f145644d82953fd4322a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8a9d70aea1ff48f145644d82953fd4322a">operations_research::MPSolverParameters::PRESOLVE_OFF</a></div><divclass="ttdeci">@ PRESOLVE_OFF</div><divclass="ttdoc">Presolve is off.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01341">linear_solver.h:1341</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aee1ddf25e86286c16face31551751bda">operations_research::MPConstraint::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01229">linear_solver.h:1229</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab17a7a859c6e429296e55570c06337cf"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab17a7a859c6e429296e55570c06337cf">operations_research::MPSolver::ComputeConstraintActivities</a></div><divclass="ttdeci">std::vector< double > ComputeConstraintActivities() const</div><divclass="ttdoc">Advanced usage: compute the "activities" of all constraints, which are the sums of their linear terms...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPObjective::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00969">linear_solver.h:969</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932a184546f243ecb7d9be48659f8be82992"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932a184546f243ecb7d9be48659f8be82992">operations_research::MPSolverParameters::DUAL_TOLERANCE</a></div><divclass="ttdeci">@ DUAL_TOLERANCE</div><divclass="ttdoc">Advanced usage: tolerance for dual feasibility of basic solutions.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01323">linear_solver.h:1323</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#acca41811e8aaab0112b987749c0ecb93">operations_research::MPVariable::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the variable in the MPSolver::variables_.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01021">linear_solver.h:1021</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPConstraint::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears all variables and coefficients. Does not clear the bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a200ccd114eb5057856c05501c2d4abe5"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a200ccd114eb5057856c05501c2d4abe5">operations_research::MPSolver::MakeBoolVarArray</a></div><divclass="ttdeci">void MakeBoolVarArray(int nb, const std::string &name, std::vector< MPVariable * > *vars)</div><divclass="ttdoc">Creates an array of boolean variables.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a13350b0e0b8b4b2571b6088895f08ab1"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a13350b0e0b8b4b2571b6088895f08ab1">operations_research::MPSolver::ParseSolverType</a></div><divclass="ttdeci">static bool ParseSolverType(absl::string_view solver, OptimizationProblemType *type)</div><divclass="ttdoc">Parses the name of the solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPVariable::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01086">linear_solver.h:1086</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a2def997791a2a5119c3502aa68c34181"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a2def997791a2a5119c3502aa68c34181">operations_research::MPObjective::SetCoefficient</a></div><divclass="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><divclass="ttdoc">Sets the coefficient of the variable in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9333144b7d28f68a7537b2ba19a1ba9b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9333144b7d28f68a7537b2ba19a1ba9b">operations_research::MPSolver::MakeIntVarArray</a></div><divclass="ttdeci">void MakeIntVarArray(int nb, double lb, double ub, const std::string &name, std::vector< MPVariable * > *vars)</div><divclass="ttdoc">Creates an array of integer variables.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPSolver::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00769">linear_solver.h:769</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a68da85394a0aa65bda40355466afba93"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a68da85394a0aa65bda40355466afba93">operations_research::MPObjective::MinimizeLinearExpr</a></div><divclass="ttdeci">void MinimizeLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Resets the current objective to minimize linear_expr.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00922">linear_solver.h:922</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverInterface_html_a6c11e032bf037b6f6567a654ef888f2c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverInterface.html#a6c11e032bf037b6f6567a654ef888f2c">operations_research::MPSolverInterface::SetIntegerParamToUnsupportedValue</a></div><divclass="ttdeci">virtual void SetIntegerParamToUnsupportedValue(MPSolverParameters::IntegerParam param, int value)</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aa9a00625dd56e64b32c97b95445a1b9c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aa9a00625dd56e64b32c97b95445a1b9c">operations_research::MPSolver::ExportModelAsLpFormat</a></div><divclass="ttdeci">bool ExportModelAsLpFormat(bool obfuscate, std::string *model_str) const</div><divclass="ttdoc">Shortcuts to the homonymous MPModelProtoExporter methods, via exporting to a MPModelProto with Export...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPSolver::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00763">linear_solver.h:763</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html">operations_research::MPConstraint</a></div><divclass="ttdoc">The class for constraints of a Mathematical Programming (MP) model.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01125">linear_solver.h:1125</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPVariable::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01083">linear_solver.h:1083</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPSolver::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00760">linear_solver.h:760</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587da03f919221217f95d21a593a7120165e1"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587da03f919221217f95d21a593a7120165e1">operations_research::MPSolver::FEASIBLE</a></div><divclass="ttdeci">@ FEASIBLE</div><divclass="ttdoc">feasible, or stopped by limit.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00406">linear_solver.h:406</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a18daa488abaa904f23c8f74158290883"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a18daa488abaa904f23c8f74158290883">operations_research::MPSolver::NextSolution</a></div><divclass="ttdeci">ABSL_MUST_USE_RESULT bool NextSolution()</div><divclass="ttdoc">Some solvers (MIP only, not LP) can produce multiple solutions to the problem.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPVariable::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01076">linear_solver.h:1076</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ae189b253817210ee7e605b089ccf47e4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ae189b253817210ee7e605b089ccf47e4">operations_research::MPSolverParameters::SetIntegerParam</a></div><divclass="ttdeci">void SetIntegerParam(MPSolverParameters::IntegerParam param, int value)</div><divclass="ttdoc">Sets a integer parameter to a specific value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a25a1112e410b183f49ef4ce8da1bdc74ab3f9de74d2d20c2eebcec60b7273d485"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a25a1112e410b183f49ef4ce8da1bdc74ab3f9de74d2d20c2eebcec60b7273d485">operations_research::MPSolverParameters::SCALING_OFF</a></div><divclass="ttdeci">@ SCALING_OFF</div><divclass="ttdoc">Scaling is off.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01371">linear_solver.h:1371</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a356d08f701ec7c64a00c19818bb72886">operations_research::MPObjective::GetCoefficient</a></div><divclass="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><divclass="ttdoc">Gets the coefficient of a given variable in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aa3d71b1d66352ee439fdcdf8f3b93067"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aa3d71b1d66352ee439fdcdf8f3b93067">operations_research::MPObjective::minimization</a></div><divclass="ttdeci">bool minimization() const</div><divclass="ttdoc">Is the optimization direction set to minimize?</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a96ffc785b7b2135c7980c985883ffdd3"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a96ffc785b7b2135c7980c985883ffdd3">operations_research::MPObjective::offset</a></div><divclass="ttdeci">double offset() const</div><divclass="ttdoc">Gets the constant term in the objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00909">linear_solver.h:909</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ac75b700ead5ff5d0944b5161e6dac9e8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ac75b700ead5ff5d0944b5161e6dac9e8">operations_research::MPSolver::InterruptSolve</a></div><divclass="ttdeci">bool InterruptSolve()</div><divclass="ttdoc">Interrupts the Solve() execution to terminate processing if possible.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ad90797a6c268fa29b515bdb5972c7bfb"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.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#l01163">linear_solver.h:1163</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aee1ddf25e86286c16face31551751bda">operations_research::MPSolver::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00770">linear_solver.h:770</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9d0b53fb310c467e251ddbb25d499082"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9d0b53fb310c467e251ddbb25d499082">operations_research::MPSolver::SetNumThreads</a></div><divclass="ttdeci">util::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_1MPConstraint_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPConstraint::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01225">linear_solver.h:1225</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a665001590f89bb9446d0030e2ef8047b">operations_research::MPObjective::terms</a></div><divclass="ttdeci">const absl::flat_hash_map< const MPVariable *, double >& terms() const</div><divclass="ttdoc">Returns a map from variables to their coefficients in the objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00901">linear_solver.h:901</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPVariable::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01081">linear_solver.h:1081</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8">operations_research::MPSolverParameters::PresolveValues</a></div><divclass="ttdeci">PresolveValues</div><divclass="ttdoc">For each categorical parameter, enumeration of possible values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01339">linear_solver.h:1339</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a880227c1bbe5a1a2a21796a947804615"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a880227c1bbe5a1a2a21796a947804615">operations_research::MPSolver::ExportModelToProto</a></div><divclass="ttdeci">void ExportModelToProto(MPModelProto *output_model) const</div><divclass="ttdoc">Exports model to protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverInterface_html_a2cb8082675772ca81d04e87b6f4b1c8b"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverInterface.html#a2cb8082675772ca81d04e87b6f4b1c8b">operations_research::MPSolverInterface::kDummyVariableIndex</a></div><divclass="ttdeci">static const int kDummyVariableIndex</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01676">linear_solver.h:1676</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a4584733ca3a135bb0e29e7b29988901d"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a4584733ca3a135bb0e29e7b29988901d">operations_research::MPConstraint::SetUB</a></div><divclass="ttdeci">void SetUB(double ub)</div><divclass="ttdoc">Sets the upper bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01166">linear_solver.h:1166</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPConstraint::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01226">linear_solver.h:1226</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a79b59c0c868544afdaa05d89c8f8541f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a79b59c0c868544afdaa05d89c8f8541f">operations_research::MPSolverParameters::LpAlgorithmValues</a></div><divclass="ttdeci">LpAlgorithmValues</div><divclass="ttdoc">LP algorithm to use.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01347">linear_solver.h:1347</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae74ce5ecb0dd3b4bcddb31bd59da7089"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae74ce5ecb0dd3b4bcddb31bd59da7089">operations_research::MPSolver::LoadModelFromProtoWithUniqueNamesOrDie</a></div><divclass="ttdeci">MPSolverResponseStatus LoadModelFromProtoWithUniqueNamesOrDie(const MPModelProto &input_model, std::string *error_message)</div><divclass="ttdoc">Loads model from protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPConstraint::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01228">linear_solver.h:1228</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ad8227ba86a01f26e4f173cd5e219d5d1">operations_research::MPVariable::name</a></div><divclass="ttdeci">const std::string & name() const</div><divclass="ttdoc">Returns the name of the variable.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01003">linear_solver.h:1003</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aeec48f5c4d2d1cc79926734f9b586ad5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aeec48f5c4d2d1cc79926734f9b586ad5">operations_research::MPConstraint::dual_value</a></div><divclass="ttdeci">double dual_value() const</div><divclass="ttdoc">Advanced usage: returns the dual value of the constraint in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html">operations_research::MPSolverParameters</a></div><divclass="ttdoc">This class stores parameter settings for LP and MIP solvers.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01308">linear_solver.h:1308</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a570e7e2c973cc96bedb0db08f5e062e3"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a570e7e2c973cc96bedb0db08f5e062e3">operations_research::MPConstraint::ub</a></div><divclass="ttdeci">double ub() const</div><divclass="ttdoc">Returns the upper bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01160">linear_solver.h:1160</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1LinearRange_html"><divclass="ttname"><ahref="classoperations__research_1_1LinearRange.html">operations_research::LinearRange</a></div><divclass="ttdoc">An expression of the form:</div><divclass="ttdef"><b>Definition:</b><ahref="linear__expr_8h_source.html#l00192">linear_expr.h:192</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a2c50b77c283c82d632f0dc605ceca3c3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a2c50b77c283c82d632f0dc605ceca3c3">operations_research::MPSolver::VerifySolution</a></div><divclass="ttdeci">bool VerifySolution(double tolerance, bool log_errors) const</div><divclass="ttdoc">Advanced usage: Verifies the correctness of the solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9f55f5e7a62b45961982063ebc1e9945"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9f55f5e7a62b45961982063ebc1e9945">operations_research::MPSolver::Solve</a></div><divclass="ttdeci">ResultStatus Solve()</div><divclass="ttdoc">Solves the problem using default parameter values.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aee8250cf90d66d569534338248924469"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aee8250cf90d66d569534338248924469">operations_research::MPSolver::ProblemType</a></div><divclass="ttdeci">virtual OptimizationProblemType ProblemType() const</div><divclass="ttdoc">Returns the optimization problem type set at construction.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00259">linear_solver.h:259</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac187b2ba08422f3a06b8d1e1502ceea6"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac187b2ba08422f3a06b8d1e1502ceea6">operations_research::MPObjective::SetMinimization</a></div><divclass="ttdeci">void SetMinimization()</div><divclass="ttdoc">Sets the optimization direction to minimize.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00933">linear_solver.h:933</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPConstraint::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01223">linear_solver.h:1223</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a8844020cc1376123531cd53c831acdef"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a8844020cc1376123531cd53c831acdef">operations_research::MPVariable::MPVariableSolutionValueTest</a></div><divclass="ttdeci">friend class MPVariableSolutionValueTest</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01085">linear_solver.h:1085</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784adabd0cf2fcb5726b7fc2aa3d54d5f3ff"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784adabd0cf2fcb5726b7fc2aa3d54d5f3ff">operations_research::MPSolverParameters::INCREMENTALITY</a></div><divclass="ttdeci">@ INCREMENTALITY</div><divclass="ttdoc">Advanced usage: incrementality from one solve to the next.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01333">linear_solver.h:1333</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#aecd5fee61b6013b1207c2ea622c849b5">operations_research::MPVariable::basis_status</a></div><divclass="ttdeci">MPSolver::BasisStatus basis_status() const</div><divclass="ttdoc">Advanced usage: returns the basis status of the variable in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ad8227ba86a01f26e4f173cd5e219d5d1"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ad8227ba86a01f26e4f173cd5e219d5d1">operations_research::MPConstraint::name</a></div><divclass="ttdeci">const std::string & name() const</div><divclass="ttdoc">Returns the name of the constraint.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01128">linear_solver.h:1128</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3d269786b0c64ba034e7e8a8a09213fc"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3d269786b0c64ba034e7e8a8a09213fc">operations_research::MPObjective::SetOffset</a></div><divclass="ttdeci">void SetOffset(double value)</div><divclass="ttdoc">Sets the constant term in the objective.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPObjective::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00976">linear_solver.h:976</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPConstraint::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01227">linear_solver.h:1227</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPVariable::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01084">linear_solver.h:1084</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_acca41811e8aaab0112b987749c0ecb93"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#acca41811e8aaab0112b987749c0ecb93">operations_research::MPConstraint::index</a></div><divclass="ttdeci">int index() const</div><divclass="ttdoc">Returns the index of the constraint in the MPSolver::constraints_.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01193">linear_solver.h:1193</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a372de693ad40b3f42839c8ec6ac845f4"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a372de693ad40b3f42839c8ec6ac845f4">operations_research::MPSolverParameters::Reset</a></div><divclass="ttdeci">void Reset()</div><divclass="ttdoc">Sets all parameters to their default value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPSolver::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears the objective (including the optimization direction), all variables and constraints.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ab0c809243bacbba99e083bddd16ebcaa"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ab0c809243bacbba99e083bddd16ebcaa">operations_research::MPConstraint::is_lazy</a></div><divclass="ttdeci">bool is_lazy() const</div><divclass="ttdoc">Advanced usage: returns true if the constraint is "lazy" (see below).</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01172">linear_solver.h:1172</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a356d08f701ec7c64a00c19818bb72886"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a356d08f701ec7c64a00c19818bb72886">operations_research::MPConstraint::GetCoefficient</a></div><divclass="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><divclass="ttdoc">Gets the coefficient of a given variable on the constraint (which is 0 if the variable does not appea...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a7a302239fbb1f938a513636a6c7a3e2d"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a7a302239fbb1f938a513636a6c7a3e2d">operations_research::MPVariable::reduced_cost</a></div><divclass="ttdeci">double reduced_cost() const</div><divclass="ttdoc">Advanced usage: returns the reduced cost of the variable in the current solution (only available for ...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a51ae17fc48ac80f494d7ed2202d61f29"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a51ae17fc48ac80f494d7ed2202d61f29">operations_research::MPSolver::nodes</a></div><divclass="ttdeci">int64 nodes() const</div><divclass="ttdoc">Returns the number of branch-and-bound nodes evaluated during the solve.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_aecd5fee61b6013b1207c2ea622c849b5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#aecd5fee61b6013b1207c2ea622c849b5">operations_research::MPConstraint::basis_status</a></div><divclass="ttdeci">MPSolver::BasisStatus basis_status() const</div><divclass="ttdoc">Advanced usage: returns the basis status of the constraint.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPVariable::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01087">linear_solver.h:1087</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_aeeef6511f130ba8a9db2c308dbeada5c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#aeeef6511f130ba8a9db2c308dbeada5c">operations_research::MPSolverParameters::MPSolverParameters</a></div><divclass="ttdeci">MPSolverParameters()</div><divclass="ttdoc">The constructor sets all parameters to their default value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad7c866ce738bfb6ac5fcee91fed998ed"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad7c866ce738bfb6ac5fcee91fed998ed">operations_research::MPSolverParameters::kDefaultIntegerParamValue</a></div><divclass="ttdeci">static const int kDefaultIntegerParamValue</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01379">linear_solver.h:1379</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a76c87990aabadd148304b95332a60ff8aa12b397b225ca43d143085b619706e18"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a76c87990aabadd148304b95332a60ff8aa12b397b225ca43d143085b619706e18">operations_research::MPSolver::SAT_INTEGER_PROGRAMMING</a></div><divclass="ttdeci">@ SAT_INTEGER_PROGRAMMING</div><divclass="ttdoc">SAT based solver (requires only integer and Boolean variables).</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00227">linear_solver.h:227</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587dadd7ccc352d727224d39519584ed37cd7"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587dadd7ccc352d727224d39519584ed37cd7">operations_research::MPSolver::ABNORMAL</a></div><divclass="ttdeci">@ ABNORMAL</div><divclass="ttdoc">abnormal, i.e., error of some kind.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00412">linear_solver.h:412</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a02bfb5cd5deeb2d5149f6976ee0456d6">operations_research::MPVariable::SetBounds</a></div><divclass="ttdeci">void SetBounds(double lb, double ub)</div><divclass="ttdoc">Sets both the lower and upper bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPVariable::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01077">linear_solver.h:1077</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1LinearExpr_html"><divclass="ttname"><ahref="classoperations__research_1_1LinearExpr.html">operations_research::LinearExpr</a></div><divclass="ttdoc">LinearExpr models a quantity that is linear in the decision variables (MPVariable) of an optimization...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__expr_8h_source.html#l00114">linear_expr.h:114</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a215b66c2ff063ffbf5b538ee402304cba01f385fe2acfe85efe038aa62b31edfb"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a215b66c2ff063ffbf5b538ee402304cba01f385fe2acfe85efe038aa62b31edfb">operations_research::MPSolverParameters::INCREMENTALITY_OFF</a></div><divclass="ttdeci">@ INCREMENTALITY_OFF</div><divclass="ttdoc">Start solve from scratch.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01359">linear_solver.h:1359</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPVariable::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01080">linear_solver.h:1080</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a0623b9007b18f0e4bb078fb6eb4dadaa"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a0623b9007b18f0e4bb078fb6eb4dadaa">operations_research::MPSolverParameters::kUnknownIntegerParamValue</a></div><divclass="ttdeci">static const int kUnknownIntegerParamValue</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01383">linear_solver.h:1383</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a981cdf256aa33e518b8747c96bf1a9c7"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a981cdf256aa33e518b8747c96bf1a9c7">operations_research::MPSolver::LookupVariableOrNull</a></div><divclass="ttdeci">MPVariable * LookupVariableOrNull(const std::string &var_name) const</div><divclass="ttdoc">Looks up a variable by name, and returns nullptr if it does not exist.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_accc4f1882f13ad57ef6bbe8fbe5d365d"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#accc4f1882f13ad57ef6bbe8fbe5d365d">operations_research::MPVariable::lb</a></div><divclass="ttdeci">double lb() const</div><divclass="ttdoc">Returns the lower bound.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01024">linear_solver.h:1024</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPObjective::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00974">linear_solver.h:974</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a94743823a7ad3c565902fcf7956d4ae2"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a94743823a7ad3c565902fcf7956d4ae2">operations_research::MPVariable::SetInteger</a></div><divclass="ttdeci">void SetInteger(bool integer)</div><divclass="ttdoc">Sets the integrality requirement of the variable.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPConstraint::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01222">linear_solver.h:1222</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_abc6bcaac179c603ad3386fa7449c86a7"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#abc6bcaac179c603ad3386fa7449c86a7">operations_research::MPVariable::integer</a></div><divclass="ttdeci">bool integer() const</div><divclass="ttdoc">Returns the integrality requirement of the variable.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01009">linear_solver.h:1009</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a7319655592ea63d50ef2a6645e309784"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a7319655592ea63d50ef2a6645e309784">operations_research::MPSolverParameters::IntegerParam</a></div><divclass="ttdeci">IntegerParam</div><divclass="ttdoc">Enumeration of parameters that take integer or categorical values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01327">linear_solver.h:1327</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a25a1112e410b183f49ef4ce8da1bdc74a62fd26c37f80b6aabec3b463c55a1c85"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a25a1112e410b183f49ef4ce8da1bdc74a62fd26c37f80b6aabec3b463c55a1c85">operations_research::MPSolverParameters::SCALING_ON</a></div><divclass="ttdeci">@ SCALING_ON</div><divclass="ttdoc">Scaling is on.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01373">linear_solver.h:1373</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPSolver::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00761">linear_solver.h:761</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac195da617c5cdd546ab7ecc67a2e7235"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac195da617c5cdd546ab7ecc67a2e7235">operations_research::MPObjective::MaximizeLinearExpr</a></div><divclass="ttdeci">void MaximizeLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Resets the current objective to maximize linear_expr.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00918">linear_solver.h:918</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a018794097e44ee8189380eef2b0f267f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a018794097e44ee8189380eef2b0f267f">operations_research::MPSolver::FillSolutionResponseProto</a></div><divclass="ttdeci">void FillSolutionResponseProto(MPSolutionResponse *response) const</div><divclass="ttdoc">Encodes the current solution in a solution response protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPSolver::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00762">linear_solver.h:762</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPSolver::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00758">linear_solver.h:758</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a226456dfb15300dd4e59d0bf80d0ce07"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.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#l00394">linear_solver.h:394</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a77083241e8bdb93b619c7b9feaf82dec"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a77083241e8bdb93b619c7b9feaf82dec">operations_research::MPSolver::SetSolverSpecificParametersAsString</a></div><divclass="ttdeci">bool SetSolverSpecificParametersAsString(const std::string &parameters)</div><divclass="ttdoc">Advanced usage: pass solver specific parameters in text format.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5004489a36bc1393efa043044a63732f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5004489a36bc1393efa043044a63732f">operations_research::MPSolver::Objective</a></div><divclass="ttdeci">const MPObjective & Objective() const</div><divclass="ttdoc">Returns the objective object.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00391">linear_solver.h:391</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPObjective::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00968">linear_solver.h:968</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPVariable::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01079">linear_solver.h:1079</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587d">operations_research::MPSolver::ResultStatus</a></div><divclass="ttdeci">ResultStatus</div><divclass="ttdoc">The status of solving the problem.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00402">linear_solver.h:402</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_abc935c6e0cb353e2c61d38ad8af1ed5c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#abc935c6e0cb353e2c61d38ad8af1ed5c">operations_research::MPSolver::XpressInterface</a></div><divclass="ttdeci">friend class XpressInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00764">linear_solver.h:764</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a76c87990aabadd148304b95332a60ff8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a76c87990aabadd148304b95332a60ff8">operations_research::MPSolver::OptimizationProblemType</a></div><divclass="ttdeci">OptimizationProblemType</div><divclass="ttdoc">The type of problems (LP or MIP) that will be solved and the underlying solver (GLOP,...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00181">linear_solver.h:181</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_a570e7e2c973cc96bedb0db08f5e062e3"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.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#l01027">linear_solver.h:1027</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a191cd9b1ba3e3c01a558a1f6c02a4429"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a191cd9b1ba3e3c01a558a1f6c02a4429">operations_research::MPSolver::Name</a></div><divclass="ttdeci">const std::string & Name() const</div><divclass="ttdoc">Returns the name of the model set at construction.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00254">linear_solver.h:254</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a692014f815d7927760762b046675f658"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a692014f815d7927760762b046675f658">operations_research::MPSolverParameters::GetDoubleParam</a></div><divclass="ttdeci">double GetDoubleParam(MPSolverParameters::DoubleParam param) const</div><divclass="ttdoc">Returns the value of a double parameter.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a02bfb5cd5deeb2d5149f6976ee0456d6"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a02bfb5cd5deeb2d5149f6976ee0456d6">operations_research::MPConstraint::SetBounds</a></div><divclass="ttdeci">void SetBounds(double lb, double ub)</div><divclass="ttdoc">Sets both the lower and upper bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a09343ed6dde3059443fe6f4caa16e986"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a09343ed6dde3059443fe6f4caa16e986">operations_research::MPSolverParameters::ResetIntegerParam</a></div><divclass="ttdeci">void ResetIntegerParam(MPSolverParameters::IntegerParam param)</div><divclass="ttdoc">Sets an integer parameter to its default value (default value defined in MPSolverParameters if it exi...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587dae071e79c23f061c9dd00ee09519a0031"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587dae071e79c23f061c9dd00ee09519a0031">operations_research::MPSolver::MODEL_INVALID</a></div><divclass="ttdeci">@ MODEL_INVALID</div><divclass="ttdoc">the model is trivially invalid (NaN coefficients, etc).</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00414">linear_solver.h:414</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a682a2933267dcfca8c5ba919406d7269"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a682a2933267dcfca8c5ba919406d7269">operations_research::MPSolver::LoadSolutionFromProto</a></div><divclass="ttdeci">util::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_1MPVariable_html_a4584733ca3a135bb0e29e7b29988901d"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.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#l01033">linear_solver.h:1033</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5ff11cd513c803ba3f75f2f672f1cf6f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5ff11cd513c803ba3f75f2f672f1cf6f">operations_research::MPSolver::constraints</a></div><divclass="ttdeci">const std::vector< MPConstraint * >& constraints() const</div><divclass="ttdoc">Returns the array of constraints handled by the MPSolver.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00343">linear_solver.h:343</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPConstraint::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01219">linear_solver.h:1219</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_aaa766a9aa802903bf7a6e5b8fb82c70c"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#aaa766a9aa802903bf7a6e5b8fb82c70c">operations_research::MPSolver::Write</a></div><divclass="ttdeci">void Write(const std::string &file_name)</div><divclass="ttdoc">Writes the model using the solver internal write function.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3df780d69d67985929c76e750f913e21"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3df780d69d67985929c76e750f913e21">operations_research::MPObjective::maximization</a></div><divclass="ttdeci">bool maximization() const</div><divclass="ttdoc">Is the optimization direction set to maximize?</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_acbd4413b1370baca9c45aecb0cb8ebd2"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPObjective::SatInterface</a></div><divclass="ttdeci">friend class SatInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00978">linear_solver.h:978</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPObjective::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00972">linear_solver.h:972</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a8eb213aafa3773dfb6a05d184e61bb8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a8eb213aafa3773dfb6a05d184e61bb8a">operations_research::MPSolver::GetNumThreads</a></div><divclass="ttdeci">int GetNumThreads() const</div><divclass="ttdoc">Returns the number of threads to be used during solve.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00579">linear_solver.h:579</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPObjective::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00970">linear_solver.h:970</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a8554e97d98d05016f16300cedf2be9f6"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a8554e97d98d05016f16300cedf2be9f6">operations_research::MPObjective::Value</a></div><divclass="ttdeci">double Value() const</div><divclass="ttdoc">Returns the objective value of the best solution found so far.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_ac28a56eeedb62d070578a9231f1875ea"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPObjective::GurobiInterface</a></div><divclass="ttdeci">friend class GurobiInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00973">linear_solver.h:973</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a665001590f89bb9446d0030e2ef8047b"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a665001590f89bb9446d0030e2ef8047b">operations_research::MPConstraint::terms</a></div><divclass="ttdeci">const absl::flat_hash_map< const MPVariable *, double >& terms() const</div><divclass="ttdoc">Returns a map from variables to their coefficients in the constraint.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01152">linear_solver.h:1152</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a3eee00e1029a4006afbd791f78d91657"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a3eee00e1029a4006afbd791f78d91657">operations_research::MPObjective::OptimizeLinearExpr</a></div><divclass="ttdeci">void OptimizeLinearExpr(const LinearExpr &linear_expr, bool is_maximization)</div><divclass="ttdoc">Resets the current objective to take the value of linear_expr, and sets the objective direction to ma...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a728f0121faaa95a451eaef6eb13e2242"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a728f0121faaa95a451eaef6eb13e2242">operations_research::MPSolver::MakeVar</a></div><divclass="ttdeci">MPVariable * MakeVar(double lb, double ub, bool integer, const std::string &name)</div><divclass="ttdoc">Creates a variable with the given bounds, integrality requirement and name.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html">operations_research::MPObjective</a></div><divclass="ttdoc">A class to express a linear objective.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00873">linear_solver.h:873</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ae9513c0aac7da800987dd6bd053c929d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ae9513c0aac7da800987dd6bd053c929d">operations_research::MPSolver::ClampSolutionWithinBounds</a></div><divclass="ttdeci">util::Status ClampSolutionWithinBounds()</div><divclass="ttdoc">Resets values of out of bound variables to the corresponding bound and returns an error if any of the...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a9d3beb2afe4ae647674b054bf29290e2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a9d3beb2afe4ae647674b054bf29290e2">operations_research::MPSolver::NumVariables</a></div><divclass="ttdeci">int NumVariables() const</div><divclass="ttdoc">Returns the number of variables.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00271">linear_solver.h:271</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932a8c7c9aed0dcd36fc9a9af2fab295caf3"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932a8c7c9aed0dcd36fc9a9af2fab295caf3">operations_research::MPSolverParameters::PRIMAL_TOLERANCE</a></div><divclass="ttdeci">@ PRIMAL_TOLERANCE</div><divclass="ttdoc">Advanced usage: tolerance for primal feasibility of basic solutions.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01321">linear_solver.h:1321</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPVariable::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01082">linear_solver.h:1082</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPConstraint::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01221">linear_solver.h:1221</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a858f72e8c0c03339c8d797d41a6fd4b8"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a858f72e8c0c03339c8d797d41a6fd4b8">operations_research::MPSolver::SolverVersion</a></div><divclass="ttdeci">std::string SolverVersion() const</div><divclass="ttdoc">Returns a string describing the underlying solver and its version.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPConstraint::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01220">linear_solver.h:1220</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPObjective::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00977">linear_solver.h:977</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_afd922eb2bef96597c426557a8056f76d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#afd922eb2bef96597c426557a8056f76d">operations_research::MPSolver::BasisStatus</a></div><divclass="ttdeci">BasisStatus</div><divclass="ttdoc">Advanced usage: possible basis status values for a variable and the slack variable of a linear constr...</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00611">linear_solver.h:611</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_acdb0e5753d20e4d3ece49a0451d24c4f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#acdb0e5753d20e4d3ece49a0451d24c4f">operations_research::MPSolver::MPSolver</a></div><divclass="ttdeci">MPSolver(const std::string &name, OptimizationProblemType problem_type)</div><divclass="ttdoc">Create a solver with the given name and underlying solver backend.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab0f83070e72cee887e874382ee6d6958"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab0f83070e72cee887e874382ee6d6958">operations_research::MPSolver::LoadModelFromProto</a></div><divclass="ttdeci">MPSolverResponseStatus LoadModelFromProto(const MPModelProto &input_model, std::string *error_message)</div><divclass="ttdoc">Loads model from protocol buffer.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a5c083b37243075a00bf909840dc7c933"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPSolver::SLMInterface</a></div><divclass="ttdeci">friend class SLMInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00765">linear_solver.h:765</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a615d9bd9c0c88aa56d31fdf95fbb5749"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a615d9bd9c0c88aa56d31fdf95fbb5749">operations_research::MPObjective::AddLinearExpr</a></div><divclass="ttdeci">void AddLinearExpr(const LinearExpr &linear_expr)</div><divclass="ttdoc">Adds linear_expr to the current objective, does not change the direction.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a60944ecdcad88cfb4d4d32feea70c9b5"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPSolver::CLPInterface</a></div><divclass="ttdeci">friend class CLPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00759">linear_solver.h:759</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a236f9752f4df4c5134617330a040ec8a"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPObjective::SCIPInterface</a></div><divclass="ttdeci">friend class SCIPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00971">linear_solver.h:971</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a4eef77bb51bde41e69bed87ea44b86e1"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a4eef77bb51bde41e69bed87ea44b86e1">operations_research::MPSolver::ComputeExactConditionNumber</a></div><divclass="ttdeci">double ComputeExactConditionNumber() const</div><divclass="ttdoc">Advanced usage: computes the exact condition number of the current scaled basis: L1norm(B) * L1norm(i...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a215b66c2ff063ffbf5b538ee402304cba34d17de87fc7339e07256ca5319dfa67"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a215b66c2ff063ffbf5b538ee402304cba34d17de87fc7339e07256ca5319dfa67">operations_research::MPSolverParameters::INCREMENTALITY_ON</a></div><divclass="ttdeci">@ INCREMENTALITY_ON</div><divclass="ttdoc">Reuse results from previous solve as much as the underlying solver allows.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01365">linear_solver.h:1365</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a397e8c8da87415d5408e2dd5ec3e9932"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a397e8c8da87415d5408e2dd5ec3e9932">operations_research::MPSolverParameters::DoubleParam</a></div><divclass="ttdeci">DoubleParam</div><divclass="ttdoc">Enumeration of parameters that take continuous values.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01311">linear_solver.h:1311</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_adf1a0cc6a3736f3db9880392efe02f0e"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#adf1a0cc6a3736f3db9880392efe02f0e">operations_research::MPVariable::solution_value</a></div><divclass="ttdeci">double solution_value() const</div><divclass="ttdoc">Returns the value of the variable in the current solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab32654406932f9a6afcf44c4d5a143d2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab32654406932f9a6afcf44c4d5a143d2">operations_research::MPSolver::OutputIsEnabled</a></div><divclass="ttdeci">bool OutputIsEnabled() const</div><divclass="ttdoc">Controls (or queries) the amount of output produced by the underlying solver.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a34caaebb9e2b365ef0ec449e870f5b5d"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a34caaebb9e2b365ef0ec449e870f5b5d">operations_research::MPSolver::variables</a></div><divclass="ttdeci">const std::vector< MPVariable * >& variables() const</div><divclass="ttdoc">Returns the array of variables handled by the MPSolver.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00277">linear_solver.h:277</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ad90797a6c268fa29b515bdb5972c7bfb"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.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#l01030">linear_solver.h:1030</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a4bf4b01cb836a567c90aeeea374ca2a2"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a4bf4b01cb836a567c90aeeea374ca2a2">operations_research::MPSolver::SetHint</a></div><divclass="ttdeci">void SetHint(std::vector< std::pair< const MPVariable *, double >> hint)</div><divclass="ttdoc">Sets a hint for solution.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPConstraint::CBCInterface</a></div><divclass="ttdeci">friend class CBCInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01218">linear_solver.h:1218</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_ad01b184e1c49d8aabd15a268ff976ac8a3b48e7f264e3228b1494312657fd611a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#ad01b184e1c49d8aabd15a268ff976ac8a3b48e7f264e3228b1494312657fd611a">operations_research::MPSolverParameters::PRESOLVE_ON</a></div><divclass="ttdeci">@ PRESOLVE_ON</div><divclass="ttdoc">Presolve is on.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01343">linear_solver.h:1343</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_aee1ddf25e86286c16face31551751bda"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#aee1ddf25e86286c16face31551751bda">operations_research::MPVariable::KnapsackInterface</a></div><divclass="ttdeci">friend class KnapsackInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01088">linear_solver.h:1088</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_a9ec8e5b1017d35c4ce048c67330b0a10"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#a9ec8e5b1017d35c4ce048c67330b0a10">operations_research::MPObjective::BestBound</a></div><divclass="ttdeci">double BestBound() const</div><divclass="ttdoc">Returns the best objective bound.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_aa71d36872f416feaa853788a7a7a7ef8"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#aa71d36872f416feaa853788a7a7a7ef8">operations_research::MPObjective::Clear</a></div><divclass="ttdeci">void Clear()</div><divclass="ttdoc">Clears the offset, all variables and coefficients, and the optimization direction.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_accc4f1882f13ad57ef6bbe8fbe5d365d"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.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#l01157">linear_solver.h:1157</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a6c754b527a347994b06eeb49a09ac222"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPSolver::GLOPInterface</a></div><divclass="ttdeci">friend class GLOPInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00767">linear_solver.h:767</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolverParameters_html_a1816929ef3ed29e5884291472b1b8739"><divclass="ttname"><ahref="classoperations__research_1_1MPSolverParameters.html#a1816929ef3ed29e5884291472b1b8739">operations_research::MPSolverParameters::SetDoubleParam</a></div><divclass="ttdeci">void SetDoubleParam(MPSolverParameters::DoubleParam param, double value)</div><divclass="ttdoc">Sets a double parameter to a specific value.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a7383308e6b9b63b18196798db342ce8a"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPSolver::BopInterface</a></div><divclass="ttdeci">friend class BopInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00768">linear_solver.h:768</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPObjective_html_addbc1b5c5e43ec84e2ffc8ec3ab9d830"><divclass="ttname"><ahref="classoperations__research_1_1MPObjective.html#addbc1b5c5e43ec84e2ffc8ec3ab9d830">operations_research::MPObjective::SetOptimizationDirection</a></div><divclass="ttdeci">void SetOptimizationDirection(bool maximize)</div><divclass="ttdoc">Sets the optimization direction (maximize: true or minimize: false).</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPConstraint_html_ae7cbd08108e1636184f28c1a71c42393"><divclass="ttname"><ahref="classoperations__research_1_1MPConstraint.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPConstraint::CplexInterface</a></div><divclass="ttdeci">friend class CplexInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01224">linear_solver.h:1224</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a8f94769e8f7f3e051ba504be9ed1fa6f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a8f94769e8f7f3e051ba504be9ed1fa6f">operations_research::MPSolver::iterations</a></div><divclass="ttdeci">int64 iterations() const</div><divclass="ttdoc">Returns the number of simplex iterations.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a99ad12b13903108544b594819a65b793"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a99ad12b13903108544b594819a65b793">operations_research::MPSolver::SolveWithProto</a></div><divclass="ttdeci">static void SolveWithProto(const MPModelRequest &model_request, MPSolutionResponse *response)</div><divclass="ttdoc">Solves the model encoded by a MPModelRequest protocol buffer and fills the solution encoded as a MPSo...</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_ab60f33fbc8132eda10c296885625b7d9"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#ab60f33fbc8132eda10c296885625b7d9">operations_research::MPSolver::MakeRowConstraint</a></div><divclass="ttdeci">MPConstraint * MakeRowConstraint()</div><divclass="ttdoc">Creates a constraint with -infinity and +infinity bounds.</div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPSolver_html_a573d479910e373f5d771d303e440587da0e6873a155f86a4695f463bf8601d05f"><divclass="ttname"><ahref="classoperations__research_1_1MPSolver.html#a573d479910e373f5d771d303e440587da0e6873a155f86a4695f463bf8601d05f">operations_research::MPSolver::NOT_SOLVED</a></div><divclass="ttdeci">@ NOT_SOLVED</div><divclass="ttdoc">not been solved yet.</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l00416">linear_solver.h:416</a></div></div>
<divclass="ttc"id="aclassoperations__research_1_1MPVariable_html_ae1a3e0a695903c8e6effd524a7f92784"><divclass="ttname"><ahref="classoperations__research_1_1MPVariable.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPVariable::GLPKInterface</a></div><divclass="ttdeci">friend class GLPKInterface</div><divclass="ttdef"><b>Definition:</b><ahref="linear__solver_8h_source.html#l01078">linear_solver.h:1078</a></div></div>