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"
32 if (!status.ok() || status.value() ==
nullptr) {
46 std::function<int(
GRBenv**,
const char*,
const char*,
const char*,
int,
49 std::function<int(
GRBmodel*
model,
const char* attrname,
int* datatypeP,
50 int* sizeP,
int* settableP)>
54 std::function<int(
GRBmodel*
model,
const char* attrname,
int* valueP)>
56 std::function<int(
GRBmodel*
model,
const char* attrname,
int newvalue)>
58 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
61 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
64 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
67 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
70 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
73 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
76 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
79 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
82 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
85 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
88 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
91 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
94 std::function<int(
GRBmodel*
model,
const char* attrname,
double* valueP)>
96 std::function<int(
GRBmodel*
model,
const char* attrname,
double newvalue)>
98 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
101 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
104 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
107 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
110 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
113 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
116 std::function<int(
GRBmodel*
model,
const char* attrname,
char** valueP)>
118 std::function<int(
GRBmodel*
model,
const char* attrname,
const char* newvalue)>
120 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
123 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
124 const char* newvalue)>
126 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
129 std::function<int(
GRBmodel*
model,
const char* attrname,
int first,
int len,
132 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
135 std::function<int(
GRBmodel*
model,
const char* attrname,
int len,
int* ind,
147 std::function<int(
void* cbdata,
int where,
int what,
void* resultP)>
GRBcbget =
149 std::function<int(
void* cbdata,
const char* paramname,
const char* newvalue)>
151 std::function<int(
void* cbdata,
const double* solution,
double* objvalP)>
153 std::function<int(
void* cbdata,
int cutlen,
const int* cutind,
154 const double* cutval,
char cutsense,
double cutrhs)>
156 std::function<int(
void* cbdata,
int lazylen,
const int* lazyind,
157 const double* lazyval,
char lazysense,
double lazyrhs)>
161 std::function<int(
GRBmodel*
model,
int* numnzP,
int* cbeg,
int* cind,
162 double* cval,
int start,
int len)>
164 std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* cbeg,
int* cind,
165 double* cval,
int start,
int len)>
167 std::function<int(
GRBmodel*
model,
int* numnzP,
int* vbeg,
int* vind,
168 double* vval,
int start,
int len)>
170 std::function<int(
GRBmodel*
model,
size_t* numnzP,
size_t* vbeg,
int* vind,
171 double* vval,
int start,
int len)>
173 std::function<int(
GRBmodel*
model,
int* nummembersP,
int* sostype,
int* beg,
174 int* ind,
double*
weight,
int start,
int len)>
176 std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
177 int* vars,
double* constantP)>
179 std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
180 int* vars,
double* constantP)>
182 std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* argvarP)>
184 std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
187 std::function<int(
GRBmodel*
model,
int genconstr,
int* resvarP,
int* nvarsP,
190 std::function<int(
GRBmodel*
model,
int genconstr,
int* binvarP,
int* binvalP,
191 int* nvarsP,
int* vars,
double* vals,
char* senseP,
194 std::function<int(
GRBmodel*
model,
int* numqnzP,
int* qrow,
int* qcol,
197 std::function<int(
GRBmodel*
model,
int qconstr,
int* numlnzP,
int* lind,
198 double* lval,
int* numqnzP,
int* qrow,
int* qcol,
205 std::function<int(
GRBmodel*
model,
int var,
int* pointsP,
double* x,
double* y)>
211 std::function<int(
GRBmodel*
model,
int relaxobjtype,
int minrelax,
212 double* lbpen,
double* ubpen,
double* rhspen,
215 std::function<int(
void* cbdata,
int what,
int* typeP,
int* sizeP)>
223 std::function<int(
GRBenv** envP,
const char* logfilename,
232 std::function<int(
GRBenv* env,
const char* filename,
GRBmodel** modelP)>
239 std::function<int(
GRBenv* env,
GRBmodel** modelP,
const char* Pname,
240 int numvars,
double* obj,
double* lb,
double* ub,
char* vtype,
243 std::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)>
249 std::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)>
255 std::function<int(
GRBmodel*
model,
int numnz,
int* vind,
double* vval,
256 double obj,
double lb,
double ub,
char vtype,
257 const char* varname)>
259 std::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)>
263 std::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)>
267 std::function<int(
GRBmodel*
model,
int numnz,
int* cind,
double* cval,
268 char sense,
double rhs,
const char* constrname)>
270 std::function<int(
GRBmodel*
model,
int numconstrs,
int numnz,
int* cbeg,
271 int* cind,
double* cval,
char* sense,
double* rhs,
274 std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
275 int* cind,
double* cval,
char* sense,
double* rhs,
278 std::function<int(
GRBmodel*
model,
int numnz,
int* cind,
double* cval,
279 double lower,
double upper,
const char* constrname)>
281 std::function<int(
GRBmodel*
model,
int numconstrs,
int numnz,
int* cbeg,
282 int* cind,
double* cval,
double* lower,
double* upper,
285 std::function<int(
GRBmodel*
model,
int numconstrs,
size_t numnz,
size_t* cbeg,
286 int* cind,
double* cval,
double* lower,
double* upper,
289 std::function<int(
GRBmodel*
model,
int numsos,
int nummembers,
int* types,
290 int* beg,
int* ind,
double*
weight)>
293 const int* vars,
double constant)>
296 const int* vars,
double constant)>
306 std::function<int(
GRBmodel* lp,
const char*
name,
int binvar,
int binval,
307 int nvars,
const int* vars,
const double* vals,
char sense,
310 std::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)>
316 std::function<int(
GRBmodel*
model,
int numqnz,
int* qrow,
int* qcol,
326 std::function<int(
GRBmodel*
model,
int cnt,
int* cind,
int* vind,
double* val)>
328 std::function<int(
GRBmodel*
model,
size_t cnt,
int* cind,
int* vind,
331 std::function<int(
GRBmodel*
model,
int var,
int points,
double* x,
double* y)>
344 std::function<int(
GRBmodel*
model,
int num,
int* cand,
double* downobjbd,
345 double* upobjbd,
int* statusP)>
350 std::function<int(
const char* filename)>
GRBreplay =
nullptr;
351 std::function<int(
GRBmodel*
model,
int sense,
double constant,
int lnz,
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)>
362 std::function<int(
GRBenv* env,
const char* paramname,
int* valueP)>
364 std::function<int(
GRBenv* env,
const char* paramname,
double* valueP)>
366 std::function<int(
GRBenv* env,
const char* paramname,
char* valueP)>
368 std::function<int(
GRBenv* env,
const char* paramname,
int* valueP,
int* minP,
369 int* maxP,
int* defP)>
371 std::function<int(
GRBenv* env,
const char* paramname,
double* valueP,
372 double* minP,
double* maxP,
double* defP)>
374 std::function<int(
GRBenv* env,
const char* paramname,
char* valueP,
char* defP)>
376 std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
378 std::function<int(
GRBenv* env,
const char* paramname,
int value)>
380 std::function<int(
GRBenv* env,
const char* paramname,
double value)>
382 std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
397 std::function<int(
GRBenv** envP,
const char* logfilename,
int apitype,
398 int major,
int minor,
int tech,
401 std::function<int(
GRBenv** envP,
const char* logfilename,
402 const char* computeservers,
int port,
const char* password,
403 int priority,
double timeout)>
405 std::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,
411 std::function<int(
GRBenv** envP,
const char* logfilename,
const char* accessID,
412 const char* secretKey,
const char* pool)>
414 std::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,
428 std::function<void(
int* majorP,
int* minorP,
int* technicalP)>
GRBversion =
450 "GRBisattravailable");
454 "GRBgetintattrelement");
456 "GRBsetintattrelement");
458 "GRBgetintattrarray");
460 "GRBsetintattrarray");
464 "GRBgetcharattrelement");
466 "GRBsetcharattrelement");
468 "GRBgetcharattrarray");
470 "GRBsetcharattrarray");
472 "GRBgetcharattrlist");
474 "GRBsetcharattrlist");
478 "GRBgetdblattrelement");
480 "GRBsetdblattrelement");
482 "GRBgetdblattrarray");
484 "GRBsetdblattrarray");
490 "GRBgetstrattrelement");
492 "GRBsetstrattrelement");
494 "GRBgetstrattrarray");
496 "GRBsetstrattrarray");
500 "GRBsetcallbackfunc");
502 "GRBgetcallbackfunc");
504 "GRBsetlogcallbackfunc");
506 "GRBsetlogcallbackfuncenv");
519 "GRBgetgenconstrMax");
521 "GRBgetgenconstrMin");
523 "GRBgetgenconstrAbs");
525 "GRBgetgenconstrAnd");
528 "GRBgetgenconstrIndicator");
533 "GRBgetconstrbyname");
565 "GRBaddrangeconstrs");
567 "GRBXaddrangeconstrs");
570 "GRBaddgenconstrMax");
572 "GRBaddgenconstrMin");
574 "GRBaddgenconstrAbs");
576 "GRBaddgenconstrAnd");
579 "GRBaddgenconstrIndicator");
617 "GRBgetintparaminfo");
619 "GRBgetdblparaminfo");
621 "GRBgetstrparaminfo");
634 "GRBgetnumattributes");
640 "GRBloadclientenvadv");
643 "GRBloadcloudenvadv");
646 "GRBgetconcurrentenv");
648 "GRBdiscardconcurrentenvs");
651 "GRBdiscardmultiobjenvs");
667 std::vector<std::string> potential_paths;
668 const std::vector<std::string> kGurobiVersions = {
"911",
"910",
"903",
"902",
669 "811",
"801",
"752"};
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)
677 potential_paths.push_back(
678 absl::StrCat(gurobi_home_from_env,
"\\bin\\gurobi", lib,
".dll"));
679 #elif defined(__APPLE__)
680 potential_paths.push_back(
681 absl::StrCat(gurobi_home_from_env,
"/lib/libgurobi", lib,
".dylib"));
682 #elif defined(__GNUC__)
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"));
688 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
689 <<
" You won't be able to use Gurobi.";
695 for (
const std::string& version : kGurobiVersions) {
696 const std::string lib = version.substr(0, 2);
697 #if defined(_MSC_VER)
698 potential_paths.push_back(absl::StrCat(
"C:\\Program Files\\gurobi", version,
699 "\\win64\\bin\\gurobi", lib,
701 #elif defined(__APPLE__)
702 potential_paths.push_back(absl::StrCat(
703 "/Library/gurobi", version,
"/mac64/lib/libgurobi", lib,
".dylib"));
704 #elif defined(__GNUC__)
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"));
714 LOG(
ERROR) <<
"OS Not recognized by gurobi/environment.cc."
715 <<
" You won't be able to use Gurobi.";
718 return potential_paths;
722 std::vector<std::string> potential_paths) {
723 static std::once_flag gurobi_loading_done;
724 static absl::Status gurobi_load_status;
726 static absl::Mutex mutex;
728 absl::MutexLock lock(&mutex);
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) {
737 LOG(
INFO) <<
"Found the Gurobi library in '" << path <<
".";
744 gurobi_load_status = absl::OkStatus();
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()'."));
753 return gurobi_load_status;
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?",
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::vector< std::string > GurobiDynamicLibraryPotentialPaths()
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::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)