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