· Contents 1 Introduction 1 2 CAPIOverview3 2.1 EnvironmentCreationandDestruction. . . . . . . ....

965
GUROBI OPTIMIZER REFERENCE MANUAL Version 9.0, Copyright c 2020, Gurobi Optimization, LLC

Transcript of  · Contents 1 Introduction 1 2 CAPIOverview3 2.1 EnvironmentCreationandDestruction. . . . . . . ....

  • GUROBI OPTIMIZERREFERENCE MANUAL

    Version 9.0, Copyright c© 2020, Gurobi Optimization, LLC

  • Contents

    1 Introduction 1

    2 C API Overview 32.1 Environment Creation and Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    GRBloadenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8GRBemptyenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8GRBstartenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8GRBloadclientenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9GRBloadcloudenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11GRBfreeenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12GRBgetconcurrentenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12GRBgetmultiobjenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13GRBdiscardconcurrentenvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13GRBdiscardmultiobjenvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    2.2 Model Creation and Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15GRBloadmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15GRBnewmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17GRBcopymodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18GRBaddconstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18GRBaddconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19GRBaddgenconstrXxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20GRBaddgenconstrMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21GRBaddgenconstrMin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22GRBaddgenconstrAbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23GRBaddgenconstrAnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23GRBaddgenconstrOr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24GRBaddgenconstrIndicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25GRBaddgenconstrPWL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26GRBaddgenconstrPoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27GRBaddgenconstrExp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28GRBaddgenconstrExpA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28GRBaddgenconstrLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29GRBaddgenconstrLogA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30GRBaddgenconstrPow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31GRBaddgenconstrSin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32GRBaddgenconstrCos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33GRBaddgenconstrTan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33GRBaddqconstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34GRBaddqpterms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    i

  • GRBaddrangeconstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37GRBaddrangeconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38GRBaddsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39GRBaddvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40GRBaddvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41GRBchgcoeffs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42GRBdelconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43GRBdelgenconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43GRBdelq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43GRBdelqconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44GRBdelsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44GRBdelvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45GRBsetobjectiven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45GRBsetpwlobj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46GRBupdatemodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47GRBfreemodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47GRBXaddconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48GRBXaddrangeconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49GRBXaddvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50GRBXchgcoeffs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51GRBXloadmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    2.3 Model Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55GRBoptimize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55GRBoptimizeasync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55GRBcomputeIIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56GRBfeasrelax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57GRBfixmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58GRBreset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58GRBsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    2.4 Model Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60GRBgetcoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60GRBgetconstrbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60GRBgetconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61GRBgetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61GRBgetgenconstrMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62GRBgetgenconstrMin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63GRBgetgenconstrAbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64GRBgetgenconstrAnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64GRBgetgenconstrOr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65GRBgetgenconstrIndicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66GRBgetgenconstrPWL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67GRBgetgenconstrPoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68GRBgetgenconstrExp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69GRBgetgenconstrExpA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70GRBgetgenconstrLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    ii ii

  • GRBgetgenconstrLogA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72GRBgetgenconstrPow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72GRBgetgenconstrSin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73GRBgetgenconstrCos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74GRBgetgenconstrTan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74GRBgetjsonsolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75GRBgetpwlobj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76GRBgetq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76GRBgetqconstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77GRBgetqconstrbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78GRBgetsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78GRBgetvarbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79GRBgetvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80GRBsinglescenariomodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80GRBXgetconstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81GRBXgetvars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    2.5 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84GRBreadmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84GRBread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84GRBwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    2.6 Attribute Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86GRBgetattrinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86GRBgetintattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86GRBsetintattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87GRBgetintattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87GRBsetintattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88GRBgetintattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88GRBsetintattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89GRBgetintattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90GRBsetintattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90GRBgetdblattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91GRBsetdblattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91GRBgetdblattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92GRBsetdblattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92GRBgetdblattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93GRBsetdblattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93GRBgetdblattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94GRBsetdblattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95GRBgetcharattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95GRBsetcharattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96GRBgetcharattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96GRBsetcharattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97GRBgetcharattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97GRBsetcharattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98GRBgetstrattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    iii

  • GRBsetstrattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99GRBgetstrattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100GRBsetstrattrelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100GRBgetstrattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101GRBsetstrattrarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101GRBgetstrattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102GRBsetstrattrlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103GRBgetbatchattrinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    2.7 Parameter Management and Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . 105GRBtunemodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105GRBgettuneresult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105GRBgetdblparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106GRBgetintparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106GRBgetstrparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107GRBsetdblparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107GRBsetintparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108GRBsetstrparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108GRBgetdblparaminfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109GRBgetintparaminfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110GRBgetstrparaminfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110GRBreadparams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111GRBwriteparams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    2.8 Monitoring Progress - Logging and Callbacks . . . . . . . . . . . . . . . . . . . . . . 113GRBmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113GRBsetcallbackfunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113GRBgetcallbackfunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114GRBcbget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114GRBversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

    2.9 Modifying Solver Behavior - Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . 116GRBcbcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116GRBcblazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117GRBcbsolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118GRBcbstoponemultiobj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118GRBterminate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    2.10 Batch Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121GRBabortbatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121GRBdiscardbatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121GRBfreebatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121GRBgetbatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122GRBgetbatchenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122GRBgetbatchintattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123GRBgetbatchjsonsolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123GRBgetbatchstrattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124GRBoptimizebatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124GRBretrybatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    iv iv

  • GRBupdatebatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125GRBwritebatchjsonsolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    2.11 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127GRBgeterrormsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    2.12 Advanced simplex routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128GRBFSolve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128GRBBSolve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128GRBBinvColj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129GRBBinvRowi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129GRBgetBasisHead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    3 C++ API Overview 1313.1 GRBEnv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    GRBEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137GRBEnv::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140GRBEnv::getErrorMsg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141GRBEnv::getParamInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141GRBEnv::message() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142GRBEnv::readParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142GRBEnv::resetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143GRBEnv::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143GRBEnv::start() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144GRBEnv::writeParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    3.2 GRBModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145GRBModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145GRBModel::addConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146GRBModel::addConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148GRBModel::addGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . 148GRBModel::addQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158GRBModel::addRange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160GRBModel::addRanges() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160GRBModel::addSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160GRBModel::addVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161GRBModel::addVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162GRBModel::chgCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164GRBModel::chgCoeffs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164GRBModel::computeIIS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165GRBModel::discardConcurrentEnvs() . . . . . . . . . . . . . . . . . . . . . . 165GRBModel::discardMultiobjEnvs() . . . . . . . . . . . . . . . . . . . . . . . . 165GRBModel::feasRelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165GRBModel::fixedModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167GRBModel::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167GRBModel::getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172GRBModel::getCol() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172GRBModel::getConcurrentEnv() . . . . . . . . . . . . . . . . . . . . . . . . . 172GRBModel::getConstrByName() . . . . . . . . . . . . . . . . . . . . . . . . . 173

    v

  • GRBModel::getConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173GRBModel::getEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173GRBModel::getGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . 174GRBModel::getGenConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . 181GRBModel::getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 181GRBModel::getMultiobjEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . 181GRBModel::getObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182GRBModel::getPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182GRBModel::getQCRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183GRBModel::getQConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183GRBModel::getRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183GRBModel::getSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183GRBModel::getSOSs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184GRBModel::getTuneResult() . . . . . . . . . . . . . . . . . . . . . . . . . . . 184GRBModel::getVarByName() . . . . . . . . . . . . . . . . . . . . . . . . . . . 184GRBModel::getVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185GRBModel::optimize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185GRBModel::optimizeasync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185GRBModel::optimizeBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . 186GRBModel::presolve() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186GRBModel::read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186GRBModel::remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187GRBModel::reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188GRBModel::setCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188GRBModel::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188GRBModel::setObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192GRBModel::setObjectiveN() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193GRBModel::setPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193GRBModel::singleScenarioModel() . . . . . . . . . . . . . . . . . . . . . . . . 194GRBModel::sync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194GRBModel::terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194GRBModel::tune() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195GRBModel::update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195GRBModel::write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    3.3 GRBVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196GRBVar::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196GRBVar::index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197GRBVar::sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197GRBVar::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    3.4 GRBConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199GRBConstr::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199GRBConstr::index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200GRBConstr::sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200GRBConstr::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

    3.5 GRBQConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

    vi vi

  • GRBQConstr::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202GRBQConstr::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    3.6 GRBSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204GRBSOS::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    3.7 GRBGenConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205GRBGenConstr::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205GRBGenConstr::set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    3.8 GRBExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207GRBExpr::getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

    3.9 GRBLinExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208GRBLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208GRBLinExpr::addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209GRBLinExpr::clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209GRBLinExpr::getConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . 209GRBLinExpr::getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209GRBLinExpr::getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210GRBLinExpr::getVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210GRBLinExpr::operator= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210GRBLinExpr::operator+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210GRBLinExpr::operator- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211GRBLinExpr::operator+= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211GRBLinExpr::operator-= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211GRBLinExpr::operator*= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211GRBLinExpr::remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212GRBLinExpr::size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

    3.10 GRBQuadExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213GRBQuadExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213GRBQuadExpr::addTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214GRBQuadExpr::addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215GRBQuadExpr::clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215GRBQuadExpr::getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215GRBQuadExpr::getLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . 216GRBQuadExpr::getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216GRBQuadExpr::getVar1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216GRBQuadExpr::getVar2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216GRBQuadExpr::operator= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217GRBQuadExpr::operator+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217GRBQuadExpr::operator- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217GRBQuadExpr::operator+= . . . . . . . . . . . . . . . . . . . . . . . . . . . 217GRBQuadExpr::operator-= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218GRBQuadExpr::operator*= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218GRBQuadExpr::remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218GRBQuadExpr::size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

    3.11 GRBTempConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.12 GRBColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

    vii

  • GRBColumn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220GRBColumn::addTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220GRBColumn::addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220GRBColumn::clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220GRBColumn::getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221GRBColumn::getConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221GRBColumn::remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221GRBColumn::size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    3.13 GRBCallback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222GRBCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222GRBCallback::abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222GRBCallback::addCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222GRBCallback::addLazy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223GRBCallback::getDoubleInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . 224GRBCallback::getIntInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224GRBCallback::getNodeRel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225GRBCallback::getSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225GRBCallback::getStringInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . 226GRBCallback::setSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

    3.14 GRBCallback::stopOneMultiObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227GRBCallback::useSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

    3.15 GRBException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229GRBException() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229GRBException::getErrorCode() . . . . . . . . . . . . . . . . . . . . . . . . . . 229GRBException::getMessage() . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

    3.16 GRBBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230GRBBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230GRBBatch::abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231GRBBatch::discard() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231GRBBatch::getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 231GRBBatch::get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231GRBBatch::retry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232GRBBatch::update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232GRBBatch::writeJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . 232

    3.17 Non-Member Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234operator== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234operator= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234operator+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235operator- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236operator* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237operator/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

    3.18 Attribute Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240GRB_CharAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240GRB_DoubleAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    viii viii

  • GRB_IntAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240GRB_StringAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    3.19 Parameter Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241GRB_DoubleParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241GRB_IntParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241GRB_StringParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

    4 Java API Overview 2424.1 GRBEnv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

    GRBEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248GRBEnv.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251GRBEnv.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251GRBEnv.getErrorMsg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252GRBEnv.getParamInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252GRBEnv.message() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253GRBEnv.readParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253GRBEnv.release() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254GRBEnv.resetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254GRBEnv.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254GRBEnv.start() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255GRBEnv.writeParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

    4.2 GRBModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257GRBModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257GRBModel.addConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258GRBModel.addConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260GRBModel.addGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . 261GRBModel.addQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271GRBModel.addRange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273GRBModel.addRanges() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274GRBModel.addSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274GRBModel.addVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274GRBModel.addVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276GRBModel.chgCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278GRBModel.chgCoeffs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278GRBModel.computeIIS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279GRBModel.discardConcurrentEnvs() . . . . . . . . . . . . . . . . . . . . . . . 279GRBModel.discardMultiobjEnvs() . . . . . . . . . . . . . . . . . . . . . . . . 279GRBModel.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279GRBModel.feasRelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280GRBModel.fixedModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281GRBModel.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282GRBModel.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296GRBModel.getCol() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297GRBModel.getConcurrentEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . 297GRBModel.getConstrByName() . . . . . . . . . . . . . . . . . . . . . . . . . 297GRBModel.getConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    ix

  • GRBModel.getEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298GRBModel.getGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . . 298GRBModel.getGenConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . 305GRBModel.getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 306GRBModel.getMultiobjEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . 306GRBModel.getObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306GRBModel.getPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307GRBModel.getQCRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307GRBModel.getQConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307GRBModel.getRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308GRBModel.getSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308GRBModel.getSOSs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308GRBModel.getTuneResult() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309GRBModel.getVarByName() . . . . . . . . . . . . . . . . . . . . . . . . . . . 309GRBModel.getVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309GRBModel.optimize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309GRBModel.optimizeasync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310GRBModel.optimizeBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310GRBModel.presolve() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311GRBModel.read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311GRBModel.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311GRBModel.reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312GRBModel.setCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313GRBModel.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313GRBModel.setObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326GRBModel.setObjectiveN() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327GRBModel.setPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327GRBModel.singleScenarioModel() . . . . . . . . . . . . . . . . . . . . . . . . 328GRBModel.sync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328GRBModel.terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328GRBModel.tune() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328GRBModel.update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329GRBModel.write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

    4.3 GRBVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330GRBVar.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330GRBVar.index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331GRBVar.sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331GRBVar.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    4.4 GRBConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333GRBConstr.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333GRBConstr.index() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334GRBConstr.sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334GRBConstr.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    4.5 GRBQConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336GRBQConstr.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

    x x

  • GRBQConstr.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3374.6 GRBSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

    GRBSOS.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3384.7 GRBGenConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    GRBGenConstr.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339GRBGenConstr.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    4.8 GRBExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341GRBExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

    4.9 GRBLinExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342GRBLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342GRBLinExpr.add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342GRBLinExpr.addConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . 343GRBLinExpr.addTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343GRBLinExpr.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343GRBLinExpr.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344GRBLinExpr.getConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344GRBLinExpr.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344GRBLinExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344GRBLinExpr.getVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344GRBLinExpr.multAdd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345GRBLinExpr.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345GRBLinExpr.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

    4.10 GRBQuadExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346GRBQuadExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346GRBQuadExpr.add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347GRBQuadExpr.addConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . 347GRBQuadExpr.addTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347GRBQuadExpr.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348GRBQuadExpr.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349GRBQuadExpr.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349GRBQuadExpr.getLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . 349GRBQuadExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349GRBQuadExpr.getVar1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350GRBQuadExpr.getVar2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350GRBQuadExpr.multAdd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350GRBQuadExpr.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351GRBQuadExpr.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

    4.11 GRBColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352GRBColumn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352GRBColumn.addTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352GRBColumn.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352GRBColumn.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353GRBColumn.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353GRBColumn.getConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353GRBColumn.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

    xi

  • GRBColumn.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3544.12 GRBCallback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

    GRBCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355GRBCallback.abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355GRBCallback.addCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355GRBCallback.addLazy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356GRBCallback.getDoubleInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . 357GRBCallback.getIntInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357GRBCallback.getNodeRel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357GRBCallback.getSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358GRBCallback.getStringInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . 359GRBCallback.setSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359GRBCallback.stopOneMultiObj() . . . . . . . . . . . . . . . . . . . . . . . . . 359GRBCallback.useSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

    4.13 GRBException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362GRBException() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362GRBException.getErrorCode() . . . . . . . . . . . . . . . . . . . . . . . . . . 362

    4.14 GRBBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363GRBBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363GRBBatch.abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364GRBBatch.discard() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364GRBBatch.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364GRBBatch.getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 365GRBBatch.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365GRBBatch.retry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365GRBBatch.update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366GRBBatch.writeJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . 366

    4.15 GRB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367GRB.CharAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372GRB.DoubleAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373GRB.DoubleParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373GRB.IntAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373GRB.IntParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373GRB.StringAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373GRB.StringParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

    5 .NET API Overview 3745.1 GRBEnv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

    GRBEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380GRBEnv.Dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383GRBEnv.ErrorMsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383GRBEnv.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383GRBEnv.GetParamInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384GRBEnv.Message() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385GRBEnv.ReadParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    xii xii

  • GRBEnv.Release() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385GRBEnv.ResetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386GRBEnv.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386GRBEnv.Start() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387GRBEnv.WriteParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

    5.2 GRBModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388GRBModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388GRBModel.AddConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389GRBModel.AddConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389GRBModel.AddGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . 390GRBModel.AddQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400GRBModel.AddRange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401GRBModel.AddRanges() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401GRBModel.AddSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402GRBModel.AddVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402GRBModel.AddVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403GRBModel.ChgCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405GRBModel.ChgCoeffs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406GRBModel.ComputeIIS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406GRBModel.DiscardConcurrentEnvs() . . . . . . . . . . . . . . . . . . . . . . 406GRBModel.DiscardMultiobjEnvs() . . . . . . . . . . . . . . . . . . . . . . . . 407GRBModel.Dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407GRBModel.FeasRelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407GRBModel.FixedModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409GRBModel.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409GRBModel.GetCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420GRBModel.GetCol() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421GRBModel.GetConcurrentEnv() . . . . . . . . . . . . . . . . . . . . . . . . . 421GRBModel.GetConstrByName() . . . . . . . . . . . . . . . . . . . . . . . . . 421GRBModel.GetConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421GRBModel.GetEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422GRBModel.GetGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . 422GRBModel.GetGenConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . 428GRBModel.GetJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 428GRBModel.GetMultiobjEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . 429GRBModel.GetObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429GRBModel.GetPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429GRBModel.GetQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430GRBModel.GetQConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430GRBModel.GetQCRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430GRBModel.GetRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431GRBModel.GetSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431GRBModel.GetSOSs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431GRBModel.GetTuneResult() . . . . . . . . . . . . . . . . . . . . . . . . . . . 431GRBModel.GetVarByName() . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    xiii

  • GRBModel.GetVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432GRBModel.Optimize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432GRBModel.OptimizeAsync() . . . . . . . . . . . . . . . . . . . . . . . . . . . 432GRBModel.OptimizeBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . 433GRBModel.Presolve() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433GRBModel.Read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433GRBModel.Remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434GRBModel.Reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435GRBModel.SetCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435GRBModel.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435GRBModel.SetObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447GRBModel.SetObjectiveN() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447GRBModel.SetPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448GRBModel.SingleScenarioModel() . . . . . . . . . . . . . . . . . . . . . . . . 448GRBModel.Sync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449GRBModel.Terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449GRBModel.Tune() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449GRBModel.Update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449GRBModel.Write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

    5.3 GRBVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451GRBVar.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451GRBVar.Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451GRBVar.SameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452GRBVar.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

    5.4 GRBConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454GRBConstr.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454GRBConstr.Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454GRBConstr.SameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455GRBConstr.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

    5.5 GRBQConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457GRBQConstr.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457GRBQConstr.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

    5.6 GRBSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459GRBSOS.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

    5.7 GRBGenConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460GRBGenConstr.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460GRBGenConstr.Set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

    5.8 GRBExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462GRBExpr.Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

    5.9 GRBLinExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463GRBLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463GRBLinExpr.Add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464GRBLinExpr.AddConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . 464GRBLinExpr.AddTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464GRBLinExpr.AddTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

    xiv xiv

  • GRBLinExpr.Clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465GRBLinExpr.Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465GRBLinExpr.GetCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465GRBLinExpr.GetVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465GRBLinExpr.MultAdd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465GRBLinExpr.Remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466GRBLinExpr.Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466GRBLinExpr.Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    5.10 GRBQuadExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467GRBQuadExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467GRBQuadExpr.Add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468GRBQuadExpr.AddConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . 468GRBQuadExpr.AddTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468GRBQuadExpr.AddTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469GRBQuadExpr.Clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470GRBQuadExpr.GetCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470GRBQuadExpr.GetVar1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470GRBQuadExpr.GetVar2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471GRBQuadExpr.LinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471GRBQuadExpr.MultAdd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471GRBQuadExpr.Remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471GRBQuadExpr.Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472GRBQuadExpr.Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

    5.11 GRBTempConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4735.12 GRBColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

    GRBColumn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474GRBColumn.AddTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474GRBColumn.AddTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474GRBColumn.Clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475GRBColumn.GetCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475GRBColumn.GetConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475GRBColumn.Remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475GRBColumn.Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

    5.13 Overloaded Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477operator = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477operator == . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477operator + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478operator - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479operator * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480operator / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482implicit cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

    5.14 GRBCallback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484GRBCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484GRBCallback.Abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

    xv

  • GRBCallback.AddCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484GRBCallback.AddLazy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485GRBCallback.GetDoubleInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . 486GRBCallback.GetIntInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486GRBCallback.GetNodeRel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486GRBCallback.GetSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487GRBCallback.GetStringInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . 487GRBCallback.SetSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488GRBCallback.StopOneMultiObj() . . . . . . . . . . . . . . . . . . . . . . . . 488GRBCallback.UseSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    5.15 GRBException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490GRBException() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490GRBException.ErrorCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

    5.16 GRBBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491GRBBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491GRBBatch.Abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492GRBBatch.Discard() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492GRBBatch.GetJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . 492GRBBatch.Get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492GRBBatch.Retry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493GRBBatch.Update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493GRBBatch.WriteJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . 493

    5.17 GRB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494GRB.CharAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497GRB.DoubleAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497GRB.DoubleParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497GRB.IntAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497GRB.IntParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498GRB.StringAttr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498GRB.StringParam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

    6 Python API Overview 4996.1 Global Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

    models() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505disposeDefaultEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505multidict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505paramHelp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506quicksum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507readParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507resetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507setParam() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507system() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508writeParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

    6.2 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

    xvi xvi

  • Model() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Model.addConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Model.addConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Model.addGenConstrXxx() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511Model.addGenConstrMax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Model.addGenConstrMin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Model.addGenConstrAbs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Model.addGenConstrAnd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Model.addGenConstrOr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Model.addGenConstrIndicator() . . . . . . . . . . . . . . . . . . . . . . . . . 515Model.addGenConstrPWL() . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Model.addGenConstrPoly() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Model.addGenConstrExp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Model.addGenConstrExpA() . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Model.addGenConstrLog() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Model.addGenConstrLogA() . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Model.addGenConstrPow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Model.addGenConstrSin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Model.addGenConstrCos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Model.addGenConstrTan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Model.addLConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522Model.addMConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522Model.addMQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523Model.addMVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Model.addQConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Model.addRange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Model.addSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Model.addVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Model.addVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Model.cbCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Model.cbGet() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Model.cbGetNodeRel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Model.cbGetSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530Model.cbLazy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530Model.cbSetSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531Model.cbStopOneMultiObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . 531Model.cbUseSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Model.chgCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Model.computeIIS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Model.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Model.discardConcurrentEnvs() . . . . . . . . . . . . . . . . . . . . . . . . . . 534Model.discardMultiobjEnvs() . . . . . . . . . . . . . . . . . . . . . . . . . . . 534Model.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534Model.feasRelaxS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535Model.feasRelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536

    xvii

  • Model.fixed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Model.getA() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Model.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Model.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Model.getCol() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Model.getConcurrentEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Model.getConstrByName() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Model.getConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Model.getGenConstrMax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Model.getGenConstrMin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Model.getGenConstrAbs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Model.getGenConstrAnd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541Model.getGenConstrOr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541Model.getGenConstrIndicator() . . . . . . . . . . . . . . . . . . . . . . . . . . 542Model.getGenConstrPWL() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542Model.getGenConstrPoly() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Model.getGenConstrExp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Model.getGenConstrExpA() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Model.getGenConstrLog() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Model.getGenConstrLogA() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Model.getGenConstrPow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Model.getGenConstrSin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Model.getGenConstrCos() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Model.getGenConstrTan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Model.getGenConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Model.getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Model.getMultiobjEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Model.getObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Model.getParamInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Model.getPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Model.getQConstrs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Model.getQCRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Model.getRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Model.getSOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549Model.getSOSs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549Model.getTuneResult() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549Model.getVarByName() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Model.getVars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Model.message() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Model.optimize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Model.optimizeBatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551Model.presolve() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551Model.printAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551Model.printQuality() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552Model.printStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

    xviii xviii

  • Model.read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552Model.relax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Model.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Model.reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Model.resetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554Model.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554Model.setMObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554Model.setObjective() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555Model.setObjectiveN() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Model.setPWLObj() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Model.setParam() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557Model.singleScenarioModel() . . . . . . . . . . . . . . . . . . . . . . . . . . . 557Model.terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Model.tune() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Model.update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Model.write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

    6.3 Var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Var.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Var.sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Var.index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561Var.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

    6.4 MVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562MVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562MVar.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563MVar.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563MVar.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563MVar.sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

    6.5 Constr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Constr.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Constr.index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Constr.sameAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566Constr.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566

    6.6 QConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567QConstr.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567QConstr.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

    6.7 SOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569SOS.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

    6.8 GenConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570GenConstr.getAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570GenConstr.setAttr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570

    6.9 LinExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570LinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571LinExpr.add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572LinExpr.addConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572LinExpr.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

    xix

  • LinExpr.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572LinExpr.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573LinExpr.getConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573LinExpr.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573LinExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573LinExpr.getVar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574LinExpr.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574LinExpr.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574LinExpr.__eq__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574LinExpr.__le__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575LinExpr.__ge__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

    6.10 QuadExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576QuadExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576QuadExpr.add() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577QuadExpr.addConstant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577QuadExpr.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577QuadExpr.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578QuadExpr.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578QuadExpr.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578QuadExpr.getLinExpr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578QuadExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579QuadExpr.getVar1() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579QuadExpr.getVar2() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579QuadExpr.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579QuadExpr.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580QuadExpr.__eq__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580QuadExpr.__le__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580QuadExpr.__ge__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

    6.11 GenExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5816.12 MLinExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582

    MLinExpr.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582MLinExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582MLinExpr.__eq__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583MLinExpr.__le__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583MLinExpr.__ge__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

    6.13 MQuadExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584MQuadExpr.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584MQuadExpr.getValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584MQuadExpr.__eq__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584MQuadExpr.__le__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585MQuadExpr.__ge__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585

    6.14 TempConstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5866.15 Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588

    Column() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588Column.addTerms() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588

    xx xx

  • Column.clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588Column.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589Column.getCoeff() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589Column.getConstr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589Column.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589Column.size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

    6.16 Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5916.17 GurobiError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5926.18 Env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593

    Env() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593Env.ClientEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594Env.CloudEnv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596Env.resetParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597Env.setParam() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597Env.start() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597Env.writeParams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598Env.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

    6.19 Batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599Batch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599Batch.abort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Batch.discard() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Batch.dispose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Batch.getJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Batch.retry() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601Batch.update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601Batch.writeJSONSolution() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

    6.20 GRB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603GRB.Attr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603GRB.Param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

    6.21 tuplelist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604tuplelist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604tuplelist.select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604tuplelist.clean() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605tuplelist.__contains__() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

    6.22 tupledict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606tupledict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606tupledict.select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606tupledict.sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607tupledict.prod() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607tupledict.clean() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608

    6.23 General Constraint Helper Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 609abs_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609and_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609max_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

    xxi

  • min_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610or_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

    7 MATLAB API Overview 6117.1 Common Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614

    The model argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614The params argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627The env argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628

    7.2 Solving a Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630gurobi() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630gurobi_iis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633gurobi_feasrelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635gurobi_relax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

    7.3 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637gurobi_read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637gurobi_write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637

    7.4 Using Gurobi within MATLAB’s Problem-Based Optimization . . . . . . . . . . . . 6387.5 Setting up the Gurobi MATLAB interface . . . . . . . . . . . . . . . . . . . . . . . . 640

    8 R API Overview 6418.1 Common Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

    The model argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644The params argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658The env argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

    8.2 Solving a Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661gurobi() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661gurobi_iis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664gurobi_feasrelax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666gurobi_relax() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

    8.3 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668gurobi_read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668gurobi_write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

    8.4 Installing the R package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

    9 Variables and Constraints and Objectives 6709.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6709.2 Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6719.3 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6789.4 Tolerances and Ill Conditioning -- A Caveat . . . . . . . . . . . . . . . . . . . . . . . 684

    10 Attributes 68510.1 Model Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691

    NumConstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691NumVars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691NumSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692NumQConstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692

    xxii xxii

  • NumGenConstrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692NumNZs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692DNumNZs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692NumQNZs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692NumQCNZs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693NumIntVars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693NumBinVars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693NumPWLObjVars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693ModelName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693ModelSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693ObjCon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694ObjVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694ObjBound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694ObjBoundC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694PoolObjBound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694PoolObjVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695MIPGap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695SolCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695IterCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696BarIterCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696NodeCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696IsMIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696IsQP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696IsQCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696IsMultiObj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697IISMinimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697MaxCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697MinCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697MaxBound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697MinBound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MaxObjCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MinObjCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MaxRHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MinRHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MaxQCCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MinQCCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698MaxQCLCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699MinQCLCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699MaxQCRHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699MinQCRHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699MaxQObjCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699MinQObjCoeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699Kappa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700

    xxiii

  • KappaExact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700FarkasProof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700TuneResultCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700NumStart . . . . . . . . . . . . . . . . . . . . . . . . . .