388 lines
383 KiB
HTML
388 lines
383 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>OR-Tools</title>
|
|
<meta http-equiv="Content-Type" content="text/html;"/>
|
|
<meta charset="utf-8"/>
|
|
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
|
|
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="banner-container">
|
|
<div id="banner">
|
|
<span id="sfml">OR-Tools 7.2</span>
|
|
</div>
|
|
</div>
|
|
<link rel="icon" href="https://developers.google.com/optimization/images/orLogo.png">
|
|
<div id="content">
|
|
<!-- Generated by Doxygen 1.8.15 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
<li><a href="globals.html"><span>File Members</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('linear__solver_8h_source.html','');});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">linear_solver.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="linear__solver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Copyright 2010-2018 Google LLC</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// A C++ wrapper that provides a simple and unified interface to</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// several linear programming and mixed integer programming solvers:</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GLOP, GLPK, CLP, CBC, and SCIP. The wrapper can also be used in Java, C#,</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// and Python via SWIG.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// -----------------------------------</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// What is Linear Programming?</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// In mathematics, linear programming (LP) is a technique for optimization of</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// a linear objective function, subject to linear equality and linear</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// inequality constraints. Informally, linear programming determines the way</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// to achieve the best outcome (such as maximum profit or lowest cost) in a</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// given mathematical model and given some list of requirements represented</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// as linear equations.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">//</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// The most widely used technique for solving a linear program is the Simplex</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// algorithm, devised by George Dantzig in 1947. It performs very well on</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// most instances, for which its running time is polynomial. A lot of effort</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// has been put into improving the algorithm and its implementation. As a</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// byproduct, it has however been shown that one can always construct</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// problems that take exponential time for the Simplex algorithm to solve.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Research has thus focused on trying to find a polynomial algorithm for</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// linear programming, or to prove that linear programming is indeed</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// polynomial.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Leonid Khachiyan first exhibited in 1979 a weakly polynomial algorithm for</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// linear programming. "Weakly polynomial" means that the running time of the</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// algorithm is in O(P(n) * 2^p) where P(n) is a polynomial of the size of the</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// problem, and p is the precision of computations expressed in number of</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// bits. With a fixed-precision, floating-point-based implementation, a weakly</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// polynomial algorithm will thus run in polynomial time. No implementation</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// of Khachiyan's algorithm has proved efficient, but a larger breakthrough in</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// the field came in 1984 when Narendra Karmarkar introduced a new interior</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// point method for solving linear programming problems. Interior point</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// algorithms have proved efficient on very large linear programs.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">//</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Check Wikipedia for more detail:</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// http://en.wikipedia.org/wiki/Linear_programming</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// -----------------------------------</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Example of a Linear Program</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// maximize:</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// 3x + y</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// subject to:</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// 1.5 x + 2 y <= 12</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// 0 <= x <= 3</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// 0 <= y <= 5</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// A linear program has:</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// 1) a linear objective function</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// 2) linear constraints that can be equalities or inequalities</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// 3) bounds on variables that can be positive, negative, finite or</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// infinite.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// -----------------------------------</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// What is Mixed Integer Programming?</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">//</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Here, the constraints and the objective are still linear but</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// there are additional integrality requirements for variables. If</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// all variables are required to take integer values, then the</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// problem is called an integer program (IP). In most cases, only</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// some variables are required to be integer and the rest of the</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// variables are continuous: this is called a mixed integer program</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// (MIP). IPs and MIPs are generally NP-hard.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">//</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// Integer variables can be used to model discrete decisions (build a</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// datacenter in city A or city B), logical relationships (only</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// place machines in datacenter A if we have decided to build</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// datacenter A) and approximate non-linear functions with piecewise</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// linear functions (for example, the cost of machines as a function</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// of how many machines are bought, or the latency of a server as a</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// function of its load).</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">//</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// -----------------------------------</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">//</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// How to use the wrapper</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">//</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// The user builds the model and solves it through the MPSolver class,</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// then queries the solution through the MPSolver, MPVariable and</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// MPConstraint classes. To be able to query a solution, you need the</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// following:</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// - A solution exists: MPSolver::Solve has been called and a solution</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// has been found.</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// - The model has not been modified since the last time</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// MPSolver::Solve was called. Otherwise, the solution obtained</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// before the model modification may not longer be feasible or</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// optimal.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">//</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// @see ../examples/linear_programming.cc for a simple LP example.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">//</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// @see ../examples/integer_programming.cc for a simple MIP example.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">//</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// All methods cannot be called successfully in all cases. For</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// example: you cannot query a solution when no solution exists, you</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// cannot query a reduced cost value (which makes sense only on</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// continuous problems) on a discrete problem. When a method is</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// called in an unsuitable context, it aborts with a</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// LOG(FATAL).</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// TODO(user): handle failures gracefully.</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">//</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// -----------------------------------</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">//</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// For developers: How the wrapper works</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// MPSolver stores a representation of the model (variables,</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// constraints and objective) in its own data structures and a</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// pointer to a MPSolverInterface that wraps the underlying solver</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// (GLOP, CBC, CLP, GLPK, or SCIP) that does the actual work. The</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// underlying solver also keeps a representation of the model in its</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// own data structures. The model representations in MPSolver and in</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// the underlying solver are kept in sync by the 'extraction'</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// mechanism: synchronously for some changes and asynchronously</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// (when MPSolver::Solve is called) for others. Synchronicity</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// depends on the modification applied and on the underlying solver.</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#ifndef OR_TOOLS_LINEAR_SOLVER_LINEAR_SOLVER_H_</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define OR_TOOLS_LINEAR_SOLVER_LINEAR_SOLVER_H_</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#include <limits></span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#include <utility></span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#include "absl/container/flat_hash_map.h"</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#include "absl/strings/match.h"</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#include "absl/strings/str_format.h"</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#include "absl/types/optional.h"</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#include "ortools/base/commandlineflags.h"</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#include "ortools/base/integral_types.h"</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#include "ortools/base/logging.h"</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#include "ortools/base/macros.h"</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#include "ortools/base/status.h"</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#include "ortools/base/timer.h"</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#include "ortools/glop/parameters.pb.h"</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#include "ortools/linear_solver/linear_expr.h"</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#include "<a class="code" href="linear__solver_8pb_8h.html">ortools/linear_solver/linear_solver.pb.h</a>"</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#include "ortools/port/proto_utils.h"</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html"> 160</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceoperations__research.html">operations_research</a> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#a07189276cc680928dad51ed197142077"> 162</a></span> constexpr <span class="keywordtype">double</span> <a class="code" href="namespaceoperations__research.html#a07189276cc680928dad51ed197142077">kDefaultPrimalTolerance</a> = 1e-07;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html"> 174</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2"> 182</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#ifdef USE_CLP</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a91bb43cabe6c49465bd7138189f3ea84"> 185</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a91bb43cabe6c49465bd7138189f3ea84">CLP_LINEAR_PROGRAMMING</a> = 0,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#ifdef USE_GLPK</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  GLPK_LINEAR_PROGRAMMING = 1,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#ifdef USE_GLOP</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a32049e26d1ea6f68624fc478b88d98c9"> 193</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a32049e26d1ea6f68624fc478b88d98c9">GLOP_LINEAR_PROGRAMMING</a> = 2,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor">#ifdef USE_GUROBI</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  GUROBI_LINEAR_PROGRAMMING = 6,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#ifdef USE_CPLEX</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  CPLEX_LINEAR_PROGRAMMING = 10,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment">// Integer programming problems.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#ifdef USE_SCIP</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a357b78ac84d42c93f2be55c89ed685dc"> 208</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a357b78ac84d42c93f2be55c89ed685dc">SCIP_MIXED_INTEGER_PROGRAMMING</a> = 3, <span class="comment">// Recommended default value.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#ifdef USE_GLPK</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  GLPK_MIXED_INTEGER_PROGRAMMING = 4,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#ifdef USE_CBC</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a6f8b8f9d64ae299e8cfccf4917bf5282"> 216</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a6f8b8f9d64ae299e8cfccf4917bf5282">CBC_MIXED_INTEGER_PROGRAMMING</a> = 5,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#if defined(USE_GUROBI)</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  GUROBI_MIXED_INTEGER_PROGRAMMING = 7,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor">#if defined(USE_CPLEX)</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  CPLEX_MIXED_INTEGER_PROGRAMMING = 11,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#if defined(USE_BOP)</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2aaef5b33a2d88606a978524ebc7b1cb7b"> 228</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2aaef5b33a2d88606a978524ebc7b1cb7b">BOP_INTEGER_PROGRAMMING</a> = 12,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#ab6a8a6c57eefce8c07c8a52e053b035b">MPSolver</a>(<span class="keyword">const</span> std::string& name, <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a> problem_type);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolver.html#aee7aedeeff79cd0645a5c7e8c0200834">~MPSolver</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#ae96df0f02a46493eba93d2e70709911a">SupportsProblemType</a>(<a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a> problem_type);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a650dd472cb06be9f9abcf5bc0833437d">ParseSolverType</a>(absl::string_view solver,</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a>* type);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a24caaef373d3715d5bce9fb0da2c203d">IsMIP</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a1d6101b365c33fb1f73a4c953abeb0ed"> 256</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="classoperations__research_1_1MPSolver.html#a1d6101b365c33fb1f73a4c953abeb0ed">Name</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> name_; <span class="comment">// Set at construction.</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a54e8b352edd37540f788c3fc473fa875"> 263</a></span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a> <a class="code" href="classoperations__research_1_1MPSolver.html#a54e8b352edd37540f788c3fc473fa875">ProblemType</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> problem_type_; <span class="comment">// Set at construction.</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a4fb5381d2f4a764660365168622e4955">Clear</a>();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a0ba0685c817d5c5910c80492dd1a7050"> 277</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a0ba0685c817d5c5910c80492dd1a7050">NumVariables</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> variables_.size(); }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a1593ede4c9cd1da430f606127dc9a642"> 283</a></span>  <span class="keyword">const</span> std::vector<MPVariable*>& <a class="code" href="classoperations__research_1_1MPSolver.html#a1593ede4c9cd1da430f606127dc9a642">variables</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> variables_; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#ae384aa3d9095f883a93f5e2e830e0077">LookupVariableOrNull</a>(<span class="keyword">const</span> std::string& var_name) <span class="keyword">const</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#ad6bb7605c749ba485b040b02a37f6728">MakeVar</a>(<span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keywordtype">bool</span> integer,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a54d66e99fdc2424e812d910e7c2f225a">MakeNumVar</a>(<span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#acf84ccc5151ce164a571d2f31f30960c">MakeIntVar</a>(<span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a7176be8ce0481d880a8d30a2d7a1c09e">MakeBoolVar</a>(<span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a2c58f52acd6216131582c60aae3625ee">MakeVarArray</a>(<span class="keywordtype">int</span> nb, <span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keywordtype">bool</span> integer,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">const</span> std::string& name_prefix,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  std::vector<MPVariable*>* vars);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a7aebea4f022e7a685322e7db70b76e5e">MakeNumVarArray</a>(<span class="keywordtype">int</span> nb, <span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keyword">const</span> std::string& name,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  std::vector<MPVariable*>* vars);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a5eefc88942fd284ff2962564224d5f8e">MakeIntVarArray</a>(<span class="keywordtype">int</span> nb, <span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub, <span class="keyword">const</span> std::string& name,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  std::vector<MPVariable*>* vars);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#af5c55776ce47479f8904480cd815a6d5">MakeBoolVarArray</a>(<span class="keywordtype">int</span> nb, <span class="keyword">const</span> std::string& name,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  std::vector<MPVariable*>* vars);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16a3cee848c033e365ebb1cf50bb97cd"> 356</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a16a3cee848c033e365ebb1cf50bb97cd">NumConstraints</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> constraints_.size(); }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#aebc45909b1f377ab86295578ec417a17"> 363</a></span>  <span class="keyword">const</span> std::vector<MPConstraint*>& <a class="code" href="classoperations__research_1_1MPSolver.html#aebc45909b1f377ab86295578ec417a17">constraints</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> constraints_; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a299502e4b0e4e6608330fdbe4fb86c94">LookupConstraintOrNull</a>(</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keyword">const</span> std::string& constraint_name) <span class="keyword">const</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>(<span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>(<span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>(<span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>(<span class="keyword">const</span> LinearRange& range);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">MakeRowConstraint</a>(<span class="keyword">const</span> LinearRange& range,</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> std::string& name);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a4834a6747544a7053110a0b20d79dac2"> 418</a></span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>& <a class="code" href="classoperations__research_1_1MPSolver.html#a4834a6747544a7053110a0b20d79dac2">Objective</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *objective_; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a467f89af3bae743dc9d628ee4e74f0c9"> 423</a></span>  <a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>* <a class="code" href="classoperations__research_1_1MPSolver.html#a467f89af3bae743dc9d628ee4e74f0c9">MutableObjective</a>() { <span class="keywordflow">return</span> objective_.get(); }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192"> 431</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">ResultStatus</a> {</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a7a765c1340de9cc37e22c68a2da7d390"> 433</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a7a765c1340de9cc37e22c68a2da7d390">OPTIMAL</a>,</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5930d45ccc1bc78ad06bcd15cbca6a29"> 435</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5930d45ccc1bc78ad06bcd15cbca6a29">FEASIBLE</a>,</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a84e96d7264feeb2b6577400bc379d9db"> 437</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a84e96d7264feeb2b6577400bc379d9db">INFEASIBLE</a>,</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a88c7283cc752b51ed05c21c73f8fe100"> 439</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a88c7283cc752b51ed05c21c73f8fe100">UNBOUNDED</a>,</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192ae7c84444803ea46da465b68fb6e974fa"> 441</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192ae7c84444803ea46da465b68fb6e974fa">ABNORMAL</a>,</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a0ce4e033c6bca973cb026780cdb7daa2"> 443</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a0ce4e033c6bca973cb026780cdb7daa2">MODEL_INVALID</a>,</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5c14184aabfffdb489347ab0486c8492"> 445</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5c14184aabfffdb489347ab0486c8492">NOT_SOLVED</a> = 6</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  };</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">ResultStatus</a> <a class="code" href="classoperations__research_1_1MPSolver.html#a1535b2a46d5cff6f9727c08085cfbb1f">Solve</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">ResultStatus</a> <a class="code" href="classoperations__research_1_1MPSolver.html#a1535b2a46d5cff6f9727c08085cfbb1f">Solve</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>& param);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#ad40ba327269cfff827f23ac4d94414d9">Write</a>(<span class="keyword">const</span> std::string& file_name);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  std::vector<double> <a class="code" href="classoperations__research_1_1MPSolver.html#ad07e28e347a4b2d94d53ca96ae201d70">ComputeConstraintActivities</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a2a4a0234b5830d4ea82d549b3b6b5baf">VerifySolution</a>(<span class="keywordtype">double</span> tolerance, <span class="keywordtype">bool</span> log_errors) <span class="keyword">const</span>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a0bade4bbf46f4e35513650d38a0a3208">Reset</a>();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a4413905b5839d17823e756cff10d0ffe">InterruptSolve</a>();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="namespaceoperations__research.html#a8cc975b7db5017319901da0f63a114aa">MPSolverResponseStatus</a> <a class="code" href="classoperations__research_1_1MPSolver.html#af9eb46d78f04fa12da7ac27c14becb7d">LoadModelFromProto</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPModelProto.html">MPModelProto</a>& input_model,</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  std::string* error_message);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="namespaceoperations__research.html#a8cc975b7db5017319901da0f63a114aa">MPSolverResponseStatus</a> <a class="code" href="classoperations__research_1_1MPSolver.html#a51b5d57f310db13d800e4440ca3c0d0b">LoadModelFromProtoWithUniqueNamesOrDie</a>(</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPModelProto.html">MPModelProto</a>& input_model, std::string* error_message);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a91c69a1b2e9098f3835b9fe1c4fead59">FillSolutionResponseProto</a>(<a class="code" href="classoperations__research_1_1MPSolutionResponse.html">MPSolutionResponse</a>* response) <span class="keyword">const</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a3aaa8bdb57173a9d933ed5f62bb60f42">SolveWithProto</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPModelRequest.html">MPModelRequest</a>& model_request,</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="classoperations__research_1_1MPSolutionResponse.html">MPSolutionResponse</a>* response);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a9c8cc8b3c36fe9c08d8e0eefbc98b774">ExportModelToProto</a>(<a class="code" href="classoperations__research_1_1MPModelProto.html">MPModelProto</a>* output_model) <span class="keyword">const</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  util::Status <a class="code" href="classoperations__research_1_1MPSolver.html#aa20b60665bd7e137dac446b2b1400838">LoadSolutionFromProto</a>(</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolutionResponse.html">MPSolutionResponse</a>& response,</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordtype">double</span> tolerance = <a class="code" href="namespaceoperations__research.html#a07189276cc680928dad51ed197142077">kDefaultPrimalTolerance</a>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  util::Status <a class="code" href="classoperations__research_1_1MPSolver.html#a27312cbf1394d779305d016e2ea2753e">ClampSolutionWithinBounds</a>();</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a393a84863fe633baa3c7af4e71c8b147">ExportModelAsLpFormat</a>(<span class="keywordtype">bool</span> obfuscate, std::string* model_str) <span class="keyword">const</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#ae06ddd4e79e6a985b2644eff14747484">ExportModelAsMpsFormat</a>(<span class="keywordtype">bool</span> fixed_format, <span class="keywordtype">bool</span> obfuscate,</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  std::string* model_str) <span class="keyword">const</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  util::Status <a class="code" href="classoperations__research_1_1MPSolver.html#a6394f5b0c08af038bfd9610d2bc4be90">SetNumThreads</a>(<span class="keywordtype">int</span> num_threads);</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a88ddf26ba2c9524de319f6f307cfde60"> 618</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a88ddf26ba2c9524de319f6f307cfde60">GetNumThreads</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> num_threads_; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a532d2fb86e5cdc4710e1a168acbbe7f6">SetSolverSpecificParametersAsString</a>(<span class="keyword">const</span> std::string& parameters);</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a64bc5e50054e619d3399956df3ed110f"> 631</a></span>  std::string <a class="code" href="classoperations__research_1_1MPSolver.html#a64bc5e50054e619d3399956df3ed110f">GetSolverSpecificParametersAsString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">return</span> solver_specific_parameter_string_;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#abf4255929ea45766c51cf6138758b277">SetHint</a>(std::vector<std::pair<const MPVariable*, double> > hint);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743"> 654</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">BasisStatus</a> {</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a642d0b5abe3faed060b4ec237df381a0"> 655</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a642d0b5abe3faed060b4ec237df381a0">FREE</a> = 0,</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a32b9b4f5f09a5dbdeed585318e8d97f2"> 656</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a32b9b4f5f09a5dbdeed585318e8d97f2">AT_LOWER_BOUND</a>,</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a578f080f1d30ca7ce7ba6c5b050ddd56"> 657</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a578f080f1d30ca7ce7ba6c5b050ddd56">AT_UPPER_BOUND</a>,</div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743aeca9b511e54f58239988d6affd62afa8"> 658</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743aeca9b511e54f58239988d6affd62afa8">FIXED_VALUE</a>,</div><div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a0185d5946c48b9852d8a02a7493f4dcf"> 659</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a0185d5946c48b9852d8a02a7493f4dcf">BASIC</a></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  };</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a11a76240b36c39f04ff64104c482990f">SetStartingLpBasis</a>(</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> std::vector<MPSolver::BasisStatus>& variable_statuses,</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keyword">const</span> std::vector<MPSolver::BasisStatus>& constraint_statuses);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a5b15f7248e2b72d474bae0444a613033"> 682</a></span>  <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a5b15f7248e2b72d474bae0444a613033">infinity</a>() { <span class="keywordflow">return</span> std::numeric_limits<double>::infinity(); }</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#aa90a00b370b9abc4a43bfefd7f6a895b">OutputIsEnabled</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#abc2c48c807107ccfdfa8c1b50ae16c41">EnableOutput</a>();</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#abfaa014d3c3ca883e3c8a17110372801">SuppressOutput</a>();</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#aae2fbd44c86451dadfc256f000772394"> 698</a></span>  absl::Duration <a class="code" href="classoperations__research_1_1MPSolver.html#aae2fbd44c86451dadfc256f000772394">TimeLimit</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> time_limit_; }</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a47a5516ca826adbc25bd5bf1d7935fd1"> 699</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a47a5516ca826adbc25bd5bf1d7935fd1">SetTimeLimit</a>(absl::Duration <a class="code" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">time_limit</a>) {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  DCHECK_GE(<a class="code" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">time_limit</a>, absl::ZeroDuration());</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  time_limit_ = <a class="code" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">time_limit</a>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a6a68e7fab8751978c9faa30867f91241"> 704</a></span>  absl::Duration <a class="code" href="classoperations__research_1_1MPSolver.html#a6a68e7fab8751978c9faa30867f91241">DurationSinceConstruction</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">return</span> absl::Now() - construction_time_;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  int64 <a class="code" href="classoperations__research_1_1MPSolver.html#a15001c5a8f5c0086dddcc4626a5a5ad7">iterations</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  int64 <a class="code" href="classoperations__research_1_1MPSolver.html#a6837e7545ac2c5cfe95ca9a1c0f013e3">nodes</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  std::string <a class="code" href="classoperations__research_1_1MPSolver.html#aee22680c23e591329e9ac50ff78f572d">SolverVersion</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordtype">void</span>* <a class="code" href="classoperations__research_1_1MPSolver.html#a3d3bc5e39b383336fb3ca88b1a0c6cc5">underlying_solver</a>();</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a6390f93d9c4e88775d98ec8353ef0979">ComputeExactConditionNumber</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> </div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  ABSL_MUST_USE_RESULT <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a4b11747bf657bf074d1e710121810d13">NextSolution</a>();</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="comment">// DEPRECATED: Use TimeLimit() and SetTimeLimit(absl::Duration) instead.</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">// NOTE: These deprecated functions used the convention time_limit = 0 to mean</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// "no limit", which now corresponds to time_limit_ = InfiniteDuration().</span></div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba"> 784</a></span>  int64 <a class="code" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">time_limit</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">return</span> time_limit_ == absl::InfiniteDuration()</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  ? 0</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  : absl::ToInt64Milliseconds(time_limit_);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  }</div><div class="line"><a name="l00789"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#ae99e29fcc045ab27c8fecbdc422e6133"> 789</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolver.html#ae99e29fcc045ab27c8fecbdc422e6133">set_time_limit</a>(int64 time_limit_milliseconds) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a47a5516ca826adbc25bd5bf1d7935fd1">SetTimeLimit</a>(time_limit_milliseconds == 0</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  ? absl::InfiniteDuration()</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  : absl::Milliseconds(time_limit_milliseconds));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  }</div><div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a0177cee53f52d09df990920d532b0772"> 794</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a0177cee53f52d09df990920d532b0772">time_limit_in_secs</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">return</span> static_cast<double>(<a class="code" href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">time_limit</a>()) / 1000.0;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// DEPRECATED: Use DurationSinceConstruction() instead.</span></div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a1ce69ce989942416f35a7d3577b5edd8"> 799</a></span>  int64 <a class="code" href="classoperations__research_1_1MPSolver.html#a1ce69ce989942416f35a7d3577b5edd8">wall_time</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">return</span> absl::ToInt64Milliseconds(<a class="code" href="classoperations__research_1_1MPSolver.html#a6a68e7fab8751978c9faa30867f91241">DurationSinceConstruction</a>());</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#ae1a3e0a695903c8e6effd524a7f92784"> 803</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#ae1a3e0a695903c8e6effd524a7f92784">GLPKInterface</a>;</div><div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a60944ecdcad88cfb4d4d32feea70c9b5"> 804</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#a60944ecdcad88cfb4d4d32feea70c9b5">CLPInterface</a>;</div><div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#af5a7cf0c655f37c0b388a2ddcf32ac3e"> 805</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">CBCInterface</a>;</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a236f9752f4df4c5134617330a040ec8a"> 806</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#a236f9752f4df4c5134617330a040ec8a">SCIPInterface</a>;</div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#ac28a56eeedb62d070578a9231f1875ea"> 807</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#ac28a56eeedb62d070578a9231f1875ea">GurobiInterface</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#ae7cbd08108e1636184f28c1a71c42393"> 808</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#ae7cbd08108e1636184f28c1a71c42393">CplexInterface</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a5c083b37243075a00bf909840dc7c933"> 809</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#a5c083b37243075a00bf909840dc7c933">SLMInterface</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#ac0aea0786e75adbb2d24c41c15e7456c"> 810</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a6c754b527a347994b06eeb49a09ac222"> 811</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#a6c754b527a347994b06eeb49a09ac222">GLOPInterface</a>;</div><div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#a7383308e6b9b63b18196798db342ce8a"> 812</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#a7383308e6b9b63b18196798db342ce8a">BopInterface</a>;</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#acbd4413b1370baca9c45aecb0cb8ebd2"> 813</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#acbd4413b1370baca9c45aecb0cb8ebd2">SatInterface</a>;</div><div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolver.html#aee1ddf25e86286c16face31551751bda"> 814</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html#aee1ddf25e86286c16face31551751bda">KnapsackInterface</a>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="comment">// Debugging: verify that the given MPVariable* belongs to this solver.</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a78606aaae8d97a0def488e696fdb2d2b">OwnsVariable</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* var) <span class="keyword">const</span>;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> </div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="comment">// Computes the size of the constraint with the largest number of</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="comment">// coefficients with index in [min_constraint_index,</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// max_constraint_index)</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordtype">int</span> ComputeMaxConstraintSize(<span class="keywordtype">int</span> min_constraint_index,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordtype">int</span> max_constraint_index) <span class="keyword">const</span>;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="comment">// Returns true if the model has constraints with lower bound > upper bound.</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">bool</span> HasInfeasibleConstraints() <span class="keyword">const</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> </div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">// Returns true if the model has at least 1 integer variable.</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordtype">bool</span> HasIntegerVariables() <span class="keyword">const</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="comment">// Generates the map from variable names to their indices.</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordtype">void</span> GenerateVariableNameIndex() <span class="keyword">const</span>;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// Generates the map from constraint names to their indices.</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordtype">void</span> GenerateConstraintNameIndex() <span class="keyword">const</span>;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> </div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="comment">// The name of the linear programming problem.</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keyword">const</span> std::string name_;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> </div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="comment">// The type of the linear programming problem.</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">OptimizationProblemType</a> problem_type_;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="comment">// The solver interface.</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  std::unique_ptr<MPSolverInterface> interface_;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="comment">// The vector of variables in the problem.</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  std::vector<MPVariable*> variables_;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">// A map from a variable's name to its index in variables_.</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keyword">mutable</span> absl::optional<absl::flat_hash_map<std::string, int> ></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  variable_name_to_index_;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="comment">// Whether variables have been extracted to the underlying interface.</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  std::vector<bool> variable_is_extracted_;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="comment">// The vector of constraints in the problem.</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  std::vector<MPConstraint*> constraints_;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="comment">// A map from a constraint's name to its index in constraints_.</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keyword">mutable</span> absl::optional<absl::flat_hash_map<std::string, int> ></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  constraint_name_to_index_;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="comment">// Whether constraints have been extracted to the underlying interface.</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  std::vector<bool> constraint_is_extracted_;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="comment">// The linear objective function.</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  std::unique_ptr<MPObjective> objective_;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="comment">// Initial values for all or some of the problem variables that can be</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="comment">// exploited as a starting hint by a solver.</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="comment">//</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="comment">// Note(user): as of 05/05/2015, we can't use >> because of some SWIG errors.</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="comment">//</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="comment">// TODO(user): replace by two vectors, a std::vector<bool> to indicate if a</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="comment">// hint is provided and a std::vector<double> for the hint value.</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  std::vector<std::pair<const MPVariable*, double> > solution_hint_;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  absl::Duration time_limit_ = absl::InfiniteDuration(); <span class="comment">// Default = No limit.</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keyword">const</span> absl::Time construction_time_;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> </div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="comment">// Permanent storage for the number of threads.</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordtype">int</span> num_threads_ = 1;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="comment">// Permanent storage for SetSolverSpecificParametersAsString().</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  std::string solver_specific_parameter_string_;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="namespaceoperations__research.html#a8cc975b7db5017319901da0f63a114aa">MPSolverResponseStatus</a> LoadModelFromProtoInternal(</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPModelProto.html">MPModelProto</a>& input_model, <span class="keywordtype">bool</span> clear_names,</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  std::string* error_message);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  DISALLOW_COPY_AND_ASSIGN(<a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> };</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="keyword">const</span> absl::string_view <a class="code" href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">MPSolver::OptimizationProblemType</a> optimization_problem_type);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#a2610f938f233d0adcd3142693f4a2683"> 895</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceoperations__research.html#a2610f938f233d0adcd3142693f4a2683">operator<<</a>(</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  std::ostream& os,</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">MPSolver::OptimizationProblemType</a> optimization_problem_type) {</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">return</span> os << <a class="code" href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(optimization_problem_type);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#a6e3ed7b755e2b756ef48c9b3bad4a780"> 901</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceoperations__research.html#a2610f938f233d0adcd3142693f4a2683">operator<<</a>(std::ostream& os,</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">MPSolver::ResultStatus</a> status) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> os << ProtoEnumToString<MPSolverResponseStatus>(</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  static_cast<MPSolverResponseStatus>(status));</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceoperations__research.html#a61dc18a85425d0a7cf6aa3e7ce3199f6">AbslParseFlag</a>(absl::string_view text,</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">MPSolver::OptimizationProblemType</a>* solver_type,</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  std::string* error);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00911"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#af04d1dfc591c35038a974202e50e541f"> 911</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespaceoperations__research.html#af04d1dfc591c35038a974202e50e541f">AbslUnparseFlag</a>(</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">MPSolver::OptimizationProblemType</a> solver_type) {</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">return</span> std::string(<a class="code" href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">ToString</a>(solver_type));</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> </div><div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html"> 919</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a> {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a2131c9028ff6d7047c8272c3ea3e62e3">Clear</a>();</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#aad1b0ca33b3a2c45d91e2875feb98c66">SetCoefficient</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a> *<span class="keyword">const</span> var, <span class="keywordtype">double</span> coeff);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> </div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPObjective.html#aba6c839cf1c09f5d48ff6072cd6b28c5">GetCoefficient</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a> *<span class="keyword">const</span> var) <span class="keyword">const</span>;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ae1f99be84ce9efa28b4c1050af954835"> 947</a></span>  <span class="keyword">const</span> absl::flat_hash_map<const MPVariable *, double> &<a class="code" href="classoperations__research_1_1MPObjective.html#ae1f99be84ce9efa28b4c1050af954835">terms</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">return</span> coefficients_;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  }</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a24611f7b12b571fe1e73b629a8a6c17b">SetOffset</a>(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a8d6bb2249af13a783033763d292763d4"> 959</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a8d6bb2249af13a783033763d292763d4">offset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> offset_; }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#ab1829576c2533e5de48b38447d9f6823">OptimizeLinearExpr</a>(<span class="keyword">const</span> LinearExpr& linear_expr, <span class="keywordtype">bool</span> is_maximization);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a6927f7e28f694c55d72496c94a9a6b01"> 970</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a6927f7e28f694c55d72496c94a9a6b01">MaximizeLinearExpr</a>(<span class="keyword">const</span> LinearExpr& linear_expr) {</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <a class="code" href="classoperations__research_1_1MPObjective.html#ab1829576c2533e5de48b38447d9f6823">OptimizeLinearExpr</a>(linear_expr, <span class="keyword">true</span>);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div><div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a19a354c154bf034196d7a273feeff737"> 976</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a19a354c154bf034196d7a273feeff737">MinimizeLinearExpr</a>(<span class="keyword">const</span> LinearExpr& linear_expr) {</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="classoperations__research_1_1MPObjective.html#ab1829576c2533e5de48b38447d9f6823">OptimizeLinearExpr</a>(linear_expr, <span class="keyword">false</span>);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  }</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a9e03dec6fb0099d48a119dd525879dd7">AddLinearExpr</a>(<span class="keyword">const</span> LinearExpr& linear_expr);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> </div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#add0f9517dc64b1f768952fc490f7be00">SetOptimizationDirection</a>(<span class="keywordtype">bool</span> maximize);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#af9eea25e667a52dcad270495025e1202"> 993</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#af9eea25e667a52dcad270495025e1202">SetMinimization</a>() { <a class="code" href="classoperations__research_1_1MPObjective.html#add0f9517dc64b1f768952fc490f7be00">SetOptimizationDirection</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00998"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a7f1396f72628328fd85ac852191fcc70"> 998</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a7f1396f72628328fd85ac852191fcc70">SetMaximization</a>() { <a class="code" href="classoperations__research_1_1MPObjective.html#add0f9517dc64b1f768952fc490f7be00">SetOptimizationDirection</a>(<span class="keyword">true</span>); }</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a883fc7ee2a166fc6ff257296f78e9565">maximization</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a700788b8583ef4c69730be08a1a3ac28">minimization</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a43fd3a9687cfef2591b22c96cbe02477">Value</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPObjective.html#a1ab47aaf7b73ae8a2664dd262227e3a9">BestBound</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01031"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ac2c01b4de8f7670e37daa7d42b804dd4"> 1031</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>;</div><div class="line"><a name="l01032"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ac0aea0786e75adbb2d24c41c15e7456c"> 1032</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>;</div><div class="line"><a name="l01033"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#af5a7cf0c655f37c0b388a2ddcf32ac3e"> 1033</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">CBCInterface</a>;</div><div class="line"><a name="l01034"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a60944ecdcad88cfb4d4d32feea70c9b5"> 1034</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#a60944ecdcad88cfb4d4d32feea70c9b5">CLPInterface</a>;</div><div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ae1a3e0a695903c8e6effd524a7f92784"> 1035</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#ae1a3e0a695903c8e6effd524a7f92784">GLPKInterface</a>;</div><div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a236f9752f4df4c5134617330a040ec8a"> 1036</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#a236f9752f4df4c5134617330a040ec8a">SCIPInterface</a>;</div><div class="line"><a name="l01037"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a5c083b37243075a00bf909840dc7c933"> 1037</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#a5c083b37243075a00bf909840dc7c933">SLMInterface</a>;</div><div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ac28a56eeedb62d070578a9231f1875ea"> 1038</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#ac28a56eeedb62d070578a9231f1875ea">GurobiInterface</a>;</div><div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#ae7cbd08108e1636184f28c1a71c42393"> 1039</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#ae7cbd08108e1636184f28c1a71c42393">CplexInterface</a>;</div><div class="line"><a name="l01040"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a6c754b527a347994b06eeb49a09ac222"> 1040</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#a6c754b527a347994b06eeb49a09ac222">GLOPInterface</a>;</div><div class="line"><a name="l01041"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#a7383308e6b9b63b18196798db342ce8a"> 1041</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#a7383308e6b9b63b18196798db342ce8a">BopInterface</a>;</div><div class="line"><a name="l01042"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#acbd4413b1370baca9c45aecb0cb8ebd2"> 1042</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#acbd4413b1370baca9c45aecb0cb8ebd2">SatInterface</a>;</div><div class="line"><a name="l01043"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPObjective.html#aee1ddf25e86286c16face31551751bda"> 1043</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html#aee1ddf25e86286c16face31551751bda">KnapsackInterface</a>;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="comment">// Constructor. An objective points to a single MPSolverInterface</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="comment">// that is specified in the constructor. An objective cannot belong</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="comment">// to several models.</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="comment">// At construction, an MPObjective has no terms (which is equivalent</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="comment">// on having a coefficient of 0 for all variables), and an offset of 0.</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keyword">explicit</span> <a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>(<a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_in)</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  : interface_(interface_in), coefficients_(1), offset_(0.0) {}</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="comment">// Mapping var -> coefficient.</span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  absl::flat_hash_map<const MPVariable*, double> coefficients_;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="comment">// Constant term.</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordtype">double</span> offset_;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> </div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  DISALLOW_COPY_AND_ASSIGN(<a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> };</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01066"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html"> 1066</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a> {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d"> 1071</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a02131c51847247fc3f620e4ccb439470">SetInteger</a>(<span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec">integer</a>);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01081"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec"> 1081</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec">integer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> integer_; }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> </div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a9c7aabb1c218e733e719ce2966939586">solution_value</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div><div class="line"><a name="l01095"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f"> 1095</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> index_; }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01100"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563"> 1100</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> lb_; }</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01105"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9"> 1105</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ub_; }</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> </div><div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a0d23a28f31a3b667f21034551666430e"> 1110</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0d23a28f31a3b667f21034551666430e">SetLB</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>) { <a class="code" href="classoperations__research_1_1MPVariable.html#a5608a23aad7a48ea52ba3869b557d036">SetBounds</a>(<a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>, ub_); }</div><div class="line"><a name="l01114"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a42590823a1b3343d0459cc7c564b9d69"> 1114</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a42590823a1b3343d0459cc7c564b9d69">SetUB</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>) { <a class="code" href="classoperations__research_1_1MPVariable.html#a5608a23aad7a48ea52ba3869b557d036">SetBounds</a>(lb_, <a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>); }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  </div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a5608a23aad7a48ea52ba3869b557d036">SetBounds</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#af25c3940fd37705e63340d9269896dc0">unrounded_solution_value</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0001ce8a3240bd00b49557594a809cdb">reduced_cost</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">MPSolver::BasisStatus</a> <a class="code" href="classoperations__research_1_1MPVariable.html#abb491e237ace37cb5240cde3c3ff2958">basis_status</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> </div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a6d0e4798441493244b31f29ee5ac26ad"> 1152</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a6d0e4798441493244b31f29ee5ac26ad">branching_priority</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> branching_priority_; }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a074f5b3c88658b91bd372a372db63627">SetBranchingPriority</a>(<span class="keywordtype">int</span> priority);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l01156"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ac2c01b4de8f7670e37daa7d42b804dd4"> 1156</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>;</div><div class="line"><a name="l01157"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ac0aea0786e75adbb2d24c41c15e7456c"> 1157</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>;</div><div class="line"><a name="l01158"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#af5a7cf0c655f37c0b388a2ddcf32ac3e"> 1158</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">CBCInterface</a>;</div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a60944ecdcad88cfb4d4d32feea70c9b5"> 1159</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a60944ecdcad88cfb4d4d32feea70c9b5">CLPInterface</a>;</div><div class="line"><a name="l01160"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ae1a3e0a695903c8e6effd524a7f92784"> 1160</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#ae1a3e0a695903c8e6effd524a7f92784">GLPKInterface</a>;</div><div class="line"><a name="l01161"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a236f9752f4df4c5134617330a040ec8a"> 1161</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a236f9752f4df4c5134617330a040ec8a">SCIPInterface</a>;</div><div class="line"><a name="l01162"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a5c083b37243075a00bf909840dc7c933"> 1162</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a5c083b37243075a00bf909840dc7c933">SLMInterface</a>;</div><div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ac28a56eeedb62d070578a9231f1875ea"> 1163</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#ac28a56eeedb62d070578a9231f1875ea">GurobiInterface</a>;</div><div class="line"><a name="l01164"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#ae7cbd08108e1636184f28c1a71c42393"> 1164</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#ae7cbd08108e1636184f28c1a71c42393">CplexInterface</a>;</div><div class="line"><a name="l01165"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a6c754b527a347994b06eeb49a09ac222"> 1165</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a6c754b527a347994b06eeb49a09ac222">GLOPInterface</a>;</div><div class="line"><a name="l01166"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a8844020cc1376123531cd53c831acdef"> 1166</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a8844020cc1376123531cd53c831acdef">MPVariableSolutionValueTest</a>;</div><div class="line"><a name="l01167"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a7383308e6b9b63b18196798db342ce8a"> 1167</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#a7383308e6b9b63b18196798db342ce8a">BopInterface</a>;</div><div class="line"><a name="l01168"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#acbd4413b1370baca9c45aecb0cb8ebd2"> 1168</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#acbd4413b1370baca9c45aecb0cb8ebd2">SatInterface</a>;</div><div class="line"><a name="l01169"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#aee1ddf25e86286c16face31551751bda"> 1169</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPVariable.html#aee1ddf25e86286c16face31551751bda">KnapsackInterface</a>;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> </div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="comment">// Constructor. A variable points to a single MPSolverInterface that</span></div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="comment">// is specified in the constructor. A variable cannot belong to</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="comment">// several models.</span></div><div class="line"><a name="l01174"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#abba28daa7e558932c40cf1a8ecb30194"> 1174</a></span>  <a class="code" href="classoperations__research_1_1MPVariable.html#abba28daa7e558932c40cf1a8ecb30194">MPVariable</a>(<span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f">index</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>, <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec">integer</a>,</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keyword">const</span> std::string& <a class="code" href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d">name</a>, <a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_in)</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  : index_(<a class="code" href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f">index</a>),</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  lb_(<a class="code" href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">lb</a>),</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  ub_(<a class="code" href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">ub</a>),</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  integer_(<a class="code" href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec">integer</a>),</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  name_(<a class="code" href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d">name</a>.empty() ? absl::StrFormat(<span class="stringliteral">"auto_v_%09d"</span>, <a class="code" href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f">index</a>) : <a class="code" href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d">name</a>),</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  solution_value_(0.0),</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  reduced_cost_(0.0),</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  interface_(interface_in) {}</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div><div class="line"><a name="l01185"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a8f6294a83ae2d4bb0e6000981f8651a5"> 1185</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a8f6294a83ae2d4bb0e6000981f8651a5">set_solution_value</a>(<span class="keywordtype">double</span> value) { solution_value_ = value; }</div><div class="line"><a name="l01186"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPVariable.html#a73eaa62d668195e9d894548d84f75fdb"> 1186</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a73eaa62d668195e9d894548d84f75fdb">set_reduced_cost</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPVariable.html#a0001ce8a3240bd00b49557594a809cdb">reduced_cost</a>) { reduced_cost_ = <a class="code" href="classoperations__research_1_1MPVariable.html#a0001ce8a3240bd00b49557594a809cdb">reduced_cost</a>; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> </div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> index_;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordtype">double</span> lb_;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordtype">double</span> ub_;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordtype">bool</span> integer_;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keyword">const</span> std::string name_;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordtype">double</span> solution_value_;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordtype">double</span> reduced_cost_;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordtype">int</span> branching_priority_ = 0;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  DISALLOW_COPY_AND_ASSIGN(<a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>);</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> };</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html"> 1206</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a> {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0"> 1211</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a2ac836dbebc688c3ac5559fc33c20eb7">Clear</a>();</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e9afe55140b2392a99e0e5ad3eab531">SetCoefficient</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <span class="keyword">const</span> var, <span class="keywordtype">double</span> coeff);</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> </div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7f5fd19dabe1dbb767fc544fd6e95f26">GetCoefficient</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <span class="keyword">const</span> var) <span class="keyword">const</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> </div><div class="line"><a name="l01237"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a2d5d7e32b11a7edb4d810f2f10900b17"> 1237</a></span>  <span class="keyword">const</span> absl::flat_hash_map<const MPVariable*, double>& <a class="code" href="classoperations__research_1_1MPConstraint.html#a2d5d7e32b11a7edb4d810f2f10900b17">terms</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">return</span> coefficients_;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> </div><div class="line"><a name="l01244"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac"> 1244</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> lb_; }</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> </div><div class="line"><a name="l01249"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7"> 1249</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ub_; }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div><div class="line"><a name="l01254"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a85c6d75f990f000e5863b83bd56e0e98"> 1254</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a85c6d75f990f000e5863b83bd56e0e98">SetLB</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>) { <a class="code" href="classoperations__research_1_1MPConstraint.html#abf8bbda7b4d608d011f88d2df83db881">SetBounds</a>(<a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>, ub_); }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div><div class="line"><a name="l01259"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a84c9d35dde8a2e1c7caccf88e9e86d60"> 1259</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a84c9d35dde8a2e1c7caccf88e9e86d60">SetUB</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>) { <a class="code" href="classoperations__research_1_1MPConstraint.html#abf8bbda7b4d608d011f88d2df83db881">SetBounds</a>(lb_, <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>); }</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#abf8bbda7b4d608d011f88d2df83db881">SetBounds</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div><div class="line"><a name="l01269"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a1341c1b4cf65970cc414b18dfc7b7a52"> 1269</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a1341c1b4cf65970cc414b18dfc7b7a52">is_lazy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_lazy_; }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> </div><div class="line"><a name="l01283"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#aabdeaba6d29ef030605a333cffc20c69"> 1283</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#aabdeaba6d29ef030605a333cffc20c69">set_is_lazy</a>(<span class="keywordtype">bool</span> laziness) { is_lazy_ = laziness; }</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> </div><div class="line"><a name="l01285"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a45532e8b56e4b92bb6363fc858d709ff"> 1285</a></span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <a class="code" href="classoperations__research_1_1MPConstraint.html#a45532e8b56e4b92bb6363fc858d709ff">indicator_variable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> indicator_variable_; }</div><div class="line"><a name="l01286"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ad1b4cc3f73a08cad0716015adffd188f"> 1286</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#ad1b4cc3f73a08cad0716015adffd188f">indicator_value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> indicator_value_; }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> </div><div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600"> 1291</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> index_; }</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> </div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#ad1ee565a0efc50e3a515aeca73553493">dual_value</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> </div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">MPSolver::BasisStatus</a> <a class="code" href="classoperations__research_1_1MPConstraint.html#a8695f6bddabcff5af750918b919cab7a">basis_status</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l01314"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ac2c01b4de8f7670e37daa7d42b804dd4"> 1314</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>;</div><div class="line"><a name="l01315"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ac0aea0786e75adbb2d24c41c15e7456c"> 1315</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>;</div><div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#af5a7cf0c655f37c0b388a2ddcf32ac3e"> 1316</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">CBCInterface</a>;</div><div class="line"><a name="l01317"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a60944ecdcad88cfb4d4d32feea70c9b5"> 1317</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#a60944ecdcad88cfb4d4d32feea70c9b5">CLPInterface</a>;</div><div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ae1a3e0a695903c8e6effd524a7f92784"> 1318</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#ae1a3e0a695903c8e6effd524a7f92784">GLPKInterface</a>;</div><div class="line"><a name="l01319"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a236f9752f4df4c5134617330a040ec8a"> 1319</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#a236f9752f4df4c5134617330a040ec8a">SCIPInterface</a>;</div><div class="line"><a name="l01320"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a5c083b37243075a00bf909840dc7c933"> 1320</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#a5c083b37243075a00bf909840dc7c933">SLMInterface</a>;</div><div class="line"><a name="l01321"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ac28a56eeedb62d070578a9231f1875ea"> 1321</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#ac28a56eeedb62d070578a9231f1875ea">GurobiInterface</a>;</div><div class="line"><a name="l01322"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#ae7cbd08108e1636184f28c1a71c42393"> 1322</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#ae7cbd08108e1636184f28c1a71c42393">CplexInterface</a>;</div><div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a6c754b527a347994b06eeb49a09ac222"> 1323</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#a6c754b527a347994b06eeb49a09ac222">GLOPInterface</a>;</div><div class="line"><a name="l01324"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a7383308e6b9b63b18196798db342ce8a"> 1324</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#a7383308e6b9b63b18196798db342ce8a">BopInterface</a>;</div><div class="line"><a name="l01325"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#acbd4413b1370baca9c45aecb0cb8ebd2"> 1325</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#acbd4413b1370baca9c45aecb0cb8ebd2">SatInterface</a>;</div><div class="line"><a name="l01326"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#aee1ddf25e86286c16face31551751bda"> 1326</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html#aee1ddf25e86286c16face31551751bda">KnapsackInterface</a>;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="comment">// Constructor. A constraint points to a single MPSolverInterface</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="comment">// that is specified in the constructor. A constraint cannot belong</span></div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <span class="comment">// to several models.</span></div><div class="line"><a name="l01331"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#adac818d5ad3d7e51129ba251491a5f46"> 1331</a></span>  <a class="code" href="classoperations__research_1_1MPConstraint.html#adac818d5ad3d7e51129ba251491a5f46">MPConstraint</a>(<span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600">index</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>, <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>, <span class="keyword">const</span> std::string& <a class="code" href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0">name</a>,</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_in)</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  : coefficients_(1),</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  index_(<a class="code" href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600">index</a>),</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  lb_(<a class="code" href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">lb</a>),</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  ub_(<a class="code" href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">ub</a>),</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  name_(<a class="code" href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0">name</a>.empty() ? absl::StrFormat(<span class="stringliteral">"auto_c_%09d"</span>, <a class="code" href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600">index</a>) : <a class="code" href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0">name</a>),</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  is_lazy_(false),</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  indicator_variable_(nullptr),</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  dual_value_(0.0),</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  interface_(interface_in) {}</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> </div><div class="line"><a name="l01343"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPConstraint.html#a2a521156c4a2eafe918c36fbb386e9e8"> 1343</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#a2a521156c4a2eafe918c36fbb386e9e8">set_dual_value</a>(<span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPConstraint.html#ad1ee565a0efc50e3a515aeca73553493">dual_value</a>) { dual_value_ = <a class="code" href="classoperations__research_1_1MPConstraint.html#ad1ee565a0efc50e3a515aeca73553493">dual_value</a>; }</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <span class="comment">// Returns true if the constraint contains variables that have not</span></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <span class="comment">// been extracted yet.</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordtype">bool</span> ContainsNewVariables();</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> </div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="comment">// Mapping var -> coefficient.</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  absl::flat_hash_map<const MPVariable*, double> coefficients_;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> </div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> index_; <span class="comment">// See index().</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="comment">// The lower bound for the linear constraint.</span></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="keywordtype">double</span> lb_;</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> </div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="comment">// The upper bound for the linear constraint.</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  <span class="keywordtype">double</span> ub_;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> </div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <span class="comment">// Name.</span></div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keyword">const</span> std::string name_;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> </div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="comment">// True if the constraint is "lazy", i.e. the constraint is added to the</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  <span class="comment">// underlying Linear Programming solver only if it is violated.</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="comment">// By default this parameter is 'false'.</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  <span class="keywordtype">bool</span> is_lazy_;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  <span class="comment">// If given, this constraint is only active if `indicator_variable_`'s value</span></div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <span class="comment">// is equal to `indicator_value_`.</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* indicator_variable_;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  <span class="keywordtype">bool</span> indicator_value_;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> </div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <span class="keywordtype">double</span> dual_value_;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a>* <span class="keyword">const</span> interface_;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  DISALLOW_COPY_AND_ASSIGN(<a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>);</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> };</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div><div class="line"><a name="l01405"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html"> 1405</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a> {</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e"> 1410</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">DoubleParam</a> {</div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265eaca78b129ceb19e286889b3274bb8cab3"> 1414</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265eaca78b129ceb19e286889b3274bb8cab3">RELATIVE_MIP_GAP</a> = 0,</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01421"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea57e959f9c5ede1f3e683169609fb0488"> 1421</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea57e959f9c5ede1f3e683169609fb0488">PRIMAL_TOLERANCE</a> = 1,</div><div class="line"><a name="l01425"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea313eaed42edf309599e71ca7563cce22"> 1425</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea313eaed42edf309599e71ca7563cce22">DUAL_TOLERANCE</a> = 2</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  };</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01431"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0"> 1431</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">IntegerParam</a> {</div><div class="line"><a name="l01435"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a1f92ab900139fd7649eace59942f1e0f"> 1435</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a1f92ab900139fd7649eace59942f1e0f">PRESOLVE</a> = 1000,</div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a28abd1bbac3e861d5a74f841f8263e05"> 1439</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a28abd1bbac3e861d5a74f841f8263e05">LP_ALGORITHM</a> = 1001,</div><div class="line"><a name="l01443"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a0ea983a7a805bc98c2cf9a1000c1ef95"> 1443</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a0ea983a7a805bc98c2cf9a1000c1ef95">INCREMENTALITY</a> = 1002,</div><div class="line"><a name="l01447"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0ad5871c18d62c5e2e1e48a5420c13942f"> 1447</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0ad5871c18d62c5e2e1e48a5420c13942f">SCALING</a> = 1003</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  };</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div><div class="line"><a name="l01453"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4"> 1453</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4">PresolveValues</a> {</div><div class="line"><a name="l01454"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4a6e658228fc28195fb00675d3dfec2c85"> 1454</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4a6e658228fc28195fb00675d3dfec2c85">PRESOLVE_OFF</a> = 0, <span class="comment">// Presolve is off.</span></div><div class="line"><a name="l01455"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4ac8e04ac3295af6c505a22757490bb018"> 1455</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4ac8e04ac3295af6c505a22757490bb018">PRESOLVE_ON</a> = 1 <span class="comment">// Presolve is on.</span></div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  };</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01461"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762"> 1461</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762">LpAlgorithmValues</a> {</div><div class="line"><a name="l01462"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a2aca0e0bfd9807b5a938bb3bbc2bea07"> 1462</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a2aca0e0bfd9807b5a938bb3bbc2bea07">DUAL</a> = 10, <span class="comment">// Dual simplex.</span></div><div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a9fa228e5a51b8e22346b46d0f866e68d"> 1463</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a9fa228e5a51b8e22346b46d0f866e68d">PRIMAL</a> = 11, <span class="comment">// Primal simplex.</span></div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762af55a23df7a5ec299bb9ca742ef9004ed"> 1464</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762af55a23df7a5ec299bb9ca742ef9004ed">BARRIER</a> = 12 <span class="comment">// Barrier algorithm.</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  };</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> </div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116"> 1470</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116">IncrementalityValues</a> {</div><div class="line"><a name="l01474"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116a27013e436bfe1d34ebb6da476c590eee"> 1474</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116a27013e436bfe1d34ebb6da476c590eee">INCREMENTALITY_OFF</a> = 0,</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116aef000bbd88ef3ff2715d53a0e1dfbd37"> 1480</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116aef000bbd88ef3ff2715d53a0e1dfbd37">INCREMENTALITY_ON</a> = 1</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  };</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9"> 1486</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9">ScalingValues</a> {</div><div class="line"><a name="l01488"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a41abc3f52f70490cd997aa8debace24b"> 1488</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a41abc3f52f70490cd997aa8debace24b">SCALING_OFF</a> = 0, </div><div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a33cf90a88928c32c5b56c9375d7dfd18"> 1490</a></span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a33cf90a88928c32c5b56c9375d7dfd18">SCALING_ON</a> = 1 </div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  };</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  <span class="comment">// @{</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  <span class="comment">// Placeholder value to indicate that a parameter is set to</span></div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <span class="comment">// the default value defined in the wrapper.</span></div><div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#af0e4fbb80499756bc3edf88fd495d7f7"> 1496</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#af0e4fbb80499756bc3edf88fd495d7f7">kDefaultDoubleParamValue</a>;</div><div class="line"><a name="l01497"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a9bac90a88459ac4dd9629beeada24a66"> 1497</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a9bac90a88459ac4dd9629beeada24a66">kDefaultIntegerParamValue</a>;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  <span class="comment">// @}</span></div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> </div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="comment">// @{</span></div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="comment">// Placeholder value to indicate that a parameter is unknown.</span></div><div class="line"><a name="l01502"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a561c73d056eef04db4b4703abd972868"> 1502</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a561c73d056eef04db4b4703abd972868">kUnknownDoubleParamValue</a>;</div><div class="line"><a name="l01503"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a6c81985cecabbd5f054974d362db551a"> 1503</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a6c81985cecabbd5f054974d362db551a">kUnknownIntegerParamValue</a>;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  <span class="comment">// @}</span></div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> </div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="comment">// @{</span></div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <span class="comment">// Default values for parameters. Only parameters that define the</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  <span class="comment">// properties of the solution returned need to have a default value</span></div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  <span class="comment">// (that is the same for all solvers). You can also define a default</span></div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  <span class="comment">// value for performance parameters when you are confident it is a</span></div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  <span class="comment">// good choice (example: always turn presolve on).</span></div><div class="line"><a name="l01512"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ad6b31b12f9e1944b355809efd56fec98"> 1512</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ad6b31b12f9e1944b355809efd56fec98">kDefaultRelativeMipGap</a>;</div><div class="line"><a name="l01513"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a3369c0b857cf02ddf742acc5ef1feec5"> 1513</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3369c0b857cf02ddf742acc5ef1feec5">kDefaultPrimalTolerance</a>;</div><div class="line"><a name="l01514"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#a15fd57d45c522be9c8340ba9d1244e3f"> 1514</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a15fd57d45c522be9c8340ba9d1244e3f">kDefaultDualTolerance</a>;</div><div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#afc36c21bad2607b8d7bcba63b60d8681"> 1515</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4">PresolveValues</a> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#afc36c21bad2607b8d7bcba63b60d8681">kDefaultPresolve</a>;</div><div class="line"><a name="l01516"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverParameters.html#ac8d266a839e50968c11481a151f80ea9"> 1516</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116">IncrementalityValues</a> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8d266a839e50968c11481a151f80ea9">kDefaultIncrementality</a>;</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <span class="comment">// @}</span></div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> </div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#accb1cea31a73bd0b09bb75882baa9e5f">MPSolverParameters</a>();</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> </div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ab297ed394e3996ebb0cc43d931deaa16">SetDoubleParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">MPSolverParameters::DoubleParam</a> param, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#afcfb05b6d356807556f65f1b845897a8">SetIntegerParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">MPSolverParameters::IntegerParam</a> param, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> </div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a7bc16e5febd0604a3400572c0e35c490">ResetDoubleParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">MPSolverParameters::DoubleParam</a> param);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a100330795edeb8c1b12c7b8ff74611df">ResetIntegerParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">MPSolverParameters::IntegerParam</a> param);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ada3cdf5254959f2807c3d27bb7e18e27">Reset</a>();</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> </div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#a4423dd8b21b413522d8b91e4536cfa08">GetDoubleParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">MPSolverParameters::DoubleParam</a> param) <span class="keyword">const</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> </div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ae9e67424e09a35840b4fda2942b94c6f">GetIntegerParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">MPSolverParameters::IntegerParam</a> param) <span class="keyword">const</span>;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> </div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  <span class="comment">// @{</span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  <span class="comment">// Parameter value for each parameter.</span></div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="comment">// @see DoubleParam</span></div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  <span class="comment">// @see IntegerParam</span></div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  <span class="keywordtype">double</span> relative_mip_gap_value_;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  <span class="keywordtype">double</span> primal_tolerance_value_;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="keywordtype">double</span> dual_tolerance_value_;</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <span class="keywordtype">int</span> presolve_value_;</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  <span class="keywordtype">int</span> scaling_value_;</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  <span class="keywordtype">int</span> lp_algorithm_value_;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  <span class="keywordtype">int</span> incrementality_value_;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="comment">// @}</span></div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> </div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <span class="comment">// Boolean value indicating whether each parameter is set to the</span></div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="comment">// solver's default value. Only parameters for which the wrapper</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="comment">// does not define a default value need such an indicator.</span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="keywordtype">bool</span> lp_algorithm_is_default_;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> </div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  DISALLOW_COPY_AND_ASSIGN(<a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> };</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> </div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="comment">// This class wraps the actual mathematical programming solvers. Each</span></div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <span class="comment">// solver (GLOP, CLP, CBC, GLPK, SCIP) has its own interface class that</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment">// derives from this abstract class. This class is never directly</span></div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment">// accessed by the user.</span></div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <span class="comment">// @see glop_interface.cc</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="comment">// @see cbc_interface.cc</span></div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <span class="comment">// @see clp_interface.cc</span></div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> <span class="comment">// @see glpk_interface.cc</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <span class="comment">// @see scip_interface.cc</span></div><div class="line"><a name="l01592"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html"> 1592</a></span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolverInterface.html">MPSolverInterface</a> {</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01594"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0"> 1594</a></span>  <span class="keyword">enum</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0">SynchronizationStatus</a> {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <span class="comment">// The underlying solver (CLP, GLPK, ...) and MPSolver are not in</span></div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <span class="comment">// sync for the model nor for the solution.</span></div><div class="line"><a name="l01597"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a5e5dccb6be46f13fd046ebf8dd63fc0b"> 1597</a></span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a5e5dccb6be46f13fd046ebf8dd63fc0b">MUST_RELOAD</a>,</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="comment">// The underlying solver and MPSolver are in sync for the model</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  <span class="comment">// but not for the solution: the model has changed since the</span></div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <span class="comment">// solution was computed last.</span></div><div class="line"><a name="l01601"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0abb904e2bd71f6c8f7612f5bb41a0b8f0"> 1601</a></span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0abb904e2bd71f6c8f7612f5bb41a0b8f0">MODEL_SYNCHRONIZED</a>,</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  <span class="comment">// The underlying solver and MPSolver are in sync for the model and</span></div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  <span class="comment">// the solution.</span></div><div class="line"><a name="l01604"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a1a93fdf313f6e448af723eb80bbbb7ba"> 1604</a></span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a1a93fdf313f6e448af723eb80bbbb7ba">SOLUTION_SYNCHRONIZED</a></div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>  };</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> </div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  <span class="comment">// When the underlying solver does not provide the number of simplex</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  <span class="comment">// iterations.</span></div><div class="line"><a name="l01609"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a156255f5e27fd48b7ee43539b52f644f"> 1609</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> int64 <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a156255f5e27fd48b7ee43539b52f644f">kUnknownNumberOfIterations</a> = -1;</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  <span class="comment">// When the underlying solver does not provide the number of</span></div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  <span class="comment">// branch-and-bound nodes.</span></div><div class="line"><a name="l01612"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a25b846bdb22eb75b6c0f3b9922556c46"> 1612</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> int64 <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a25b846bdb22eb75b6c0f3b9922556c46">kUnknownNumberOfNodes</a> = -1;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> </div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  <span class="comment">// Constructor. The user will access the MPSolverInterface through the</span></div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  <span class="comment">// MPSolver passed as argument.</span></div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  <span class="keyword">explicit</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a152b3f16428c0a1c58247ba88d95f0a4">MPSolverInterface</a>(<a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>* <span class="keyword">const</span> solver);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#acd4eda4c38c00ed2cf7908c29bb74de3">~MPSolverInterface</a>();</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> </div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>  <span class="comment">// ----- Solve -----</span></div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>  <span class="comment">// Solves problem with specified parameter values. Returns true if the</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  <span class="comment">// solution is optimal.</span></div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">MPSolver::ResultStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a99d3df0f2e02937e56473d9f3df68965">Solve</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>& param) = 0;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> </div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  <span class="comment">// Writes the model using the solver internal write function. Currently only</span></div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  <span class="comment">// available for GurobiInterface.</span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a075910a059a214af934af08f3cba7db4">Write</a>(<span class="keyword">const</span> std::string& filename);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  <span class="comment">// ----- Model modifications and extraction -----</span></div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  <span class="comment">// Resets extracted model.</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ad4ce4ee159f4c2db5a02923c886c136b">Reset</a>() = 0;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> </div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  <span class="comment">// Sets the optimization direction (min/max).</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ac35b40e98fabb8bcd5e62cdd57678ff3">SetOptimizationDirection</a>(<span class="keywordtype">bool</span> maximize) = 0;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  <span class="comment">// Modifies bounds of an extracted variable.</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#af80b8873e1b07fedcac24c5704a889cf">SetVariableBounds</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub) = 0;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> </div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <span class="comment">// Modifies integrality of an extracted variable.</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a5e445125231a8febc619d3a81cb8c12f">SetVariableInteger</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> integer) = 0;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> </div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <span class="comment">// Modify bounds of an extracted variable.</span></div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae63369de591dfd558df4c74c1143d84a">SetConstraintBounds</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">double</span> lb, <span class="keywordtype">double</span> ub) = 0;</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  <span class="comment">// Adds a linear constraint.</span></div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a4c06cfd4d3c34ca0a96ad90f50a1abd8">AddRowConstraint</a>(<a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <span class="keyword">const</span> ct) = 0;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> </div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="comment">// Adds an indicator constraint. Returns true if the feature is supported by</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="comment">// the underlying solver.</span></div><div class="line"><a name="l01649"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#aa38ec74a9f9beb650fbb88dece755ebd"> 1649</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aa38ec74a9f9beb650fbb88dece755ebd">AddIndicatorConstraint</a>(<a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <span class="keyword">const</span> ct) {</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  LOG(ERROR) << <span class="stringliteral">"Solver doesn't support indicator constraints."</span>;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  }</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> </div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  <span class="comment">// Add a variable.</span></div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a94980bb46c791363fe9ce55d57e2a79a">AddVariable</a>(<a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <span class="keyword">const</span> var) = 0;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  <span class="comment">// Changes a coefficient in a constraint.</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a3ecddb0dba419349214fd4b021d2b9f6">SetCoefficient</a>(<a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <span class="keyword">const</span> constraint,</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <span class="keyword">const</span> variable,</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keywordtype">double</span> new_value, <span class="keywordtype">double</span> old_value) = 0;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  <span class="comment">// Clears a constraint from all its terms.</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a38ad5df166aef299c76fac71eb785523">ClearConstraint</a>(<a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>* <span class="keyword">const</span> constraint) = 0;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> </div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  <span class="comment">// Changes a coefficient in the linear objective.</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ab54c763dfb19f258603711eddfe66bca">SetObjectiveCoefficient</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPVariable.html">MPVariable</a>* <span class="keyword">const</span> variable,</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="keywordtype">double</span> coefficient) = 0;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> </div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <span class="comment">// Changes the constant term in the linear objective.</span></div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a6a0b90433ed94679a6065000b384fb64">SetObjectiveOffset</a>(<span class="keywordtype">double</span> value) = 0;</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> </div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  <span class="comment">// Clears the objective from all its terms.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a1d0c4924c375cd234f4a17bf2b8c1a8b">ClearObjective</a>() = 0;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div><div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a3038e118fcb2ccc9f0e2493cc48a1545"> 1675</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a3038e118fcb2ccc9f0e2493cc48a1545">BranchingPriorityChangedForVariable</a>(<span class="keywordtype">int</span> var_index) {}</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  <span class="comment">// ------ Query statistics on the solution and the solve ------</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  <span class="comment">// Returns the number of simplex iterations. The problem must be discrete,</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  <span class="comment">// otherwise it crashes, or returns kUnknownNumberOfIterations in NDEBUG mode.</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  <span class="keyword">virtual</span> int64 <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aa7ef7e2f076fc9208d13fdfb4ec33c76">iterations</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <span class="comment">// Returns the number of branch-and-bound nodes. The problem must be discrete,</span></div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  <span class="comment">// otherwise it crashes, or returns kUnknownNumberOfNodes in NDEBUG mode.</span></div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  <span class="keyword">virtual</span> int64 <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a6ca427f3c6266f86e41f4b5b1905c7d3">nodes</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  <span class="comment">// Returns the best objective bound. The problem must be discrete, otherwise</span></div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>  <span class="comment">// it crashes, or returns trivial_worst_objective_bound() in NDEBUG mode.</span></div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a1e4b520fcd965a7a2b975035e1a906b5">best_objective_bound</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  <span class="comment">// A trivial objective bound: the worst possible value of the objective,</span></div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>  <span class="comment">// which will be +infinity if minimizing and -infinity if maximing.</span></div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aec492297c32397c8a82490efb952e137">trivial_worst_objective_bound</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>  <span class="comment">// Returns the objective value of the best solution found so far.</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a9a71292f92599d3f96dc96543c24673d">objective_value</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> </div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  <span class="comment">// Returns the basis status of a row.</span></div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">MPSolver::BasisStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aad9285c25e1671edfac7a7748b166770">row_status</a>(<span class="keywordtype">int</span> constraint_index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>  <span class="comment">// Returns the basis status of a constraint.</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  <span class="keyword">virtual</span> <a class="code" href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">MPSolver::BasisStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a5a2299c6d83d21a0917d0661fb704dbe">column_status</a>(<span class="keywordtype">int</span> variable_index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> </div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>  <span class="comment">// Checks whether the solution is synchronized with the model, i.e. whether</span></div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>  <span class="comment">// the model has changed since the solution was computed last.</span></div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  <span class="comment">// If it isn't, it crashes in NDEBUG, and returns false othwerwise.</span></div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a0fabe855ed7766a6ccddb63cbbfa3bc4">CheckSolutionIsSynchronized</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>  <span class="comment">// Checks whether a feasible solution exists. The behavior is similar to</span></div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  <span class="comment">// CheckSolutionIsSynchronized() above.</span></div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a8f0df932d3bffc929a8b463fe9697431">CheckSolutionExists</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  <span class="comment">// Handy shortcut to do both checks above (it is often used).</span></div><div class="line"><a name="l01705"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#ad792f0af5ffa1072f0d6a4d3d872f73a"> 1705</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ad792f0af5ffa1072f0d6a4d3d872f73a">CheckSolutionIsSynchronizedAndExists</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a0fabe855ed7766a6ccddb63cbbfa3bc4">CheckSolutionIsSynchronized</a>() && <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a8f0df932d3bffc929a8b463fe9697431">CheckSolutionExists</a>();</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  }</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  <span class="comment">// Checks whether information on the best objective bound exists. The behavior</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  <span class="comment">// is similar to CheckSolutionIsSynchronized() above.</span></div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a80e389070e3984f5333c4fd96311231b">CheckBestObjectiveBoundExists</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> </div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  <span class="comment">// ----- Misc -----</span></div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  <span class="comment">// Queries problem type. For simplicity, the distinction between</span></div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  <span class="comment">// continuous and discrete is based on the declaration of the user</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  <span class="comment">// when the solver is created (example: GLPK_LINEAR_PROGRAMMING</span></div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  <span class="comment">// vs. GLPK_MIXED_INTEGER_PROGRAMMING), not on the actual content of</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  <span class="comment">// the model.</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <span class="comment">// Returns true if the problem is continuous.</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a77db27f245bbe7fec03763cb0f81210a">IsContinuous</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  <span class="comment">// Returns true if the problem is continuous and linear.</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a8410c2213e0f2faec9a202b5b670ad6c">IsLP</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  <span class="comment">// Returns true if the problem is discrete and linear.</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a3cb924945c7c8ebd6964ba982ffdf276">IsMIP</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> </div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  <span class="comment">// Returns the index of the last variable extracted.</span></div><div class="line"><a name="l01726"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a4996e4f9b120ab70f4d2382e473dc852"> 1726</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a4996e4f9b120ab70f4d2382e473dc852">last_variable_index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a45aa65ea825c85f885b0d8a0064af2f6">last_variable_index_</a>; }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> </div><div class="line"><a name="l01728"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a8245f5863b87aa3f6e9ac19d29531a9a"> 1728</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a8245f5863b87aa3f6e9ac19d29531a9a">variable_is_extracted</a>(<span class="keywordtype">int</span> var_index)<span class="keyword"> const </span>{</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">solver_</a>->variable_is_extracted_[var_index];</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  }</div><div class="line"><a name="l01731"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a01fb82c6f72457879c0defb22ae9db47"> 1731</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a01fb82c6f72457879c0defb22ae9db47">set_variable_as_extracted</a>(<span class="keywordtype">int</span> var_index, <span class="keywordtype">bool</span> extracted) {</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">solver_</a>->variable_is_extracted_[var_index] = extracted;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  }</div><div class="line"><a name="l01734"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a90947e6cbecd6bfff60feefa9ba37847"> 1734</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a90947e6cbecd6bfff60feefa9ba37847">constraint_is_extracted</a>(<span class="keywordtype">int</span> ct_index)<span class="keyword"> const </span>{</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">solver_</a>->constraint_is_extracted_[ct_index];</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>  }</div><div class="line"><a name="l01737"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a3c7ae564168e67c161f5111a060a604e"> 1737</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a3c7ae564168e67c161f5111a060a604e">set_constraint_as_extracted</a>(<span class="keywordtype">int</span> ct_index, <span class="keywordtype">bool</span> extracted) {</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">solver_</a>->constraint_is_extracted_[ct_index] = extracted;</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  }</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> </div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>  <span class="comment">// Returns the boolean indicating the verbosity of the solver output.</span></div><div class="line"><a name="l01742"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a86ce7eb3c7e1f5ca9822590f489ab708"> 1742</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a86ce7eb3c7e1f5ca9822590f489ab708">quiet</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ac962e5cc7308644424829668241a8fcf">quiet_</a>; }</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>  <span class="comment">// Sets the boolean indicating the verbosity of the solver output.</span></div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#adc4579b45ae778e4c61b5c35cffc0eaf"> 1744</a></span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#adc4579b45ae778e4c61b5c35cffc0eaf">set_quiet</a>(<span class="keywordtype">bool</span> quiet_value) { <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ac962e5cc7308644424829668241a8fcf">quiet_</a> = quiet_value; }</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> </div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>  <span class="comment">// Returns the result status of the last solve.</span></div><div class="line"><a name="l01747"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a0e34bb4ed1518f8104e6f84592e68dc5"> 1747</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">MPSolver::ResultStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a0e34bb4ed1518f8104e6f84592e68dc5">result_status</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a0fabe855ed7766a6ccddb63cbbfa3bc4">CheckSolutionIsSynchronized</a>();</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>  <span class="keywordflow">return</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#add7194b3e70938a6bb7fb8e7c6532e56">result_status_</a>;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  }</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> </div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  <span class="comment">// Returns a std::string describing the underlying solver and its version.</span></div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <span class="keyword">virtual</span> std::string <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a5e19196bab184ddaf66a7e34056cab48">SolverVersion</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> </div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <span class="comment">// Returns the underlying solver.</span></div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ad98f058f6721dba0ddeb4f82f7bc98ef">underlying_solver</a>() = 0;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>  <span class="comment">// Computes exact condition number. Only available for continuous</span></div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  <span class="comment">// problems and only implemented in GLPK.</span></div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#afae6a55da4ebeb2d9c6eb55eeccbdc8b">ComputeExactConditionNumber</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  <span class="comment">// See MPSolver::SetStartingLpBasis().</span></div><div class="line"><a name="l01763"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#ae60b6e41d8b3077d982e0347c85b802c"> 1763</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae60b6e41d8b3077d982e0347c85b802c">SetStartingLpBasis</a>(</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>  <span class="keyword">const</span> std::vector<MPSolver::BasisStatus>& variable_statuses,</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  <span class="keyword">const</span> std::vector<MPSolver::BasisStatus>& constraint_statuses) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  LOG(FATAL) << <span class="stringliteral">"Not supported by this solver."</span>;</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> </div><div class="line"><a name="l01769"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a5f9dc671c62b54a3940f2691f9953e67"> 1769</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a5f9dc671c62b54a3940f2691f9953e67">InterruptSolve</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span> </div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  <span class="comment">// See MPSolver::NextSolution() for contract.</span></div><div class="line"><a name="l01772"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a7f6e6fc6c25a04f49e3b95b7510c8369"> 1772</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a7f6e6fc6c25a04f49e3b95b7510c8369">NextSolution</a>() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> </div><div class="line"><a name="l01774"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#ac2c01b4de8f7670e37daa7d42b804dd4"> 1774</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> </div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>  <span class="comment">// To access the maximize_ bool and the MPSolver.</span></div><div class="line"><a name="l01777"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a24102af97b3c7e803861e1d6983b1fea"> 1777</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPConstraint.html">MPConstraint</a>;</div><div class="line"><a name="l01778"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a77dbe3a653f9c5d30e818000d92d8b17"> 1778</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classoperations__research_1_1MPObjective.html">MPObjective</a>;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> </div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l01781"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b"> 1781</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html">MPSolver</a>* <span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">solver_</a>;</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  <span class="comment">// Indicates whether the model and the solution are synchronized.</span></div><div class="line"><a name="l01783"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#af7655248b40e336f843180b9ef37dc3c"> 1783</a></span>  <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0">SynchronizationStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#af7655248b40e336f843180b9ef37dc3c">sync_status_</a>;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  <span class="comment">// Indicates whether the solve has reached optimality,</span></div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>  <span class="comment">// infeasibility, a limit, etc.</span></div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#add7194b3e70938a6bb7fb8e7c6532e56"> 1786</a></span>  <a class="code" href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">MPSolver::ResultStatus</a> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#add7194b3e70938a6bb7fb8e7c6532e56">result_status_</a>;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <span class="comment">// Optimization direction.</span></div><div class="line"><a name="l01788"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#aaabe8c85cd90dd61e4c9de70667b0c16"> 1788</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aaabe8c85cd90dd61e4c9de70667b0c16">maximize_</a>;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> </div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  <span class="comment">// Index in MPSolver::variables_ of last constraint extracted.</span></div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a577812bda95732730419025af875deb3"> 1791</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a577812bda95732730419025af875deb3">last_constraint_index_</a>;</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  <span class="comment">// Index in MPSolver::constraints_ of last variable extracted.</span></div><div class="line"><a name="l01793"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a45aa65ea825c85f885b0d8a0064af2f6"> 1793</a></span>  <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a45aa65ea825c85f885b0d8a0064af2f6">last_variable_index_</a>;</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> </div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  <span class="comment">// The value of the objective function.</span></div><div class="line"><a name="l01796"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a9fbca54e7d25c2bfacfac1e47183e14f"> 1796</a></span>  <span class="keywordtype">double</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a9fbca54e7d25c2bfacfac1e47183e14f">objective_value_</a>;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span> </div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <span class="comment">// Boolean indicator for the verbosity of the solver output.</span></div><div class="line"><a name="l01799"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#ac962e5cc7308644424829668241a8fcf"> 1799</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ac962e5cc7308644424829668241a8fcf">quiet_</a>;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="comment">// Index of dummy variable created for empty constraints or the</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  <span class="comment">// objective offset.</span></div><div class="line"><a name="l01803"></a><span class="lineno"><a class="line" href="classoperations__research_1_1MPSolverInterface.html#a693c6f125a85b70fe94057be1cfd0819"> 1803</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a693c6f125a85b70fe94057be1cfd0819">kDummyVariableIndex</a>;</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> </div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  <span class="comment">// Extracts model stored in MPSolver.</span></div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a9ae99b901839c7f1e29193d8a619b728">ExtractModel</a>();</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  <span class="comment">// Extracts the variables that have not been extracted yet.</span></div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a945992529aaaa827d7c9307e996ab2ef">ExtractNewVariables</a>() = 0;</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  <span class="comment">// Extracts the constraints that have not been extracted yet.</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a1363e1a1c4a1535b0cb92f46a9efd4b5">ExtractNewConstraints</a>() = 0;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  <span class="comment">// Extracts the objective.</span></div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a24085346a573695d2f3d224b726c5714">ExtractObjective</a>() = 0;</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  <span class="comment">// Resets the extraction information.</span></div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a3fd73560f782eaf5093a435c61783d09">ResetExtractionInformation</a>();</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  <span class="comment">// Change synchronization status from SOLUTION_SYNCHRONIZED to</span></div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <span class="comment">// MODEL_SYNCHRONIZED. To be used for model changes.</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a27ef26272b0444403e683b31605d88f7">InvalidateSolutionSynchronization</a>();</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> </div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  <span class="comment">// Sets parameters common to LP and MIP in the underlying solver.</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ad237855fa79fc36fbf9baedce589384c">SetCommonParameters</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>& param);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="comment">// Sets MIP specific parameters in the underlying solver.</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ab7289f57fd0f768453f2817d59a20c80">SetMIPParameters</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>& param);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  <span class="comment">// Sets all parameters in the underlying solver.</span></div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a6c1c1fc340f3f15e75745d7e6b0fe3df">SetParameters</a>(<span class="keyword">const</span> <a class="code" href="classoperations__research_1_1MPSolverParameters.html">MPSolverParameters</a>& param) = 0;</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  <span class="comment">// Sets an unsupported double parameter.</span></div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a861fc44ad0a6147a79dbcef606d34958">SetUnsupportedDoubleParam</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">MPSolverParameters::DoubleParam</a> param);</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  <span class="comment">// Sets an unsupported integer parameter.</span></div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a2b7834a656a48c094c34c13c60bd742c">SetUnsupportedIntegerParam</a>(</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">MPSolverParameters::IntegerParam</a> param);</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>  <span class="comment">// Sets a supported double parameter to an unsupported value.</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aa5b34d05b6fbeb881404d4147b63d401">SetDoubleParamToUnsupportedValue</a>(<a class="code" href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">MPSolverParameters::DoubleParam</a> param,</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  <span class="keywordtype">double</span> value);</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  <span class="comment">// Sets a supported integer parameter to an unsupported value.</span></div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a0e21cafe5af05431fa67ec7e9bfbf5ec">SetIntegerParamToUnsupportedValue</a>(</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <a class="code" href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">MPSolverParameters::IntegerParam</a> param, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  <span class="comment">// Sets each parameter in the underlying solver.</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a2b6fcec92ec397f38a9657d7d38a9e49">SetRelativeMipGap</a>(<span class="keywordtype">double</span> value) = 0;</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a119e0274303ed2eb0c80fcef960cfff0">SetPrimalTolerance</a>(<span class="keywordtype">double</span> value) = 0;</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#abc5c8df36220fb85bf2c4f69b959ead9">SetDualTolerance</a>(<span class="keywordtype">double</span> value) = 0;</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a51ae167e111959ecbe3f67e0e12e2f09">SetPresolveMode</a>(<span class="keywordtype">int</span> value) = 0;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> </div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>  <span class="comment">// Sets the number of threads to be used by the solver.</span></div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  <span class="keyword">virtual</span> util::Status <a class="code" href="classoperations__research_1_1MPSolverInterface.html#ae6b5032ab0257e33006c4dee5249ad21">SetNumThreads</a>(<span class="keywordtype">int</span> num_threads);</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span> </div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  <span class="comment">// Pass solver specific parameters in text format. The format is</span></div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <span class="comment">// solver-specific and is the same as the corresponding solver configuration</span></div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  <span class="comment">// file format. Returns true if the operation was successful.</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="comment">//</span></div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  <span class="comment">// The default implementation of this method stores the parameters in a</span></div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  <span class="comment">// temporary file and calls ReadParameterFile to import the parameter file</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="comment">// into the solver. Solvers that support passing the parameters directly can</span></div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  <span class="comment">// override this method to skip the temporary file logic.</span></div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a9421cf0896b24513fb63283fac87de44">SetSolverSpecificParametersAsString</a>(</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keyword">const</span> std::string& parameters);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> </div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  <span class="comment">// Reads a solver-specific file of parameters and set them.</span></div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="comment">// Returns true if there was no errors.</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#af3bee59eacd9c98d6f9240167cf3051f">ReadParameterFile</a>(<span class="keyword">const</span> std::string& filename);</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> </div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  <span class="comment">// Returns a file extension like ".tmp", this is needed because some solvers</span></div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="comment">// require a given extension for the ReadParameterFile() filename and we need</span></div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="comment">// to know it to generate a temporary parameter file.</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  <span class="keyword">virtual</span> std::string <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a5220692ca2d4674d77045a27317bca3e">ValidFileExtensionForParameterFile</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> </div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>  <span class="comment">// Sets the scaling mode.</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#aaaa84e64f7c29af15440e02189a362da">SetScalingMode</a>(<span class="keywordtype">int</span> value) = 0;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classoperations__research_1_1MPSolverInterface.html#a7cde757e7152aa06930afc59709c3c64">SetLpAlgorithm</a>(<span class="keywordtype">int</span> value) = 0;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> };</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> </div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> } <span class="comment">// namespace operations_research</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> </div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> <span class="preprocessor">#endif // OR_TOOLS_LINEAR_SOLVER_LINEAR_SOLVER_H_</span></div><div class="ttc" id="classoperations__research_1_1MPSolver_html_aa20b60665bd7e137dac446b2b1400838"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aa20b60665bd7e137dac446b2b1400838">operations_research::MPSolver::LoadSolutionFromProto</a></div><div class="ttdeci">util::Status LoadSolutionFromProto(const MPSolutionResponse &response, double tolerance=kDefaultPrimalTolerance)</div><div class="ttdoc">Load a solution encoded in a protocol buffer onto this solver for easy access via the MPSolver interf...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8f18a88f586c725cfffc613499926a0a0ea983a7a805bc98c2cf9a1000c1ef95"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a0ea983a7a805bc98c2cf9a1000c1ef95">operations_research::MPSolverParameters::INCREMENTALITY</a></div><div class="ttdoc">Advanced usage: incrementality from one solve to the next.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01443">linear_solver.h:1443</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a5c083b37243075a00bf909840dc7c933"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPConstraint::SLMInterface</a></div><div class="ttdeci">friend class SLMInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01320">linear_solver.h:1320</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ae6b5032ab0257e33006c4dee5249ad21"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ae6b5032ab0257e33006c4dee5249ad21">operations_research::MPSolverInterface::SetNumThreads</a></div><div class="ttdeci">virtual util::Status SetNumThreads(int num_threads)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_aba6c839cf1c09f5d48ff6072cd6b28c5"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#aba6c839cf1c09f5d48ff6072cd6b28c5">operations_research::MPObjective::GetCoefficient</a></div><div class="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><div class="ttdoc">Gets the coefficient of a given variable in the objective.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a7f5fd19dabe1dbb767fc544fd6e95f26"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a7f5fd19dabe1dbb767fc544fd6e95f26">operations_research::MPConstraint::GetCoefficient</a></div><div class="ttdeci">double GetCoefficient(const MPVariable *const var) const</div><div class="ttdoc">Gets the coefficient of a given variable on the constraint (which is 0 if the variable does not appea...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a1d0c4924c375cd234f4a17bf2b8c1a8b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a1d0c4924c375cd234f4a17bf2b8c1a8b">operations_research::MPSolverInterface::ClearObjective</a></div><div class="ttdeci">virtual void ClearObjective()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a5a2299c6d83d21a0917d0661fb704dbe"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a5a2299c6d83d21a0917d0661fb704dbe">operations_research::MPSolverInterface::column_status</a></div><div class="ttdeci">virtual MPSolver::BasisStatus column_status(int variable_index) const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a044841d06c6de76db6f4978bf57898ec"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a044841d06c6de76db6f4978bf57898ec">operations_research::MPVariable::integer</a></div><div class="ttdeci">bool integer() const</div><div class="ttdoc">Returns the integrality requirement of the variable.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01081">linear_solver.h:1081</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_afcfb05b6d356807556f65f1b845897a8"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#afcfb05b6d356807556f65f1b845897a8">operations_research::MPSolverParameters::SetIntegerParam</a></div><div class="ttdeci">void SetIntegerParam(MPSolverParameters::IntegerParam param, int value)</div><div class="ttdoc">Sets a integer parameter to a specific value.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a01fb82c6f72457879c0defb22ae9db47"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a01fb82c6f72457879c0defb22ae9db47">operations_research::MPSolverInterface::set_variable_as_extracted</a></div><div class="ttdeci">void set_variable_as_extracted(int var_index, bool extracted)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01731">linear_solver.h:1731</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_aee1ddf25e86286c16face31551751bda"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#aee1ddf25e86286c16face31551751bda">operations_research::MPVariable::KnapsackInterface</a></div><div class="ttdeci">friend class KnapsackInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01169">linear_solver.h:1169</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_add7194b3e70938a6bb7fb8e7c6532e56"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#add7194b3e70938a6bb7fb8e7c6532e56">operations_research::MPSolverInterface::result_status_</a></div><div class="ttdeci">MPSolver::ResultStatus result_status_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01786">linear_solver.h:1786</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a3d3bc5e39b383336fb3ca88b1a0c6cc5"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a3d3bc5e39b383336fb3ca88b1a0c6cc5">operations_research::MPSolver::underlying_solver</a></div><div class="ttdeci">void * underlying_solver()</div><div class="ttdoc">Advanced usage: returns the underlying solver.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_acbd4413b1370baca9c45aecb0cb8ebd2"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPConstraint::SatInterface</a></div><div class="ttdeci">friend class SatInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01325">linear_solver.h:1325</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a0e21cafe5af05431fa67ec7e9bfbf5ec"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a0e21cafe5af05431fa67ec7e9bfbf5ec">operations_research::MPSolverInterface::SetIntegerParamToUnsupportedValue</a></div><div class="ttdeci">virtual void SetIntegerParamToUnsupportedValue(MPSolverParameters::IntegerParam param, int value)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a236f9752f4df4c5134617330a040ec8a"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPSolver::SCIPInterface</a></div><div class="ttdeci">friend class SCIPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00806">linear_solver.h:806</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae7cbd08108e1636184f28c1a71c42393"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPSolver::CplexInterface</a></div><div class="ttdeci">friend class CplexInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00808">linear_solver.h:808</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a6d0e4798441493244b31f29ee5ac26ad"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a6d0e4798441493244b31f29ee5ac26ad">operations_research::MPVariable::branching_priority</a></div><div class="ttdeci">int branching_priority() const</div><div class="ttdoc">Advanced usage: Certain MIP solvers (e.g.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01152">linear_solver.h:1152</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a2131c9028ff6d7047c8272c3ea3e62e3"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a2131c9028ff6d7047c8272c3ea3e62e3">operations_research::MPObjective::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Clears the offset, all variables and coefficients, and the optimization direction.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a5c14184aabfffdb489347ab0486c8492"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5c14184aabfffdb489347ab0486c8492">operations_research::MPSolver::NOT_SOLVED</a></div><div class="ttdoc">not been solved yet.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00445">linear_solver.h:445</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a0177cee53f52d09df990920d532b0772"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a0177cee53f52d09df990920d532b0772">operations_research::MPSolver::time_limit_in_secs</a></div><div class="ttdeci">double time_limit_in_secs() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00794">linear_solver.h:794</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8f18a88f586c725cfffc613499926a0"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0">operations_research::MPSolverParameters::IntegerParam</a></div><div class="ttdeci">IntegerParam</div><div class="ttdoc">Enumeration of parameters that take integer or categorical values.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01431">linear_solver.h:1431</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html">operations_research::MPSolver</a></div><div class="ttdoc">This mathematical programming (MP) solver class is the main class though which users build and solve ...</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00174">linear_solver.h:174</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPVariable::CBCInterface</a></div><div class="ttdeci">friend class CBCInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01158">linear_solver.h:1158</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ad237855fa79fc36fbf9baedce589384c"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ad237855fa79fc36fbf9baedce589384c">operations_research::MPSolverInterface::SetCommonParameters</a></div><div class="ttdeci">void SetCommonParameters(const MPSolverParameters &param)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a8410c2213e0f2faec9a202b5b670ad6c"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a8410c2213e0f2faec9a202b5b670ad6c">operations_research::MPSolverInterface::IsLP</a></div><div class="ttdeci">virtual bool IsLP() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a1593ede4c9cd1da430f606127dc9a642"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a1593ede4c9cd1da430f606127dc9a642">operations_research::MPSolver::variables</a></div><div class="ttdeci">const std::vector< MPVariable * > & variables() const</div><div class="ttdoc">Returns the array of variables handled by the MPSolver.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00283">linear_solver.h:283</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a85c6d75f990f000e5863b83bd56e0e98"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a85c6d75f990f000e5863b83bd56e0e98">operations_research::MPConstraint::SetLB</a></div><div class="ttdeci">void SetLB(double lb)</div><div class="ttdoc">Sets the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01254">linear_solver.h:1254</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a0001ce8a3240bd00b49557594a809cdb"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a0001ce8a3240bd00b49557594a809cdb">operations_research::MPVariable::reduced_cost</a></div><div class="ttdeci">double reduced_cost() const</div><div class="ttdoc">Advanced usage: returns the reduced cost of the variable in the current solution (only available for ...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a5608a23aad7a48ea52ba3869b557d036"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a5608a23aad7a48ea52ba3869b557d036">operations_research::MPVariable::SetBounds</a></div><div class="ttdeci">void SetBounds(double lb, double ub)</div><div class="ttdoc">Sets both the lower and upper bounds.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html">operations_research::MPSolverInterface</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01592">linear_solver.h:1592</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a15001c5a8f5c0086dddcc4626a5a5ad7"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a15001c5a8f5c0086dddcc4626a5a5ad7">operations_research::MPSolver::iterations</a></div><div class="ttdeci">int64 iterations() const</div><div class="ttdoc">Returns the number of simplex iterations.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a2d5d7e32b11a7edb4d810f2f10900b17"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a2d5d7e32b11a7edb4d810f2f10900b17">operations_research::MPConstraint::terms</a></div><div class="ttdeci">const absl::flat_hash_map< const MPVariable *, double > & terms() const</div><div class="ttdoc">Returns a map from variables to their coefficients in the constraint.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01237">linear_solver.h:1237</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8f18a88f586c725cfffc613499926a0a1f92ab900139fd7649eace59942f1e0f"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a1f92ab900139fd7649eace59942f1e0f">operations_research::MPSolverParameters::PRESOLVE</a></div><div class="ttdoc">Advanced usage: presolve mode.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01435">linear_solver.h:1435</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae384aa3d9095f883a93f5e2e830e0077"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae384aa3d9095f883a93f5e2e830e0077">operations_research::MPSolver::LookupVariableOrNull</a></div><div class="ttdeci">MPVariable * LookupVariableOrNull(const std::string &var_name) const</div><div class="ttdoc">Looks up a variable by name, and returns nullptr if it does not exist.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a9bac90a88459ac4dd9629beeada24a66"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a9bac90a88459ac4dd9629beeada24a66">operations_research::MPSolverParameters::kDefaultIntegerParamValue</a></div><div class="ttdeci">static const int kDefaultIntegerParamValue</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01497">linear_solver.h:1497</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a075910a059a214af934af08f3cba7db4"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a075910a059a214af934af08f3cba7db4">operations_research::MPSolverInterface::Write</a></div><div class="ttdeci">virtual void Write(const std::string &filename)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_abf4255929ea45766c51cf6138758b277"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#abf4255929ea45766c51cf6138758b277">operations_research::MPSolver::SetHint</a></div><div class="ttdeci">void SetHint(std::vector< std::pair< const MPVariable *, double > > hint)</div><div class="ttdoc">Set a hint for solution.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a0ce4e033c6bca973cb026780cdb7daa2"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a0ce4e033c6bca973cb026780cdb7daa2">operations_research::MPSolver::MODEL_INVALID</a></div><div class="ttdoc">the model is trivially invalid (NaN coefficients, etc).</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00443">linear_solver.h:443</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_af5c55776ce47479f8904480cd815a6d5"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#af5c55776ce47479f8904480cd815a6d5">operations_research::MPSolver::MakeBoolVarArray</a></div><div class="ttdeci">void MakeBoolVarArray(int nb, const std::string &name, std::vector< MPVariable * > *vars)</div><div class="ttdoc">Creates an array of boolean variables.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_ac28a56eeedb62d070578a9231f1875ea"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPObjective::GurobiInterface</a></div><div class="ttdeci">friend class GurobiInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01038">linear_solver.h:1038</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a5f9dc671c62b54a3940f2691f9953e67"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a5f9dc671c62b54a3940f2691f9953e67">operations_research::MPSolverInterface::InterruptSolve</a></div><div class="ttdeci">virtual bool InterruptSolve()</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01769">linear_solver.h:1769</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_acbd4413b1370baca9c45aecb0cb8ebd2"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPVariable::SatInterface</a></div><div class="ttdeci">friend class SatInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01168">linear_solver.h:1168</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ab6a8a6c57eefce8c07c8a52e053b035b"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ab6a8a6c57eefce8c07c8a52e053b035b">operations_research::MPSolver::MPSolver</a></div><div class="ttdeci">MPSolver(const std::string &name, OptimizationProblemType problem_type)</div><div class="ttdoc">Create a solver with the given name and underlying solver backend.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a1e4b520fcd965a7a2b975035e1a906b5"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a1e4b520fcd965a7a2b975035e1a906b5">operations_research::MPSolverInterface::best_objective_bound</a></div><div class="ttdeci">virtual double best_objective_bound() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_aabdeaba6d29ef030605a333cffc20c69"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#aabdeaba6d29ef030605a333cffc20c69">operations_research::MPConstraint::set_is_lazy</a></div><div class="ttdeci">void set_is_lazy(bool laziness)</div><div class="ttdoc">Advanced usage: sets the constraint "laziness".</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01283">linear_solver.h:1283</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a2b7834a656a48c094c34c13c60bd742c"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a2b7834a656a48c094c34c13c60bd742c">operations_research::MPSolverInterface::SetUnsupportedIntegerParam</a></div><div class="ttdeci">virtual void SetUnsupportedIntegerParam(MPSolverParameters::IntegerParam param)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2a6f8b8f9d64ae299e8cfccf4917bf5282"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a6f8b8f9d64ae299e8cfccf4917bf5282">operations_research::MPSolver::CBC_MIXED_INTEGER_PROGRAMMING</a></div><div class="ttdoc">Mixed integer Programming Solver using Coin CBC.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00216">linear_solver.h:216</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a99d3df0f2e02937e56473d9f3df68965"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a99d3df0f2e02937e56473d9f3df68965">operations_research::MPSolverInterface::Solve</a></div><div class="ttdeci">virtual MPSolver::ResultStatus Solve(const MPSolverParameters &param)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPSolver::CBCInterface</a></div><div class="ttdeci">friend class CBCInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00805">linear_solver.h:805</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a1d74db2a526fd2d8b4e11a4ed4ebf07d"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a1d74db2a526fd2d8b4e11a4ed4ebf07d">operations_research::MPVariable::name</a></div><div class="ttdeci">const std::string & name() const</div><div class="ttdoc">Returns the name of the variable.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01071">linear_solver.h:1071</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a1341c1b4cf65970cc414b18dfc7b7a52"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a1341c1b4cf65970cc414b18dfc7b7a52">operations_research::MPConstraint::is_lazy</a></div><div class="ttdeci">bool is_lazy() const</div><div class="ttdoc">Advanced usage: returns true if the constraint is "lazy" (see below).</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01269">linear_solver.h:1269</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a650dd472cb06be9f9abcf5bc0833437d"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a650dd472cb06be9f9abcf5bc0833437d">operations_research::MPSolver::ParseSolverType</a></div><div class="ttdeci">static bool ParseSolverType(absl::string_view solver, OptimizationProblemType *type)</div><div class="ttdoc">Parses the name of the solver.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a7383308e6b9b63b18196798db342ce8a"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPConstraint::BopInterface</a></div><div class="ttdeci">friend class BopInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01324">linear_solver.h:1324</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a8d6bb2249af13a783033763d292763d4"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a8d6bb2249af13a783033763d292763d4">operations_research::MPObjective::offset</a></div><div class="ttdeci">double offset() const</div><div class="ttdoc">Gets the constant term in the objective.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00959">linear_solver.h:959</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ae77fef975a893d6118d955ef2eb72ac9a41abc3f52f70490cd997aa8debace24b"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a41abc3f52f70490cd997aa8debace24b">operations_research::MPSolverParameters::SCALING_OFF</a></div><div class="ttdoc">Scaling is off.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01488">linear_solver.h:1488</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a4834a6747544a7053110a0b20d79dac2"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a4834a6747544a7053110a0b20d79dac2">operations_research::MPSolver::Objective</a></div><div class="ttdeci">const MPObjective & Objective() const</div><div class="ttdoc">Returns the objective object.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00418">linear_solver.h:418</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a577812bda95732730419025af875deb3"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a577812bda95732730419025af875deb3">operations_research::MPSolverInterface::last_constraint_index_</a></div><div class="ttdeci">int last_constraint_index_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01791">linear_solver.h:1791</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a8f6294a83ae2d4bb0e6000981f8651a5"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a8f6294a83ae2d4bb0e6000981f8651a5">operations_research::MPVariable::set_solution_value</a></div><div class="ttdeci">void set_solution_value(double value)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01185">linear_solver.h:1185</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_ae7cbd08108e1636184f28c1a71c42393"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPObjective::CplexInterface</a></div><div class="ttdeci">friend class CplexInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01039">linear_solver.h:1039</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_aad1b0ca33b3a2c45d91e2875feb98c66"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#aad1b0ca33b3a2c45d91e2875feb98c66">operations_research::MPObjective::SetCoefficient</a></div><div class="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><div class="ttdoc">Sets the coefficient of the variable in the objective.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_add0f9517dc64b1f768952fc490f7be00"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#add0f9517dc64b1f768952fc490f7be00">operations_research::MPObjective::SetOptimizationDirection</a></div><div class="ttdeci">void SetOptimizationDirection(bool maximize)</div><div class="ttdoc">Sets the optimization direction (maximize: true or minimize: false).</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a8245f5863b87aa3f6e9ac19d29531a9a"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a8245f5863b87aa3f6e9ac19d29531a9a">operations_research::MPSolverInterface::variable_is_extracted</a></div><div class="ttdeci">bool variable_is_extracted(int var_index) const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01728">linear_solver.h:1728</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_ac28a56eeedb62d070578a9231f1875ea"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPConstraint::GurobiInterface</a></div><div class="ttdeci">friend class GurobiInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01321">linear_solver.h:1321</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a912394f09fe0aee694df2e9c962853a0a5e5dccb6be46f13fd046ebf8dd63fc0b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a5e5dccb6be46f13fd046ebf8dd63fc0b">operations_research::MPSolverInterface::MUST_RELOAD</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01597">linear_solver.h:1597</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a5c083b37243075a00bf909840dc7c933"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPVariable::SLMInterface</a></div><div class="ttdeci">friend class SLMInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01162">linear_solver.h:1162</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aa38ec74a9f9beb650fbb88dece755ebd"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aa38ec74a9f9beb650fbb88dece755ebd">operations_research::MPSolverInterface::AddIndicatorConstraint</a></div><div class="ttdeci">virtual bool AddIndicatorConstraint(MPConstraint *const ct)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01649">linear_solver.h:1649</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a90947e6cbecd6bfff60feefa9ba37847"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a90947e6cbecd6bfff60feefa9ba37847">operations_research::MPSolverInterface::constraint_is_extracted</a></div><div class="ttdeci">bool constraint_is_extracted(int ct_index) const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01734">linear_solver.h:1734</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ad58cb8cf98c288843ab0d1fd644f6116"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116">operations_research::MPSolverParameters::IncrementalityValues</a></div><div class="ttdeci">IncrementalityValues</div><div class="ttdoc">Advanced usage: Incrementality options.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01470">linear_solver.h:1470</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_abdf2c9c953fd4d118e7871a716445600"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#abdf2c9c953fd4d118e7871a716445600">operations_research::MPConstraint::index</a></div><div class="ttdeci">int index() const</div><div class="ttdoc">Returns the index of the constraint in the MPSolver::constraints_.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01291">linear_solver.h:1291</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a236f9752f4df4c5134617330a040ec8a"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPVariable::SCIPInterface</a></div><div class="ttdeci">friend class SCIPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01161">linear_solver.h:1161</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_ac28a56eeedb62d070578a9231f1875ea"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPVariable::GurobiInterface</a></div><div class="ttdeci">friend class GurobiInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01163">linear_solver.h:1163</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a11a76240b36c39f04ff64104c482990f"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a11a76240b36c39f04ff64104c482990f">operations_research::MPSolver::SetStartingLpBasis</a></div><div class="ttdeci">void SetStartingLpBasis(const std::vector< MPSolver::BasisStatus > &variable_statuses, const std::vector< MPSolver::BasisStatus > &constraint_statuses)</div><div class="ttdoc">Advanced usage: Incrementality.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_ae1a3e0a695903c8e6effd524a7f92784"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPConstraint::GLPKInterface</a></div><div class="ttdeci">friend class GLPKInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01318">linear_solver.h:1318</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_af0e4fbb80499756bc3edf88fd495d7f7"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#af0e4fbb80499756bc3edf88fd495d7f7">operations_research::MPSolverParameters::kDefaultDoubleParamValue</a></div><div class="ttdeci">static const double kDefaultDoubleParamValue</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01496">linear_solver.h:1496</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ad58cb8cf98c288843ab0d1fd644f6116aef000bbd88ef3ff2715d53a0e1dfbd37"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116aef000bbd88ef3ff2715d53a0e1dfbd37">operations_research::MPSolverParameters::INCREMENTALITY_ON</a></div><div class="ttdoc">Reuse results from previous solve as much as the underlying solver allows.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01480">linear_solver.h:1480</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a912394f09fe0aee694df2e9c962853a0abb904e2bd71f6c8f7612f5bb41a0b8f0"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0abb904e2bd71f6c8f7612f5bb41a0b8f0">operations_research::MPSolverInterface::MODEL_SYNCHRONIZED</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01601">linear_solver.h:1601</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae06ddd4e79e6a985b2644eff14747484"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae06ddd4e79e6a985b2644eff14747484">operations_research::MPSolver::ExportModelAsMpsFormat</a></div><div class="ttdeci">bool ExportModelAsMpsFormat(bool fixed_format, bool obfuscate, std::string *model_str) const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a074f5b3c88658b91bd372a372db63627"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a074f5b3c88658b91bd372a372db63627">operations_research::MPVariable::SetBranchingPriority</a></div><div class="ttdeci">void SetBranchingPriority(int priority)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aec492297c32397c8a82490efb952e137"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aec492297c32397c8a82490efb952e137">operations_research::MPSolverInterface::trivial_worst_objective_bound</a></div><div class="ttdeci">double trivial_worst_objective_bound() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_aee1ddf25e86286c16face31551751bda"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#aee1ddf25e86286c16face31551751bda">operations_research::MPObjective::KnapsackInterface</a></div><div class="ttdeci">friend class KnapsackInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01043">linear_solver.h:1043</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ab297405e6084c08a9058012361376762a2aca0e0bfd9807b5a938bb3bbc2bea07"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a2aca0e0bfd9807b5a938bb3bbc2bea07">operations_research::MPSolverParameters::DUAL</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01462">linear_solver.h:1462</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_acf84ccc5151ce164a571d2f31f30960c"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#acf84ccc5151ce164a571d2f31f30960c">operations_research::MPSolver::MakeIntVar</a></div><div class="ttdeci">MPVariable * MakeIntVar(double lb, double ub, const std::string &name)</div><div class="ttdoc">Creates an integer variable.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a3ecddb0dba419349214fd4b021d2b9f6"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a3ecddb0dba419349214fd4b021d2b9f6">operations_research::MPSolverInterface::SetCoefficient</a></div><div class="ttdeci">virtual void SetCoefficient(MPConstraint *const constraint, const MPVariable *const variable, double new_value, double old_value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a4fb5381d2f4a764660365168622e4955"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a4fb5381d2f4a764660365168622e4955">operations_research::MPSolver::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Clears the objective (including the optimization direction), all variables and constraints.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a236f9752f4df4c5134617330a040ec8a"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPObjective::SCIPInterface</a></div><div class="ttdeci">friend class SCIPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01036">linear_solver.h:1036</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a60944ecdcad88cfb4d4d32feea70c9b5"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPConstraint::CLPInterface</a></div><div class="ttdeci">friend class CLPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01317">linear_solver.h:1317</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a7383308e6b9b63b18196798db342ce8a"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPObjective::BopInterface</a></div><div class="ttdeci">friend class BopInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01041">linear_solver.h:1041</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a7383308e6b9b63b18196798db342ce8a"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPVariable::BopInterface</a></div><div class="ttdeci">friend class BopInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01167">linear_solver.h:1167</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a86ce7eb3c7e1f5ca9822590f489ab708"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a86ce7eb3c7e1f5ca9822590f489ab708">operations_research::MPSolverInterface::quiet</a></div><div class="ttdeci">bool quiet() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01742">linear_solver.h:1742</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aaaa84e64f7c29af15440e02189a362da"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aaaa84e64f7c29af15440e02189a362da">operations_research::MPSolverInterface::SetScalingMode</a></div><div class="ttdeci">virtual void SetScalingMode(int value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a236f9752f4df4c5134617330a040ec8a"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a236f9752f4df4c5134617330a040ec8a">operations_research::MPConstraint::SCIPInterface</a></div><div class="ttdeci">friend class SCIPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01319">linear_solver.h:1319</a></div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_a07189276cc680928dad51ed197142077"><div class="ttname"><a href="namespaceoperations__research.html#a07189276cc680928dad51ed197142077">operations_research::kDefaultPrimalTolerance</a></div><div class="ttdeci">constexpr double kDefaultPrimalTolerance</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00162">linear_solver.h:162</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a0ba0685c817d5c5910c80492dd1a7050"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a0ba0685c817d5c5910c80492dd1a7050">operations_research::MPSolver::NumVariables</a></div><div class="ttdeci">int NumVariables() const</div><div class="ttdoc">Returns the number of variables.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00277">linear_solver.h:277</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPObjective::CBCInterface</a></div><div class="ttdeci">friend class CBCInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01033">linear_solver.h:1033</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_ad1ee565a0efc50e3a515aeca73553493"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#ad1ee565a0efc50e3a515aeca73553493">operations_research::MPConstraint::dual_value</a></div><div class="ttdeci">double dual_value() const</div><div class="ttdoc">Advanced usage: returns the dual value of the constraint in the current solution (only available for ...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_abc5c8df36220fb85bf2c4f69b959ead9"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#abc5c8df36220fb85bf2c4f69b959ead9">operations_research::MPSolverInterface::SetDualTolerance</a></div><div class="ttdeci">virtual void SetDualTolerance(double value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a7e9afe55140b2392a99e0e5ad3eab531"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a7e9afe55140b2392a99e0e5ad3eab531">operations_research::MPConstraint::SetCoefficient</a></div><div class="ttdeci">void SetCoefficient(const MPVariable *const var, double coeff)</div><div class="ttdoc">Sets the coefficient of the variable on the constraint.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a5e19196bab184ddaf66a7e34056cab48"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a5e19196bab184ddaf66a7e34056cab48">operations_research::MPSolverInterface::SolverVersion</a></div><div class="ttdeci">virtual std::string SolverVersion() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a3369c0b857cf02ddf742acc5ef1feec5"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a3369c0b857cf02ddf742acc5ef1feec5">operations_research::MPSolverParameters::kDefaultPrimalTolerance</a></div><div class="ttdeci">static const double kDefaultPrimalTolerance</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01513">linear_solver.h:1513</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ad98f058f6721dba0ddeb4f82f7bc98ef"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ad98f058f6721dba0ddeb4f82f7bc98ef">operations_research::MPSolverInterface::underlying_solver</a></div><div class="ttdeci">virtual void * underlying_solver()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a3aaa8bdb57173a9d933ed5f62bb60f42"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a3aaa8bdb57173a9d933ed5f62bb60f42">operations_research::MPSolver::SolveWithProto</a></div><div class="ttdeci">static void SolveWithProto(const MPModelRequest &model_request, MPSolutionResponse *response)</div><div class="ttdoc">Solves the model encoded by a MPModelRequest protocol buffer and fills the solution encoded as a MPSo...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a0e34bb4ed1518f8104e6f84592e68dc5"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a0e34bb4ed1518f8104e6f84592e68dc5">operations_research::MPSolverInterface::result_status</a></div><div class="ttdeci">MPSolver::ResultStatus result_status() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01747">linear_solver.h:1747</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a5220692ca2d4674d77045a27317bca3e"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a5220692ca2d4674d77045a27317bca3e">operations_research::MPSolverInterface::ValidFileExtensionForParameterFile</a></div><div class="ttdeci">virtual std::string ValidFileExtensionForParameterFile() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a45d822ac67d10cc80b2f70fe6ec555a4"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4">operations_research::MPSolverParameters::PresolveValues</a></div><div class="ttdeci">PresolveValues</div><div class="ttdoc">For each categorical parameter, enumeration of possible values.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01453">linear_solver.h:1453</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a8844020cc1376123531cd53c831acdef"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a8844020cc1376123531cd53c831acdef">operations_research::MPVariable::MPVariableSolutionValueTest</a></div><div class="ttdeci">friend class MPVariableSolutionValueTest</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01166">linear_solver.h:1166</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a45532e8b56e4b92bb6363fc858d709ff"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a45532e8b56e4b92bb6363fc858d709ff">operations_research::MPConstraint::indicator_variable</a></div><div class="ttdeci">const MPVariable * indicator_variable() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01285">linear_solver.h:1285</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a467f89af3bae743dc9d628ee4e74f0c9"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a467f89af3bae743dc9d628ee4e74f0c9">operations_research::MPSolver::MutableObjective</a></div><div class="ttdeci">MPObjective * MutableObjective()</div><div class="ttdoc">Returns the mutable objective object.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00423">linear_solver.h:423</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aee7aedeeff79cd0645a5c7e8c0200834"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aee7aedeeff79cd0645a5c7e8c0200834">operations_research::MPSolver::~MPSolver</a></div><div class="ttdeci">virtual ~MPSolver()</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a9c8cc8b3c36fe9c08d8e0eefbc98b774"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a9c8cc8b3c36fe9c08d8e0eefbc98b774">operations_research::MPSolver::ExportModelToProto</a></div><div class="ttdeci">void ExportModelToProto(MPModelProto *output_model) const</div><div class="ttdoc">Exports model to protocol buffer.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_ab1829576c2533e5de48b38447d9f6823"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#ab1829576c2533e5de48b38447d9f6823">operations_research::MPObjective::OptimizeLinearExpr</a></div><div class="ttdeci">void OptimizeLinearExpr(const LinearExpr &linear_expr, bool is_maximization)</div><div class="ttdoc">Resets the current objective to take the value of linear_expr, and sets the objective direction to ma...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_abc2c48c807107ccfdfa8c1b50ae16c41"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#abc2c48c807107ccfdfa8c1b50ae16c41">operations_research::MPSolver::EnableOutput</a></div><div class="ttdeci">void EnableOutput()</div><div class="ttdoc">Enable output.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ab54c763dfb19f258603711eddfe66bca"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ab54c763dfb19f258603711eddfe66bca">operations_research::MPSolverInterface::SetObjectiveCoefficient</a></div><div class="ttdeci">virtual void SetObjectiveCoefficient(const MPVariable *const variable, double coefficient)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ae9e67424e09a35840b4fda2942b94c6f"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ae9e67424e09a35840b4fda2942b94c6f">operations_research::MPSolverParameters::GetIntegerParam</a></div><div class="ttdeci">int GetIntegerParam(MPSolverParameters::IntegerParam param) const</div><div class="ttdoc">Returns the value of an integer parameter.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a7f1396f72628328fd85ac852191fcc70"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a7f1396f72628328fd85ac852191fcc70">operations_research::MPObjective::SetMaximization</a></div><div class="ttdeci">void SetMaximization()</div><div class="ttdoc">Sets the optimization direction to maximize.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00998">linear_solver.h:998</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aa5b34d05b6fbeb881404d4147b63d401"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aa5b34d05b6fbeb881404d4147b63d401">operations_research::MPSolverInterface::SetDoubleParamToUnsupportedValue</a></div><div class="ttdeci">void SetDoubleParamToUnsupportedValue(MPSolverParameters::DoubleParam param, double value)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_ae1a3e0a695903c8e6effd524a7f92784"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPObjective::GLPKInterface</a></div><div class="ttdeci">friend class GLPKInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01035">linear_solver.h:1035</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_ae1a3e0a695903c8e6effd524a7f92784"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPVariable::GLPKInterface</a></div><div class="ttdeci">friend class GLPKInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01160">linear_solver.h:1160</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a9a71292f92599d3f96dc96543c24673d"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a9a71292f92599d3f96dc96543c24673d">operations_research::MPSolverInterface::objective_value</a></div><div class="ttdeci">double objective_value() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_ae1f99be84ce9efa28b4c1050af954835"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#ae1f99be84ce9efa28b4c1050af954835">operations_research::MPObjective::terms</a></div><div class="ttdeci">const absl::flat_hash_map< const MPVariable *, double > & terms() const</div><div class="ttdoc">Returns a map from variables to their coefficients in the objective.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00947">linear_solver.h:947</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a532d2fb86e5cdc4710e1a168acbbe7f6"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a532d2fb86e5cdc4710e1a168acbbe7f6">operations_research::MPSolver::SetSolverSpecificParametersAsString</a></div><div class="ttdeci">bool SetSolverSpecificParametersAsString(const std::string &parameters)</div><div class="ttdoc">Advanced usage: pass solver specific parameters in text format.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2a357b78ac84d42c93f2be55c89ed685dc"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a357b78ac84d42c93f2be55c89ed685dc">operations_research::MPSolver::SCIP_MIXED_INTEGER_PROGRAMMING</a></div><div class="ttdoc">Mixed integer Programming Solver using SCIP.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00208">linear_solver.h:208</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a1ce69ce989942416f35a7d3577b5edd8"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a1ce69ce989942416f35a7d3577b5edd8">operations_research::MPSolver::wall_time</a></div><div class="ttdeci">int64 wall_time() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00799">linear_solver.h:799</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8d266a839e50968c11481a151f80ea9"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8d266a839e50968c11481a151f80ea9">operations_research::MPSolverParameters::kDefaultIncrementality</a></div><div class="ttdeci">static const IncrementalityValues kDefaultIncrementality</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01516">linear_solver.h:1516</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a6ca427f3c6266f86e41f4b5b1905c7d3"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a6ca427f3c6266f86e41f4b5b1905c7d3">operations_research::MPSolverInterface::nodes</a></div><div class="ttdeci">virtual int64 nodes() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a4b11747bf657bf074d1e710121810d13"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a4b11747bf657bf074d1e710121810d13">operations_research::MPSolver::NextSolution</a></div><div class="ttdeci">ABSL_MUST_USE_RESULT bool NextSolution()</div><div class="ttdoc">Some solvers (MIP only, not LP) can produce multiple solutions to the problem.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a0fabe855ed7766a6ccddb63cbbfa3bc4"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a0fabe855ed7766a6ccddb63cbbfa3bc4">operations_research::MPSolverInterface::CheckSolutionIsSynchronized</a></div><div class="ttdeci">bool CheckSolutionIsSynchronized() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743a642d0b5abe3faed060b4ec237df381a0"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a642d0b5abe3faed060b4ec237df381a0">operations_research::MPSolver::FREE</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00655">linear_solver.h:655</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_ae7cbd08108e1636184f28c1a71c42393"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPConstraint::CplexInterface</a></div><div class="ttdeci">friend class CplexInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01322">linear_solver.h:1322</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a5eefc88942fd284ff2962564224d5f8e"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a5eefc88942fd284ff2962564224d5f8e">operations_research::MPSolver::MakeIntVarArray</a></div><div class="ttdeci">void MakeIntVarArray(int nb, double lb, double ub, const std::string &name, std::vector< MPVariable * > *vars)</div><div class="ttdoc">Creates an array of integer variables.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a3cb924945c7c8ebd6964ba982ffdf276"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a3cb924945c7c8ebd6964ba982ffdf276">operations_research::MPSolverInterface::IsMIP</a></div><div class="ttdeci">virtual bool IsMIP() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a945992529aaaa827d7c9307e996ab2ef"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a945992529aaaa827d7c9307e996ab2ef">operations_research::MPSolverInterface::ExtractNewVariables</a></div><div class="ttdeci">virtual void ExtractNewVariables()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a38ad5df166aef299c76fac71eb785523"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a38ad5df166aef299c76fac71eb785523">operations_research::MPSolverInterface::ClearConstraint</a></div><div class="ttdeci">virtual void ClearConstraint(MPConstraint *const constraint)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ad40ba327269cfff827f23ac4d94414d9"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ad40ba327269cfff827f23ac4d94414d9">operations_research::MPSolver::Write</a></div><div class="ttdeci">void Write(const std::string &file_name)</div><div class="ttdoc">Writes the model using the solver internal write function.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_abb491e237ace37cb5240cde3c3ff2958"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#abb491e237ace37cb5240cde3c3ff2958">operations_research::MPVariable::basis_status</a></div><div class="ttdeci">MPSolver::BasisStatus basis_status() const</div><div class="ttdoc">Advanced usage: returns the basis status of the variable in the current solution (only available for ...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ae77fef975a893d6118d955ef2eb72ac9a33cf90a88928c32c5b56c9375d7dfd18"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9a33cf90a88928c32c5b56c9375d7dfd18">operations_research::MPSolverParameters::SCALING_ON</a></div><div class="ttdoc">Scaling is on.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01490">linear_solver.h:1490</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_ad1b4cc3f73a08cad0716015adffd188f"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#ad1b4cc3f73a08cad0716015adffd188f">operations_research::MPConstraint::indicator_value</a></div><div class="ttdeci">bool indicator_value() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01286">linear_solver.h:1286</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a54e8b352edd37540f788c3fc473fa875"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a54e8b352edd37540f788c3fc473fa875">operations_research::MPSolver::ProblemType</a></div><div class="ttdeci">virtual OptimizationProblemType ProblemType() const</div><div class="ttdoc">Returns the optimization problem type set at construction.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00263">linear_solver.h:263</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a5c083b37243075a00bf909840dc7c933"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPSolver::SLMInterface</a></div><div class="ttdeci">friend class SLMInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00809">linear_solver.h:809</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_abfaa014d3c3ca883e3c8a17110372801"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#abfaa014d3c3ca883e3c8a17110372801">operations_research::MPSolver::SuppressOutput</a></div><div class="ttdeci">void SuppressOutput()</div><div class="ttdoc">Suppress output.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a9ae99b901839c7f1e29193d8a619b728"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a9ae99b901839c7f1e29193d8a619b728">operations_research::MPSolverInterface::ExtractModel</a></div><div class="ttdeci">void ExtractModel()</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a2ac836dbebc688c3ac5559fc33c20eb7"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a2ac836dbebc688c3ac5559fc33c20eb7">operations_research::MPConstraint::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Clears all variables and coefficients.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_acbd4413b1370baca9c45aecb0cb8ebd2"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPObjective::SatInterface</a></div><div class="ttdeci">friend class SatInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01042">linear_solver.h:1042</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ad792f0af5ffa1072f0d6a4d3d872f73a"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ad792f0af5ffa1072f0d6a4d3d872f73a">operations_research::MPSolverInterface::CheckSolutionIsSynchronizedAndExists</a></div><div class="ttdeci">bool CheckSolutionIsSynchronizedAndExists() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01705">linear_solver.h:1705</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ad4ce4ee159f4c2db5a02923c886c136b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ad4ce4ee159f4c2db5a02923c886c136b">operations_research::MPSolverInterface::Reset</a></div><div class="ttdeci">virtual void Reset()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a3c7ae564168e67c161f5111a060a604e"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a3c7ae564168e67c161f5111a060a604e">operations_research::MPSolverInterface::set_constraint_as_extracted</a></div><div class="ttdeci">void set_constraint_as_extracted(int ct_index, bool extracted)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01737">linear_solver.h:1737</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a47a5516ca826adbc25bd5bf1d7935fd1"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a47a5516ca826adbc25bd5bf1d7935fd1">operations_research::MPSolver::SetTimeLimit</a></div><div class="ttdeci">void SetTimeLimit(absl::Duration time_limit)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00699">linear_solver.h:699</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolutionResponse_html"><div class="ttname"><a href="classoperations__research_1_1MPSolutionResponse.html">operations_research::MPSolutionResponse</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8pb_8h_source.html#l02061">linear_solver.pb.h:2061</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a51b5d57f310db13d800e4440ca3c0d0b"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a51b5d57f310db13d800e4440ca3c0d0b">operations_research::MPSolver::LoadModelFromProtoWithUniqueNamesOrDie</a></div><div class="ttdeci">MPSolverResponseStatus LoadModelFromProtoWithUniqueNamesOrDie(const MPModelProto &input_model, std::string *error_message)</div><div class="ttdoc">Loads model from protocol buffer.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a45d822ac67d10cc80b2f70fe6ec555a4ac8e04ac3295af6c505a22757490bb018"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4ac8e04ac3295af6c505a22757490bb018">operations_research::MPSolverParameters::PRESOLVE_ON</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01455">linear_solver.h:1455</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a6c754b527a347994b06eeb49a09ac222"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPVariable::GLOPInterface</a></div><div class="ttdeci">friend class GLOPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01165">linear_solver.h:1165</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a6c754b527a347994b06eeb49a09ac222"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPConstraint::GLOPInterface</a></div><div class="ttdeci">friend class GLOPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01323">linear_solver.h:1323</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae96df0f02a46493eba93d2e70709911a"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae96df0f02a46493eba93d2e70709911a">operations_research::MPSolver::SupportsProblemType</a></div><div class="ttdeci">static bool SupportsProblemType(OptimizationProblemType problem_type)</div><div class="ttdoc">Whether the given problem type is supported (this will depend on the targets that you linked).</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a6390f93d9c4e88775d98ec8353ef0979"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a6390f93d9c4e88775d98ec8353ef0979">operations_research::MPSolver::ComputeExactConditionNumber</a></div><div class="ttdeci">double ComputeExactConditionNumber() const</div><div class="ttdoc">Advanced usage: computes the exact condition number of the current scaled basis: L1norm(B) * L1norm(i...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743a32b9b4f5f09a5dbdeed585318e8d97f2"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a32b9b4f5f09a5dbdeed585318e8d97f2">operations_research::MPSolver::AT_LOWER_BOUND</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00656">linear_solver.h:656</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a700788b8583ef4c69730be08a1a3ac28"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a700788b8583ef4c69730be08a1a3ac28">operations_research::MPObjective::minimization</a></div><div class="ttdeci">bool minimization() const</div><div class="ttdoc">Is the optimization direction set to minimize?</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a60944ecdcad88cfb4d4d32feea70c9b5"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPObjective::CLPInterface</a></div><div class="ttdeci">friend class CLPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01034">linear_solver.h:1034</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ac35b40e98fabb8bcd5e62cdd57678ff3"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ac35b40e98fabb8bcd5e62cdd57678ff3">operations_research::MPSolverInterface::SetOptimizationDirection</a></div><div class="ttdeci">virtual void SetOptimizationDirection(bool maximize)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a27ef26272b0444403e683b31605d88f7"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a27ef26272b0444403e683b31605d88f7">operations_research::MPSolverInterface::InvalidateSolutionSynchronization</a></div><div class="ttdeci">void InvalidateSolutionSynchronization()</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a9e03dec6fb0099d48a119dd525879dd7"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a9e03dec6fb0099d48a119dd525879dd7">operations_research::MPObjective::AddLinearExpr</a></div><div class="ttdeci">void AddLinearExpr(const LinearExpr &linear_expr)</div><div class="ttdoc">Adds linear_expr to the current objective, does not change the direction.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_af9eea25e667a52dcad270495025e1202"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#af9eea25e667a52dcad270495025e1202">operations_research::MPObjective::SetMinimization</a></div><div class="ttdeci">void SetMinimization()</div><div class="ttdoc">Sets the optimization direction to minimize.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00993">linear_solver.h:993</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a19a354c154bf034196d7a273feeff737"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a19a354c154bf034196d7a273feeff737">operations_research::MPObjective::MinimizeLinearExpr</a></div><div class="ttdeci">void MinimizeLinearExpr(const LinearExpr &linear_expr)</div><div class="ttdoc">Resets the current objective to minimize linear_expr.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00976">linear_solver.h:976</a></div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_a2610f938f233d0adcd3142693f4a2683"><div class="ttname"><a href="namespaceoperations__research.html#a2610f938f233d0adcd3142693f4a2683">operations_research::operator<<</a></div><div class="ttdeci">std::ostream & operator<<(std::ostream &os, MPSolver::OptimizationProblemType optimization_problem_type)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00895">linear_solver.h:895</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ab297405e6084c08a9058012361376762af55a23df7a5ec299bb9ca742ef9004ed"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762af55a23df7a5ec299bb9ca742ef9004ed">operations_research::MPSolverParameters::BARRIER</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01464">linear_solver.h:1464</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7aebea4f022e7a685322e7db70b76e5e"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7aebea4f022e7a685322e7db70b76e5e">operations_research::MPSolver::MakeNumVarArray</a></div><div class="ttdeci">void MakeNumVarArray(int nb, double lb, double ub, const std::string &name, std::vector< MPVariable * > *vars)</div><div class="ttdoc">Creates an array of continuous variables.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a80e389070e3984f5333c4fd96311231b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a80e389070e3984f5333c4fd96311231b">operations_research::MPSolverInterface::CheckBestObjectiveBoundExists</a></div><div class="ttdeci">virtual bool CheckBestObjectiveBoundExists() const</div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_a8cc975b7db5017319901da0f63a114aa"><div class="ttname"><a href="namespaceoperations__research.html#a8cc975b7db5017319901da0f63a114aa">operations_research::MPSolverResponseStatus</a></div><div class="ttdeci">MPSolverResponseStatus</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8pb_8h_source.html#l00191">linear_solver.pb.h:191</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a2a4a0234b5830d4ea82d549b3b6b5baf"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a2a4a0234b5830d4ea82d549b3b6b5baf">operations_research::MPSolver::VerifySolution</a></div><div class="ttdeci">bool VerifySolution(double tolerance, bool log_errors) const</div><div class="ttdoc">Advanced usage: Verifies the correctness of the solution.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a100330795edeb8c1b12c7b8ff74611df"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a100330795edeb8c1b12c7b8ff74611df">operations_research::MPSolverParameters::ResetIntegerParam</a></div><div class="ttdeci">void ResetIntegerParam(MPSolverParameters::IntegerParam param)</div><div class="ttdoc">Sets an integer parameter to its default value (default value defined in MPSolverParameters if it exi...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ae27c5da090750971d680f2bf8f4f706b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ae27c5da090750971d680f2bf8f4f706b">operations_research::MPSolverInterface::solver_</a></div><div class="ttdeci">MPSolver *const solver_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01781">linear_solver.h:1781</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a9421cf0896b24513fb63283fac87de44"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a9421cf0896b24513fb63283fac87de44">operations_research::MPSolverInterface::SetSolverSpecificParametersAsString</a></div><div class="ttdeci">virtual bool SetSolverSpecificParametersAsString(const std::string &parameters)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ad58cb8cf98c288843ab0d1fd644f6116a27013e436bfe1d34ebb6da476c590eee"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ad58cb8cf98c288843ab0d1fd644f6116a27013e436bfe1d34ebb6da476c590eee">operations_research::MPSolverParameters::INCREMENTALITY_OFF</a></div><div class="ttdoc">Start solve from scratch.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01474">linear_solver.h:1474</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a6837e7545ac2c5cfe95ca9a1c0f013e3"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a6837e7545ac2c5cfe95ca9a1c0f013e3">operations_research::MPSolver::nodes</a></div><div class="ttdeci">int64 nodes() const</div><div class="ttdoc">Returns the number of branch-and-bound nodes evaluated during the solve.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2a32049e26d1ea6f68624fc478b88d98c9"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a32049e26d1ea6f68624fc478b88d98c9">operations_research::MPSolver::GLOP_LINEAR_PROGRAMMING</a></div><div class="ttdoc">Linear Programming solver using GLOP (Recommended solver).</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00193">linear_solver.h:193</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a5b15f7248e2b72d474bae0444a613033"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a5b15f7248e2b72d474bae0444a613033">operations_research::MPSolver::infinity</a></div><div class="ttdeci">static double infinity()</div><div class="ttdoc">Infinity.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00682">linear_solver.h:682</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a60944ecdcad88cfb4d4d32feea70c9b5"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPVariable::CLPInterface</a></div><div class="ttdeci">friend class CLPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01159">linear_solver.h:1159</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a78606aaae8d97a0def488e696fdb2d2b"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a78606aaae8d97a0def488e696fdb2d2b">operations_research::MPSolver::OwnsVariable</a></div><div class="ttdeci">bool OwnsVariable(const MPVariable *var) const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a94980bb46c791363fe9ce55d57e2a79a"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a94980bb46c791363fe9ce55d57e2a79a">operations_research::MPSolverInterface::AddVariable</a></div><div class="ttdeci">virtual void AddVariable(MPVariable *const var)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a2c58f52acd6216131582c60aae3625ee"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a2c58f52acd6216131582c60aae3625ee">operations_research::MPSolver::MakeVarArray</a></div><div class="ttdeci">void MakeVarArray(int nb, double lb, double ub, bool integer, const std::string &name_prefix, std::vector< MPVariable * > *vars)</div><div class="ttdoc">Creates an array of variables.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_af80b8873e1b07fedcac24c5704a889cf"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#af80b8873e1b07fedcac24c5704a889cf">operations_research::MPSolverInterface::SetVariableBounds</a></div><div class="ttdeci">virtual void SetVariableBounds(int index, double lb, double ub)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a0d23a28f31a3b667f21034551666430e"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a0d23a28f31a3b667f21034551666430e">operations_research::MPVariable::SetLB</a></div><div class="ttdeci">void SetLB(double lb)</div><div class="ttdoc">Sets the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01110">linear_solver.h:1110</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_af5a7cf0c655f37c0b388a2ddcf32ac3e"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#af5a7cf0c655f37c0b388a2ddcf32ac3e">operations_research::MPConstraint::CBCInterface</a></div><div class="ttdeci">friend class CBCInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01316">linear_solver.h:1316</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ab7289f57fd0f768453f2817d59a20c80"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ab7289f57fd0f768453f2817d59a20c80">operations_research::MPSolverInterface::SetMIPParameters</a></div><div class="ttdeci">void SetMIPParameters(const MPSolverParameters &param)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a02131c51847247fc3f620e4ccb439470"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a02131c51847247fc3f620e4ccb439470">operations_research::MPVariable::SetInteger</a></div><div class="ttdeci">void SetInteger(bool integer)</div><div class="ttdoc">Sets the integrality requirement of the variable.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a24085346a573695d2f3d224b726c5714"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a24085346a573695d2f3d224b726c5714">operations_research::MPSolverInterface::ExtractObjective</a></div><div class="ttdeci">virtual void ExtractObjective()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a119e0274303ed2eb0c80fcef960cfff0"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a119e0274303ed2eb0c80fcef960cfff0">operations_research::MPSolverInterface::SetPrimalTolerance</a></div><div class="ttdeci">virtual void SetPrimalTolerance(double value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a60944ecdcad88cfb4d4d32feea70c9b5"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a60944ecdcad88cfb4d4d32feea70c9b5">operations_research::MPSolver::CLPInterface</a></div><div class="ttdeci">friend class CLPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00804">linear_solver.h:804</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae99e29fcc045ab27c8fecbdc422e6133"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae99e29fcc045ab27c8fecbdc422e6133">operations_research::MPSolver::set_time_limit</a></div><div class="ttdeci">void set_time_limit(int64 time_limit_milliseconds)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00789">linear_solver.h:789</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ac962e5cc7308644424829668241a8fcf"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ac962e5cc7308644424829668241a8fcf">operations_research::MPSolverInterface::quiet_</a></div><div class="ttdeci">bool quiet_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01799">linear_solver.h:1799</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a84e96d7264feeb2b6577400bc379d9db"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a84e96d7264feeb2b6577400bc379d9db">operations_research::MPSolver::INFEASIBLE</a></div><div class="ttdoc">proven infeasible.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00437">linear_solver.h:437</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a1535b2a46d5cff6f9727c08085cfbb1f"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a1535b2a46d5cff6f9727c08085cfbb1f">operations_research::MPSolver::Solve</a></div><div class="ttdeci">ResultStatus Solve()</div><div class="ttdoc">Solves the problem using default parameter values.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a9ef93893d198901ce104d74794dde123"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a9ef93893d198901ce104d74794dde123">operations_research::MPSolver::MakeRowConstraint</a></div><div class="ttdeci">MPConstraint * MakeRowConstraint()</div><div class="ttdoc">Creates a constraint with -infinity and +infinity bounds.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ab297ed394e3996ebb0cc43d931deaa16"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ab297ed394e3996ebb0cc43d931deaa16">operations_research::MPSolverParameters::SetDoubleParam</a></div><div class="ttdeci">void SetDoubleParam(MPSolverParameters::DoubleParam param, double value)</div><div class="ttdoc">Sets a double parameter to a specific value.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2">operations_research::MPSolver::OptimizationProblemType</a></div><div class="ttdeci">OptimizationProblemType</div><div class="ttdoc">The type of problems (LP or MIP) that will be solved and the underlying solver (GLOP,...</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00182">linear_solver.h:182</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a7f6e6fc6c25a04f49e3b95b7510c8369"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a7f6e6fc6c25a04f49e3b95b7510c8369">operations_research::MPSolverInterface::NextSolution</a></div><div class="ttdeci">virtual bool NextSolution()</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01772">linear_solver.h:1772</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a1d6101b365c33fb1f73a4c953abeb0ed"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a1d6101b365c33fb1f73a4c953abeb0ed">operations_research::MPSolver::Name</a></div><div class="ttdeci">const std::string & Name() const</div><div class="ttdoc">Returns the name of the model set at construction.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00256">linear_solver.h:256</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_accb1cea31a73bd0b09bb75882baa9e5f"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#accb1cea31a73bd0b09bb75882baa9e5f">operations_research::MPSolverParameters::MPSolverParameters</a></div><div class="ttdeci">MPSolverParameters()</div><div class="ttdoc">The constructor sets all parameters to their default value.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8f18a88f586c725cfffc613499926a0a28abd1bbac3e861d5a74f841f8263e05"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0a28abd1bbac3e861d5a74f841f8263e05">operations_research::MPSolverParameters::LP_ALGORITHM</a></div><div class="ttdoc">Algorithm to solve linear programs.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01439">linear_solver.h:1439</a></div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_afc3e3b80841b587c6fbfd9e9f3ec9c59"><div class="ttname"><a href="namespaceoperations__research.html#afc3e3b80841b587c6fbfd9e9f3ec9c59">operations_research::ToString</a></div><div class="ttdeci">const absl::string_view ToString(MPSolver::OptimizationProblemType optimization_problem_type)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743">operations_research::MPSolver::BasisStatus</a></div><div class="ttdeci">BasisStatus</div><div class="ttdoc">Advanced usage: possible basis status values for a variable and the slack variable of a linear constr...</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00654">linear_solver.h:654</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a8695f6bddabcff5af750918b919cab7a"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a8695f6bddabcff5af750918b919cab7a">operations_research::MPConstraint::basis_status</a></div><div class="ttdeci">MPSolver::BasisStatus basis_status() const</div><div class="ttdoc">Advanced usage: returns the basis status of the constraint.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192">operations_research::MPSolver::ResultStatus</a></div><div class="ttdeci">ResultStatus</div><div class="ttdoc">The status of solving the problem.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00431">linear_solver.h:431</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a3834b74a8764c1c971e10ce9ba2f265ea57e959f9c5ede1f3e683169609fb0488"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea57e959f9c5ede1f3e683169609fb0488">operations_research::MPSolverParameters::PRIMAL_TOLERANCE</a></div><div class="ttdoc">Advanced usage: tolerance for primal feasibility of basic solutions.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01421">linear_solver.h:1421</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a9fbca54e7d25c2bfacfac1e47183e14f"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a9fbca54e7d25c2bfacfac1e47183e14f">operations_research::MPSolverInterface::objective_value_</a></div><div class="ttdeci">double objective_value_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01796">linear_solver.h:1796</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a5e445125231a8febc619d3a81cb8c12f"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a5e445125231a8febc619d3a81cb8c12f">operations_research::MPSolverInterface::SetVariableInteger</a></div><div class="ttdeci">virtual void SetVariableInteger(int index, bool integer)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a1ab47aaf7b73ae8a2664dd262227e3a9"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a1ab47aaf7b73ae8a2664dd262227e3a9">operations_research::MPObjective::BestBound</a></div><div class="ttdeci">double BestBound() const</div><div class="ttdoc">Returns the best objective bound.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPModelRequest_html"><div class="ttname"><a href="classoperations__research_1_1MPModelRequest.html">operations_research::MPModelRequest</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8pb_8h_source.html#l01834">linear_solver.pb.h:1834</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a45d822ac67d10cc80b2f70fe6ec555a4a6e658228fc28195fb00675d3dfec2c85"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a45d822ac67d10cc80b2f70fe6ec555a4a6e658228fc28195fb00675d3dfec2c85">operations_research::MPSolverParameters::PRESOLVE_OFF</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01454">linear_solver.h:1454</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a6c81985cecabbd5f054974d362db551a"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a6c81985cecabbd5f054974d362db551a">operations_research::MPSolverParameters::kUnknownIntegerParamValue</a></div><div class="ttdeci">static const int kUnknownIntegerParamValue</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01503">linear_solver.h:1503</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a1363e1a1c4a1535b0cb92f46a9efd4b5"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a1363e1a1c4a1535b0cb92f46a9efd4b5">operations_research::MPSolverInterface::ExtractNewConstraints</a></div><div class="ttdeci">virtual void ExtractNewConstraints()=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aad9285c25e1671edfac7a7748b166770"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aad9285c25e1671edfac7a7748b166770">operations_research::MPSolverInterface::row_status</a></div><div class="ttdeci">virtual MPSolver::BasisStatus row_status(int constraint_index) const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a1eeda5bea30b1e1f354c2919110e2ff9"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a1eeda5bea30b1e1f354c2919110e2ff9">operations_research::MPVariable::ub</a></div><div class="ttdeci">double ub() const</div><div class="ttdoc">Returns the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01105">linear_solver.h:1105</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html">operations_research::MPSolverParameters</a></div><div class="ttdoc">This class stores parameter settings for LP and MIP solvers.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01405">linear_solver.h:1405</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a1cc4ca29f46883ebff5bdb2b624318a0"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a1cc4ca29f46883ebff5bdb2b624318a0">operations_research::MPConstraint::name</a></div><div class="ttdeci">const std::string & name() const</div><div class="ttdoc">Returns the name of the constraint.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01211">linear_solver.h:1211</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a24caaef373d3715d5bce9fb0da2c203d"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a24caaef373d3715d5bce9fb0da2c203d">operations_research::MPSolver::IsMIP</a></div><div class="ttdeci">bool IsMIP() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_acbd4413b1370baca9c45aecb0cb8ebd2"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#acbd4413b1370baca9c45aecb0cb8ebd2">operations_research::MPSolver::SatInterface</a></div><div class="ttdeci">friend class SatInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00813">linear_solver.h:813</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ab297405e6084c08a9058012361376762"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762">operations_research::MPSolverParameters::LpAlgorithmValues</a></div><div class="ttdeci">LpAlgorithmValues</div><div class="ttdoc">LP algorithm to use.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01461">linear_solver.h:1461</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html">operations_research::MPConstraint</a></div><div class="ttdoc">The class for constraints of a Mathematical Programming (MP) model.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01206">linear_solver.h:1206</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a3038e118fcb2ccc9f0e2493cc48a1545"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a3038e118fcb2ccc9f0e2493cc48a1545">operations_research::MPSolverInterface::BranchingPriorityChangedForVariable</a></div><div class="ttdeci">virtual void BranchingPriorityChangedForVariable(int var_index)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01675">linear_solver.h:1675</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16a3cee848c033e365ebb1cf50bb97cd"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16a3cee848c033e365ebb1cf50bb97cd">operations_research::MPSolver::NumConstraints</a></div><div class="ttdeci">int NumConstraints() const</div><div class="ttdoc">Returns the number of constraints.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00356">linear_solver.h:356</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aee1ddf25e86286c16face31551751bda"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aee1ddf25e86286c16face31551751bda">operations_research::MPSolver::KnapsackInterface</a></div><div class="ttdeci">friend class KnapsackInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00814">linear_solver.h:814</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ac28a56eeedb62d070578a9231f1875ea"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ac28a56eeedb62d070578a9231f1875ea">operations_research::MPSolver::GurobiInterface</a></div><div class="ttdeci">friend class GurobiInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00807">linear_solver.h:807</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a2a521156c4a2eafe918c36fbb386e9e8"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a2a521156c4a2eafe918c36fbb386e9e8">operations_research::MPConstraint::set_dual_value</a></div><div class="ttdeci">void set_dual_value(double dual_value)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01343">linear_solver.h:1343</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a7a765c1340de9cc37e22c68a2da7d390"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a7a765c1340de9cc37e22c68a2da7d390">operations_research::MPSolver::OPTIMAL</a></div><div class="ttdoc">optimal.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00433">linear_solver.h:433</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743aeca9b511e54f58239988d6affd62afa8"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743aeca9b511e54f58239988d6affd62afa8">operations_research::MPSolver::FIXED_VALUE</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00658">linear_solver.h:658</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_af25c3940fd37705e63340d9269896dc0"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#af25c3940fd37705e63340d9269896dc0">operations_research::MPVariable::unrounded_solution_value</a></div><div class="ttdeci">double unrounded_solution_value() const</div><div class="ttdoc">Advanced usage: unrounded solution value.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743a0185d5946c48b9852d8a02a7493f4dcf"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a0185d5946c48b9852d8a02a7493f4dcf">operations_research::MPSolver::BASIC</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00659">linear_solver.h:659</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ad07e28e347a4b2d94d53ca96ae201d70"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ad07e28e347a4b2d94d53ca96ae201d70">operations_research::MPSolver::ComputeConstraintActivities</a></div><div class="ttdeci">std::vector< double > ComputeConstraintActivities() const</div><div class="ttdoc">Advanced usage: compute the "activities" of all constraints, which are the sums of their linear terms...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aaabe8c85cd90dd61e4c9de70667b0c16"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aaabe8c85cd90dd61e4c9de70667b0c16">operations_research::MPSolverInterface::maximize_</a></div><div class="ttdeci">bool maximize_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01788">linear_solver.h:1788</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a6394f5b0c08af038bfd9610d2bc4be90"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a6394f5b0c08af038bfd9610d2bc4be90">operations_research::MPSolver::SetNumThreads</a></div><div class="ttdeci">util::Status SetNumThreads(int num_threads)</div><div class="ttdoc">Sets the number of threads to use by the underlying solver.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ab297405e6084c08a9058012361376762a9fa228e5a51b8e22346b46d0f866e68d"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ab297405e6084c08a9058012361376762a9fa228e5a51b8e22346b46d0f866e68d">operations_research::MPSolverParameters::PRIMAL</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01463">linear_solver.h:1463</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ae77fef975a893d6118d955ef2eb72ac9"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ae77fef975a893d6118d955ef2eb72ac9">operations_research::MPSolverParameters::ScalingValues</a></div><div class="ttdeci">ScalingValues</div><div class="ttdoc">Advanced usage: Scaling options.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01486">linear_solver.h:1486</a></div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_af04d1dfc591c35038a974202e50e541f"><div class="ttname"><a href="namespaceoperations__research.html#af04d1dfc591c35038a974202e50e541f">operations_research::AbslUnparseFlag</a></div><div class="ttdeci">std::string AbslUnparseFlag(MPSolver::OptimizationProblemType solver_type)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00911">linear_solver.h:911</a></div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html_a61dc18a85425d0a7cf6aa3e7ce3199f6"><div class="ttname"><a href="namespaceoperations__research.html#a61dc18a85425d0a7cf6aa3e7ce3199f6">operations_research::AbslParseFlag</a></div><div class="ttdeci">bool AbslParseFlag(absl::string_view text, MPSolver::OptimizationProblemType *solver_type, std::string *error)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192ae7c84444803ea46da465b68fb6e974fa"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192ae7c84444803ea46da465b68fb6e974fa">operations_research::MPSolver::ABNORMAL</a></div><div class="ttdoc">abnormal, i.e., error of some kind.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00441">linear_solver.h:441</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_abba28daa7e558932c40cf1a8ecb30194"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#abba28daa7e558932c40cf1a8ecb30194">operations_research::MPVariable::MPVariable</a></div><div class="ttdeci">MPVariable(int index, double lb, double ub, bool integer, const std::string &name, MPSolverInterface *const interface_in)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01174">linear_solver.h:1174</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a258c821fae2869693b58440145125aba"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a258c821fae2869693b58440145125aba">operations_research::MPSolver::time_limit</a></div><div class="ttdeci">int64 time_limit() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00784">linear_solver.h:784</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a42590823a1b3343d0459cc7c564b9d69"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a42590823a1b3343d0459cc7c564b9d69">operations_research::MPVariable::SetUB</a></div><div class="ttdeci">void SetUB(double ub)</div><div class="ttdoc">Sets the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01114">linear_solver.h:1114</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a393a84863fe633baa3c7af4e71c8b147"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a393a84863fe633baa3c7af4e71c8b147">operations_research::MPSolver::ExportModelAsLpFormat</a></div><div class="ttdeci">bool ExportModelAsLpFormat(bool obfuscate, std::string *model_str) const</div><div class="ttdoc">Shortcuts to the homonymous MPModelProtoExporter methods, via exporting to a MPModelProto with Export...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a561c73d056eef04db4b4703abd972868"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a561c73d056eef04db4b4703abd972868">operations_research::MPSolverParameters::kUnknownDoubleParamValue</a></div><div class="ttdeci">static const double kUnknownDoubleParamValue</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01502">linear_solver.h:1502</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ada3cdf5254959f2807c3d27bb7e18e27"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ada3cdf5254959f2807c3d27bb7e18e27">operations_research::MPSolverParameters::Reset</a></div><div class="ttdeci">void Reset()</div><div class="ttdoc">Sets all parameters to their default value.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a156255f5e27fd48b7ee43539b52f644f"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a156255f5e27fd48b7ee43539b52f644f">operations_research::MPSolverInterface::kUnknownNumberOfIterations</a></div><div class="ttdeci">static const int64 kUnknownNumberOfIterations</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01609">linear_solver.h:1609</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a6a68e7fab8751978c9faa30867f91241"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a6a68e7fab8751978c9faa30867f91241">operations_research::MPSolver::DurationSinceConstruction</a></div><div class="ttdeci">absl::Duration DurationSinceConstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00704">linear_solver.h:704</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_ae7cbd08108e1636184f28c1a71c42393"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#ae7cbd08108e1636184f28c1a71c42393">operations_research::MPVariable::CplexInterface</a></div><div class="ttdeci">friend class CplexInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01164">linear_solver.h:1164</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a7bc16e5febd0604a3400572c0e35c490"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a7bc16e5febd0604a3400572c0e35c490">operations_research::MPSolverParameters::ResetDoubleParam</a></div><div class="ttdeci">void ResetDoubleParam(MPSolverParameters::DoubleParam param)</div><div class="ttdoc">Sets a double parameter to its default value (default value defined in MPSolverParameters if it exist...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_aee1ddf25e86286c16face31551751bda"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#aee1ddf25e86286c16face31551751bda">operations_research::MPConstraint::KnapsackInterface</a></div><div class="ttdeci">friend class KnapsackInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01326">linear_solver.h:1326</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_af9eb46d78f04fa12da7ac27c14becb7d"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#af9eb46d78f04fa12da7ac27c14becb7d">operations_research::MPSolver::LoadModelFromProto</a></div><div class="ttdeci">MPSolverResponseStatus LoadModelFromProto(const MPModelProto &input_model, std::string *error_message)</div><div class="ttdoc">Loads model from protocol buffer.</div></div>
|
|
<div class="ttc" id="linear__solver_8pb_8h_html"><div class="ttname"><a href="linear__solver_8pb_8h.html">linear_solver.pb.h</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a4c06cfd4d3c34ca0a96ad90f50a1abd8"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a4c06cfd4d3c34ca0a96ad90f50a1abd8">operations_research::MPSolverInterface::AddRowConstraint</a></div><div class="ttdeci">virtual void AddRowConstraint(MPConstraint *const ct)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a45aa65ea825c85f885b0d8a0064af2f6"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a45aa65ea825c85f885b0d8a0064af2f6">operations_research::MPSolverInterface::last_variable_index_</a></div><div class="ttdeci">int last_variable_index_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01793">linear_solver.h:1793</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2a91bb43cabe6c49465bd7138189f3ea84"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2a91bb43cabe6c49465bd7138189f3ea84">operations_research::MPSolver::CLP_LINEAR_PROGRAMMING</a></div><div class="ttdoc">Linear Programming solver using Coin CBC.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00185">linear_solver.h:185</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aee22680c23e591329e9ac50ff78f572d"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aee22680c23e591329e9ac50ff78f572d">operations_research::MPSolver::SolverVersion</a></div><div class="ttdeci">std::string SolverVersion() const</div><div class="ttdoc">Returns a std::string describing the underlying solver and its version.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_afae6a55da4ebeb2d9c6eb55eeccbdc8b"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#afae6a55da4ebeb2d9c6eb55eeccbdc8b">operations_research::MPSolverInterface::ComputeExactConditionNumber</a></div><div class="ttdeci">virtual double ComputeExactConditionNumber() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a54d66e99fdc2424e812d910e7c2f225a"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a54d66e99fdc2424e812d910e7c2f225a">operations_research::MPSolver::MakeNumVar</a></div><div class="ttdeci">MPVariable * MakeNumVar(double lb, double ub, const std::string &name)</div><div class="ttdoc">Creates a continuous variable.</div></div>
|
|
<div class="ttc" id="namespaceoperations__research_html"><div class="ttname"><a href="namespaceoperations__research.html">operations_research</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00160">linear_solver.h:160</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_acd4eda4c38c00ed2cf7908c29bb74de3"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#acd4eda4c38c00ed2cf7908c29bb74de3">operations_research::MPSolverInterface::~MPSolverInterface</a></div><div class="ttdeci">virtual ~MPSolverInterface()</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_adac818d5ad3d7e51129ba251491a5f46"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#adac818d5ad3d7e51129ba251491a5f46">operations_research::MPConstraint::MPConstraint</a></div><div class="ttdeci">MPConstraint(int index, double lb, double ub, const std::string &name, MPSolverInterface *const interface_in)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01331">linear_solver.h:1331</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a152b3f16428c0a1c58247ba88d95f0a4"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a152b3f16428c0a1c58247ba88d95f0a4">operations_research::MPSolverInterface::MPSolverInterface</a></div><div class="ttdeci">MPSolverInterface(MPSolver *const solver)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a88c7283cc752b51ed05c21c73f8fe100"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a88c7283cc752b51ed05c21c73f8fe100">operations_research::MPSolver::UNBOUNDED</a></div><div class="ttdoc">proven unbounded.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00439">linear_solver.h:439</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a861fc44ad0a6147a79dbcef606d34958"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a861fc44ad0a6147a79dbcef606d34958">operations_research::MPSolverInterface::SetUnsupportedDoubleParam</a></div><div class="ttdeci">void SetUnsupportedDoubleParam(MPSolverParameters::DoubleParam param)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7176be8ce0481d880a8d30a2d7a1c09e"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7176be8ce0481d880a8d30a2d7a1c09e">operations_research::MPSolver::MakeBoolVar</a></div><div class="ttdeci">MPVariable * MakeBoolVar(const std::string &name)</div><div class="ttdoc">Creates a boolean variable.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a6c754b527a347994b06eeb49a09ac222"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPSolver::GLOPInterface</a></div><div class="ttdeci">friend class GLOPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00811">linear_solver.h:811</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a883fc7ee2a166fc6ff257296f78e9565"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a883fc7ee2a166fc6ff257296f78e9565">operations_research::MPObjective::maximization</a></div><div class="ttdeci">bool maximization() const</div><div class="ttdoc">Is the optimization direction set to maximize?</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a88ddf26ba2c9524de319f6f307cfde60"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a88ddf26ba2c9524de319f6f307cfde60">operations_research::MPSolver::GetNumThreads</a></div><div class="ttdeci">int GetNumThreads() const</div><div class="ttdoc">Returns the number of threads to be used during solve.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00618">linear_solver.h:618</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a299502e4b0e4e6608330fdbe4fb86c94"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a299502e4b0e4e6608330fdbe4fb86c94">operations_research::MPSolver::LookupConstraintOrNull</a></div><div class="ttdeci">MPConstraint * LookupConstraintOrNull(const std::string &constraint_name) const</div><div class="ttdoc">Looks up a constraint by name, and returns nullptr if it does not exist.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a6a0b90433ed94679a6065000b384fb64"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a6a0b90433ed94679a6065000b384fb64">operations_research::MPSolverInterface::SetObjectiveOffset</a></div><div class="ttdeci">virtual void SetObjectiveOffset(double value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_adc4579b45ae778e4c61b5c35cffc0eaf"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#adc4579b45ae778e4c61b5c35cffc0eaf">operations_research::MPSolverInterface::set_quiet</a></div><div class="ttdeci">void set_quiet(bool quiet_value)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01744">linear_solver.h:1744</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html">operations_research::MPVariable</a></div><div class="ttdoc">The class for variables of a Mathematical Programming (MP) model.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01066">linear_solver.h:1066</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a42c406c7e6fba381aa2bb41aae4b44f2aaef5b33a2d88606a978524ebc7b1cb7b"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a42c406c7e6fba381aa2bb41aae4b44f2aaef5b33a2d88606a978524ebc7b1cb7b">operations_research::MPSolver::BOP_INTEGER_PROGRAMMING</a></div><div class="ttdoc">Linear Boolean Programming Solver.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00228">linear_solver.h:228</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_af3bee59eacd9c98d6f9240167cf3051f"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#af3bee59eacd9c98d6f9240167cf3051f">operations_research::MPSolverInterface::ReadParameterFile</a></div><div class="ttdeci">virtual bool ReadParameterFile(const std::string &filename)</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPModelProto_html"><div class="ttname"><a href="classoperations__research_1_1MPModelProto.html">operations_research::MPModelProto</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8pb_8h_source.html#l01278">linear_solver.pb.h:1278</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_abf8bbda7b4d608d011f88d2df83db881"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#abf8bbda7b4d608d011f88d2df83db881">operations_research::MPConstraint::SetBounds</a></div><div class="ttdeci">void SetBounds(double lb, double ub)</div><div class="ttdoc">Sets both the lower and upper bounds.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a3834b74a8764c1c971e10ce9ba2f265ea313eaed42edf309599e71ca7563cce22"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265ea313eaed42edf309599e71ca7563cce22">operations_research::MPSolverParameters::DUAL_TOLERANCE</a></div><div class="ttdoc">Advanced usage: tolerance for dual feasibility of basic solutions.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01425">linear_solver.h:1425</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a51ae167e111959ecbe3f67e0e12e2f09"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a51ae167e111959ecbe3f67e0e12e2f09">operations_research::MPSolverInterface::SetPresolveMode</a></div><div class="ttdeci">virtual void SetPresolveMode(int value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a6c1c1fc340f3f15e75745d7e6b0fe3df"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a6c1c1fc340f3f15e75745d7e6b0fe3df">operations_research::MPSolverInterface::SetParameters</a></div><div class="ttdeci">virtual void SetParameters(const MPSolverParameters &param)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a693c6f125a85b70fe94057be1cfd0819"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a693c6f125a85b70fe94057be1cfd0819">operations_research::MPSolverInterface::kDummyVariableIndex</a></div><div class="ttdeci">static const int kDummyVariableIndex</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01803">linear_solver.h:1803</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ae1a3e0a695903c8e6effd524a7f92784"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ae1a3e0a695903c8e6effd524a7f92784">operations_research::MPSolver::GLPKInterface</a></div><div class="ttdeci">friend class GLPKInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00803">linear_solver.h:803</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a7e655031d93cbf4efbe827e3bd662ae7"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a7e655031d93cbf4efbe827e3bd662ae7">operations_research::MPConstraint::ub</a></div><div class="ttdeci">double ub() const</div><div class="ttdoc">Returns the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01249">linear_solver.h:1249</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_ad6bb7605c749ba485b040b02a37f6728"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#ad6bb7605c749ba485b040b02a37f6728">operations_research::MPSolver::MakeVar</a></div><div class="ttdeci">MPVariable * MakeVar(double lb, double ub, bool integer, const std::string &name)</div><div class="ttdoc">Creates a variable with the given bounds, integrality requirement and name.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a6927f7e28f694c55d72496c94a9a6b01"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a6927f7e28f694c55d72496c94a9a6b01">operations_research::MPObjective::MaximizeLinearExpr</a></div><div class="ttdeci">void MaximizeLinearExpr(const LinearExpr &linear_expr)</div><div class="ttdoc">Resets the current objective to maximize linear_expr.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00970">linear_solver.h:970</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a27312cbf1394d779305d016e2ea2753e"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a27312cbf1394d779305d016e2ea2753e">operations_research::MPSolver::ClampSolutionWithinBounds</a></div><div class="ttdeci">util::Status ClampSolutionWithinBounds()</div><div class="ttdoc">Resets values of out of bound variables to the corresponding bound and returns an error if any of the...</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a16bca30fdb1b048d987631b757c63192a5930d45ccc1bc78ad06bcd15cbca6a29"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a16bca30fdb1b048d987631b757c63192a5930d45ccc1bc78ad06bcd15cbca6a29">operations_research::MPSolver::FEASIBLE</a></div><div class="ttdoc">feasible, or stopped by limit.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00435">linear_solver.h:435</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_afc36c21bad2607b8d7bcba63b60d8681"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#afc36c21bad2607b8d7bcba63b60d8681">operations_research::MPSolverParameters::kDefaultPresolve</a></div><div class="ttdeci">static const PresolveValues kDefaultPresolve</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01515">linear_solver.h:1515</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a4413905b5839d17823e756cff10d0ffe"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a4413905b5839d17823e756cff10d0ffe">operations_research::MPSolver::InterruptSolve</a></div><div class="ttdeci">bool InterruptSolve()</div><div class="ttdoc">Interrupts the Solve() execution to terminate processing if possible.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ac8f18a88f586c725cfffc613499926a0ad5871c18d62c5e2e1e48a5420c13942f"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ac8f18a88f586c725cfffc613499926a0ad5871c18d62c5e2e1e48a5420c13942f">operations_research::MPSolverParameters::SCALING</a></div><div class="ttdoc">Advanced usage: enable or disable matrix scaling.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01447">linear_solver.h:1447</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a4423dd8b21b413522d8b91e4536cfa08"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a4423dd8b21b413522d8b91e4536cfa08">operations_research::MPSolverParameters::GetDoubleParam</a></div><div class="ttdeci">double GetDoubleParam(MPSolverParameters::DoubleParam param) const</div><div class="ttdoc">Returns the value of a double parameter.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a84c9d35dde8a2e1c7caccf88e9e86d60"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a84c9d35dde8a2e1c7caccf88e9e86d60">operations_research::MPConstraint::SetUB</a></div><div class="ttdeci">void SetUB(double ub)</div><div class="ttdoc">Sets the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01259">linear_solver.h:1259</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a8f0df932d3bffc929a8b463fe9697431"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a8f0df932d3bffc929a8b463fe9697431">operations_research::MPSolverInterface::CheckSolutionExists</a></div><div class="ttdeci">virtual bool CheckSolutionExists() const</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_ad6b31b12f9e1944b355809efd56fec98"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#ad6b31b12f9e1944b355809efd56fec98">operations_research::MPSolverParameters::kDefaultRelativeMipGap</a></div><div class="ttdeci">static const double kDefaultRelativeMipGap</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01512">linear_solver.h:1512</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a0d581a8129e4fc9779ee0b1172967563"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a0d581a8129e4fc9779ee0b1172967563">operations_research::MPVariable::lb</a></div><div class="ttdeci">double lb() const</div><div class="ttdoc">Returns the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01100">linear_solver.h:1100</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a64bc5e50054e619d3399956df3ed110f"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a64bc5e50054e619d3399956df3ed110f">operations_research::MPSolver::GetSolverSpecificParametersAsString</a></div><div class="ttdeci">std::string GetSolverSpecificParametersAsString() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00631">linear_solver.h:631</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a4996e4f9b120ab70f4d2382e473dc852"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a4996e4f9b120ab70f4d2382e473dc852">operations_research::MPSolverInterface::last_variable_index</a></div><div class="ttdeci">int last_variable_index() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01726">linear_solver.h:1726</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a91c69a1b2e9098f3835b9fe1c4fead59"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a91c69a1b2e9098f3835b9fe1c4fead59">operations_research::MPSolver::FillSolutionResponseProto</a></div><div class="ttdeci">void FillSolutionResponseProto(MPSolutionResponse *response) const</div><div class="ttdoc">Encodes the current solution in a solution response protocol buffer.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a15fd57d45c522be9c8340ba9d1244e3f"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a15fd57d45c522be9c8340ba9d1244e3f">operations_research::MPSolverParameters::kDefaultDualTolerance</a></div><div class="ttdeci">static const double kDefaultDualTolerance</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01514">linear_solver.h:1514</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aebc45909b1f377ab86295578ec417a17"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aebc45909b1f377ab86295578ec417a17">operations_research::MPSolver::constraints</a></div><div class="ttdeci">const std::vector< MPConstraint * > & constraints() const</div><div class="ttdoc">Returns the array of constraints handled by the MPSolver.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00363">linear_solver.h:363</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a3834b74a8764c1c971e10ce9ba2f265eaca78b129ceb19e286889b3274bb8cab3"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265eaca78b129ceb19e286889b3274bb8cab3">operations_research::MPSolverParameters::RELATIVE_MIP_GAP</a></div><div class="ttdoc">Limit for relative MIP gap.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01414">linear_solver.h:1414</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverParameters_html_a3834b74a8764c1c971e10ce9ba2f265e"><div class="ttname"><a href="classoperations__research_1_1MPSolverParameters.html#a3834b74a8764c1c971e10ce9ba2f265e">operations_research::MPSolverParameters::DoubleParam</a></div><div class="ttdeci">DoubleParam</div><div class="ttdoc">Enumeration of parameters that take continuous values.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01410">linear_solver.h:1410</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a3fd73560f782eaf5093a435c61783d09"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a3fd73560f782eaf5093a435c61783d09">operations_research::MPSolverInterface::ResetExtractionInformation</a></div><div class="ttdeci">void ResetExtractionInformation()</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_aa7ef7e2f076fc9208d13fdfb4ec33c76"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#aa7ef7e2f076fc9208d13fdfb4ec33c76">operations_research::MPSolverInterface::iterations</a></div><div class="ttdeci">virtual int64 iterations() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aa90a00b370b9abc4a43bfefd7f6a895b"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aa90a00b370b9abc4a43bfefd7f6a895b">operations_research::MPSolver::OutputIsEnabled</a></div><div class="ttdeci">bool OutputIsEnabled() const</div><div class="ttdoc">Controls (or queries) the amount of output produced by the underlying solver.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPConstraint_html_a4d254962fb2fe607c875f2b4e33c26ac"><div class="ttname"><a href="classoperations__research_1_1MPConstraint.html#a4d254962fb2fe607c875f2b4e33c26ac">operations_research::MPConstraint::lb</a></div><div class="ttdeci">double lb() const</div><div class="ttdoc">Returns the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01244">linear_solver.h:1244</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a912394f09fe0aee694df2e9c962853a0a1a93fdf313f6e448af723eb80bbbb7ba"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0a1a93fdf313f6e448af723eb80bbbb7ba">operations_research::MPSolverInterface::SOLUTION_SYNCHRONIZED</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01604">linear_solver.h:1604</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a25b846bdb22eb75b6c0f3b9922556c46"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a25b846bdb22eb75b6c0f3b9922556c46">operations_research::MPSolverInterface::kUnknownNumberOfNodes</a></div><div class="ttdeci">static const int64 kUnknownNumberOfNodes</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01612">linear_solver.h:1612</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a9c7aabb1c218e733e719ce2966939586"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a9c7aabb1c218e733e719ce2966939586">operations_research::MPVariable::solution_value</a></div><div class="ttdeci">double solution_value() const</div><div class="ttdoc">Returns the value of the variable in the current solution.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_a73eaa62d668195e9d894548d84f75fdb"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#a73eaa62d668195e9d894548d84f75fdb">operations_research::MPVariable::set_reduced_cost</a></div><div class="ttdeci">void set_reduced_cost(double reduced_cost)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01186">linear_solver.h:1186</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a24611f7b12b571fe1e73b629a8a6c17b"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a24611f7b12b571fe1e73b629a8a6c17b">operations_research::MPObjective::SetOffset</a></div><div class="ttdeci">void SetOffset(double value)</div><div class="ttdoc">Sets the constant term in the objective.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_aae2fbd44c86451dadfc256f000772394"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#aae2fbd44c86451dadfc256f000772394">operations_research::MPSolver::TimeLimit</a></div><div class="ttdeci">absl::Duration TimeLimit() const</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00698">linear_solver.h:698</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a2b6fcec92ec397f38a9657d7d38a9e49"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a2b6fcec92ec397f38a9657d7d38a9e49">operations_research::MPSolverInterface::SetRelativeMipGap</a></div><div class="ttdeci">virtual void SetRelativeMipGap(double value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a5c083b37243075a00bf909840dc7c933"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a5c083b37243075a00bf909840dc7c933">operations_research::MPObjective::SLMInterface</a></div><div class="ttdeci">friend class SLMInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01037">linear_solver.h:1037</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPVariable_html_ac9676264a15bac7aae8db95344903b1f"><div class="ttname"><a href="classoperations__research_1_1MPVariable.html#ac9676264a15bac7aae8db95344903b1f">operations_research::MPVariable::index</a></div><div class="ttdeci">int index() const</div><div class="ttdoc">Returns the index of the variable in the MPSolver::variables_.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01095">linear_solver.h:1095</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html">operations_research::MPObjective</a></div><div class="ttdoc">A class to express a linear objective.</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00919">linear_solver.h:919</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a6c754b527a347994b06eeb49a09ac222"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a6c754b527a347994b06eeb49a09ac222">operations_research::MPObjective::GLOPInterface</a></div><div class="ttdeci">friend class GLOPInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01040">linear_solver.h:1040</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ae63369de591dfd558df4c74c1143d84a"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ae63369de591dfd558df4c74c1143d84a">operations_research::MPSolverInterface::SetConstraintBounds</a></div><div class="ttdeci">virtual void SetConstraintBounds(int index, double lb, double ub)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a912394f09fe0aee694df2e9c962853a0"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a912394f09fe0aee694df2e9c962853a0">operations_research::MPSolverInterface::SynchronizationStatus</a></div><div class="ttdeci">SynchronizationStatus</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01594">linear_solver.h:1594</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7e2a34816b22749e70e23d26f49cf743a578f080f1d30ca7ce7ba6c5b050ddd56"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7e2a34816b22749e70e23d26f49cf743a578f080f1d30ca7ce7ba6c5b050ddd56">operations_research::MPSolver::AT_UPPER_BOUND</a></div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00657">linear_solver.h:657</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_af7655248b40e336f843180b9ef37dc3c"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#af7655248b40e336f843180b9ef37dc3c">operations_research::MPSolverInterface::sync_status_</a></div><div class="ttdeci">SynchronizationStatus sync_status_</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01783">linear_solver.h:1783</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a7383308e6b9b63b18196798db342ce8a"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a7383308e6b9b63b18196798db342ce8a">operations_research::MPSolver::BopInterface</a></div><div class="ttdeci">friend class BopInterface</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l00812">linear_solver.h:812</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a77db27f245bbe7fec03763cb0f81210a"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a77db27f245bbe7fec03763cb0f81210a">operations_research::MPSolverInterface::IsContinuous</a></div><div class="ttdeci">virtual bool IsContinuous() const =0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_a7cde757e7152aa06930afc59709c3c64"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#a7cde757e7152aa06930afc59709c3c64">operations_research::MPSolverInterface::SetLpAlgorithm</a></div><div class="ttdeci">virtual void SetLpAlgorithm(int value)=0</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolverInterface_html_ae60b6e41d8b3077d982e0347c85b802c"><div class="ttname"><a href="classoperations__research_1_1MPSolverInterface.html#ae60b6e41d8b3077d982e0347c85b802c">operations_research::MPSolverInterface::SetStartingLpBasis</a></div><div class="ttdeci">virtual void SetStartingLpBasis(const std::vector< MPSolver::BasisStatus > &variable_statuses, const std::vector< MPSolver::BasisStatus > &constraint_statuses)</div><div class="ttdef"><b>Definition:</b> <a href="linear__solver_8h_source.html#l01763">linear_solver.h:1763</a></div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPSolver_html_a0bade4bbf46f4e35513650d38a0a3208"><div class="ttname"><a href="classoperations__research_1_1MPSolver.html#a0bade4bbf46f4e35513650d38a0a3208">operations_research::MPSolver::Reset</a></div><div class="ttdeci">void Reset()</div><div class="ttdoc">Advanced usage: resets extracted model to solve from scratch.</div></div>
|
|
<div class="ttc" id="classoperations__research_1_1MPObjective_html_a43fd3a9687cfef2591b22c96cbe02477"><div class="ttname"><a href="classoperations__research_1_1MPObjective.html#a43fd3a9687cfef2591b22c96cbe02477">operations_research::MPObjective::Value</a></div><div class="ttdeci">double Value() const</div><div class="ttdoc">Returns the objective value of the best solution found so far.</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
</div>
|
|
<div id="footer-container">
|
|
<div id="footer">
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|