OR-Tools  9.1
environment.cc
Go to the documentation of this file.
1// Copyright 2010-2021 Google LLC
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
15
16#include <mutex>
17#include <string>
18
19#include "absl/status/status.h"
20#include "absl/strings/match.h"
21#include "absl/strings/str_cat.h"
22#include "absl/strings/str_format.h"
23#include "absl/strings/str_join.h"
24#include "absl/synchronization/mutex.h"
27
28namespace operations_research {
29
31 absl::StatusOr<GRBenv*> status = GetGurobiEnv();
32 if (!status.ok() || status.value() == nullptr) {
33 return false;
34 }
35
36 GRBfreeenv(status.value());
37
38 return true;
39}
40
41// This was generated with the parse_header.py script.
42// See the comment at the top of the script.
43
44// This is the 'define' section.
45
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, FILE** logfileP)> GRBgetlogfile = nullptr;
361std::function<int(GRBenv* env, FILE* logfile)> GRBsetlogfile = nullptr;
362std::function<int(GRBenv* env, const char* paramname, int* valueP)>
363 GRBgetintparam = nullptr;
364std::function<int(GRBenv* env, const char* paramname, double* valueP)>
365 GRBgetdblparam = nullptr;
366std::function<int(GRBenv* env, const char* paramname, char* valueP)>
367 GRBgetstrparam = nullptr;
368std::function<int(GRBenv* env, const char* paramname, int* valueP, int* minP,
369 int* maxP, int* defP)>
371std::function<int(GRBenv* env, const char* paramname, double* valueP,
372 double* minP, double* maxP, double* defP)>
374std::function<int(GRBenv* env, const char* paramname, char* valueP, char* defP)>
376std::function<int(GRBenv* env, const char* paramname, const char* value)>
377 GRBsetparam = nullptr;
378std::function<int(GRBenv* env, const char* paramname, int value)>
379 GRBsetintparam = nullptr;
380std::function<int(GRBenv* env, const char* paramname, double value)>
381 GRBsetdblparam = nullptr;
382std::function<int(GRBenv* env, const char* paramname, const char* value)>
383 GRBsetstrparam = nullptr;
384std::function<int(GRBenv* env, const char* paramname)> GRBgetparamtype =
385 nullptr;
386std::function<int(GRBenv* env)> GRBresetparams = nullptr;
387std::function<int(GRBenv* dest, GRBenv* src)> GRBcopyparams = nullptr;
388std::function<int(GRBenv* env, const char* filename)> GRBwriteparams = nullptr;
389std::function<int(GRBenv* env, const char* filename)> GRBreadparams = nullptr;
390std::function<int(GRBenv* env)> GRBgetnumparams = nullptr;
391std::function<int(GRBenv* env, int i, char** paramnameP)> GRBgetparamname =
392 nullptr;
393std::function<int(GRBmodel* model)> GRBgetnumattributes = nullptr;
394std::function<int(GRBmodel* model, int i, char** attrnameP)> GRBgetattrname =
395 nullptr;
396std::function<int(GRBenv** envP, const char* logfilename)> GRBloadenv = nullptr;
397std::function<int(GRBenv** envP, const char* logfilename, int apitype,
398 int major, int minor, int tech,
399 int(GUROBI_STDCALL* cb)(CB_ARGS), void* usrdata)>
400 GRBloadenvadv = nullptr;
401std::function<int(GRBenv** envP, const char* logfilename,
402 const char* computeservers, int port, const char* password,
403 int priority, double timeout)>
405std::function<int(GRBenv** envP, const char* logfilename,
406 const char* computeservers, int port, const char* password,
407 int priority, double timeout, int apitype, int major,
408 int minor, int tech, int(GUROBI_STDCALL* cb)(CB_ARGS),
409 void* usrdata)>
411std::function<int(GRBenv** envP, const char* logfilename, const char* accessID,
412 const char* secretKey, const char* pool)>
414std::function<int(GRBenv** envP, const char* logfilename, const char* accessID,
415 const char* secretKey, const char* pool, int apitype,
416 int major, int minor, int tech,
417 int(GUROBI_STDCALL* cb)(CB_ARGS), void* usrdata)>
419std::function<GRBenv*(GRBmodel* model)> GRBgetenv = nullptr;
420std::function<GRBenv*(GRBmodel* model, int num)> GRBgetconcurrentenv = nullptr;
421std::function<void(GRBmodel* model)> GRBdiscardconcurrentenvs = nullptr;
422std::function<GRBenv*(GRBmodel* model, int num)> GRBgetmultiobjenv = nullptr;
423std::function<void(GRBmodel* model)> GRBdiscardmultiobjenvs = nullptr;
424std::function<void(GRBenv* env)> GRBreleaselicense = nullptr;
425std::function<void(GRBenv* env)> GRBfreeenv = nullptr;
426std::function<const char*(GRBenv* env)> GRBgeterrormsg = nullptr;
427std::function<const char*(GRBmodel* model)> GRBgetmerrormsg = nullptr;
428std::function<void(int* majorP, int* minorP, int* technicalP)> GRBversion =
429 nullptr;
430std::function<char*(void)> GRBplatform = nullptr;
431std::function<int(GRBmodel* model)> GRBtunemodel = nullptr;
432std::function<int(int nummodels, GRBmodel** models, GRBmodel* ignore,
433 GRBmodel* hint)>
434 GRBtunemodels = nullptr;
435std::function<int(GRBmodel* model, int i)> GRBgettuneresult = nullptr;
436std::function<int(GRBmodel* model, int i, char** logP)> GRBgettunelog = nullptr;
437std::function<int(GRBmodel* model, GRBmodel* ignore, GRBmodel* hint)>
439std::function<int(GRBmodel* model)> GRBsync = nullptr;
440
441void LoadGurobiFunctions(DynamicLibrary* gurobi_dynamic_library) {
442 // This was generated with the parse_header.py script.
443 // See the comment at the top of the script.
444
445 // This is the 'assign' section.
446
447 gurobi_dynamic_library->GetFunction(&GRBisqp, "GRBisqp");
448 gurobi_dynamic_library->GetFunction(&GRBgetattrinfo, "GRBgetattrinfo");
449 gurobi_dynamic_library->GetFunction(&GRBisattravailable,
450 "GRBisattravailable");
451 gurobi_dynamic_library->GetFunction(&GRBgetintattr, "GRBgetintattr");
452 gurobi_dynamic_library->GetFunction(&GRBsetintattr, "GRBsetintattr");
453 gurobi_dynamic_library->GetFunction(&GRBgetintattrelement,
454 "GRBgetintattrelement");
455 gurobi_dynamic_library->GetFunction(&GRBsetintattrelement,
456 "GRBsetintattrelement");
457 gurobi_dynamic_library->GetFunction(&GRBgetintattrarray,
458 "GRBgetintattrarray");
459 gurobi_dynamic_library->GetFunction(&GRBsetintattrarray,
460 "GRBsetintattrarray");
461 gurobi_dynamic_library->GetFunction(&GRBgetintattrlist, "GRBgetintattrlist");
462 gurobi_dynamic_library->GetFunction(&GRBsetintattrlist, "GRBsetintattrlist");
463 gurobi_dynamic_library->GetFunction(&GRBgetcharattrelement,
464 "GRBgetcharattrelement");
465 gurobi_dynamic_library->GetFunction(&GRBsetcharattrelement,
466 "GRBsetcharattrelement");
467 gurobi_dynamic_library->GetFunction(&GRBgetcharattrarray,
468 "GRBgetcharattrarray");
469 gurobi_dynamic_library->GetFunction(&GRBsetcharattrarray,
470 "GRBsetcharattrarray");
471 gurobi_dynamic_library->GetFunction(&GRBgetcharattrlist,
472 "GRBgetcharattrlist");
473 gurobi_dynamic_library->GetFunction(&GRBsetcharattrlist,
474 "GRBsetcharattrlist");
475 gurobi_dynamic_library->GetFunction(&GRBgetdblattr, "GRBgetdblattr");
476 gurobi_dynamic_library->GetFunction(&GRBsetdblattr, "GRBsetdblattr");
477 gurobi_dynamic_library->GetFunction(&GRBgetdblattrelement,
478 "GRBgetdblattrelement");
479 gurobi_dynamic_library->GetFunction(&GRBsetdblattrelement,
480 "GRBsetdblattrelement");
481 gurobi_dynamic_library->GetFunction(&GRBgetdblattrarray,
482 "GRBgetdblattrarray");
483 gurobi_dynamic_library->GetFunction(&GRBsetdblattrarray,
484 "GRBsetdblattrarray");
485 gurobi_dynamic_library->GetFunction(&GRBgetdblattrlist, "GRBgetdblattrlist");
486 gurobi_dynamic_library->GetFunction(&GRBsetdblattrlist, "GRBsetdblattrlist");
487 gurobi_dynamic_library->GetFunction(&GRBgetstrattr, "GRBgetstrattr");
488 gurobi_dynamic_library->GetFunction(&GRBsetstrattr, "GRBsetstrattr");
489 gurobi_dynamic_library->GetFunction(&GRBgetstrattrelement,
490 "GRBgetstrattrelement");
491 gurobi_dynamic_library->GetFunction(&GRBsetstrattrelement,
492 "GRBsetstrattrelement");
493 gurobi_dynamic_library->GetFunction(&GRBgetstrattrarray,
494 "GRBgetstrattrarray");
495 gurobi_dynamic_library->GetFunction(&GRBsetstrattrarray,
496 "GRBsetstrattrarray");
497 gurobi_dynamic_library->GetFunction(&GRBgetstrattrlist, "GRBgetstrattrlist");
498 gurobi_dynamic_library->GetFunction(&GRBsetstrattrlist, "GRBsetstrattrlist");
499 gurobi_dynamic_library->GetFunction(&GRBsetcallbackfunc,
500 "GRBsetcallbackfunc");
501 gurobi_dynamic_library->GetFunction(&GRBgetcallbackfunc,
502 "GRBgetcallbackfunc");
503 gurobi_dynamic_library->GetFunction(&GRBsetlogcallbackfunc,
504 "GRBsetlogcallbackfunc");
505 gurobi_dynamic_library->GetFunction(&GRBsetlogcallbackfuncenv,
506 "GRBsetlogcallbackfuncenv");
507 gurobi_dynamic_library->GetFunction(&GRBcbget, "GRBcbget");
508 gurobi_dynamic_library->GetFunction(&GRBcbsetparam, "GRBcbsetparam");
509 gurobi_dynamic_library->GetFunction(&GRBcbsolution, "GRBcbsolution");
510 gurobi_dynamic_library->GetFunction(&GRBcbcut, "GRBcbcut");
511 gurobi_dynamic_library->GetFunction(&GRBcblazy, "GRBcblazy");
512 gurobi_dynamic_library->GetFunction(&GRBgetcoeff, "GRBgetcoeff");
513 gurobi_dynamic_library->GetFunction(&GRBgetconstrs, "GRBgetconstrs");
514 gurobi_dynamic_library->GetFunction(&GRBXgetconstrs, "GRBXgetconstrs");
515 gurobi_dynamic_library->GetFunction(&GRBgetvars, "GRBgetvars");
516 gurobi_dynamic_library->GetFunction(&GRBXgetvars, "GRBXgetvars");
517 gurobi_dynamic_library->GetFunction(&GRBgetsos, "GRBgetsos");
518 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrMax,
519 "GRBgetgenconstrMax");
520 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrMin,
521 "GRBgetgenconstrMin");
522 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrAbs,
523 "GRBgetgenconstrAbs");
524 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrAnd,
525 "GRBgetgenconstrAnd");
526 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrOr, "GRBgetgenconstrOr");
527 gurobi_dynamic_library->GetFunction(&GRBgetgenconstrIndicator,
528 "GRBgetgenconstrIndicator");
529 gurobi_dynamic_library->GetFunction(&GRBgetq, "GRBgetq");
530 gurobi_dynamic_library->GetFunction(&GRBgetqconstr, "GRBgetqconstr");
531 gurobi_dynamic_library->GetFunction(&GRBgetvarbyname, "GRBgetvarbyname");
532 gurobi_dynamic_library->GetFunction(&GRBgetconstrbyname,
533 "GRBgetconstrbyname");
534 gurobi_dynamic_library->GetFunction(&GRBgetpwlobj, "GRBgetpwlobj");
535 gurobi_dynamic_library->GetFunction(&GRBoptimize, "GRBoptimize");
536 gurobi_dynamic_library->GetFunction(&GRBoptimizeasync, "GRBoptimizeasync");
537 gurobi_dynamic_library->GetFunction(&GRBcopymodel, "GRBcopymodel");
538 gurobi_dynamic_library->GetFunction(&GRBfixedmodel, "GRBfixedmodel");
539 gurobi_dynamic_library->GetFunction(&GRBfeasrelax, "GRBfeasrelax");
540 gurobi_dynamic_library->GetFunction(&GRBgetcbwhatinfo, "GRBgetcbwhatinfo");
541 gurobi_dynamic_library->GetFunction(&GRBrelaxmodel, "GRBrelaxmodel");
542 gurobi_dynamic_library->GetFunction(&GRBconverttofixed, "GRBconverttofixed");
543 gurobi_dynamic_library->GetFunction(&GRBpresolvemodel, "GRBpresolvemodel");
544 gurobi_dynamic_library->GetFunction(&GRBiismodel, "GRBiismodel");
545 gurobi_dynamic_library->GetFunction(&GRBfeasibility, "GRBfeasibility");
546 gurobi_dynamic_library->GetFunction(&GRBlinearizemodel, "GRBlinearizemodel");
547 gurobi_dynamic_library->GetFunction(&GRBloadenvsyscb, "GRBloadenvsyscb");
548 gurobi_dynamic_library->GetFunction(&GRBreadmodel, "GRBreadmodel");
549 gurobi_dynamic_library->GetFunction(&GRBread, "GRBread");
550 gurobi_dynamic_library->GetFunction(&GRBwrite, "GRBwrite");
551 gurobi_dynamic_library->GetFunction(&GRBismodelfile, "GRBismodelfile");
552 gurobi_dynamic_library->GetFunction(&GRBfiletype, "GRBfiletype");
553 gurobi_dynamic_library->GetFunction(&GRBisrecordfile, "GRBisrecordfile");
554 gurobi_dynamic_library->GetFunction(&GRBnewmodel, "GRBnewmodel");
555 gurobi_dynamic_library->GetFunction(&GRBloadmodel, "GRBloadmodel");
556 gurobi_dynamic_library->GetFunction(&GRBXloadmodel, "GRBXloadmodel");
557 gurobi_dynamic_library->GetFunction(&GRBaddvar, "GRBaddvar");
558 gurobi_dynamic_library->GetFunction(&GRBaddvars, "GRBaddvars");
559 gurobi_dynamic_library->GetFunction(&GRBXaddvars, "GRBXaddvars");
560 gurobi_dynamic_library->GetFunction(&GRBaddconstr, "GRBaddconstr");
561 gurobi_dynamic_library->GetFunction(&GRBaddconstrs, "GRBaddconstrs");
562 gurobi_dynamic_library->GetFunction(&GRBXaddconstrs, "GRBXaddconstrs");
563 gurobi_dynamic_library->GetFunction(&GRBaddrangeconstr, "GRBaddrangeconstr");
564 gurobi_dynamic_library->GetFunction(&GRBaddrangeconstrs,
565 "GRBaddrangeconstrs");
566 gurobi_dynamic_library->GetFunction(&GRBXaddrangeconstrs,
567 "GRBXaddrangeconstrs");
568 gurobi_dynamic_library->GetFunction(&GRBaddsos, "GRBaddsos");
569 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrMax,
570 "GRBaddgenconstrMax");
571 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrMin,
572 "GRBaddgenconstrMin");
573 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrAbs,
574 "GRBaddgenconstrAbs");
575 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrAnd,
576 "GRBaddgenconstrAnd");
577 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrOr, "GRBaddgenconstrOr");
578 gurobi_dynamic_library->GetFunction(&GRBaddgenconstrIndicator,
579 "GRBaddgenconstrIndicator");
580 gurobi_dynamic_library->GetFunction(&GRBaddqconstr, "GRBaddqconstr");
581 gurobi_dynamic_library->GetFunction(&GRBaddcone, "GRBaddcone");
582 gurobi_dynamic_library->GetFunction(&GRBaddqpterms, "GRBaddqpterms");
583 gurobi_dynamic_library->GetFunction(&GRBdelvars, "GRBdelvars");
584 gurobi_dynamic_library->GetFunction(&GRBdelconstrs, "GRBdelconstrs");
585 gurobi_dynamic_library->GetFunction(&GRBdelsos, "GRBdelsos");
586 gurobi_dynamic_library->GetFunction(&GRBdelgenconstrs, "GRBdelgenconstrs");
587 gurobi_dynamic_library->GetFunction(&GRBdelqconstrs, "GRBdelqconstrs");
588 gurobi_dynamic_library->GetFunction(&GRBdelq, "GRBdelq");
589 gurobi_dynamic_library->GetFunction(&GRBchgcoeffs, "GRBchgcoeffs");
590 gurobi_dynamic_library->GetFunction(&GRBXchgcoeffs, "GRBXchgcoeffs");
591 gurobi_dynamic_library->GetFunction(&GRBsetpwlobj, "GRBsetpwlobj");
592 gurobi_dynamic_library->GetFunction(&GRBupdatemodel, "GRBupdatemodel");
593 gurobi_dynamic_library->GetFunction(&GRBresetmodel, "GRBresetmodel");
594 gurobi_dynamic_library->GetFunction(&GRBfreemodel, "GRBfreemodel");
595 gurobi_dynamic_library->GetFunction(&GRBcomputeIIS, "GRBcomputeIIS");
596 gurobi_dynamic_library->GetFunction(&GRBFSolve, "GRBFSolve");
597 gurobi_dynamic_library->GetFunction(&GRBBinvColj, "GRBBinvColj");
598 gurobi_dynamic_library->GetFunction(&GRBBinvj, "GRBBinvj");
599 gurobi_dynamic_library->GetFunction(&GRBBSolve, "GRBBSolve");
600 gurobi_dynamic_library->GetFunction(&GRBBinvi, "GRBBinvi");
601 gurobi_dynamic_library->GetFunction(&GRBBinvRowi, "GRBBinvRowi");
602 gurobi_dynamic_library->GetFunction(&GRBgetBasisHead, "GRBgetBasisHead");
603 gurobi_dynamic_library->GetFunction(&GRBstrongbranch, "GRBstrongbranch");
604 gurobi_dynamic_library->GetFunction(&GRBcheckmodel, "GRBcheckmodel");
605 gurobi_dynamic_library->GetFunction(&GRBsetsignal, "GRBsetsignal");
606 gurobi_dynamic_library->GetFunction(&GRBterminate, "GRBterminate");
607 gurobi_dynamic_library->GetFunction(&GRBreplay, "GRBreplay");
608 gurobi_dynamic_library->GetFunction(&GRBsetobjective, "GRBsetobjective");
609 gurobi_dynamic_library->GetFunction(&GRBsetobjectiven, "GRBsetobjectiven");
610 gurobi_dynamic_library->GetFunction(&GRBmsg, "GRBmsg");
611 gurobi_dynamic_library->GetFunction(&GRBgetlogfile, "GRBgetlogfile");
612 gurobi_dynamic_library->GetFunction(&GRBsetlogfile, "GRBsetlogfile");
613 gurobi_dynamic_library->GetFunction(&GRBgetintparam, "GRBgetintparam");
614 gurobi_dynamic_library->GetFunction(&GRBgetdblparam, "GRBgetdblparam");
615 gurobi_dynamic_library->GetFunction(&GRBgetstrparam, "GRBgetstrparam");
616 gurobi_dynamic_library->GetFunction(&GRBgetintparaminfo,
617 "GRBgetintparaminfo");
618 gurobi_dynamic_library->GetFunction(&GRBgetdblparaminfo,
619 "GRBgetdblparaminfo");
620 gurobi_dynamic_library->GetFunction(&GRBgetstrparaminfo,
621 "GRBgetstrparaminfo");
622 gurobi_dynamic_library->GetFunction(&GRBsetparam, "GRBsetparam");
623 gurobi_dynamic_library->GetFunction(&GRBsetintparam, "GRBsetintparam");
624 gurobi_dynamic_library->GetFunction(&GRBsetdblparam, "GRBsetdblparam");
625 gurobi_dynamic_library->GetFunction(&GRBsetstrparam, "GRBsetstrparam");
626 gurobi_dynamic_library->GetFunction(&GRBgetparamtype, "GRBgetparamtype");
627 gurobi_dynamic_library->GetFunction(&GRBresetparams, "GRBresetparams");
628 gurobi_dynamic_library->GetFunction(&GRBcopyparams, "GRBcopyparams");
629 gurobi_dynamic_library->GetFunction(&GRBwriteparams, "GRBwriteparams");
630 gurobi_dynamic_library->GetFunction(&GRBreadparams, "GRBreadparams");
631 gurobi_dynamic_library->GetFunction(&GRBgetnumparams, "GRBgetnumparams");
632 gurobi_dynamic_library->GetFunction(&GRBgetparamname, "GRBgetparamname");
633 gurobi_dynamic_library->GetFunction(&GRBgetnumattributes,
634 "GRBgetnumattributes");
635 gurobi_dynamic_library->GetFunction(&GRBgetattrname, "GRBgetattrname");
636 gurobi_dynamic_library->GetFunction(&GRBloadenv, "GRBloadenv");
637 gurobi_dynamic_library->GetFunction(&GRBloadenvadv, "GRBloadenvadv");
638 gurobi_dynamic_library->GetFunction(&GRBloadclientenv, "GRBloadclientenv");
639 gurobi_dynamic_library->GetFunction(&GRBloadclientenvadv,
640 "GRBloadclientenvadv");
641 gurobi_dynamic_library->GetFunction(&GRBloadcloudenv, "GRBloadcloudenv");
642 gurobi_dynamic_library->GetFunction(&GRBloadcloudenvadv,
643 "GRBloadcloudenvadv");
644 gurobi_dynamic_library->GetFunction(&GRBgetenv, "GRBgetenv");
645 gurobi_dynamic_library->GetFunction(&GRBgetconcurrentenv,
646 "GRBgetconcurrentenv");
647 gurobi_dynamic_library->GetFunction(&GRBdiscardconcurrentenvs,
648 "GRBdiscardconcurrentenvs");
649 gurobi_dynamic_library->GetFunction(&GRBgetmultiobjenv, "GRBgetmultiobjenv");
650 gurobi_dynamic_library->GetFunction(&GRBdiscardmultiobjenvs,
651 "GRBdiscardmultiobjenvs");
652 gurobi_dynamic_library->GetFunction(&GRBreleaselicense, "GRBreleaselicense");
653 gurobi_dynamic_library->GetFunction(&GRBfreeenv, "GRBfreeenv");
654 gurobi_dynamic_library->GetFunction(&GRBgeterrormsg, "GRBgeterrormsg");
655 gurobi_dynamic_library->GetFunction(&GRBgetmerrormsg, "GRBgetmerrormsg");
656 gurobi_dynamic_library->GetFunction(&GRBversion, "GRBversion");
657 gurobi_dynamic_library->GetFunction(&GRBplatform, "GRBplatform");
658 gurobi_dynamic_library->GetFunction(&GRBtunemodel, "GRBtunemodel");
659 gurobi_dynamic_library->GetFunction(&GRBtunemodels, "GRBtunemodels");
660 gurobi_dynamic_library->GetFunction(&GRBgettuneresult, "GRBgettuneresult");
661 gurobi_dynamic_library->GetFunction(&GRBgettunelog, "GRBgettunelog");
662 gurobi_dynamic_library->GetFunction(&GRBtunemodeladv, "GRBtunemodeladv");
663 gurobi_dynamic_library->GetFunction(&GRBsync, "GRBsync");
664}
665
666std::vector<std::string> GurobiDynamicLibraryPotentialPaths() {
667 std::vector<std::string> potential_paths;
668 const std::vector<std::string> kGurobiVersions = {"911", "910", "903", "902",
669 "811", "801", "752"};
670
671 // Look for libraries pointed by GUROBI_HOME first.
672 const char* gurobi_home_from_env = getenv("GUROBI_HOME");
673 if (gurobi_home_from_env != nullptr) {
674 for (const std::string& version : kGurobiVersions) {
675 const std::string lib = version.substr(0, 2);
676#if defined(_MSC_VER) // Windows
677 potential_paths.push_back(
678 absl::StrCat(gurobi_home_from_env, "\\bin\\gurobi", lib, ".dll"));
679#elif defined(__APPLE__) // OS X
680 potential_paths.push_back(
681 absl::StrCat(gurobi_home_from_env, "/lib/libgurobi", lib, ".dylib"));
682#elif defined(__GNUC__) // Linux
683 potential_paths.push_back(
684 absl::StrCat(gurobi_home_from_env, "/lib/libgurobi", lib, ".so"));
685 potential_paths.push_back(
686 absl::StrCat(gurobi_home_from_env, "/lib64/libgurobi", lib, ".so"));
687#else
688 LOG(ERROR) << "OS Not recognized by gurobi/environment.cc."
689 << " You won't be able to use Gurobi.";
690#endif
691 }
692 }
693
694 // Search for canonical places.
695 for (const std::string& version : kGurobiVersions) {
696 const std::string lib = version.substr(0, 2);
697#if defined(_MSC_VER) // Windows
698 potential_paths.push_back(absl::StrCat("C:\\Program Files\\gurobi", version,
699 "\\win64\\bin\\gurobi", lib,
700 ".dll"));
701#elif defined(__APPLE__) // OS X
702 potential_paths.push_back(absl::StrCat(
703 "/Library/gurobi", version, "/mac64/lib/libgurobi", lib, ".dylib"));
704#elif defined(__GNUC__) // Linux
705 potential_paths.push_back(absl::StrCat(
706 "/opt/gurobi", version, "/linux64/lib/libgurobi", lib, ".so"));
707 potential_paths.push_back(absl::StrCat(
708 "/opt/gurobi", version, "/linux64/lib64/libgurobi", lib, ".so"));
709 potential_paths.push_back(
710 absl::StrCat("/opt/gurobi/linux64/lib/libgurobi", lib, ".so"));
711 potential_paths.push_back(
712 absl::StrCat("/opt/gurobi/linux64/lib64/libgurobi", lib, ".so"));
713#else
714 LOG(ERROR) << "OS Not recognized by gurobi/environment.cc."
715 << " You won't be able to use Gurobi.";
716#endif
717 }
718 return potential_paths;
719}
720
722 std::vector<std::string> potential_paths) {
723 static std::once_flag gurobi_loading_done;
724 static absl::Status gurobi_load_status;
725 static DynamicLibrary gurobi_library;
726 static absl::Mutex mutex;
727
728 absl::MutexLock lock(&mutex);
729
730 std::call_once(gurobi_loading_done, [&potential_paths]() {
731 const std::vector<std::string> canonical_paths =
733 potential_paths.insert(potential_paths.end(), canonical_paths.begin(),
734 canonical_paths.end());
735 for (const std::string& path : potential_paths) {
736 if (gurobi_library.TryToLoad(path)) {
737 LOG(INFO) << "Found the Gurobi library in '" << path << ".";
738 break;
739 }
740 }
741
742 if (gurobi_library.LibraryIsLoaded()) {
743 LoadGurobiFunctions(&gurobi_library);
744 gurobi_load_status = absl::OkStatus();
745 } else {
746 gurobi_load_status = absl::NotFoundError(absl::StrCat(
747 "Could not find the Gurobi shared library. Looked in: [",
748 absl::StrJoin(potential_paths, "', '"),
749 "]. If you know where it"
750 " is, pass the full path to 'LoadGurobiDynamicLibrary()'."));
751 }
752 });
753 return gurobi_load_status;
754}
755
756absl::StatusOr<GRBenv*> GetGurobiEnv() {
758
759 GRBenv* env = nullptr;
760
761 if (GRBloadenv(&env, nullptr) != 0 || env == nullptr) {
762 return absl::FailedPreconditionError(
763 absl::StrCat("Found the Gurobi shared library, but could not create "
764 "Gurobi environment: is Gurobi licensed on this machine?",
765 GRBgeterrormsg(env)));
766 }
767 return env;
768}
769
770} // namespace operations_research
#define LOG(severity)
Definition: base/logging.h:416
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
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: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, FILE *logfile)> GRBsetlogfile
Definition: environment.cc:361
std::function< int(GRBenv *env, const char *paramname, double *valueP, double *minP, double *maxP, double *defP)> GRBgetdblparaminfo
Definition: environment.cc:373
std::function< int(GRBenv *env, const char *paramname, int *valueP)> GRBgetintparam
Definition: environment.cc:363
std::function< int(GRBenv **envP, const char *logfilename, const char *accessID, const char *secretKey, const char *pool)> GRBloadcloudenv
Definition: environment.cc:413
std::function< int(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:421
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:390
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:400
std::function< int(GRBmodel *model, GRBsvec *b, GRBsvec *x)> GRBBSolve
Definition: environment.cc:340
std::function< char *(void)> GRBplatform
Definition: environment.cc:430
std::function< int(GRBenv *env, int i, char **paramnameP)> GRBgetparamname
Definition: environment.cc:391
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:422
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:428
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetparam
Definition: environment.cc:377
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:367
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:388
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:379
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:404
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(GRBenv *env, FILE **logfileP)> GRBgetlogfile
Definition: environment.cc:360
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:370
std::function< int(GRBenv **envP, const char *logfilename)> GRBloadenv
Definition: environment.cc:396
std::function< GRBenv *(GRBmodel *model, int num)> GRBgetconcurrentenv
Definition: environment.cc:420
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:387
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:410
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:365
std::function< const char *(GRBenv *env)> GRBgeterrormsg
Definition: environment.cc:426
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:756
std::function< GRBenv *(GRBmodel *model)> GRBgetenv
Definition: environment.cc:419
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:383
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:441
std::function< int(GRBmodel *model, GRBmodel *ignore, GRBmodel *hint)> GRBtunemodeladv
Definition: environment.cc:438
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:386
std::function< int(GRBmodel *model)> GRBsync
Definition: environment.cc:439
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:389
std::function< void(GRBenv *env)> GRBreleaselicense
Definition: environment.cc:424
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:427
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:418
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:431
std::function< int(GRBmodel *model, int i)> GRBgettuneresult
Definition: environment.cc:435
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:436
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:666
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:30
std::function< void(GRBmodel *model)> GRBdiscardmultiobjenvs
Definition: environment.cc:423
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:384
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:721
std::function< void(GRBenv *env)> GRBfreeenv
Definition: environment.cc:425
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:394
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:434
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:375
std::function< int(GRBenv *env, const char *paramname, double value)> GRBsetdblparam
Definition: environment.cc:381
std::function< int(GRBmodel *model)> GRBgetnumattributes
Definition: environment.cc:393
int64_t weight
Definition: pack.cc:510
int index
Definition: pack.cc:509
#define RETURN_IF_ERROR(expr)
Definition: status_macros.h:29
std::string message
Definition: trace.cc:398