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"
46std::function<int(
GRBenv**,
const char*,
const char*,
const char*,
int,
49std::function<int(
GRBmodel*
model,
const char* attrname,
int* datatypeP,
50 int* sizeP,
int* settableP)>
54std::function<int(
GRBmodel*
model,
const char* attrname,
int* valueP)>
56std::function<int(
GRBmodel*
model,
const char* attrname,
int newvalue)>
58std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
61std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
64std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
67std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
70std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
73std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
76std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
79std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
82std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
85std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
88std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
91std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
94std::function<int(
GRBmodel*
model,
const char* attrname,
double* valueP)>
96std::function<int(
GRBmodel*
model,
const char* attrname,
double newvalue)>
98std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
101std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
104std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
107std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
110std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
113std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
116std::function<int(
GRBmodel*
model,
const char* attrname,
char** valueP)>
118std::function<int(
GRBmodel*
model,
const char* attrname,
const char* newvalue)>
120std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
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,
129std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
132std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
135std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
147std::function<int(
void* cbdata,
int where,
int what,
void* resultP)>
GRBcbget =
149std::function<int(
void* cbdata,
const char* paramname,
const char* newvalue)>
151std::function<int(
void* cbdata,
const double* solution,
double* objvalP)>
153std::function<int(
void* cbdata,
int cutlen,
const int* cutind,
154 const double* cutval,
char cutsense,
double cutrhs)>
156std::function<int(
void* cbdata,
int lazylen,
const int* lazyind,
157 const double* lazyval,
char lazysense,
double lazyrhs)>
161std::function<int(
GRBmodel*
model,
int* numnzP,
int* cbeg,
int* cind,
162 double* cval,
int start,
int len)>
164std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* cbeg,
int* cind,
165 double* cval,
int start,
int len)>
167std::function<int(
GRBmodel*
model,
int* numnzP,
int* vbeg,
int* vind,
168 double* vval,
int start,
int len)>
170std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* vbeg,
int* vind,
171 double* vval,
int start,
int len)>
173std::function<int(
GRBmodel*
model,
int* nummembersP,
int* sostype,
int* beg,
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,
187std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
190std::function<int(
GRBmodel*
model,
int genconstr,
int* binvarP,
int* binvalP,
191 int* nvarsP,
int* vars,
double* vals,
char* senseP,
194std::function<int(
GRBmodel*
model,
int* numqnzP,
int* qrow,
int* qcol,
197std::function<int(
GRBmodel*
model,
int qconstr,
int* numlnzP,
int* lind,
198 double* lval,
int* numqnzP,
int* qrow,
int* qcol,
205std::function<int(
GRBmodel*
model,
int var,
int* pointsP,
double* x,
double* y)>
211std::function<int(
GRBmodel*
model,
int relaxobjtype,
int minrelax,
212 double* lbpen,
double* ubpen,
double* rhspen,
215std::function<int(
void* cbdata,
int what,
int* typeP,
int* sizeP)>
223std::function<int(
GRBenv** envP,
const char* logfilename,
232std::function<int(
GRBenv* env,
const char* filename,
GRBmodel** modelP)>
239std::function<int(
GRBenv* env,
GRBmodel** modelP,
const char* Pname,
240 int numvars,
double* obj,
double* lb,
double* ub,
char* vtype,
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)>
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)>
255std::function<int(
GRBmodel*
model,
int numnz,
int* vind,
double* vval,
256 double obj,
double lb,
double ub,
char vtype,
257 const char* varname)>
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)>
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)>
267std::function<int(
GRBmodel*
model,
int numnz,
int* cind,
double* cval,
268 char sense,
double rhs,
const char* constrname)>
270std::function<int(
GRBmodel*
model,
int numconstrs,
int numnz,
int* cbeg,
271 int* cind,
double* cval,
char* sense,
double* rhs,
274std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
275 int* cind,
double* cval,
char* sense,
double* rhs,
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,
285std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
286 int* cind,
double* cval,
double*
lower,
double*
upper,
289std::function<int(
GRBmodel*
model,
int numsos,
int nummembers,
int* types,
290 int* beg,
int* ind,
double*
weight)>
306std::function<int(
GRBmodel* lp,
const char*
name,
int binvar,
int binval,
307 int nvars,
const int* vars,
const double* vals,
char sense,
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)>
316std::function<int(
GRBmodel*
model,
int numqnz,
int* qrow,
int* qcol,
326std::function<int(
GRBmodel*
model,
int cnt,
int* cind,
int* vind,
double* val)>
328std::function<int(
GRBmodel*
model,
size_t cnt,
int* cind,
int* vind,
331std::function<int(
GRBmodel*
model,
int var,
int points,
double* x,
double* y)>
344std::function<int(
GRBmodel*
model,
int num,
int* cand,
double* downobjbd,
345 double* upobjbd,
int* statusP)>
350std::function<int(
const char* filename)>
GRBreplay =
nullptr;
352 int* lind,
double* lval,
int qnz,
int* qrow,
int* qcol,
356 double abstol,
double reltol,
const char*
name,
357 double constant,
int lnz,
int* lind,
double* lval)>
360std::function<int(
GRBenv* env,
const char* paramname,
int* valueP)>
362std::function<int(
GRBenv* env,
const char* paramname,
double* valueP)>
364std::function<int(
GRBenv* env,
const char* paramname,
char* valueP)>
366std::function<int(
GRBenv* env,
const char* paramname,
int* valueP,
int* minP,
367 int* maxP,
int* defP)>
369std::function<int(
GRBenv* env,
const char* paramname,
double* valueP,
370 double* minP,
double* maxP,
double* defP)>
372std::function<int(
GRBenv* env,
const char* paramname,
char* valueP,
char* defP)>
374std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
376std::function<int(
GRBenv* env,
const char* paramname,
int value)>
378std::function<int(
GRBenv* env,
const char* paramname,
double value)>
380std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
395std::function<int(
GRBenv** envP,
const char* logfilename,
int apitype,
396 int major,
int minor,
int tech,
399std::function<int(
GRBenv** envP,
const char* logfilename,
400 const char* computeservers,
int port,
const char* password,
401 int priority,
double timeout)>
403std::function<int(
GRBenv** envP,
const char* logfilename,
404 const char* computeservers,
int port,
const char* password,
405 int priority,
double timeout,
int apitype,
int major,
409std::function<int(
GRBenv** envP,
const char* logfilename,
const char* accessID,
410 const char* secretKey,
const char* pool)>
412std::function<int(
GRBenv** envP,
const char* logfilename,
const char* accessID,
413 const char* secretKey,
const char* pool,
int apitype,
414 int major,
int minor,
int tech,
426std::function<void(
int* majorP,
int* minorP,
int* technicalP)>
GRBversion =
448 "GRBisattravailable");
452 "GRBgetintattrelement");
454 "GRBsetintattrelement");
456 "GRBgetintattrarray");
458 "GRBsetintattrarray");
462 "GRBgetcharattrelement");
464 "GRBsetcharattrelement");
466 "GRBgetcharattrarray");
468 "GRBsetcharattrarray");
470 "GRBgetcharattrlist");
472 "GRBsetcharattrlist");
476 "GRBgetdblattrelement");
478 "GRBsetdblattrelement");
480 "GRBgetdblattrarray");
482 "GRBsetdblattrarray");
488 "GRBgetstrattrelement");
490 "GRBsetstrattrelement");
492 "GRBgetstrattrarray");
494 "GRBsetstrattrarray");
498 "GRBsetcallbackfunc");
500 "GRBgetcallbackfunc");
502 "GRBsetlogcallbackfunc");
504 "GRBsetlogcallbackfuncenv");
517 "GRBgetgenconstrMax");
519 "GRBgetgenconstrMin");
521 "GRBgetgenconstrAbs");
523 "GRBgetgenconstrAnd");
526 "GRBgetgenconstrIndicator");
531 "GRBgetconstrbyname");
563 "GRBaddrangeconstrs");
565 "GRBXaddrangeconstrs");
568 "GRBaddgenconstrMax");
570 "GRBaddgenconstrMin");
572 "GRBaddgenconstrAbs");
574 "GRBaddgenconstrAnd");
577 "GRBaddgenconstrIndicator");
613 "GRBgetintparaminfo");
615 "GRBgetdblparaminfo");
617 "GRBgetstrparaminfo");
630 "GRBgetnumattributes");
636 "GRBloadclientenvadv");
639 "GRBloadcloudenvadv");
642 "GRBgetconcurrentenv");
644 "GRBdiscardconcurrentenvs");
647 "GRBdiscardmultiobjenvs");
663 std::vector<std::string> potential_paths;
664 const std::vector<std::string> kGurobiVersions = {
665 "951",
"950",
"911",
"910",
"903",
"902",
"811",
"801",
"752"};
668 const char* gurobi_home_from_env = getenv(
"GUROBI_HOME");
669 if (gurobi_home_from_env !=
nullptr) {
670 for (
const std::string& version : kGurobiVersions) {
671 const std::string lib = version.substr(0, 2);
673 potential_paths.push_back(
674 absl::StrCat(gurobi_home_from_env,
"\\bin\\gurobi", lib,
".dll"));
675#elif defined(__APPLE__)
676 potential_paths.push_back(
677 absl::StrCat(gurobi_home_from_env,
"/lib/libgurobi", lib,
".dylib"));
678#elif defined(__GNUC__)
679 potential_paths.push_back(
680 absl::StrCat(gurobi_home_from_env,
"/lib/libgurobi", lib,
".so"));
681 potential_paths.push_back(
682 absl::StrCat(gurobi_home_from_env,
"/lib64/libgurobi", lib,
".so"));
684 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
685 <<
" You won't be able to use Gurobi.";
691 for (
const std::string& version : kGurobiVersions) {
692 const std::string lib = version.substr(0, 2);
694 potential_paths.push_back(absl::StrCat(
"C:\\Program Files\\gurobi", version,
695 "\\win64\\bin\\gurobi", lib,
697#elif defined(__APPLE__)
698 potential_paths.push_back(absl::StrCat(
699 "/Library/gurobi", version,
"/mac64/lib/libgurobi", lib,
".dylib"));
700#elif defined(__GNUC__)
701 potential_paths.push_back(absl::StrCat(
702 "/opt/gurobi", version,
"/linux64/lib/libgurobi", lib,
".so"));
703 potential_paths.push_back(absl::StrCat(
704 "/opt/gurobi", version,
"/linux64/lib64/libgurobi", lib,
".so"));
705 potential_paths.push_back(
706 absl::StrCat(
"/opt/gurobi/linux64/lib/libgurobi", lib,
".so"));
707 potential_paths.push_back(
708 absl::StrCat(
"/opt/gurobi/linux64/lib64/libgurobi", lib,
".so"));
710 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
711 <<
" You won't be able to use Gurobi.";
714 return potential_paths;
718 std::vector<std::string> potential_paths) {
719 static std::once_flag gurobi_loading_done;
720 static absl::Status gurobi_load_status;
722 static absl::Mutex mutex;
724 absl::MutexLock lock(&mutex);
726 std::call_once(gurobi_loading_done, [&potential_paths]() {
727 const std::vector<std::string> canonical_paths =
729 potential_paths.insert(potential_paths.end(), canonical_paths.begin(),
730 canonical_paths.end());
731 for (
const std::string& path : potential_paths) {
733 LOG(
INFO) <<
"Found the Gurobi library in '" << path <<
".";
740 gurobi_load_status = absl::OkStatus();
742 gurobi_load_status = absl::NotFoundError(absl::StrCat(
743 "Could not find the Gurobi shared library. Looked in: [",
744 absl::StrJoin(potential_paths,
"', '"),
745 "]. If you know where it"
746 " is, pass the full path to 'LoadGurobiDynamicLibrary()'."));
749 return gurobi_load_status;
757 if (
GRBloadenv(&env,
nullptr) != 0 || env ==
nullptr) {
758 return absl::FailedPreconditionError(
759 absl::StrCat(
"Found the Gurobi shared library, but could not create "
760 "Gurobi environment: is Gurobi licensed on this machine?",
#define RETURN_IF_ERROR(expr)
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, 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(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