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