The following list contains the set of constants needed by the Gurobi
.NET interface. You would refer to them using a GRB. prefix
(e.g., GRB.Status.OPTIMAL).
// Model status codes (after call to optimize())
/// <summary>
/// Optimization status codes
/// </summary>
public class Status
{
/// <summary>
/// Model is loaded, but no solution information is available.
/// </summary>
public const int LOADED = 1;
/// <summary>
/// Model was solved to optimality (subject to tolerances) and an optimal
/// solution is available.
/// </summary>
public const int OPTIMAL = 2;
/// <summary>
/// Model was proven to be infeasible.
/// </summary>
public const int INFEASIBLE = 3;
/// <summary>
/// Model was proven to be either infeasible or unbounded.
/// </summary>
public const int INF_OR_UNBD = 4;
/// <summary>
/// Model was proven to be unbounded.
/// </summary>
public const int UNBOUNDED = 5;
/// <summary>
/// Optimal objective was proven to be worse than the value specified
/// in the Cutoff parameter.
/// </summary>
public const int CUTOFF = 6;
/// <summary>
/// Optimization terminated because the total number of simplex
/// iterations performed exceeded the limit specified in the IterationLimit
/// parameter.
/// </summary>
public const int ITERATION_LIMIT = 7;
/// <summary>
/// Optimization terminated because the total number of branch-and-cut
/// nodes explored exceeded the limit specified in the NodeLimit
/// parameter.
/// </summary>
public const int NODE_LIMIT = 8;
/// <summary>
/// Optimization terminated because the total elapsed time
/// exceeded the limit specified in the TimeLimit parameter.
/// </summary>
public const int TIME_LIMIT = 9;
/// <summary>
/// Optimization terminated because the number of solutions found
/// reached the value specified in the SolutionLimit parameter.
/// </summary>
public const int SOLUTION_LIMIT = 10;
/// <summary>
/// Optimization was terminated by the user.
/// </summary>
public const int INTERRUPTED = 11;
/// <summary>
/// Optimization was terminated due to unrecoverable numerical
/// difficulties.
/// </summary>
public const int NUMERIC = 12;
/// <summary>
/// Optimization terminated with a sub-optimal solution.
/// </summary>
public const int SUBOPTIMAL = 13;
/// <summary>
/// Optimization is still in progress.
/// </summary>
public const int INPROGRESS = 14;
/// <summary>
/// User specified objective limit (a bound on either the best objective
/// or the best bound), and that limit has been reached.
/// </summary>
public const int USER_OBJ_LIMIT = 15;
/// <summary>
/// Optimization terminated because the total elapsed work
/// exceeded the limit specified in the WorkLimit parameter.
/// </summary>
public const int WORK_LIMIT = 16;
/// <summary>
/// Optimization terminated because the total amount of allocated
/// memory exceeded the limit specified in the SoftMemLimit parameter.
/// </summary>
public const int MEM_LIMIT = 17;
}
/// <summary>
/// Batch status codes
/// </summary>
public class BatchStatus
{
/// <summary>
/// Batch object was created, but is not ready to be scheduled.
/// See the Batch Optimization section of the manual for more details.
/// </summary>
public const int CREATED = 1;
/// <summary>
/// The Batch object has been completely specified, and now is waiting
/// for a job to finish processing the request.
/// See the Batch Optimization section of the manual for more details.
/// </summary>
public const int SUBMITTED = 2;
/// <summary>
/// Batch processing was aborted by the user.
/// See the Batch Optimization section of the manual for more details.
/// </summary>
public const int ABORTED = 3;
/// <summary>
/// Batch processing failed.
/// See the Batch Optimization section of the manual for more details.
/// </summary>
public const int FAILED = 4;
/// <summary>
/// A Batch Job successfully processed the Batch request.
/// See the Batch Optimization section of the manual for more details.
/// </summary>
public const int COMPLETED = 5;
}
// Version numbers
/// <summary>
/// Major number
/// </summary>
public const int VERSION_MAJOR = 10;
/// <summary>
/// Minor number
/// </summary>
public const int VERSION_MINOR = 0;
/// <summary>
/// Technical number
/// </summary>
public const int VERSION_TECHNICAL = 0;
// Basis status info
/// <summary>
/// Variable is basic.
/// </summary>
public const int BASIC = 0;
/// <summary>
/// Variable is non-basic at lower bound.
/// </summary>
public const int NONBASIC_LOWER = -1;
/// <summary>
/// Variable is non-basic at upper bound.
/// </summary>
public const int NONBASIC_UPPER = -2;
/// <summary>
/// Variable is superbasic.
/// </summary>
public const int SUPERBASIC = -3;
// Constraint senses
/// <summary>
/// Less or equal constraint sense.
/// </summary>
public const char LESS_EQUAL = '<';
/// <summary>
/// Greater or equal constraint sense.
/// </summary>
public const char GREATER_EQUAL = '>';
/// <summary>
/// Equal constraint sense.
/// </summary>
public const char EQUAL = '=';
// Variable types
/// <summary>
/// Continuous variable.
/// </summary>
public const char CONTINUOUS = 'C';
/// <summary>
/// Binary variable.
/// </summary>
public const char BINARY = 'B';
/// <summary>
/// Integer variable.
/// </summary>
public const char INTEGER = 'I';
/// <summary>
/// Semi-continuous variable.
/// </summary>
public const char SEMICONT = 'S';
/// <summary>
/// Semi-integer variable.
/// </summary>
public const char SEMIINT = 'N';
// Objective sense
/// <summary>
/// Minimization objective.
/// </summary>
public const int MINIMIZE = 1;
/// <summary>
/// Maximization objective.
/// </summary>
public const int MAXIMIZE = -1;
// SOS types
/// <summary>
/// SOS of type 1.
/// </summary>
public const int SOS_TYPE1 = 1;
/// <summary>
/// SOS of type 2.
/// </summary>
public const int SOS_TYPE2 = 2;
// General constraint types
/// <summary>
/// General constraint maximum.
/// </summary>
public const int GENCONSTR_MAX = 0;
/// <summary>
/// General constraint minimum.
/// </summary>
public const int GENCONSTR_MIN = 1;
/// <summary>
/// General constraint absolute value.
/// </summary>
public const int GENCONSTR_ABS = 2;
/// <summary>
/// General constraint logical AND.
/// </summary>
public const int GENCONSTR_AND = 3;
/// <summary>
/// General constraint logical OR.
/// </summary>
public const int GENCONSTR_OR = 4;
/// <summary>
/// General constraint norm.
/// </summary>
public const int GENCONSTR_NORM = 5;
/// <summary>
/// General constraint indicator.
/// </summary>
public const int GENCONSTR_INDICATOR = 6;
/// <summary>
/// General constraint piecewise-linear.
/// </summary>
public const int GENCONSTR_PWL = 7;
/// <summary>
/// General constraint polynomial function.
/// </summary>
public const int GENCONSTR_POLY = 8;
/// <summary>
/// General constraint natural exponential function.
/// </summary>
public const int GENCONSTR_EXP = 9;
/// <summary>
/// General constraint exponential function.
/// </summary>
public const int GENCONSTR_EXPA = 10;
/// <summary>
/// General constraint natural logarithmic function.
/// </summary>
public const int GENCONSTR_LOG = 11;
/// <summary>
/// General constraint logarithmic function.
/// </summary>
public const int GENCONSTR_LOGA = 12;
/// <summary>
/// General constraint power function.
/// </summary>
public const int GENCONSTR_POW = 13;
/// <summary>
/// General constraint sine function.
/// </summary>
public const int GENCONSTR_SIN = 14;
/// <summary>
/// General constraint cosine function.
/// </summary>
public const int GENCONSTR_COS = 15;
/// <summary>
/// General constraint tangent function.
/// </summary>
public const int GENCONSTR_TAN = 16;
/// <summary>
/// General constraint logistic function.
/// </summary>
public const int GENCONSTR_LOGISTIC = 17;
// Numeric constants
/// <summary>
/// Infinity value.
/// </summary>
public const double INFINITY = 1e100;
/// <summary>
/// Undefined value.
/// </summary>
public const double UNDEFINED = 1e101;
/// <summary>
/// Maximum integer value.
/// </summary>
public const int MAXINT = 2000000000;
// Other constants
/// <summary>
/// Default compute server port.
/// </summary>
public const int DEFAULT_CS_PORT = 61000;
// Limits
/// <summary>
/// Maximum string length.
/// </summary>
public const int MAX_STRLEN = 512;
/// <summary>
/// Maximum name length.
/// </summary>
public const int MAX_NAMELEN = 255;
/// <summary>
/// Maximum tag length.
/// </summary>
public const int MAX_TAGLEN = 10240;
/// <summary>
/// Maximum concurrent threads.
/// </summary>
public const int MAX_CONCURRENT = 64;
// Callback constants
/// <summary>
/// Gurobi callback codes.
/// </summary>
public class Callback
{
/// <summary>
/// Periodic polling callback.
/// </summary>
public const int POLLING = 0;
/// <summary>
/// Currently performing presolve.
/// </summary>
public const int PRESOLVE = 1;
/// <summary>
/// Currently in simplex.
/// </summary>
public const int SIMPLEX = 2;
/// <summary>
/// Currently in MIP.
/// </summary>
public const int MIP = 3;
/// <summary>
/// Found a new MIP incumbent.
/// </summary>
public const int MIPSOL = 4;
/// <summary>
/// Currently exploring a MIP node.
/// </summary>
public const int MIPNODE = 5;
/// <summary>
/// Currently in barrier.
/// </summary>
public const int BARRIER = 7;
/// <summary>
/// Printing a log message.
/// </summary>
public const int MESSAGE = 6;
/// <summary>
/// Currently in multi-objective optimization.
/// </summary>
public const int MULTIOBJ = 8;
/// <summary>
/// Currently computing an IIS.
/// </summary>
public const int IIS = 9;
/// <summary>
/// Returns the number of columns removed by presolve to this point.
/// </summary>
public const int PRE_COLDEL = 1000;
/// <summary>
/// Returns the number of rows removed by presolve to this point.
/// </summary>
public const int PRE_ROWDEL = 1001;
/// <summary>
/// Returns the number of constraint senses changed by presolve to this
/// point.
/// </summary>
public const int PRE_SENCHG = 1002;
/// <summary>
/// Returns the number of bounds changed by presolve to this point.
/// </summary>
public const int PRE_BNDCHG = 1003;
/// <summary>
/// Returns the number of coefficients changed by presolve to this point.
/// </summary>
public const int PRE_COECHG = 1004;
/// <summary>
/// Returns the current simplex iteration count.
/// </summary>
public const int SPX_ITRCNT = 2000;
/// <summary>
/// Returns the current simplex objective value.
/// </summary>
public const int SPX_OBJVAL = 2001;
/// <summary>
/// Returns the current simplex primal infeasibility.
/// </summary>
public const int SPX_PRIMINF = 2002;
/// <summary>
/// Returns the current simplex dual infeasibility.
/// </summary>
public const int SPX_DUALINF = 2003;
/// <summary>
/// Returns 1 if the model has been perturbed.
/// </summary>
public const int SPX_ISPERT = 2004;
/// <summary>
/// Returns the current best objective value.
/// </summary>
public const int MIP_OBJBST = 3000;
/// <summary>
/// Returns the current best objective bound.
/// </summary>
public const int MIP_OBJBND = 3001;
/// <summary>
/// Returns the current explored node count.
/// </summary>
public const int MIP_NODCNT = 3002;
/// <summary>
/// Returns the current solution count.
/// </summary>
public const int MIP_SOLCNT = 3003;
/// <summary>
/// Returns the current cutting plane count.
/// </summary>
public const int MIP_CUTCNT = 3004;
/// <summary>
/// Returns the current unexplored node count.
/// </summary>
public const int MIP_NODLFT = 3005;
/// <summary>
/// Returns the current simplex iteration count.
/// </summary>
public const int MIP_ITRCNT = 3006;
/// <summary>
/// For a multi-scenario model, returns the number of scenarios that are still open.
/// </summary>
public const int MIP_OPENSCENARIOS = 3007;
/// <summary>
/// Returns the current phase of the MIP algorithm.
/// </summary>
public const int MIP_PHASE = 3008;
/// <summary>
/// Returns the new solution.
/// </summary>
public const int MIPSOL_SOL = 4001;
/// <summary>
/// Returns the objective value for the new solution.
/// </summary>
public const int MIPSOL_OBJ = 4002;
/// <summary>
/// Returns the current best objective value.
/// </summary>
public const int MIPSOL_OBJBST = 4003;
/// <summary>
/// Returns the current best objective bound.
/// </summary>
public const int MIPSOL_OBJBND = 4004;
/// <summary>
/// Returns the current explored node count.
/// </summary>
public const int MIPSOL_NODCNT = 4005;
/// <summary>
/// Returns the current solution count.
/// </summary>
public const int MIPSOL_SOLCNT = 4006;
/// <summary>
/// For a multi-scenario model, returns the number of scenarios that are still open.
/// </summary>
public const int MIPSOL_OPENSCENARIOS = 4007;
/// <summary>
/// Returns the current phase of the MIP algorithm.
/// </summary>
public const int MIPSOL_PHASE = 4008;
/// <summary>
/// Returns the status of the current node relaxation.
/// </summary>
public const int MIPNODE_STATUS = 5001;
/// <summary>
/// Returns the current node relaxation solution or ray.
/// </summary>
public const int MIPNODE_REL = 5002;
/// <summary>
/// Returns the current best objective value.
/// </summary>
public const int MIPNODE_OBJBST = 5003;
/// <summary>
/// Returns the current best objective bound.
/// </summary>
public const int MIPNODE_OBJBND = 5004;
/// <summary>
/// Returns the current explored node count.
/// </summary>
public const int MIPNODE_NODCNT = 5005;
/// <summary>
/// Returns the current solution count.
/// </summary>
public const int MIPNODE_SOLCNT = 5006;
/// <summary>
/// Returns the branching variable for the current node.
/// </summary>
public const int MIPNODE_BRVAR = 5007;
/// <summary>
/// For a multi-scenario model, returns the number of scenarios that are still open.
/// </summary>
public const int MIPNODE_OPENSCENARIOS = 5008;
/// <summary>
/// Returns the current phase of the MIP algorithm.
/// </summary>
public const int MIPNODE_PHASE = 5009;
/// <summary>
/// Returns the current barrier iteration count.
/// </summary>
public const int BARRIER_ITRCNT = 7001;
/// <summary>
/// Returns the current barrier primal objective value.
/// </summary>
public const int BARRIER_PRIMOBJ = 7002;
/// <summary>
/// Returns the current barrier dual objective value.
/// </summary>
public const int BARRIER_DUALOBJ = 7003;
/// <summary>
/// Returns the current barrier primal infeasibility.
/// </summary>
public const int BARRIER_PRIMINF = 7004;
/// <summary>
/// Returns the current barrier dual infeasibility.
/// </summary>
public const int BARRIER_DUALINF = 7005;
/// <summary>
/// Returns the current barrier complementarity violation.
/// </summary>
public const int BARRIER_COMPL = 7006;
/// <summary>
/// Returns the message that is being printed.
/// </summary>
public const int MSG_STRING = 6001;
/// <summary>
/// Returns the elapsed solver runtime (in seconds).
/// </summary>
public const int RUNTIME = 6002;
/// <summary>
/// Returns the elapsed solver work (in work units).
/// </summary>
public const int WORK = 6003;
/// <summary>
/// Returns the number of objectives that have already been optimized.
/// </summary>
public const int MULTIOBJ_OBJCNT = 8001;
/// <summary>
/// Returns the current solution count.
/// </summary>
public const int MULTIOBJ_SOLCNT = 8002;
/// <summary>
/// Returns the new solution.
/// </summary>
public const int MULTIOBJ_SOL = 8003;
/// <summary>
/// Returns the minimum number of constraints in the IIS.
/// </summary>
public const int IIS_CONSTRMIN = 9001;
/// <summary>
/// Returns the maximum number of constraints in the IIS.
/// </summary>
public const int IIS_CONSTRMAX = 9002;
/// <summary>
/// Returns the estimated number of constraints in the IIS.
/// </summary>
public const int IIS_CONSTRGUESS = 9003;
/// <summary>
/// Returns the minimum number of bounds in the IIS.
/// </summary>
public const int IIS_BOUNDMIN = 9004;
/// <summary>
/// Returns the maximum number of bounds in the IIS.
/// </summary>
public const int IIS_BOUNDMAX = 9005;
/// <summary>
/// Returns the estimated number of bounds in the IIS.
/// </summary>
public const int IIS_BOUNDGUESS = 9006;
}
// Errors
/// <summary>
/// Gurobi error codes.
/// </summary>
public class Error
{
/// <summary>
/// Available memory was exhausted.
/// </summary>
public const int OUT_OF_MEMORY = 10001;
/// <summary>
/// NULL input value provided for a required argument.
/// </summary>
public const int NULL_ARGUMENT = 10002;
/// <summary>
/// Invalid input value.
/// </summary>
public const int INVALID_ARGUMENT = 10003;
/// <summary>
/// Tried to query or set an unknown attribute.
/// </summary>
public const int UNKNOWN_ATTRIBUTE = 10004;
/// <summary>
/// Tried to query or set an attribute that could not be accessed.
/// </summary>
public const int DATA_NOT_AVAILABLE = 10005;
/// <summary>
/// Index for attribute query was out of range.
/// </summary>
public const int INDEX_OUT_OF_RANGE = 10006;
/// <summary>
/// Tried to query or set an unknown parameter.