XPRS_bo_addrows
XPRS_bo_addrows |
Purpose
Adds new constraints to a branch of a user branching object.
Synopsis
int XPRS_CC XPRS_bo_addrows(XPRSbranchobject obranch, int ibranch, int nrows, int nelems, const char crtype[], const double drrhs[], const int mrbeg[], const int mcol[], const double dval[]);
Arguments
obranch
|
The user branching object to modify.
|
||||||
ibranch
|
The number of the branch to add the new constraints for. This branch must already have been created using
XPRS_bo_addbranches. Branches are indexed starting from zero.
|
||||||
nrows
|
Number of new constraints to add.
|
||||||
nelems
|
Number of non-zero coefficients in all new constraints.
|
||||||
crtype
|
Character array of length
nrows indicating the type of constraints to add:
|
||||||
drrhs
|
Double array of length
nrows containing the right hand side values.
|
||||||
mrbeg
|
Integer array of length
nrows containing the offsets of the
mcol and
dval arrays of the start of the non zero coefficients in the new constraints.
|
||||||
mcol
|
Integer array of length
nelems containing the column indices for the non zero coefficients.
|
||||||
dval
|
Double array of length
nelems containing the non zero coefficient values.
|
Example
The following function will create a branching object that branches on constraints
x_1 + x_2 ≥ 1 or
x_1 + x_2 ≤ 0:
XPRSbranchobject CreateConstraintBranch(XPRSprob xp_mip, int icol) { char cRowType; double dRowRHS; int mRowBeg; int mElemCol[2]; double dElemVal[2]; XPRSbranchobject bo = NULL; int isoriginal = 1; /* Create the new object with two empty branches. */ XPRS_bo_create(&bo, xp_mip, isoriginal); XPRS_bo_addbranches(bo, 2); /* Add the constraint x1 + x2 >= 1. */ cRowType = 'G'; dRowRHS = 1.0; mRowBeg = 0; mElemCol[0] = 0; mElemCol[1] = 1; dElemVal[0] = 1.0; dElemVal[1] = 1.0; XPRS_bo_addrows (bo, 0, 1, 2, &cRowType, &dRowRHS, &mRowBeg, mElemCol, dElemVal); /* Add the constraint x1 + x2 <= 0. */ cRowType = 'L'; dRowRHS = 0.0; XPRS_bo_addrows (bo, 1, 1, 2, &cRowType, &dRowRHS, &mRowBeg, mElemCol, dElemVal); /* Set a low priority value so our branch object is picked up */ /* before the default branch candidates. */ XPRS_bo_setpriority(bo, 100); return bo; }
Related topics