Documentation


GRBgetgenconstrIndicator

int GRBgetgenconstrIndicator ( GRBmodel *model,
    int id,
    int* binvarP,
    int* binvalP,
    int* nvarsP,
    int* ind,
    double* val,
    char* senseP,
    double* rhsP )

Retrieve the data of a general constraint of type INDICATOR. Calling this function for a general constraint of different type leads to an error return code. You can query the GenConstrType attribute to determine the type of the general constraint.

Typical usage is to call this routine twice. In the first call, you specify the requested general constraint, with NULL values for the ind and val arguments. The routine returns the total number of non-zero coefficients in the linear constraint associated with the specified indicator constraint in nvarsP. That allows you to make certain that the ind and val arrays are of sufficient size to hold the result of the second call.

See also GRBaddgenconstrIndicator for a description of the semantics of this general constraint type.

Return value:

A non-zero return value indicates that a problem occurred while retrieving the data of the general constraint. Refer to the Error Code table for a list of possible return values. Details on the error can be obtained by calling GRBgeterrormsg.

Arguments:

model: The model to which the new general constraint should be added.

id: The index of the general constraint to retrieve.

Note that any combination of the following arguments can be NULL.

int *binvarP: The variable index associated with the binary indicator variable.

int *binvalP: The value that the indicator variable has to take in order to trigger the linear constraint.

int *nvarsP: The number of non-zero coefficients in the linear constraint triggered by the indicator.

int *ind: An array to store the variable indices for non-zero values in the linear constraint.

double *val: An array to store the numerical values for non-zero values in the linear constraint.

char *senseP: Sense for the linear constraint. Options are GRB_LESS_EQUAL, GRB_EQUAL, or GRB_GREATER_EQUAL.

double *rhsP: Right-hand-side value for the linear constraint.

Example usage:

  int type;
  int binvar;
  int binval:
  int nvars;
  int *ind;
  double *val;
  char sense;
  double rhs;

  error = GRBgetintattrelement(model, GRB_INT_ATTR_GENCONSTRTYPE, 3, &type);
  if (type == GRB_GENCONSTR_INDICATOR) {
    error = GRBgetgenconstrIndicator(model, 3, &binvar, &binval, &nvars,
                                     NULL, NULL, &sense, &rhs);
    /* ...allocate ind and val to hold 'nvars' values... */
    error = GRBgetgenconstrIndicator(model, 3, NULL, NULL, NULL,
                                     ind, val, NULL, NULL);
  }