int GRBgetgenconstrPWL ( GRBmodel *model,
int id,
int *xvarP,
int *yvarP,
int *nptsP,
double *xpts,
double *ypts )

Retrieve the data associated with a general constraint of type PWL. Calling this method for a general constraint of a 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 a NULL value for the xpts and ypts arguments. The routine returns the length for the xpts and ypts arrays in nptsP. That allows you to make certain that the xpts and ypts arrays are of sufficient size to hold the result of the second call.

See also GRBaddgenconstrPWL 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 general constraint data. Refer to the Error Code table for a list of possible return values. Details on the error can be obtained by calling GRBgeterrormsg.


model: The model that contains the desired general constraint.

id: The index of the general constraint to retrieve.

Note that any of the following arguments can be NULL.

xvarP: The index of variable <span>$</span>x<span>$</span>.

yvarP: The index of variable <span>$</span>y<span>$</span>.

nptsP: The number of points that define the piecewise-linear function.

xpts: The <span>$</span>x<span>$</span> values for the points that define the piecewise-linear function.

ypts: The <span>$</span>y<span>$</span> values for the points that define the piecewise-linear function.

Example usage:

  int type;
  int xvar;
  int yvar;
  int npts;
  double *xpts;
  double *ypts;

  error = GRBgetintattrelement(model, GRB_INT_ATTR_GENCONSTRTYPE, 3, &type);
  if (type == GRB_GENCONSTR_PWL) {
    error = GRBgetgenconstrPWL(model, 3, &xvar, &yvar, &npts, NULL, NULL);
    /* ...allocate xpts and ypts arrays with length npts */
    error = GRBgetgenconstrPWL(model, 3, NULL, NULL, NULL, xpts, ypts);