 |
OR-Tools
8.1
|
Go to the documentation of this file.
18 #include "absl/status/status.h"
19 #include "absl/strings/match.h"
20 #include "absl/strings/str_cat.h"
21 #include "absl/strings/str_format.h"
27 constexpr
int GRB_OK = 0;
28 const char kGurobiEnvErrorMsg[] =
29 "Could not load Gurobi environment. Is gurobi correctly installed and "
30 "licensed on this machine?";
32 if (
GRBloadenv(env,
nullptr) != 0 || *env ==
nullptr) {
33 return absl::FailedPreconditionError(
34 absl::StrFormat(
"%s %s", kGurobiEnvErrorMsg,
GRBgeterrormsg(*env)));
36 return absl::OkStatus();
39 std::function<int(
GRBmodel*,
int,
int*,
double*,
double,
double,
const char*)>
41 std::function<int(
GRBmodel*
model,
int numnz,
int* vind,
double* vval,
42 double obj,
double lb,
double ub,
char vtype,
45 std::function<int(
GRBmodel*,
int,
int,
int*,
int*,
double*,
double*,
double*,
46 double*,
char*,
char**)>
48 std::function<int(
GRBmodel*
model,
int numchgs,
int* cind,
int* vind,
56 std::function<int(
GRBmodel*,
const char*,
int,
int,
double*)>
67 std::function<int(
GRBenv*,
GRBmodel**,
const char*,
int numvars,
double*,
68 double*,
double*,
char*,
char**)>
83 std::function<void(
int*,
int*,
int*)>
GRBversion =
nullptr;
85 std::function<int(
void* cbdata,
int where,
int what,
void* resultP)>
GRBcbget =
87 std::function<int(
void* cbdata,
int cutlen,
const int* cutind,
88 const double* cutval,
char cutsense,
double cutrhs)>
90 std::function<int(
void* cbdata,
int lazylen,
const int* lazyind,
91 const double* lazyval,
char lazysense,
double lazyrhs)>
93 std::function<int(
void* cbdata,
const double* solution,
double* objvalP)>
95 std::function<int(
GRBmodel*
model,
int numnz,
int* cind,
double* cval,
96 char sense,
double rhs,
const char* constrname)>
99 int nvars,
const int* vars,
const double* vals,
char sense,
102 std::function<int(
GRBmodel*
model,
const char* attrname,
int element,
107 std::function<int(
GRBenv* env,
const char* paramname,
const char*
value)>
109 std::function<int(
GRBmodel*
model,
int numsos,
int nummembers,
int* types,
110 int* beg,
int* ind,
double*
weight)>
112 std::function<int(
GRBmodel*
model,
int numlnz,
int* lind,
double* lval,
113 int numqnz,
int* qrow,
int* qcol,
double* qval,
char sense,
114 double rhs,
const char* QCname)>
117 const int* vars,
double constant)>
120 const int* vars,
double constant)>
130 std::function<int(
GRBmodel*
model,
int numqnz,
int* qrow,
int* qcol,
204 VLOG(1) <<
"Try to load from " << full_library_path;
209 const std::vector<std::vector<std::string>> GurobiVersionLib = {
210 {
"911",
"91"}, {
"910",
"91"}, {
"903",
"90"}, {
"902",
"90"}};
219 const char* gurobi_home_from_env = getenv(
"GUROBI_HOME");
220 for (
const std::vector<std::string>& version_lib : GurobiVersionLib) {
221 const std::string& dir = version_lib[0];
222 const std::string& number = version_lib[1];
223 #if defined(_MSC_VER) // Windows
224 if (gurobi_home_from_env !=
nullptr &&
226 gurobi_home_from_env,
"\\bin\\gurobi", number,
".dll"))) {
230 absl::StrCat(
"C:\\Program Files\\gurobi", dir,
231 "\\win64\\bin\\gurobi", number,
".dll"))) {
234 #elif defined(__APPLE__) // OS X
235 if (gurobi_home_from_env !=
nullptr &&
237 gurobi_home_from_env,
"/lib/libgurobi", number,
".dylib"))) {
241 "/Library/gurobi", dir,
"/mac64/lib/libgurobi", number,
".dylib"))) {
244 #elif defined(__GNUC__) // Linux
245 if (gurobi_home_from_env !=
nullptr &&
247 gurobi_home_from_env,
"/lib/libgurobi", number,
".so"))) {
250 if (gurobi_home_from_env !=
nullptr &&
252 gurobi_home_from_env,
"/lib64/libgurobi", number,
".so"))) {
280 bool MPSolver::GurobiIsCorrectlyInstalled() {
283 if (
GRBloadenv(&env,
nullptr) != 0 || env ==
nullptr)
return false;
#define VLOG(verboselevel)
std::function< int(GRBmodel *model, const char *name, int binvar, int binval, int nvars, const int *vars, const double *vals, char sense, double rhs)> GRBaddgenconstrIndicator
std::function< int(GRBenv **, const char *)> GRBloadenv
std::function< int(GRBmodel *model, int(STDCALL *cb)(CB_ARGS), void *usrdata)> GRBsetcallbackfunc
std::function< int(GRBenv *, const char *, int)> GRBsetintparam
std::function< int(void *cbdata, int where, int what, void *resultP)> GRBcbget
std::function< int(void *cbdata, int lazylen, const int *lazyind, const double *lazyval, char lazysense, double lazyrhs)> GRBcblazy
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
std::function< char *(GRBenv *)> GRBgeterrormsg
bool LoadSpecificGurobiLibrary(const std::string &full_library_path)
absl::Status LoadGurobiEnvironment(GRBenv **env)
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrAnd
std::function< int(GRBmodel *model, const char *name, int resvar, int argvar)> GRBaddgenconstrAbs
std::function< int(GRBmodel *, const char *)> GRBwrite
std::function< int(GRBenv *, const char *)> GRBreadparams
std::function< int(GRBenv *, const char *, double *)> GRBgetdblparam
std::function< int(GRBenv *env, const char *paramname, const char *value)> GRBsetparam
std::function< int(GRBmodel *, const char *, double *)> GRBgetdblattr
std::function< int(GRBmodel *)> GRBfreemodel
std::function< int(GRBenv *, GRBmodel **, const char *, int numvars, double *, double *, double *, char *, char **)> GRBnewmodel
std::function< int(GRBmodel *, const char *, int)> GRBsetintattr
std::function< int(GRBenv *)> GRBresetparams
std::function< int(GRBmodel *, const char *, int, int, double *)> GRBgetdblattrarray
std::function< int(void *cbdata, int cutlen, const int *cutind, const double *cutval, char cutsense, double cutrhs)> GRBcbcut
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMax
std::function< int(GRBmodel *model, int numchgs, int *cind, int *vind, double *val)> GRBchgcoeffs
std::function< int(GRBmodel *model, const char *attrname, int element, int newvalue)> GRBsetintattrelement
std::function< int(GRBmodel *, const char *, int, char)> GRBsetcharattrelement
bool SearchForGurobiDynamicLibrary()
std::function< int(GRBmodel *, const char *, int, double)> GRBsetdblattrelement
std::function< void(int *, int *, int *)> GRBversion
std::function< int(GRBmodel *, const char *, double)> GRBsetdblattr
static void SetGurobiLibraryPath(const std::string &full_library_path)
std::function< int(GRBmodel *model, int numsos, int nummembers, int *types, int *beg, int *ind, double *weight)> GRBaddsos
std::function< int(GRBmodel *, int, int *, double *, double, double, const char *)> GRBaddrangeconstr
std::function< int(void *cbdata, const double *solution, double *objvalP)> GRBcbsolution
std::function< int(GRBmodel *, const char *, int *)> GRBgetintattr
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars, double constant)> GRBaddgenconstrMin
static bool LoadGurobiSharedLibrary()
void LoadGurobiFunctions()
std::function< int(GRBmodel *)> GRBoptimize
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, int numnz, int *vind, double *vval, double obj, double lb, double ub, char vtype, const char *varname)> GRBaddvar
std::function< int(GRBmodel *model, const char *name, int resvar, int nvars, const int *vars)> GRBaddgenconstrOr
std::function< int(GRBmodel *model, int numqnz, int *qrow, int *qcol, double *qval)> GRBaddqpterms
std::function< GRBenv *(GRBmodel *)> GRBgetenv
A C++ wrapper that provides a simple and unified interface to several linear programming and mixed in...
std::function< int(GRBmodel *)> GRBupdatemodel
std::function< int(GRBmodel *, const char *, int, char *)> GRBgetcharattrelement
struct _GRBmodel GRBmodel
std::function< int(GRBenv *, const char *, double)> GRBsetdblparam
std::function< int(GRBmodel *, const char *, int, double *)> GRBgetdblattrelement
std::function< int(GRBmodel *, const char *, int, int *)> GRBgetintattrelement
std::function< void(GRBmodel *)> GRBterminate
std::function< void(GRBenv *)> GRBfreeenv
std::function< int(GRBmodel *model, int numnz, int *cind, double *cval, char sense, double rhs, const char *constrname)> GRBaddconstr
std::unique_ptr< DynamicLibrary > gurobi_dynamic_library
std::function< int(GRBmodel *, int, int, int *, int *, double *, double *, double *, double *, char *, char **)> GRBaddvars
std::string gurobi_library_path