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"
33 if (!status.ok() || status.value() ==
nullptr) {
47std::function<int(
GRBenv**,
const char*,
const char*,
const char*,
int,
50std::function<int(
GRBmodel*
model,
const char* attrname,
int* datatypeP,
51 int* sizeP,
int* settableP)>
55std::function<int(
GRBmodel*
model,
const char* attrname,
int* valueP)>
57std::function<int(
GRBmodel*
model,
const char* attrname,
int newvalue)>
59std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
62std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
65std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
68std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
71std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
74std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
77std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
80std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
83std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
86std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
89std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
92std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
95std::function<int(
GRBmodel*
model,
const char* attrname,
double* valueP)>
97std::function<int(
GRBmodel*
model,
const char* attrname,
double newvalue)>
99std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
102std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
105std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
108std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
111std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
114std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
117std::function<int(
GRBmodel*
model,
const char* attrname,
char** valueP)>
119std::function<int(
GRBmodel*
model,
const char* attrname,
const char* newvalue)>
121std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
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,
130std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
133std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
136std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
148std::function<int(
void* cbdata,
int where,
int what,
void* resultP)>
GRBcbget =
150std::function<int(
void* cbdata,
const char* paramname,
const char* newvalue)>
152std::function<int(
void* cbdata,
const double* solution,
double* objvalP)>
154std::function<int(
void* cbdata,
int cutlen,
const int* cutind,
155 const double* cutval,
char cutsense,
double cutrhs)>
157std::function<int(
void* cbdata,
int lazylen,
const int* lazyind,
158 const double* lazyval,
char lazysense,
double lazyrhs)>
162std::function<int(
GRBmodel*
model,
int* numnzP,
int* cbeg,
int* cind,
163 double* cval,
int start,
int len)>
165std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* cbeg,
int* cind,
166 double* cval,
int start,
int len)>
168std::function<int(
GRBmodel*
model,
int* numnzP,
int* vbeg,
int* vind,
169 double* vval,
int start,
int len)>
171std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* vbeg,
int* vind,
172 double* vval,
int start,
int len)>
174std::function<int(
GRBmodel*
model,
int* nummembersP,
int* sostype,
int* beg,
175 int* ind,
double*
weight,
int start,
int len)>
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,
188std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
191std::function<int(
GRBmodel*
model,
int genconstr,
int* binvarP,
int* binvalP,
192 int* nvarsP,
int* vars,
double* vals,
char* senseP,
195std::function<int(
GRBmodel*
model,
int* numqnzP,
int* qrow,
int* qcol,
198std::function<int(
GRBmodel*
model,
int qconstr,
int* numlnzP,
int* lind,
199 double* lval,
int* numqnzP,
int* qrow,
int* qcol,
206std::function<int(
GRBmodel*
model,
int var,
int* pointsP,
double* x,
double* y)>
212std::function<int(
GRBmodel*
model,
int relaxobjtype,
int minrelax,
213 double* lbpen,
double* ubpen,
double* rhspen,
216std::function<int(
void* cbdata,
int what,
int* typeP,
int* sizeP)>
224std::function<int(
GRBenv** envP,
const char* logfilename,
233std::function<int(
GRBenv* env,
const char* filename,
GRBmodel** modelP)>
240std::function<int(
GRBenv* env,
GRBmodel** modelP,
const char* Pname,
241 int numvars,
double* obj,
double* lb,
double* ub,
char* vtype,
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)>
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)>
256std::function<int(
GRBmodel*
model,
int numnz,
int* vind,
double* vval,
257 double obj,
double lb,
double ub,
char vtype,
258 const char* varname)>
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)>
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)>
268std::function<int(
GRBmodel*
model,
int numnz,
int* cind,
double* cval,
269 char sense,
double rhs,
const char* constrname)>
271std::function<int(
GRBmodel*
model,
int numconstrs,
int numnz,
int* cbeg,
272 int* cind,
double* cval,
char* sense,
double* rhs,
275std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
276 int* cind,
double* cval,
char* sense,
double* rhs,
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,
286std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
287 int* cind,
double* cval,
double* lower,
double* upper,
290std::function<int(
GRBmodel*
model,
int numsos,
int nummembers,
int* types,
291 int* beg,
int* ind,
double*
weight)>
294 const int* vars,
double constant)>
297 const int* vars,
double constant)>
307std::function<int(
GRBmodel* lp,
const char*
name,
int binvar,
int binval,
308 int nvars,
const int* vars,
const double* vals,
char sense,
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)>
317std::function<int(
GRBmodel*
model,
int numqnz,
int* qrow,
int* qcol,
327std::function<int(
GRBmodel*
model,
int cnt,
int* cind,
int* vind,
double* val)>
329std::function<int(
GRBmodel*
model,
size_t cnt,
int* cind,
int* vind,
332std::function<int(
GRBmodel*
model,
int var,
int points,
double* x,
double* y)>
345std::function<int(
GRBmodel*
model,
int num,
int* cand,
double* downobjbd,
346 double* upobjbd,
int* statusP)>
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,
357 double abstol,
double reltol,
const char*
name,
358 double constant,
int lnz,
int* lind,
double* lval)>
363std::function<int(
GRBenv* env,
const char* paramname,
int* valueP)>
365std::function<int(
GRBenv* env,
const char* paramname,
double* valueP)>
367std::function<int(
GRBenv* env,
const char* paramname,
char* valueP)>
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)>
379std::function<int(
GRBenv* env,
const char* paramname,
int value)>
381std::function<int(
GRBenv* env,
const char* paramname,
double value)>
383std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
398std::function<int(
GRBenv** envP,
const char* logfilename,
int apitype,
399 int major,
int minor,
int tech,
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,
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,
429std::function<void(
int* majorP,
int* minorP,
int* technicalP)>
GRBversion =
451 "GRBisattravailable");
455 "GRBgetintattrelement");
457 "GRBsetintattrelement");
459 "GRBgetintattrarray");
461 "GRBsetintattrarray");
465 "GRBgetcharattrelement");
467 "GRBsetcharattrelement");
469 "GRBgetcharattrarray");
471 "GRBsetcharattrarray");
473 "GRBgetcharattrlist");
475 "GRBsetcharattrlist");
479 "GRBgetdblattrelement");
481 "GRBsetdblattrelement");
483 "GRBgetdblattrarray");
485 "GRBsetdblattrarray");
491 "GRBgetstrattrelement");
493 "GRBsetstrattrelement");
495 "GRBgetstrattrarray");
497 "GRBsetstrattrarray");
501 "GRBsetcallbackfunc");
503 "GRBgetcallbackfunc");
505 "GRBsetlogcallbackfunc");
507 "GRBsetlogcallbackfuncenv");
520 "GRBgetgenconstrMax");
522 "GRBgetgenconstrMin");
524 "GRBgetgenconstrAbs");
526 "GRBgetgenconstrAnd");
529 "GRBgetgenconstrIndicator");
534 "GRBgetconstrbyname");
566 "GRBaddrangeconstrs");
568 "GRBXaddrangeconstrs");
571 "GRBaddgenconstrMax");
573 "GRBaddgenconstrMin");
575 "GRBaddgenconstrAbs");
577 "GRBaddgenconstrAnd");
580 "GRBaddgenconstrIndicator");
618 "GRBgetintparaminfo");
620 "GRBgetdblparaminfo");
622 "GRBgetstrparaminfo");
635 "GRBgetnumattributes");
641 "GRBloadclientenvadv");
644 "GRBloadcloudenvadv");
647 "GRBgetconcurrentenv");
649 "GRBdiscardconcurrentenvs");
652 "GRBdiscardmultiobjenvs");
668 std::vector<std::string> potential_paths;
669 const std::vector<std::string> kGurobiVersions = {
670 "951",
"950",
"911",
"910",
"903",
"902",
"811",
"801",
"752"};
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);
678 potential_paths.push_back(
679 absl::StrCat(gurobi_home_from_env,
"\\bin\\gurobi", lib,
".dll"));
680#elif defined(__APPLE__)
681 potential_paths.push_back(
682 absl::StrCat(gurobi_home_from_env,
"/lib/libgurobi", lib,
".dylib"));
683#elif defined(__GNUC__)
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"));
689 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
690 <<
" You won't be able to use Gurobi.";
696 for (
const std::string& version : kGurobiVersions) {
697 const std::string lib = version.substr(0, 2);
699 potential_paths.push_back(absl::StrCat(
"C:\\Program Files\\gurobi", version,
700 "\\win64\\bin\\gurobi", lib,
702#elif defined(__APPLE__)
703 potential_paths.push_back(absl::StrCat(
704 "/Library/gurobi", version,
"/mac64/lib/libgurobi", lib,
".dylib"));
705#elif defined(__GNUC__)
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"));
715 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
716 <<
" You won't be able to use Gurobi.";
719 return potential_paths;
723 std::vector<std::string> potential_paths) {
724 static std::once_flag gurobi_loading_done;
725 static absl::Status gurobi_load_status;
727 static absl::Mutex mutex;
729 absl::MutexLock lock(&mutex);
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) {
738 LOG(
INFO) <<
"Found the Gurobi library in '" << path <<
".";
745 gurobi_load_status = absl::OkStatus();
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()'."));
754 return gurobi_load_status;
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?",
std::function< T > GetFunction(const char *function_name)
bool TryToLoad(const std::string &library_name)
bool LibraryIsLoaded() const
#define THREADCREATECB_ARGS
struct _GRBmodel GRBmodel
#define THREADJOINCB_ARGS
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
std::function< int(GRBmodel *model, int *bhead)> GRBgetBasisHead
std::function< int(GRBmodel *model, int(GUROBI_STDCALL *cb)(char *msg))> GRBsetlogcallbackfunc
std::function< int(GRBmodel *model, int i, GRBsvec *x)> GRBBinvi
std::function< int(GRBmodel *model, const char *attrname, int element, char *valueP)> GRBgetcharattrelement
std::function< int(GRBenv *env, FILE *logfile)> GRBsetlogfile
std::function< int(GRBenv *env, const char *paramname, double *valueP, double *minP, double *maxP, double *defP)> GRBgetdblparaminfo
std::function< int(GRBenv *env, const char *paramname, int *valueP)> GRBgetintparam
std::function< int(GRBenv **envP, const char *logfilename, const char *accessID, const char *secretKey, const char *pool)> GRBloadcloudenv
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMin
std::function< int(GRBmodel *model, int j, GRBsvec *x)> GRBBinvj
std::function< int(GRBmodel *model, int numnz, int *cind, double *cval, char sense, double rhs, const char *constrname)> GRBaddconstr
std::function< int(GRBmodel *model)> GRBcomputeIIS
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars)> GRBgetgenconstrOr
std::function< int(GRBmodel *model, const char *attrname, double *valueP)> GRBgetdblattr
std::function< GRBmodel *(GRBmodel *model)> GRBlinearizemodel
std::function< void(GRBmodel *model)> GRBdiscardconcurrentenvs
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char **values)> GRBgetstrattrlist
std::function< int(GRBenv *env)> GRBgetnumparams
std::function< GRBmodel *(GRBmodel *model)> GRBcopymodel
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
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, double *newvalues)> GRBsetdblattrlist
std::function< int(GRBmodel *model, int *nummembersP, int *sostype, int *beg, int *ind, double *weight, int start, int len)> GRBgetsos
std::function< int(GRBmodel *model, int numnz, int *vind, double *vval, double obj, double lb, double ub, char vtype, const char *varname)> GRBaddvar
std::function< int(const char *filename)> GRBisrecordfile
std::function< GRBmodel *(GRBmodel *model)> GRBiismodel
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
std::function< int(GRBmodel *model, GRBsvec *b, GRBsvec *x)> GRBBSolve
std::function< char *(void)> GRBplatform
std::function< int(GRBenv *env, int i, char **paramnameP)> GRBgetparamname
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelgenconstrs
std::function< GRBenv *(GRBmodel *model, int num)> GRBgetmultiobjenv
std::function< int(GRBmodel *model, const char *name, int *indexP)> GRBgetvarbyname
std::function< int(GRBmodel *model)> GRBresetmodel
std::function< void(int *majorP, int *minorP, int *technicalP)> GRBversion
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetparam
std::function< int(GRBmodel *model, const char *attrname, int newvalue)> GRBsetintattr
std::function< int(GRBenv *env, const char *paramname, char *valueP)> GRBgetstrparam
std::function< int(GRBmodel *model)> GRBoptimizeasync
std::function< int(void *cbdata, int lazylen, const int *lazyind, const double *lazyval, char lazysense, double lazyrhs)> GRBcblazy
std::function< int(GRBmodel *model, const char *filename)> GRBread
std::function< int(GRBenv *env, const char *filename)> GRBwriteparams
std::function< void(GRBenv *env, const char *message)> GRBmsg
std::function< int(GRBmodel *model, int var, int points, double *x, double *y)> GRBsetpwlobj
std::function< int(GRBmodel *model, const char *attrname, int first, int len, int *values)> GRBgetintattrarray
std::function< GRBmodel *(GRBmodel *model)> GRBfixedmodel
std::function< int(GRBmodel *model, int numconstrs, int numnz, int *cbeg, int *cind, double *cval, char *sense, double *rhs, char **constrnames)> GRBaddconstrs
std::function< int(GRBmodel *model, int constr, int var, double *valP)> GRBgetcoeff
std::function< int(GRBenv *env, const char *paramname, int value)> GRBsetintparam
std::function< int(GRBmodel *model, const char *name, int resvar, int argvar)> GRBaddgenconstrAbs
std::function< int(void *cbdata, int where, int what, void *resultP)> GRBcbget
std::function< int(void *cbdata, const char *paramname, const char *newvalue)> GRBcbsetparam
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
std::function< int(const char *filename)> GRBfiletype
std::function< int(GRBenv **envP, const char *logfilename, const char *computeservers, int port, const char *password, int priority, double timeout)> GRBloadclientenv
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *argvarP)> GRBgetgenconstrAbs
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
std::function< int(GRBenv *env, FILE **logfileP)> GRBgetlogfile
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char *values)> GRBgetcharattrarray
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
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, int *values)> GRBgetintattrlist
std::function< GRBmodel *(GRBmodel *model)> GRBpresolvemodel
std::function< int(GRBenv *env, const char *paramname, int *valueP, int *minP, int *maxP, int *defP)> GRBgetintparaminfo
std::function< int(GRBenv **envP, const char *logfilename)> GRBloadenv
std::function< GRBenv *(GRBmodel *model, int num)> GRBgetconcurrentenv
std::function< int(GRBmodel *model, const char *attrname, int element, int *valueP)> GRBgetintattrelement
std::function< int(GRBmodel *model, int qconstr, int *numlnzP, int *lind, double *lval, int *numqnzP, int *qrow, int *qcol, double *qval)> GRBgetqconstr
std::function< int(GRBenv *dest, GRBenv *src)> GRBcopyparams
std::function< int(GRBmodel *model, const char *attrname, int first, int len, double *newvalues)> GRBsetdblattrarray
std::function< int(GRBmodel *model, size_t *numnzP, size_t *vbeg, int *vind, double *vval, int start, int len)> GRBXgetvars
std::function< int(GRBmodel *model)> GRBfreemodel
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
std::function< int(GRBmodel *model, int nummembers, int *members)> GRBaddcone
std::function< int(GRBmodel *model, const char *attrname, int element, char **valueP)> GRBgetstrattrelement
std::function< void(GRBmodel *model)> GRBterminate
std::function< int(GRBmodel *model, int numqnz, int *qrow, int *qcol, double *qval)> GRBaddqpterms
std::function< int(GRBenv *env, const char *paramname, double *valueP)> GRBgetdblparam
std::function< const char *(GRBenv *env)> GRBgeterrormsg
std::function< int(GRBmodel *model, int cnt, int *cind, int *vind, double *val)> GRBchgcoeffs
absl::StatusOr< GRBenv * > GetGurobiEnv()
std::function< GRBenv *(GRBmodel *model)> GRBgetenv
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelconstrs
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars, double *constantP)> GRBgetgenconstrMin
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMax
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetstrparam
std::function< int(GRBmodel *model)> GRBcheckmodel
std::function< int(GRBmodel *model, const char *attrname, int element, double newvalue)> GRBsetdblattrelement
std::function< int(GRBmodel *model, size_t cnt, int *cind, int *vind, double *val)> GRBXchgcoeffs
std::function< int(GRBmodel *model)> GRBconverttofixed
std::function< int(GRBmodel *model, const char *attrname, int *datatypeP, int *sizeP, int *settableP)> GRBgetattrinfo
std::function< GRBmodel *(GRBmodel *model)> GRBfeasibility
void LoadGurobiFunctions(DynamicLibrary *gurobi_dynamic_library)
std::function< int(GRBmodel *model, GRBmodel *ignore, GRBmodel *hint)> GRBtunemodeladv
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
std::function< int(GRBenv *env)> GRBresetparams
std::function< int(GRBmodel *model)> GRBsync
std::function< int(GRBmodel *model, const char *attrname, int first, int len, double *values)> GRBgetdblattrarray
std::function< int(GRBmodel *model, int var, int *pointsP, double *x, double *y)> GRBgetpwlobj
std::function< int(GRBenv *env, const char *filename)> GRBreadparams
std::function< void(GRBenv *env)> GRBreleaselicense
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelqconstrs
std::function< int(GRBmodel *model, const char *attrname, int element, const char *newvalue)> GRBsetstrattrelement
std::function< const char *(GRBmodel *model)> GRBgetmerrormsg
std::function< int(GRBmodel *model)> GRBupdatemodel
std::function< int(GRBmodel *model, int sense, double constant, int lnz, int *lind, double *lval, int qnz, int *qrow, int *qcol, double *qval)> GRBsetobjective
std::function< GRBmodel *(GRBmodel *model)> GRBrelaxmodel
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrAnd
std::function< int(GRBenv *env, const char *filename, GRBmodel **modelP)> GRBreadmodel
std::function< int(GRBmodel *model)> GRBdelq
std::function< int(GRBmodel *model, int numnz, int *cind, double *cval, double lower, double upper, const char *constrname)> GRBaddrangeconstr
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, double *values)> GRBgetdblattrlist
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
std::function< int(GRBmodel *model, const char *attrname, int element, char newvalue)> GRBsetcharattrelement
std::function< int(GRBmodel *model)> GRBtunemodel
std::function< int(GRBmodel *model, int i)> GRBgettuneresult
std::function< int(GRBmodel *model, const char *attrname, int element, int newvalue)> GRBsetintattrelement
std::function< int(GRBmodel *model, GRBsvec *b, GRBsvec *x)> GRBFSolve
std::function< int(GRBmodel *model, int *numnzP, int *cbeg, int *cind, double *cval, int start, int len)> GRBgetconstrs
std::function< int(GRBmodel *model, const char *attrname, const char *newvalue)> GRBsetstrattr
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char *values)> GRBgetcharattrlist
std::function< int(GRBmodel *model, const char *attrname, int element, double *valueP)> GRBgetdblattrelement
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char **values)> GRBgetstrattrarray
std::function< int(GRBmodel *model, int i, char **logP)> GRBgettunelog
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
std::function< int(const char *filename)> GRBismodelfile
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrOr
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char **newvalues)> GRBsetstrattrlist
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelsos
std::function< int(GRBmodel *model, int num, int *cand, double *downobjbd, double *upobjbd, int *statusP)> GRBstrongbranch
std::vector< std::string > GurobiDynamicLibraryPotentialPaths()
std::function< int(void *cbdata, const double *solution, double *objvalP)> GRBcbsolution
std::function< int(GRBmodel *model, const char *attrname)> GRBisattravailable
std::function< int(void *cbdata, int what, int *typeP, int *sizeP)> GRBgetcbwhatinfo
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars, double *constantP)> GRBgetgenconstrMax
std::function< int(GRBmodel *model, int j, GRBsvec *x)> GRBBinvColj
std::function< int(GRBmodel *model)> GRBoptimize
std::function< int(GRBmodel *model, int *numqnzP, int *qrow, int *qcol, double *qval)> GRBgetq
std::function< int(GRBmodel *model, const char *filename)> GRBwrite
std::function< void(GRBmodel *model)> GRBsetsignal
std::function< int(GRBenv **, const char *, const char *, const char *, int, const char *)> GRBisqp
std::function< int(GRBmodel *model, int len, int *ind)> GRBdelvars
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char **newvalues)> GRBsetstrattrarray
bool GurobiIsCorrectlyInstalled()
std::function< void(GRBmodel *model)> GRBdiscardmultiobjenvs
std::function< int(GRBmodel *model, int genconstr, int *resvarP, int *nvarsP, int *vars)> GRBgetgenconstrAnd
std::function< int(GRBmodel *model, int relaxobjtype, int minrelax, double *lbpen, double *ubpen, double *rhspen, double *feasobjP)> GRBfeasrelax
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, char *newvalues)> GRBsetcharattrlist
std::function< int(GRBmodel *model, const char *attrname, char **valueP)> GRBgetstrattr
std::function< int(GRBmodel *model, const char *name, int *indexP)> GRBgetconstrbyname
std::function< int(GRBenv *env, const char *paramname)> GRBgetparamtype
std::function< int(GRBmodel *model, int numconstrs, size_t numnz, size_t *cbeg, int *cind, double *cval, char *sense, double *rhs, char **constrnames)> GRBXaddconstrs
std::function< int(GRBenv *env, GRBmodel **modelP, const char *Pname, int numvars, double *obj, double *lb, double *ub, char *vtype, char **varnames)> GRBnewmodel
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
absl::Status LoadGurobiDynamicLibrary(std::vector< std::string > potential_paths)
std::function< void(GRBenv *env)> GRBfreeenv
std::function< int(GRBmodel *model, const char *attrname, int len, int *ind, int *newvalues)> GRBsetintattrlist
std::function< int(GRBmodel *model, int i, char **attrnameP)> GRBgetattrname
std::function< int(GRBmodel *model, int numsos, int nummembers, int *types, int *beg, int *ind, double *weight)> GRBaddsos
std::function< int(GRBmodel *model, int genconstr, int *binvarP, int *binvalP, int *nvarsP, int *vars, double *vals, char *senseP, double *rhsP)> GRBgetgenconstrIndicator
std::function< int(GRBenv *env, int(GUROBI_STDCALL *cb)(char *msg))> GRBsetlogcallbackfuncenv
std::function< int(void *cbdata, int cutlen, const int *cutind, const double *cutval, char cutsense, double cutrhs)> GRBcbcut
std::function< int(GRBmodel *model, int numconstrs, size_t numnz, size_t *cbeg, int *cind, double *cval, double *lower, double *upper, char **constrnames)> GRBXaddrangeconstrs
std::function< int(int nummodels, GRBmodel **models, GRBmodel *ignore, GRBmodel *hint)> GRBtunemodels
std::function< int(GRBmodel *model, const char *attrname, double newvalue)> GRBsetdblattr
std::function< int(GRBmodel *model, const char *attrname, int first, int len, int *newvalues)> GRBsetintattrarray
std::function< int(GRBmodel *model, int(GUROBI_STDCALL *cb)(CB_ARGS), void *usrdata)> GRBsetcallbackfunc
std::function< int(GRBmodel *model, int *numnzP, int *vbeg, int *vind, double *vval, int start, int len)> GRBgetvars
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
std::function< int(GRBmodel *model, int(GUROBI_STDCALL **cbP)(CB_ARGS))> GRBgetcallbackfunc
std::function< int(GRBmodel *model, int numconstrs, int numnz, int *cbeg, int *cind, double *cval, double *lower, double *upper, char **constrnames)> GRBaddrangeconstrs
std::function< int(GRBmodel *model, const char *attrname, int first, int len, char *newvalues)> GRBsetcharattrarray
std::function< int(const char *filename)> GRBreplay
std::function< int(GRBmodel *model, const char *attrname, int *valueP)> GRBgetintattr
std::function< int(GRBmodel *model, int i, GRBsvec *x)> GRBBinvRowi
std::function< int(GRBenv *env, const char *paramname, char *valueP, char *defP)> GRBgetstrparaminfo
std::function< int(GRBenv *env, const char *paramname, double value)> GRBsetdblparam
std::function< int(GRBmodel *model)> GRBgetnumattributes
#define RETURN_IF_ERROR(expr)