OR-Tools  9.1
environment.cc
Go to the documentation of this file.
1 // Copyright 2010-2021 Google LLC
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
15 
16 #include <mutex>
17 #include <string>
18 
19 #include "absl/status/status.h"
20 #include "absl/strings/match.h"
21 #include "absl/strings/str_cat.h"
22 #include "absl/strings/str_format.h"
23 #include "absl/strings/str_join.h"
24 #include "absl/synchronization/mutex.h"
25 #include "ortools/base/logging.h"
27 
28 namespace operations_research {
29 
31  absl::StatusOr<GRBenv*> status = GetGurobiEnv();
32  if (!status.ok() || status.value() == nullptr) {
33  return false;
34  }
35 
36  GRBfreeenv(status.value());
37 
38  return true;
39 }
40 
41 // This was generated with the parse_header.py script.
42 // See the comment at the top of the script.
43 
44 // This is the 'define' section.
45 
46 std::function<int(GRBenv**, const char*, const char*, const char*, int,
47  const char*)>
48  GRBisqp = nullptr;
49 std::function<int(GRBmodel* model, const char* attrname, int* datatypeP,
50  int* sizeP, int* settableP)>
51  GRBgetattrinfo = nullptr;
52 std::function<int(GRBmodel* model, const char* attrname)> GRBisattravailable =
53  nullptr;
54 std::function<int(GRBmodel* model, const char* attrname, int* valueP)>
55  GRBgetintattr = nullptr;
56 std::function<int(GRBmodel* model, const char* attrname, int newvalue)>
57  GRBsetintattr = nullptr;
58 std::function<int(GRBmodel* model, const char* attrname, int element,
59  int* valueP)>
61 std::function<int(GRBmodel* model, const char* attrname, int element,
62  int newvalue)>
64 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
65  int* values)>
66  GRBgetintattrarray = nullptr;
67 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
68  int* newvalues)>
69  GRBsetintattrarray = nullptr;
70 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
71  int* values)>
72  GRBgetintattrlist = nullptr;
73 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
74  int* newvalues)>
75  GRBsetintattrlist = nullptr;
76 std::function<int(GRBmodel* model, const char* attrname, int element,
77  char* valueP)>
79 std::function<int(GRBmodel* model, const char* attrname, int element,
80  char newvalue)>
82 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
83  char* values)>
85 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
86  char* newvalues)>
88 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
89  char* values)>
90  GRBgetcharattrlist = nullptr;
91 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
92  char* newvalues)>
93  GRBsetcharattrlist = nullptr;
94 std::function<int(GRBmodel* model, const char* attrname, double* valueP)>
95  GRBgetdblattr = nullptr;
96 std::function<int(GRBmodel* model, const char* attrname, double newvalue)>
97  GRBsetdblattr = nullptr;
98 std::function<int(GRBmodel* model, const char* attrname, int element,
99  double* valueP)>
101 std::function<int(GRBmodel* model, const char* attrname, int element,
102  double newvalue)>
104 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
105  double* values)>
107 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
108  double* newvalues)>
110 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
111  double* values)>
112  GRBgetdblattrlist = nullptr;
113 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
114  double* newvalues)>
115  GRBsetdblattrlist = nullptr;
116 std::function<int(GRBmodel* model, const char* attrname, char** valueP)>
117  GRBgetstrattr = nullptr;
118 std::function<int(GRBmodel* model, const char* attrname, const char* newvalue)>
119  GRBsetstrattr = nullptr;
120 std::function<int(GRBmodel* model, const char* attrname, int element,
121  char** valueP)>
123 std::function<int(GRBmodel* model, const char* attrname, int element,
124  const char* newvalue)>
126 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
127  char** values)>
129 std::function<int(GRBmodel* model, const char* attrname, int first, int len,
130  char** newvalues)>
132 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
133  char** values)>
134  GRBgetstrattrlist = nullptr;
135 std::function<int(GRBmodel* model, const char* attrname, int len, int* ind,
136  char** newvalues)>
137  GRBsetstrattrlist = nullptr;
138 std::function<int(GRBmodel* model, int(GUROBI_STDCALL* cb)(CB_ARGS),
139  void* usrdata)>
141 std::function<int(GRBmodel* model, int(GUROBI_STDCALL** cbP)(CB_ARGS))>
143 std::function<int(GRBmodel* model, int(GUROBI_STDCALL* cb)(char* msg))>
145 std::function<int(GRBenv* env, int(GUROBI_STDCALL* cb)(char* msg))>
147 std::function<int(void* cbdata, int where, int what, void* resultP)> GRBcbget =
148  nullptr;
149 std::function<int(void* cbdata, const char* paramname, const char* newvalue)>
150  GRBcbsetparam = nullptr;
151 std::function<int(void* cbdata, const double* solution, double* objvalP)>
152  GRBcbsolution = nullptr;
153 std::function<int(void* cbdata, int cutlen, const int* cutind,
154  const double* cutval, char cutsense, double cutrhs)>
155  GRBcbcut = nullptr;
156 std::function<int(void* cbdata, int lazylen, const int* lazyind,
157  const double* lazyval, char lazysense, double lazyrhs)>
158  GRBcblazy = nullptr;
159 std::function<int(GRBmodel* model, int constr, int var, double* valP)>
160  GRBgetcoeff = nullptr;
161 std::function<int(GRBmodel* model, int* numnzP, int* cbeg, int* cind,
162  double* cval, int start, int len)>
163  GRBgetconstrs = nullptr;
164 std::function<int(GRBmodel* model, size_t* numnzP, size_t* cbeg, int* cind,
165  double* cval, int start, int len)>
166  GRBXgetconstrs = nullptr;
167 std::function<int(GRBmodel* model, int* numnzP, int* vbeg, int* vind,
168  double* vval, int start, int len)>
169  GRBgetvars = nullptr;
170 std::function<int(GRBmodel* model, size_t* numnzP, size_t* vbeg, int* vind,
171  double* vval, int start, int len)>
172  GRBXgetvars = nullptr;
173 std::function<int(GRBmodel* model, int* nummembersP, int* sostype, int* beg,
174  int* ind, double* weight, int start, int len)>
175  GRBgetsos = nullptr;
176 std::function<int(GRBmodel* model, int genconstr, int* resvarP, int* nvarsP,
177  int* vars, double* constantP)>
179 std::function<int(GRBmodel* model, int genconstr, int* resvarP, int* nvarsP,
180  int* vars, double* constantP)>
182 std::function<int(GRBmodel* model, int genconstr, int* resvarP, int* argvarP)>
184 std::function<int(GRBmodel* model, int genconstr, int* resvarP, int* nvarsP,
185  int* vars)>
187 std::function<int(GRBmodel* model, int genconstr, int* resvarP, int* nvarsP,
188  int* vars)>
189  GRBgetgenconstrOr = nullptr;
190 std::function<int(GRBmodel* model, int genconstr, int* binvarP, int* binvalP,
191  int* nvarsP, int* vars, double* vals, char* senseP,
192  double* rhsP)>
194 std::function<int(GRBmodel* model, int* numqnzP, int* qrow, int* qcol,
195  double* qval)>
196  GRBgetq = nullptr;
197 std::function<int(GRBmodel* model, int qconstr, int* numlnzP, int* lind,
198  double* lval, int* numqnzP, int* qrow, int* qcol,
199  double* qval)>
200  GRBgetqconstr = nullptr;
201 std::function<int(GRBmodel* model, const char* name, int* indexP)>
202  GRBgetvarbyname = nullptr;
203 std::function<int(GRBmodel* model, const char* name, int* indexP)>
205 std::function<int(GRBmodel* model, int var, int* pointsP, double* x, double* y)>
206  GRBgetpwlobj = nullptr;
207 std::function<int(GRBmodel* model)> GRBoptimize = nullptr;
208 std::function<int(GRBmodel* model)> GRBoptimizeasync = nullptr;
209 std::function<GRBmodel*(GRBmodel* model)> GRBcopymodel = nullptr;
210 std::function<GRBmodel*(GRBmodel* model)> GRBfixedmodel = nullptr;
211 std::function<int(GRBmodel* model, int relaxobjtype, int minrelax,
212  double* lbpen, double* ubpen, double* rhspen,
213  double* feasobjP)>
214  GRBfeasrelax = nullptr;
215 std::function<int(void* cbdata, int what, int* typeP, int* sizeP)>
216  GRBgetcbwhatinfo = nullptr;
217 std::function<GRBmodel*(GRBmodel* model)> GRBrelaxmodel = nullptr;
218 std::function<int(GRBmodel* model)> GRBconverttofixed = nullptr;
219 std::function<GRBmodel*(GRBmodel* model)> GRBpresolvemodel = nullptr;
220 std::function<GRBmodel*(GRBmodel* model)> GRBiismodel = nullptr;
221 std::function<GRBmodel*(GRBmodel* model)> GRBfeasibility = nullptr;
222 std::function<GRBmodel*(GRBmodel* model)> GRBlinearizemodel = nullptr;
223 std::function<int(GRBenv** envP, const char* logfilename,
224  void*(GUROBI_STDCALL* malloccb)(MALLOCCB_ARGS),
225  void*(GUROBI_STDCALL* calloccb)(CALLOCCB_ARGS),
226  void*(GUROBI_STDCALL* realloccb)(REALLOCCB_ARGS),
227  void(GUROBI_STDCALL* freecb)(FREECB_ARGS),
228  int(GUROBI_STDCALL* threadcreatecb)(THREADCREATECB_ARGS),
229  void(GUROBI_STDCALL* threadjoincb)(THREADJOINCB_ARGS),
230  void* syscbusrdata)>
231  GRBloadenvsyscb = nullptr;
232 std::function<int(GRBenv* env, const char* filename, GRBmodel** modelP)>
233  GRBreadmodel = nullptr;
234 std::function<int(GRBmodel* model, const char* filename)> GRBread = nullptr;
235 std::function<int(GRBmodel* model, const char* filename)> GRBwrite = nullptr;
236 std::function<int(const char* filename)> GRBismodelfile = nullptr;
237 std::function<int(const char* filename)> GRBfiletype = nullptr;
238 std::function<int(const char* filename)> GRBisrecordfile = nullptr;
239 std::function<int(GRBenv* env, GRBmodel** modelP, const char* Pname,
240  int numvars, double* obj, double* lb, double* ub, char* vtype,
241  char** varnames)>
242  GRBnewmodel = nullptr;
243 std::function<int(GRBenv* env, GRBmodel** modelP, const char* Pname,
244  int numvars, int numconstrs, int objsense, double objcon,
245  double* obj, char* sense, double* rhs, int* vbeg, int* vlen,
246  int* vind, double* vval, double* lb, double* ub, char* vtype,
247  char** varnames, char** constrnames)>
248  GRBloadmodel = nullptr;
249 std::function<int(GRBenv* env, GRBmodel** modelP, const char* Pname,
250  int numvars, int numconstrs, int objsense, double objcon,
251  double* obj, char* sense, double* rhs, size_t* vbeg,
252  int* vlen, int* vind, double* vval, double* lb, double* ub,
253  char* vtype, char** varnames, char** constrnames)>
254  GRBXloadmodel = nullptr;
255 std::function<int(GRBmodel* model, int numnz, int* vind, double* vval,
256  double obj, double lb, double ub, char vtype,
257  const char* varname)>
258  GRBaddvar = nullptr;
259 std::function<int(GRBmodel* model, int numvars, int numnz, int* vbeg, int* vind,
260  double* vval, double* obj, double* lb, double* ub,
261  char* vtype, char** varnames)>
262  GRBaddvars = nullptr;
263 std::function<int(GRBmodel* model, int numvars, size_t numnz, size_t* vbeg,
264  int* vind, double* vval, double* obj, double* lb, double* ub,
265  char* vtype, char** varnames)>
266  GRBXaddvars = nullptr;
267 std::function<int(GRBmodel* model, int numnz, int* cind, double* cval,
268  char sense, double rhs, const char* constrname)>
269  GRBaddconstr = nullptr;
270 std::function<int(GRBmodel* model, int numconstrs, int numnz, int* cbeg,
271  int* cind, double* cval, char* sense, double* rhs,
272  char** constrnames)>
273  GRBaddconstrs = nullptr;
274 std::function<int(GRBmodel* model, int numconstrs, size_t numnz, size_t* cbeg,
275  int* cind, double* cval, char* sense, double* rhs,
276  char** constrnames)>
277  GRBXaddconstrs = nullptr;
278 std::function<int(GRBmodel* model, int numnz, int* cind, double* cval,
279  double lower, double upper, const char* constrname)>
280  GRBaddrangeconstr = nullptr;
281 std::function<int(GRBmodel* model, int numconstrs, int numnz, int* cbeg,
282  int* cind, double* cval, double* lower, double* upper,
283  char** constrnames)>
285 std::function<int(GRBmodel* model, int numconstrs, size_t numnz, size_t* cbeg,
286  int* cind, double* cval, double* lower, double* upper,
287  char** constrnames)>
289 std::function<int(GRBmodel* model, int numsos, int nummembers, int* types,
290  int* beg, int* ind, double* weight)>
291  GRBaddsos = nullptr;
292 std::function<int(GRBmodel* model, const char* name, int resvar, int nvars,
293  const int* vars, double constant)>
295 std::function<int(GRBmodel* model, const char* name, int resvar, int nvars,
296  const int* vars, double constant)>
298 std::function<int(GRBmodel* model, const char* name, int resvar, int argvar)>
300 std::function<int(GRBmodel* model, const char* name, int resvar, int nvars,
301  const int* vars)>
303 std::function<int(GRBmodel* model, const char* name, int resvar, int nvars,
304  const int* vars)>
305  GRBaddgenconstrOr = nullptr;
306 std::function<int(GRBmodel* lp, const char* name, int binvar, int binval,
307  int nvars, const int* vars, const double* vals, char sense,
308  double rhs)>
310 std::function<int(GRBmodel* model, int numlnz, int* lind, double* lval,
311  int numqnz, int* qrow, int* qcol, double* qval, char sense,
312  double rhs, const char* QCname)>
313  GRBaddqconstr = nullptr;
314 std::function<int(GRBmodel* model, int nummembers, int* members)> GRBaddcone =
315  nullptr;
316 std::function<int(GRBmodel* model, int numqnz, int* qrow, int* qcol,
317  double* qval)>
318  GRBaddqpterms = nullptr;
319 std::function<int(GRBmodel* model, int len, int* ind)> GRBdelvars = nullptr;
320 std::function<int(GRBmodel* model, int len, int* ind)> GRBdelconstrs = nullptr;
321 std::function<int(GRBmodel* model, int len, int* ind)> GRBdelsos = nullptr;
322 std::function<int(GRBmodel* model, int len, int* ind)> GRBdelgenconstrs =
323  nullptr;
324 std::function<int(GRBmodel* model, int len, int* ind)> GRBdelqconstrs = nullptr;
325 std::function<int(GRBmodel* model)> GRBdelq = nullptr;
326 std::function<int(GRBmodel* model, int cnt, int* cind, int* vind, double* val)>
327  GRBchgcoeffs = nullptr;
328 std::function<int(GRBmodel* model, size_t cnt, int* cind, int* vind,
329  double* val)>
330  GRBXchgcoeffs = nullptr;
331 std::function<int(GRBmodel* model, int var, int points, double* x, double* y)>
332  GRBsetpwlobj = nullptr;
333 std::function<int(GRBmodel* model)> GRBupdatemodel = nullptr;
334 std::function<int(GRBmodel* model)> GRBresetmodel = nullptr;
335 std::function<int(GRBmodel* model)> GRBfreemodel = nullptr;
336 std::function<int(GRBmodel* model)> GRBcomputeIIS = nullptr;
337 std::function<int(GRBmodel* model, GRBsvec* b, GRBsvec* x)> GRBFSolve = nullptr;
338 std::function<int(GRBmodel* model, int j, GRBsvec* x)> GRBBinvColj = nullptr;
339 std::function<int(GRBmodel* model, int j, GRBsvec* x)> GRBBinvj = nullptr;
340 std::function<int(GRBmodel* model, GRBsvec* b, GRBsvec* x)> GRBBSolve = nullptr;
341 std::function<int(GRBmodel* model, int i, GRBsvec* x)> GRBBinvi = nullptr;
342 std::function<int(GRBmodel* model, int i, GRBsvec* x)> GRBBinvRowi = nullptr;
343 std::function<int(GRBmodel* model, int* bhead)> GRBgetBasisHead = nullptr;
344 std::function<int(GRBmodel* model, int num, int* cand, double* downobjbd,
345  double* upobjbd, int* statusP)>
346  GRBstrongbranch = nullptr;
347 std::function<int(GRBmodel* model)> GRBcheckmodel = nullptr;
348 std::function<void(GRBmodel* model)> GRBsetsignal = nullptr;
349 std::function<void(GRBmodel* model)> GRBterminate = nullptr;
350 std::function<int(const char* filename)> GRBreplay = nullptr;
351 std::function<int(GRBmodel* model, int sense, double constant, int lnz,
352  int* lind, double* lval, int qnz, int* qrow, int* qcol,
353  double* qval)>
354  GRBsetobjective = nullptr;
355 std::function<int(GRBmodel* model, int index, int priority, double weight,
356  double abstol, double reltol, const char* name,
357  double constant, int lnz, int* lind, double* lval)>
358  GRBsetobjectiven = nullptr;
359 std::function<void(GRBenv* env, const char* message)> GRBmsg = nullptr;
360 std::function<int(GRBenv* env, FILE** logfileP)> GRBgetlogfile = nullptr;
361 std::function<int(GRBenv* env, FILE* logfile)> GRBsetlogfile = nullptr;
362 std::function<int(GRBenv* env, const char* paramname, int* valueP)>
363  GRBgetintparam = nullptr;
364 std::function<int(GRBenv* env, const char* paramname, double* valueP)>
365  GRBgetdblparam = nullptr;
366 std::function<int(GRBenv* env, const char* paramname, char* valueP)>
367  GRBgetstrparam = nullptr;
368 std::function<int(GRBenv* env, const char* paramname, int* valueP, int* minP,
369  int* maxP, int* defP)>
371 std::function<int(GRBenv* env, const char* paramname, double* valueP,
372  double* minP, double* maxP, double* defP)>
374 std::function<int(GRBenv* env, const char* paramname, char* valueP, char* defP)>
376 std::function<int(GRBenv* env, const char* paramname, const char* value)>
377  GRBsetparam = nullptr;
378 std::function<int(GRBenv* env, const char* paramname, int value)>
379  GRBsetintparam = nullptr;
380 std::function<int(GRBenv* env, const char* paramname, double value)>
381  GRBsetdblparam = nullptr;
382 std::function<int(GRBenv* env, const char* paramname, const char* value)>
383  GRBsetstrparam = nullptr;
384 std::function<int(GRBenv* env, const char* paramname)> GRBgetparamtype =
385  nullptr;
386 std::function<int(GRBenv* env)> GRBresetparams = nullptr;
387 std::function<int(GRBenv* dest, GRBenv* src)> GRBcopyparams = nullptr;
388 std::function<int(GRBenv* env, const char* filename)> GRBwriteparams = nullptr;
389 std::function<int(GRBenv* env, const char* filename)> GRBreadparams = nullptr;
390 std::function<int(GRBenv* env)> GRBgetnumparams = nullptr;
391 std::function<int(GRBenv* env, int i, char** paramnameP)> GRBgetparamname =
392  nullptr;
393 std::function<int(GRBmodel* model)> GRBgetnumattributes = nullptr;
394 std::function<int(GRBmodel* model, int i, char** attrnameP)> GRBgetattrname =
395  nullptr;
396 std::function<int(GRBenv** envP, const char* logfilename)> GRBloadenv = nullptr;
397 std::function<int(GRBenv** envP, const char* logfilename, int apitype,
398  int major, int minor, int tech,
399  int(GUROBI_STDCALL* cb)(CB_ARGS), void* usrdata)>
400  GRBloadenvadv = nullptr;
401 std::function<int(GRBenv** envP, const char* logfilename,
402  const char* computeservers, int port, const char* password,
403  int priority, double timeout)>
404  GRBloadclientenv = nullptr;
405 std::function<int(GRBenv** envP, const char* logfilename,
406  const char* computeservers, int port, const char* password,
407  int priority, double timeout, int apitype, int major,
408  int minor, int tech, int(GUROBI_STDCALL* cb)(CB_ARGS),
409  void* usrdata)>
411 std::function<int(GRBenv** envP, const char* logfilename, const char* accessID,
412  const char* secretKey, const char* pool)>
413  GRBloadcloudenv = nullptr;
414 std::function<int(GRBenv** envP, const char* logfilename, const char* accessID,
415  const char* secretKey, const char* pool, int apitype,
416  int major, int minor, int tech,
417  int(GUROBI_STDCALL* cb)(CB_ARGS), void* usrdata)>
419 std::function<GRBenv*(GRBmodel* model)> GRBgetenv = nullptr;
420 std::function<GRBenv*(GRBmodel* model, int num)> GRBgetconcurrentenv = nullptr;
421 std::function<void(GRBmodel* model)> GRBdiscardconcurrentenvs = nullptr;
422 std::function<GRBenv*(GRBmodel* model, int num)> GRBgetmultiobjenv = nullptr;
423 std::function<void(GRBmodel* model)> GRBdiscardmultiobjenvs = nullptr;
424 std::function<void(GRBenv* env)> GRBreleaselicense = nullptr;
425 std::function<void(GRBenv* env)> GRBfreeenv = nullptr;
426 std::function<const char*(GRBenv* env)> GRBgeterrormsg = nullptr;
427 std::function<const char*(GRBmodel* model)> GRBgetmerrormsg = nullptr;
428 std::function<void(int* majorP, int* minorP, int* technicalP)> GRBversion =
429  nullptr;
430 std::function<char*(void)> GRBplatform = nullptr;
431 std::function<int(GRBmodel* model)> GRBtunemodel = nullptr;
432 std::function<int(int nummodels, GRBmodel** models, GRBmodel* ignore,
433  GRBmodel* hint)>
434  GRBtunemodels = nullptr;
435 std::function<int(GRBmodel* model, int i)> GRBgettuneresult = nullptr;
436 std::function<int(GRBmodel* model, int i, char** logP)> GRBgettunelog = nullptr;
437 std::function<int(GRBmodel* model, GRBmodel* ignore, GRBmodel* hint)>
438  GRBtunemodeladv = nullptr;
439 std::function<int(GRBmodel* model)> GRBsync = nullptr;
440 
441 void LoadGurobiFunctions(DynamicLibrary* gurobi_dynamic_library) {
442  // This was generated with the parse_header.py script.
443  // See the comment at the top of the script.
444 
445  // This is the 'assign' section.
446 
447  gurobi_dynamic_library->GetFunction(&GRBisqp, "GRBisqp");
448  gurobi_dynamic_library->GetFunction(&GRBgetattrinfo, "GRBgetattrinfo");
449  gurobi_dynamic_library->GetFunction(&GRBisattravailable,
450  "GRBisattravailable");
451  gurobi_dynamic_library->GetFunction(&GRBgetintattr, "GRBgetintattr");
452  gurobi_dynamic_library->GetFunction(&GRBsetintattr, "GRBsetintattr");
453  gurobi_dynamic_library->GetFunction(&GRBgetintattrelement,
454  "GRBgetintattrelement");
455  gurobi_dynamic_library->GetFunction(&GRBsetintattrelement,
456  "GRBsetintattrelement");
457  gurobi_dynamic_library->GetFunction(&GRBgetintattrarray,
458  "GRBgetintattrarray");
459  gurobi_dynamic_library->GetFunction(&GRBsetintattrarray,
460  "GRBsetintattrarray");
461  gurobi_dynamic_library->GetFunction(&GRBgetintattrlist, "GRBgetintattrlist");
462  gurobi_dynamic_library->GetFunction(&GRBsetintattrlist, "GRBsetintattrlist");
463  gurobi_dynamic_library->GetFunction(&GRBgetcharattrelement,
464  "GRBgetcharattrelement");
465  gurobi_dynamic_library->GetFunction(&GRBsetcharattrelement,
466  "GRBsetcharattrelement");
467  gurobi_dynamic_library->GetFunction(&GRBgetcharattrarray,
468  "GRBgetcharattrarray");
469  gurobi_dynamic_library->GetFunction(&GRBsetcharattrarray,
470  "GRBsetcharattrarray");
471  gurobi_dynamic_library->GetFunction(&GRBgetcharattrlist,
472  "GRBgetcharattrlist");
473  gurobi_dynamic_library->GetFunction(&GRBsetcharattrlist,
474  "GRBsetcharattrlist");
475  gurobi_dynamic_library->GetFunction(&GRBgetdblattr, "GRBgetdblattr");
476  gurobi_dynamic_library->GetFunction(&GRBsetdblattr, "GRBsetdblattr");
477  gurobi_dynamic_library->GetFunction(&GRBgetdblattrelement,
478  "GRBgetdblattrelement");
479  gurobi_dynamic_library->GetFunction(&GRBsetdblattrelement,
480  "GRBsetdblattrelement");
481  gurobi_dynamic_library->GetFunction(&GRBgetdblattrarray,
482  "GRBgetdblattrarray");
483  gurobi_dynamic_library->GetFunction(&GRBsetdblattrarray,
484  "GRBsetdblattrarray");
485  gurobi_dynamic_library->GetFunction(&GRBgetdblattrlist, "GRBgetdblattrlist");
486  gurobi_dynamic_library->GetFunction(&GRBsetdblattrlist, "GRBsetdblattrlist");
487  gurobi_dynamic_library->GetFunction(&GRBgetstrattr, "GRBgetstrattr");
488  gurobi_dynamic_library->GetFunction(&GRBsetstrattr, "GRBsetstrattr");
489  gurobi_dynamic_library->GetFunction(&GRBgetstrattrelement,
490  "GRBgetstrattrelement");
491  gurobi_dynamic_library->GetFunction(&GRBsetstrattrelement,
492  "GRBsetstrattrelement");
493  gurobi_dynamic_library->GetFunction(&GRBgetstrattrarray,
494  "GRBgetstrattrarray");
495  gurobi_dynamic_library->GetFunction(&GRBsetstrattrarray,
496  "GRBsetstrattrarray");
497  gurobi_dynamic_library->GetFunction(&GRBgetstrattrlist, "GRBgetstrattrlist");
498  gurobi_dynamic_library->GetFunction(&GRBsetstrattrlist, "GRBsetstrattrlist");
499  gurobi_dynamic_library->GetFunction(&GRBsetcallbackfunc,
500  "GRBsetcallbackfunc");
501  gurobi_dynamic_library->GetFunction(&GRBgetcallbackfunc,
502  "GRBgetcallbackfunc");
503  gurobi_dynamic_library->GetFunction(&GRBsetlogcallbackfunc,
504  "GRBsetlogcallbackfunc");
505  gurobi_dynamic_library->GetFunction(&GRBsetlogcallbackfuncenv,
506  "GRBsetlogcallbackfuncenv");
507  gurobi_dynamic_library->GetFunction(&GRBcbget, "GRBcbget");
508  gurobi_dynamic_library->GetFunction(&GRBcbsetparam, "GRBcbsetparam");
509  gurobi_dynamic_library->GetFunction(&GRBcbsolution, "GRBcbsolution");
510  gurobi_dynamic_library->GetFunction(&GRBcbcut, "GRBcbcut");
511  gurobi_dynamic_library->GetFunction(&GRBcblazy, "GRBcblazy");
512  gurobi_dynamic_library->GetFunction(&GRBgetcoeff, "GRBgetcoeff");
513  gurobi_dynamic_library->GetFunction(&GRBgetconstrs, "GRBgetconstrs");
514  gurobi_dynamic_library->GetFunction(&GRBXgetconstrs, "GRBXgetconstrs");
515  gurobi_dynamic_library->GetFunction(&GRBgetvars, "GRBgetvars");
516  gurobi_dynamic_library->GetFunction(&GRBXgetvars, "GRBXgetvars");
517  gurobi_dynamic_library->GetFunction(&GRBgetsos, "GRBgetsos");
518  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrMax,
519  "GRBgetgenconstrMax");
520  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrMin,
521  "GRBgetgenconstrMin");
522  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrAbs,
523  "GRBgetgenconstrAbs");
524  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrAnd,
525  "GRBgetgenconstrAnd");
526  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrOr, "GRBgetgenconstrOr");
527  gurobi_dynamic_library->GetFunction(&GRBgetgenconstrIndicator,
528  "GRBgetgenconstrIndicator");
529  gurobi_dynamic_library->GetFunction(&GRBgetq, "GRBgetq");
530  gurobi_dynamic_library->GetFunction(&GRBgetqconstr, "GRBgetqconstr");
531  gurobi_dynamic_library->GetFunction(&GRBgetvarbyname, "GRBgetvarbyname");
532  gurobi_dynamic_library->GetFunction(&GRBgetconstrbyname,
533  "GRBgetconstrbyname");
534  gurobi_dynamic_library->GetFunction(&GRBgetpwlobj, "GRBgetpwlobj");
535  gurobi_dynamic_library->GetFunction(&GRBoptimize, "GRBoptimize");
536  gurobi_dynamic_library->GetFunction(&GRBoptimizeasync, "GRBoptimizeasync");
537  gurobi_dynamic_library->GetFunction(&GRBcopymodel, "GRBcopymodel");
538  gurobi_dynamic_library->GetFunction(&GRBfixedmodel, "GRBfixedmodel");
539  gurobi_dynamic_library->GetFunction(&GRBfeasrelax, "GRBfeasrelax");
540  gurobi_dynamic_library->GetFunction(&GRBgetcbwhatinfo, "GRBgetcbwhatinfo");
541  gurobi_dynamic_library->GetFunction(&GRBrelaxmodel, "GRBrelaxmodel");
542  gurobi_dynamic_library->GetFunction(&GRBconverttofixed, "GRBconverttofixed");
543  gurobi_dynamic_library->GetFunction(&GRBpresolvemodel, "GRBpresolvemodel");
544  gurobi_dynamic_library->GetFunction(&GRBiismodel, "GRBiismodel");
545  gurobi_dynamic_library->GetFunction(&GRBfeasibility, "GRBfeasibility");
546  gurobi_dynamic_library->GetFunction(&GRBlinearizemodel, "GRBlinearizemodel");
547  gurobi_dynamic_library->GetFunction(&GRBloadenvsyscb, "GRBloadenvsyscb");
548  gurobi_dynamic_library->GetFunction(&GRBreadmodel, "GRBreadmodel");
549  gurobi_dynamic_library->GetFunction(&GRBread, "GRBread");
550  gurobi_dynamic_library->GetFunction(&GRBwrite, "GRBwrite");
551  gurobi_dynamic_library->GetFunction(&GRBismodelfile, "GRBismodelfile");
552  gurobi_dynamic_library->GetFunction(&GRBfiletype, "GRBfiletype");
553  gurobi_dynamic_library->GetFunction(&GRBisrecordfile, "GRBisrecordfile");
554  gurobi_dynamic_library->GetFunction(&GRBnewmodel, "GRBnewmodel");
555  gurobi_dynamic_library->GetFunction(&GRBloadmodel, "GRBloadmodel");
556  gurobi_dynamic_library->GetFunction(&GRBXloadmodel, "GRBXloadmodel");
557  gurobi_dynamic_library->GetFunction(&GRBaddvar, "GRBaddvar");
558  gurobi_dynamic_library->GetFunction(&GRBaddvars, "GRBaddvars");
559  gurobi_dynamic_library->GetFunction(&GRBXaddvars, "GRBXaddvars");
560  gurobi_dynamic_library->GetFunction(&GRBaddconstr, "GRBaddconstr");
561  gurobi_dynamic_library->GetFunction(&GRBaddconstrs, "GRBaddconstrs");
562  gurobi_dynamic_library->GetFunction(&GRBXaddconstrs, "GRBXaddconstrs");
563  gurobi_dynamic_library->GetFunction(&GRBaddrangeconstr, "GRBaddrangeconstr");
564  gurobi_dynamic_library->GetFunction(&GRBaddrangeconstrs,
565  "GRBaddrangeconstrs");
566  gurobi_dynamic_library->GetFunction(&GRBXaddrangeconstrs,
567  "GRBXaddrangeconstrs");
568  gurobi_dynamic_library->GetFunction(&GRBaddsos, "GRBaddsos");
569  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrMax,
570  "GRBaddgenconstrMax");
571  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrMin,
572  "GRBaddgenconstrMin");
573  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrAbs,
574  "GRBaddgenconstrAbs");
575  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrAnd,
576  "GRBaddgenconstrAnd");
577  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrOr, "GRBaddgenconstrOr");
578  gurobi_dynamic_library->GetFunction(&GRBaddgenconstrIndicator,
579  "GRBaddgenconstrIndicator");
580  gurobi_dynamic_library->GetFunction(&GRBaddqconstr, "GRBaddqconstr");
581  gurobi_dynamic_library->GetFunction(&GRBaddcone, "GRBaddcone");
582  gurobi_dynamic_library->GetFunction(&GRBaddqpterms, "GRBaddqpterms");
583  gurobi_dynamic_library->GetFunction(&GRBdelvars, "GRBdelvars");
584  gurobi_dynamic_library->GetFunction(&GRBdelconstrs, "GRBdelconstrs");
585  gurobi_dynamic_library->GetFunction(&GRBdelsos, "GRBdelsos");
586  gurobi_dynamic_library->GetFunction(&GRBdelgenconstrs, "GRBdelgenconstrs");
587  gurobi_dynamic_library->GetFunction(&GRBdelqconstrs, "GRBdelqconstrs");
588  gurobi_dynamic_library->GetFunction(&GRBdelq, "GRBdelq");
589  gurobi_dynamic_library->GetFunction(&GRBchgcoeffs, "GRBchgcoeffs");
590  gurobi_dynamic_library->GetFunction(&GRBXchgcoeffs, "GRBXchgcoeffs");
591  gurobi_dynamic_library->GetFunction(&GRBsetpwlobj, "GRBsetpwlobj");
592  gurobi_dynamic_library->GetFunction(&GRBupdatemodel, "GRBupdatemodel");
593  gurobi_dynamic_library->GetFunction(&GRBresetmodel, "GRBresetmodel");
594  gurobi_dynamic_library->GetFunction(&GRBfreemodel, "GRBfreemodel");
595  gurobi_dynamic_library->GetFunction(&GRBcomputeIIS, "GRBcomputeIIS");
596  gurobi_dynamic_library->GetFunction(&GRBFSolve, "GRBFSolve");
597  gurobi_dynamic_library->GetFunction(&GRBBinvColj, "GRBBinvColj");
598  gurobi_dynamic_library->GetFunction(&GRBBinvj, "GRBBinvj");
599  gurobi_dynamic_library->GetFunction(&GRBBSolve, "GRBBSolve");
600  gurobi_dynamic_library->GetFunction(&GRBBinvi, "GRBBinvi");
601  gurobi_dynamic_library->GetFunction(&GRBBinvRowi, "GRBBinvRowi");
602  gurobi_dynamic_library->GetFunction(&GRBgetBasisHead, "GRBgetBasisHead");
603  gurobi_dynamic_library->GetFunction(&GRBstrongbranch, "GRBstrongbranch");
604  gurobi_dynamic_library->GetFunction(&GRBcheckmodel, "GRBcheckmodel");
605  gurobi_dynamic_library->GetFunction(&GRBsetsignal, "GRBsetsignal");
606  gurobi_dynamic_library->GetFunction(&GRBterminate, "GRBterminate");
607  gurobi_dynamic_library->GetFunction(&GRBreplay, "GRBreplay");
608  gurobi_dynamic_library->GetFunction(&GRBsetobjective, "GRBsetobjective");
609  gurobi_dynamic_library->GetFunction(&GRBsetobjectiven, "GRBsetobjectiven");
610  gurobi_dynamic_library->GetFunction(&GRBmsg, "GRBmsg");
611  gurobi_dynamic_library->GetFunction(&GRBgetlogfile, "GRBgetlogfile");
612  gurobi_dynamic_library->GetFunction(&GRBsetlogfile, "GRBsetlogfile");
613  gurobi_dynamic_library->GetFunction(&GRBgetintparam, "GRBgetintparam");
614  gurobi_dynamic_library->GetFunction(&GRBgetdblparam, "GRBgetdblparam");
615  gurobi_dynamic_library->GetFunction(&GRBgetstrparam, "GRBgetstrparam");
616  gurobi_dynamic_library->GetFunction(&GRBgetintparaminfo,
617  "GRBgetintparaminfo");
618  gurobi_dynamic_library->GetFunction(&GRBgetdblparaminfo,
619  "GRBgetdblparaminfo");
620  gurobi_dynamic_library->GetFunction(&GRBgetstrparaminfo,
621  "GRBgetstrparaminfo");
622  gurobi_dynamic_library->GetFunction(&GRBsetparam, "GRBsetparam");
623  gurobi_dynamic_library->GetFunction(&GRBsetintparam, "GRBsetintparam");
624  gurobi_dynamic_library->GetFunction(&GRBsetdblparam, "GRBsetdblparam");
625  gurobi_dynamic_library->GetFunction(&GRBsetstrparam, "GRBsetstrparam");
626  gurobi_dynamic_library->GetFunction(&GRBgetparamtype, "GRBgetparamtype");
627  gurobi_dynamic_library->GetFunction(&GRBresetparams, "GRBresetparams");
628  gurobi_dynamic_library->GetFunction(&GRBcopyparams, "GRBcopyparams");
629  gurobi_dynamic_library->GetFunction(&GRBwriteparams, "GRBwriteparams");
630  gurobi_dynamic_library->GetFunction(&GRBreadparams, "GRBreadparams");
631  gurobi_dynamic_library->GetFunction(&GRBgetnumparams, "GRBgetnumparams");
632  gurobi_dynamic_library->GetFunction(&GRBgetparamname, "GRBgetparamname");
633  gurobi_dynamic_library->GetFunction(&GRBgetnumattributes,
634  "GRBgetnumattributes");
635  gurobi_dynamic_library->GetFunction(&GRBgetattrname, "GRBgetattrname");
636  gurobi_dynamic_library->GetFunction(&GRBloadenv, "GRBloadenv");
637  gurobi_dynamic_library->GetFunction(&GRBloadenvadv, "GRBloadenvadv");
638  gurobi_dynamic_library->GetFunction(&GRBloadclientenv, "GRBloadclientenv");
639  gurobi_dynamic_library->GetFunction(&GRBloadclientenvadv,
640  "GRBloadclientenvadv");
641  gurobi_dynamic_library->GetFunction(&GRBloadcloudenv, "GRBloadcloudenv");
642  gurobi_dynamic_library->GetFunction(&GRBloadcloudenvadv,
643  "GRBloadcloudenvadv");
644  gurobi_dynamic_library->GetFunction(&GRBgetenv, "GRBgetenv");
645  gurobi_dynamic_library->GetFunction(&GRBgetconcurrentenv,
646  "GRBgetconcurrentenv");
647  gurobi_dynamic_library->GetFunction(&GRBdiscardconcurrentenvs,
648  "GRBdiscardconcurrentenvs");
649  gurobi_dynamic_library->GetFunction(&GRBgetmultiobjenv, "GRBgetmultiobjenv");
650  gurobi_dynamic_library->GetFunction(&GRBdiscardmultiobjenvs,
651  "GRBdiscardmultiobjenvs");
652  gurobi_dynamic_library->GetFunction(&GRBreleaselicense, "GRBreleaselicense");
653  gurobi_dynamic_library->GetFunction(&GRBfreeenv, "GRBfreeenv");
654  gurobi_dynamic_library->GetFunction(&GRBgeterrormsg, "GRBgeterrormsg");
655  gurobi_dynamic_library->GetFunction(&GRBgetmerrormsg, "GRBgetmerrormsg");
656  gurobi_dynamic_library->GetFunction(&GRBversion, "GRBversion");
657  gurobi_dynamic_library->GetFunction(&GRBplatform, "GRBplatform");
658  gurobi_dynamic_library->GetFunction(&GRBtunemodel, "GRBtunemodel");
659  gurobi_dynamic_library->GetFunction(&GRBtunemodels, "GRBtunemodels");
660  gurobi_dynamic_library->GetFunction(&GRBgettuneresult, "GRBgettuneresult");
661  gurobi_dynamic_library->GetFunction(&GRBgettunelog, "GRBgettunelog");
662  gurobi_dynamic_library->GetFunction(&GRBtunemodeladv, "GRBtunemodeladv");
663  gurobi_dynamic_library->GetFunction(&GRBsync, "GRBsync");
664 }
665 
666 std::vector<std::string> GurobiDynamicLibraryPotentialPaths() {
667  std::vector<std::string> potential_paths;
668  const std::vector<std::string> kGurobiVersions = {"911", "910", "903", "902",
669  "811", "801", "752"};
670 
671  // Look for libraries pointed by GUROBI_HOME first.
672  const char* gurobi_home_from_env = getenv("GUROBI_HOME");
673  if (gurobi_home_from_env != nullptr) {
674  for (const std::string& version : kGurobiVersions) {
675  const std::string lib = version.substr(0, 2);
676 #if defined(_MSC_VER) // Windows
677  potential_paths.push_back(
678  absl::StrCat(gurobi_home_from_env, "\\bin\\gurobi", lib, ".dll"));
679 #elif defined(__APPLE__) // OS X
680  potential_paths.push_back(
681  absl::StrCat(gurobi_home_from_env, "/lib/libgurobi", lib, ".dylib"));
682 #elif defined(__GNUC__) // Linux
683  potential_paths.push_back(
684  absl::StrCat(gurobi_home_from_env, "/lib/libgurobi", lib, ".so"));
685  potential_paths.push_back(
686  absl::StrCat(gurobi_home_from_env, "/lib64/libgurobi", lib, ".so"));
687 #else
688  LOG(ERROR) << "OS Not recognized by gurobi/environment.cc."
689  << " You won't be able to use Gurobi.";
690 #endif
691  }
692  }
693 
694  // Search for canonical places.
695  for (const std::string& version : kGurobiVersions) {
696  const std::string lib = version.substr(0, 2);
697 #if defined(_MSC_VER) // Windows
698  potential_paths.push_back(absl::StrCat("C:\\Program Files\\gurobi", version,
699  "\\win64\\bin\\gurobi", lib,
700  ".dll"));
701 #elif defined(__APPLE__) // OS X
702  potential_paths.push_back(absl::StrCat(
703  "/Library/gurobi", version, "/mac64/lib/libgurobi", lib, ".dylib"));
704 #elif defined(__GNUC__) // Linux
705  potential_paths.push_back(absl::StrCat(
706  "/opt/gurobi", version, "/linux64/lib/libgurobi", lib, ".so"));
707  potential_paths.push_back(absl::StrCat(
708  "/opt/gurobi", version, "/linux64/lib64/libgurobi", lib, ".so"));
709  potential_paths.push_back(
710  absl::StrCat("/opt/gurobi/linux64/lib/libgurobi", lib, ".so"));
711  potential_paths.push_back(
712  absl::StrCat("/opt/gurobi/linux64/lib64/libgurobi", lib, ".so"));
713 #else
714  LOG(ERROR) << "OS Not recognized by gurobi/environment.cc."
715  << " You won't be able to use Gurobi.";
716 #endif
717  }
718  return potential_paths;
719 }
720 
722  std::vector<std::string> potential_paths) {
723  static std::once_flag gurobi_loading_done;
724  static absl::Status gurobi_load_status;
725  static DynamicLibrary gurobi_library;
726  static absl::Mutex mutex;
727 
728  absl::MutexLock lock(&mutex);
729 
730  std::call_once(gurobi_loading_done, [&potential_paths]() {
731  const std::vector<std::string> canonical_paths =
733  potential_paths.insert(potential_paths.end(), canonical_paths.begin(),
734  canonical_paths.end());
735  for (const std::string& path : potential_paths) {
736  if (gurobi_library.TryToLoad(path)) {
737  LOG(INFO) << "Found the Gurobi library in '" << path << ".";
738  break;
739  }
740  }
741 
742  if (gurobi_library.LibraryIsLoaded()) {
743  LoadGurobiFunctions(&gurobi_library);
744  gurobi_load_status = absl::OkStatus();
745  } else {
746  gurobi_load_status = absl::NotFoundError(absl::StrCat(
747  "Could not find the Gurobi shared library. Looked in: [",
748  absl::StrJoin(potential_paths, "', '"),
749  "]. If you know where it"
750  " is, pass the full path to 'LoadGurobiDynamicLibrary()'."));
751  }
752  });
753  return gurobi_load_status;
754 }
755 
756 absl::StatusOr<GRBenv*> GetGurobiEnv() {
758 
759  GRBenv* env = nullptr;
760 
761  if (GRBloadenv(&env, nullptr) != 0 || env == nullptr) {
762  return absl::FailedPreconditionError(
763  absl::StrCat("Found the Gurobi shared library, but could not create "
764  "Gurobi environment: is Gurobi licensed on this machine?",
765  GRBgeterrormsg(env)));
766  }
767  return env;
768 }
769 
770 } // namespace operations_research
std::function< int(GRBmodel *model, int num, int *cand, double *downobjbd, double *upobjbd, int *statusP)> GRBstrongbranch
Definition: environment.cc:346
std::function< int(GRBenv **envP, const char *logfilename, const char *computeservers, int port, const char *password, int priority, double timeout, int apitype, int major, int minor, int tech, int(GUROBI_STDCALL *cb)(CB_ARGS), void *usrdata)> GRBloadclientenvadv
Definition: environment.cc:410
#define CALLOCCB_ARGS
Definition: environment.h:402
std::function< const char *(GRBenv *env)> GRBgeterrormsg
Definition: environment.cc:426
std::function< int(GRBmodel *model, int i, GRBsvec *x)> GRBBinvRowi
Definition: environment.cc:342
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelgenconstrs
Definition: environment.cc:322
std::function< int(GRBmodel *model, const char *attrname, int element, double *valueP)> GRBgetdblattrelement
Definition: environment.cc:100
std::function< int(GRBenv *env, GRBmodel **modelP, const char *Pname, int numvars, int numconstrs, int objsense, double objcon, double *obj, char *sense, double *rhs, size_t *vbeg, int *vlen, int *vind, double *vval, double *lb, double *ub, char *vtype, char **varnames, char **constrnames)> GRBXloadmodel
Definition: environment.cc:254
std::function< int(GRBmodel *model, int i, char **attrnameP)> GRBgetattrname
Definition: environment.cc:394
std::function< int(GRBenv *env, const char *paramname, char *valueP, char *defP)> GRBgetstrparaminfo
Definition: environment.cc:375
std::function< GRBmodel *(GRBmodel *model)> GRBpresolvemodel
Definition: environment.cc:219
std::function< int(GRBmodel *model)> GRBgetnumattributes
Definition: environment.cc:393
std::function< int(GRBmodel *model, int index, int priority, double weight, double abstol, double reltol, const char *name, double constant, int lnz, int *lind, double *lval)> GRBsetobjectiven
Definition: environment.cc:358
std::function< int(const char *filename)> GRBisrecordfile
Definition: environment.cc:238
std::function< int(GRBenv **envP, const char *logfilename, const char *accessID, const char *secretKey, const char *pool)> GRBloadcloudenv
Definition: environment.cc:413
std::function< int(GRBenv *env, const char *filename)> GRBwriteparams
Definition: environment.cc:388
std::function< int(GRBmodel *model, int numvars, int numnz, int *vbeg, int *vind, double *vval, double *obj, double *lb, double *ub, char *vtype, char **varnames)> GRBaddvars
Definition: environment.cc:262
std::function< int(GRBenv **, const char *, const char *, const char *, int, const char *)> GRBisqp
Definition: environment.cc:48
std::function< int(GRBmodel *model, const char *attrname)> GRBisattravailable
Definition: environment.cc:52
std::function< int(const char *filename)> GRBismodelfile
Definition: environment.cc:236
std::function< int(int nummodels, GRBmodel **models, GRBmodel *ignore, GRBmodel *hint)> GRBtunemodels
Definition: environment.cc:434
std::function< GRBenv *(GRBmodel *model, int num)> GRBgetconcurrentenv
Definition: environment.cc:420
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char **newvalues)> GRBsetstrattrarray
Definition: environment.cc:131
std::function< int(GRBmodel *model)> GRBsync
Definition: environment.cc:439
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelvars
Definition: environment.cc:319
std::function< int(GRBenv *env, const char *paramname, int *valueP, int *minP, int *maxP, int *defP)> GRBgetintparaminfo
Definition: environment.cc:370
std::function< int(GRBenv *env, int i, char **paramnameP)> GRBgetparamname
Definition: environment.cc:391
std::function< int(GRBmodel *model, const char *attrname, int *valueP)> GRBgetintattr
Definition: environment.cc:55
std::function< GRBmodel *(GRBmodel *model)> GRBrelaxmodel
Definition: environment.cc:217
std::function< int(GRBmodel *model, const char *filename)> GRBwrite
Definition: environment.cc:235
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars)> GRBgetgenconstrAnd
Definition: environment.cc:186
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrAnd
Definition: environment.cc:302
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, int *newvalues)> GRBsetintattrlist
Definition: environment.cc:75
std::function< int(GRBmodel *model, int var, int points, double *x, double *y)> GRBsetpwlobj
Definition: environment.cc:332
std::function< int(GRBenv *env, const char *paramname, double value)> GRBsetdblparam
Definition: environment.cc:381
absl::Status LoadGurobiDynamicLibrary(std::vector< std::string > potential_paths)
Definition: environment.cc:721
std::function< int(GRBmodel *model, size_t *numnzP, size_t *cbeg, int *cind, double *cval, int start, int len)> GRBXgetconstrs
Definition: environment.cc:166
const std::string name
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetparam
Definition: environment.cc:377
const int ERROR
Definition: log_severity.h:32
std::function< void(GRBenv *env)> GRBreleaselicense
Definition: environment.cc:424
bool LibraryIsLoaded() const
std::function< GRBenv *(GRBmodel *model)> GRBgetenv
Definition: environment.cc:419
absl::StatusOr< GRBenv * > GetGurobiEnv()
Definition: environment.cc:756
std::function< void(GRBmodel *model)> GRBdiscardmultiobjenvs
Definition: environment.cc:423
struct _GRBmodel GRBmodel
Definition: environment.h:24
std::function< int(void *cbdata, int lazylen, const int *lazyind, const double *lazyval, char lazysense, double lazyrhs)> GRBcblazy
Definition: environment.cc:158
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelsos
Definition: environment.cc:321
#define LOG(severity)
Definition: base/logging.h:416
std::function< int(GRBmodel *model, int numqnz, int *qrow, int *qcol, double *qval)> GRBaddqpterms
Definition: environment.cc:318
std::function< int(GRBmodel *model, const char *attrname, int element, char newvalue)> GRBsetcharattrelement
Definition: environment.cc:81
GRBmodel * model
std::function< int(GRBenv *env, GRBmodel **modelP, const char *Pname, int numvars, double *obj, double *lb, double *ub, char *vtype, char **varnames)> GRBnewmodel
Definition: environment.cc:242
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelconstrs
Definition: environment.cc:320
void LoadGurobiFunctions(DynamicLibrary *gurobi_dynamic_library)
Definition: environment.cc:441
std::function< int(GRBenv *env, const char *paramname, int value)> GRBsetintparam
Definition: environment.cc:379
#define CB_ARGS
Definition: environment.h:147
std::function< int(GRBmodel *model, const char *filename)> GRBread
Definition: environment.cc:234
std::function< int(GRBmodel *model)> GRBcheckmodel
Definition: environment.cc:347
std::function< int(GRBmodel *model, GRBmodel *ignore, GRBmodel *hint)> GRBtunemodeladv
Definition: environment.cc:438
std::function< void(GRBenv *env, const char *message)> GRBmsg
Definition: environment.cc:359
std::vector< std::string > GurobiDynamicLibraryPotentialPaths()
Definition: environment.cc:666
#define THREADCREATECB_ARGS
Definition: environment.h:405
std::function< int(GRBmodel *model, int numvars, size_t numnz, size_t *vbeg, int *vind, double *vval, double *obj, double *lb, double *ub, char *vtype, char **varnames)> GRBXaddvars
Definition: environment.cc:266
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char **newvalues)> GRBsetstrattrlist
Definition: environment.cc:137
int64_t b
std::function< int(GRBmodel *model)> GRBfreemodel
Definition: environment.cc:335
std::function< void(GRBmodel *model)> GRBsetsignal
Definition: environment.cc:348
std::function< int(GRBmodel *model, int numnz, int *vind, double *vval, double obj, double lb, double ub, char vtype, const char *varname)> GRBaddvar
Definition: environment.cc:258
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelqconstrs
Definition: environment.cc:324
std::function< int(GRBenv *env, FILE **logfileP)> GRBgetlogfile
Definition: environment.cc:360
std::function< int(GRBmodel *model, int j, GRBsvec *x)> GRBBinvj
Definition: environment.cc:339
std::function< int(GRBmodel *model, size_t *numnzP, size_t *vbeg, int *vind, double *vval, int start, int len)> GRBXgetvars
Definition: environment.cc:172
std::function< int(GRBmodel *model, int numconstrs, size_t numnz, size_t *cbeg, int *cind, double *cval, char *sense, double *rhs, char **constrnames)> GRBXaddconstrs
Definition: environment.cc:277
std::function< int(GRBmodel *model, int nummembers, int *members)> GRBaddcone
Definition: environment.cc:314
std::function< void(GRBmodel *model)> GRBdiscardconcurrentenvs
Definition: environment.cc:421
std::function< int(GRBenv *env)> GRBresetparams
Definition: environment.cc:386
#define MALLOCCB_ARGS
Definition: environment.h:401
std::function< int(GRBenv **envP, const char *logfilename, void *(GUROBI_STDCALL *malloccb)(MALLOCCB_ARGS), void *(GUROBI_STDCALL *calloccb)(CALLOCCB_ARGS), void *(GUROBI_STDCALL *realloccb)(REALLOCCB_ARGS), void(GUROBI_STDCALL *freecb)(FREECB_ARGS), int(GUROBI_STDCALL *threadcreatecb)(THREADCREATECB_ARGS), void(GUROBI_STDCALL *threadjoincb)(THREADJOINCB_ARGS), void *syscbusrdata)> GRBloadenvsyscb
Definition: environment.cc:231
std::function< int(GRBmodel *model, const char *attrname, double *valueP)> GRBgetdblattr
Definition: environment.cc:95
std::function< int(GRBenv *env)> GRBgetnumparams
Definition: environment.cc:390
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char *newvalues)> GRBsetcharattrarray
Definition: environment.cc:87
std::function< int(GRBmodel *model, GRBsvec *b, GRBsvec *x)> GRBFSolve
Definition: environment.cc:337
std::function< int(GRBmodel *model)> GRBtunemodel
Definition: environment.cc:431
std::function< int(void *cbdata, int what, int *typeP, int *sizeP)> GRBgetcbwhatinfo
Definition: environment.cc:216
std::function< int(GRBenv **envP, const char *logfilename, const char *accessID, const char *secretKey, const char *pool, int apitype, int major, int minor, int tech, int(GUROBI_STDCALL *cb)(CB_ARGS), void *usrdata)> GRBloadcloudenvadv
Definition: environment.cc:418
std::function< int(GRBmodel *model, GRBsvec *b, GRBsvec *x)> GRBBSolve
Definition: environment.cc:340
int64_t weight
Definition: pack.cc:510
std::function< int(GRBmodel *model)> GRBdelq
Definition: environment.cc:325
std::function< int(GRBmodel *model, int i)> GRBgettuneresult
Definition: environment.cc:435
std::function< int(void *cbdata, const double *solution, double *objvalP)> GRBcbsolution
Definition: environment.cc:152
std::function< int(GRBmodel *model)> GRBconverttofixed
Definition: environment.cc:218
std::function< int(void *cbdata, int cutlen, const int *cutind, const double *cutval, char cutsense, double cutrhs)> GRBcbcut
Definition: environment.cc:155
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char *values)> GRBgetcharattrarray
Definition: environment.cc:84
std::function< int(GRBmodel *model, int numsos, int nummembers, int *types, int *beg, int *ind, double *weight)> GRBaddsos
Definition: environment.cc:291
std::function< int(GRBmodel *model, int cnt, int *cind, int *vind, double *val)> GRBchgcoeffs
Definition: environment.cc:327
struct _GRBenv GRBenv
Definition: environment.h:25
std::function< int(GRBenv *env, const char *paramname, char *valueP)> GRBgetstrparam
Definition: environment.cc:367
std::function< int(GRBmodel *model)> GRBcomputeIIS
Definition: environment.cc:336
std::function< int(GRBmodel *model, const char *attrname, int element, int newvalue)> GRBsetintattrelement
Definition: environment.cc:63
std::function< int(GRBmodel *model, int numconstrs, size_t numnz, size_t *cbeg, int *cind, double *cval, double *lower, double *upper, char **constrnames)> GRBXaddrangeconstrs
Definition: environment.cc:288
std::function< int(GRBmodel *model, int numconstrs, int numnz, int *cbeg, int *cind, double *cval, char *sense, double *rhs, char **constrnames)> GRBaddconstrs
Definition: environment.cc:273
std::function< int(GRBmodel *model, const char *name, int *indexP)> GRBgetvarbyname
Definition: environment.cc:202
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, double *values)> GRBgetdblattrlist
Definition: environment.cc:112
std::function< int(void *cbdata, int where, int what, void *resultP)> GRBcbget
Definition: environment.cc:147
std::function< void(GRBmodel *model)> GRBterminate
Definition: environment.cc:349
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMax
Definition: environment.cc:294
std::function< int(GRBmodel *lp, const char *name, int binvar, int binval, int nvars, const int *vars, const double *vals, char sense, double rhs)> GRBaddgenconstrIndicator
Definition: environment.cc:309
std::function< int(GRBmodel *model, int(GUROBI_STDCALL *cb)(CB_ARGS), void *usrdata)> GRBsetcallbackfunc
Definition: environment.cc:140
std::function< int(GRBmodel *model, int constr, int var, double *valP)> GRBgetcoeff
Definition: environment.cc:160
std::function< GRBmodel *(GRBmodel *model)> GRBlinearizemodel
Definition: environment.cc:222
std::function< int(GRBmodel *model)> GRBoptimizeasync
Definition: environment.cc:208
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars, double *constantP)> GRBgetgenconstrMax
Definition: environment.cc:178
std::function< int(GRBmodel *model, const char *attrname, int element, double newvalue)> GRBsetdblattrelement
Definition: environment.cc:103
std::function< int(GRBenv *env, const char *paramname)> GRBgetparamtype
Definition: environment.cc:384
#define REALLOCCB_ARGS
Definition: environment.h:403
std::function< int(GRBmodel *model)> GRBupdatemodel
Definition: environment.cc:333
std::function< int(GRBenv *env, const char *paramname, double *valueP, double *minP, double *maxP, double *defP)> GRBgetdblparaminfo
Definition: environment.cc:373
int where
std::function< T > GetFunction(const char *function_name)
std::function< int(GRBenv *env, const char *filename, GRBmodel **modelP)> GRBreadmodel
Definition: environment.cc:233
std::function< int(GRBmodel *model, int *numnzP, int *vbeg, int *vind, double *vval, int start, int len)> GRBgetvars
Definition: environment.cc:169
std::function< int(GRBmodel *model, int *nummembersP, int *sostype, int *beg, int *ind, double *weight, int start, int len)> GRBgetsos
Definition: environment.cc:175
std::function< GRBmodel *(GRBmodel *model)> GRBiismodel
Definition: environment.cc:220
int index
Definition: pack.cc:509
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char **values)> GRBgetstrattrarray
Definition: environment.cc:128
std::function< char *(void)> GRBplatform
Definition: environment.cc:430
std::function< int(GRBenv *dest, GRBenv *src)> GRBcopyparams
Definition: environment.cc:387
std::function< GRBmodel *(GRBmodel *model)> GRBfeasibility
Definition: environment.cc:221
std::function< int(GRBmodel *model, const char *attrname, double newvalue)> GRBsetdblattr
Definition: environment.cc:97
std::string message
Definition: trace.cc:398
std::function< GRBenv *(GRBmodel *model, int num)> GRBgetmultiobjenv
Definition: environment.cc:422
std::function< int(GRBenv *env, const char *filename)> GRBreadparams
Definition: environment.cc:389
#define THREADJOINCB_ARGS
Definition: environment.h:406
std::function< int(GRBmodel *model, int *bhead)> GRBgetBasisHead
Definition: environment.cc:343
std::function< int(GRBenv *env, FILE *logfile)> GRBsetlogfile
Definition: environment.cc:361
std::function< int(GRBmodel *model, const char *attrname, int element, char *valueP)> GRBgetcharattrelement
Definition: environment.cc:78
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, int *values)> GRBgetintattrlist
Definition: environment.cc:72
std::function< int(GRBmodel *model, size_t cnt, int *cind, int *vind, double *val)> GRBXchgcoeffs
Definition: environment.cc:330
std::function< int(GRBenv **envP, const char *logfilename, int apitype, int major, int minor, int tech, int(GUROBI_STDCALL *cb)(CB_ARGS), void *usrdata)> GRBloadenvadv
Definition: environment.cc:400
bool GurobiIsCorrectlyInstalled()
Definition: environment.cc:30
std::function< int(GRBmodel *model, int j, GRBsvec *x)> GRBBinvColj
Definition: environment.cc:338
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrOr
Definition: environment.cc:305
bool TryToLoad(const std::string &library_name)
std::function< int(GRBmodel *model)> GRBresetmodel
Definition: environment.cc:334
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars, double *constantP)> GRBgetgenconstrMin
Definition: environment.cc:181
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMin
Definition: environment.cc:297
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char *newvalues)> GRBsetcharattrlist
Definition: environment.cc:93
std::function< int(GRBmodel *model)> GRBoptimize
Definition: environment.cc:207
std::function< int(const char *filename)> GRBreplay
Definition: environment.cc:350
std::function< int(GRBmodel *model, int sense, double constant, int lnz, int *lind, double *lval, int qnz, int *qrow, int *qcol, double *qval)> GRBsetobjective
Definition: environment.cc:354
std::function< int(GRBmodel *model, int(GUROBI_STDCALL **cbP)(CB_ARGS))> GRBgetcallbackfunc
Definition: environment.cc:142
std::function< int(GRBmodel *model, const char *name, int *indexP)> GRBgetconstrbyname
Definition: environment.cc:204
std::function< int(GRBenv *env, GRBmodel **modelP, const char *Pname, int numvars, int numconstrs, int objsense, double objcon, double *obj, char *sense, double *rhs, int *vbeg, int *vlen, int *vind, double *vval, double *lb, double *ub, char *vtype, char **varnames, char **constrnames)> GRBloadmodel
Definition: environment.cc:248
std::function< int(GRBmodel *model, const char *attrname, int element, const char *newvalue)> GRBsetstrattrelement
Definition: environment.cc:125
std::function< int(GRBmodel *model, int i, char **logP)> GRBgettunelog
Definition: environment.cc:436
std::function< int(GRBmodel *model, const char *attrname, int element, int *valueP)> GRBgetintattrelement
Definition: environment.cc:60
std::function< int(GRBmodel *model, const char *attrname, int newvalue)> GRBsetintattr
Definition: environment.cc:57
std::function< void(GRBenv *env)> GRBfreeenv
Definition: environment.cc:425
#define GUROBI_STDCALL
Definition: environment.h:36
std::function< int(GRBenv **envP, const char *logfilename, const char *computeservers, int port, const char *password, int priority, double timeout)> GRBloadclientenv
Definition: environment.cc:404
std::function< int(GRBmodel *model, int var, int *pointsP, double *x, double *y)> GRBgetpwlobj
Definition: environment.cc:206
std::function< int(GRBmodel *model, int i, GRBsvec *x)> GRBBinvi
Definition: environment.cc:341
std::function< int(GRBmodel *model, int numnz, int *cind, double *cval, char sense, double rhs, const char *constrname)> GRBaddconstr
Definition: environment.cc:269
std::function< int(GRBmodel *model, int *numqnzP, int *qrow, int *qcol, double *qval)> GRBgetq
Definition: environment.cc:196
std::function< GRBmodel *(GRBmodel *model)> GRBfixedmodel
Definition: environment.cc:210
std::function< int(GRBmodel *model, int(GUROBI_STDCALL *cb)(char *msg))> GRBsetlogcallbackfunc
Definition: environment.cc:144
Collection of objects used to extend the Constraint Solver library.
std::function< GRBmodel *(GRBmodel *model)> GRBcopymodel
Definition: environment.cc:209
std::function< int(GRBmodel *model, int qconstr, int *numlnzP, int *lind, double *lval, int *numqnzP, int *qrow, int *qcol, double *qval)> GRBgetqconstr
Definition: environment.cc:200
std::function< int(GRBmodel *model, const char *attrname, int element, char **valueP)> GRBgetstrattrelement
Definition: environment.cc:122
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars)> GRBgetgenconstrOr
Definition: environment.cc:189
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char **values)> GRBgetstrattrlist
Definition: environment.cc:134
std::function< int(GRBmodel *model, int *numnzP, int *cbeg, int *cind, double *cval, int start, int len)> GRBgetconstrs
Definition: environment.cc:163
std::function< int(GRBmodel *model, const char *name, int resvar, int argvar)> GRBaddgenconstrAbs
Definition: environment.cc:299
std::function< int(GRBenv *env, const char *paramname, int *valueP)> GRBgetintparam
Definition: environment.cc:363
#define RETURN_IF_ERROR(expr)
Definition: status_macros.h:29
std::function< int(GRBenv *env, int(GUROBI_STDCALL *cb)(char *msg))> GRBsetlogcallbackfuncenv
Definition: environment.cc:146
std::function< int(GRBmodel *model, const char *attrname, int first, int len, int *values)> GRBgetintattrarray
Definition: environment.cc:66
IntVar * var
Definition: expr_array.cc:1874
std::function< int(GRBmodel *model, int numconstrs, int numnz, int *cbeg, int *cind, double *cval, double *lower, double *upper, char **constrnames)> GRBaddrangeconstrs
Definition: environment.cc:284
std::function< const char *(GRBmodel *model)> GRBgetmerrormsg
Definition: environment.cc:427
std::function< int(GRBmodel *model, int relaxobjtype, int minrelax, double *lbpen, double *ubpen, double *rhspen, double *feasobjP)> GRBfeasrelax
Definition: environment.cc:214
std::function< int(GRBenv **envP, const char *logfilename)> GRBloadenv
Definition: environment.cc:396
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *argvarP)> GRBgetgenconstrAbs
Definition: environment.cc:183
std::function< int(GRBmodel *model, const char *attrname, int *datatypeP, int *sizeP, int *settableP)> GRBgetattrinfo
Definition: environment.cc:51
std::function< int(void *cbdata, const char *paramname, const char *newvalue)> GRBcbsetparam
Definition: environment.cc:150
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, double *newvalues)> GRBsetdblattrlist
Definition: environment.cc:115
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char *values)> GRBgetcharattrlist
Definition: environment.cc:90
std::function< int(const char *filename)> GRBfiletype
Definition: environment.cc:237
#define FREECB_ARGS
Definition: environment.h:404
std::function< int(GRBmodel *model, int genconstr, int *binvarP, int *binvalP, int *nvarsP, int *vars, double *vals, char *senseP, double *rhsP)> GRBgetgenconstrIndicator
Definition: environment.cc:193
std::function< int(GRBmodel *model, const char *attrname, const char *newvalue)> GRBsetstrattr
Definition: environment.cc:119
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetstrparam
Definition: environment.cc:383
std::function< void(int *majorP, int *minorP, int *technicalP)> GRBversion
Definition: environment.cc:428
std::function< int(GRBenv *env, const char *paramname, double *valueP)> GRBgetdblparam
Definition: environment.cc:365
int64_t value
std::function< int(GRBmodel *model, int numlnz, int *lind, double *lval, int numqnz, int *qrow, int *qcol, double *qval, char sense, double rhs, const char *QCname)> GRBaddqconstr
Definition: environment.cc:313
std::function< int(GRBmodel *model, const char *attrname, char **valueP)> GRBgetstrattr
Definition: environment.cc:117
std::function< int(GRBmodel *model, const char *attrname, int first, int len, double *values)> GRBgetdblattrarray
Definition: environment.cc:106
const int INFO
Definition: log_severity.h:31
std::function< int(GRBmodel *model, int numnz, int *cind, double *cval, double lower, double upper, const char *constrname)> GRBaddrangeconstr
Definition: environment.cc:280
std::function< int(GRBmodel *model, const char *attrname, int first, int len, double *newvalues)> GRBsetdblattrarray
Definition: environment.cc:109
std::function< int(GRBmodel *model, const char *attrname, int first, int len, int *newvalues)> GRBsetintattrarray
Definition: environment.cc:69