Try our new documentation site (beta).


Constants

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>
  /// 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     = 9;

  /// <summary>
  /// Minor number
  /// </summary>
  public const int VERSION_MINOR     = 5;

  /// <summary>
  /// Technical number
  /// </summary>
  public const int VERSION_TECHNICAL = 2;

  // 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;

  // 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.
    /// </summary>
    public const int UNKNOWN_PARAMETER        = 10007;

    /// <summary>
    /// Tried to set a parameter to a value that is outside its valid range.
    /// </summary>
    public const int VALUE_OUT_OF_RANGE       = 10008;

    /// <summary>
    /// Failed to obtain a Gurobi license.

Try Gurobi for Free

Choose the evaluation license that fits you best, and start working with our Expert Team for technical guidance and support.

Evaluation License
Get a free, full-featured license of the Gurobi Optimizer to experience the performance, support, benchmarking and tuning services we provide as part of our product offering.
Academic License
Gurobi supports the teaching and use of optimization within academic institutions. We offer free, full-featured copies of Gurobi for use in class, and for research.
Cloud Trial

Request free trial hours, so you can see how quickly and easily a model can be solved on the cloud.

Search

Gurobi Optimization