 |
int QSadd_rows (QSprob p, int num, int *rmatcnt, int *rmatbeg,
int *rmatind, double *rmatval, double *rhs, char *sense,
char **names)
|
 |
Use QSadd_rows to add a collection of constraints to an LP problem, including the non-zero coefficients of the constraints in the existing columns of the problem. The arguments to specify the non-zero coefficients follow the same pattern as in QSload_prob. When specifying rmatval and rhs , it is important not to give any value larger in magnitude than QS_MAXDOUBLE (1e30). This restriction is due to the internal structures used in the QSopt solvers. Note that to add single constraint, it is simpler to use QSadd_row.)
|
 |
/* Assume p is initialized to the problem in the QSload_prob example. */
/* Add two new rows to obtain the following LP. */
/* Maximize 3.0x + 2.0y + 4.0z */
/* Subject to */
/* 3.1x + 2.3y + 1.4z <= 12.2 */
/* 5.0x + 1.1y = 10.0 */
/* 0.5x + 2.0y + 4.0z >= 6.0 New */
/* 3.0y + 2.0z <= 8.0 New */
/* x >= 2.0 */
/* y free */
/* 1.0 <= z <= 10.0 */
/* */
int rval;
int rmatcnt[2] = { 3, 2 };
int rmatbeg[2] = { 0, 3 };
int rmatind[5] = { 0, 1, 2, 1, 2 };
double rmatval[5] = { 0.5, 2.0, 4.0, 3.0, 2.0 };
double rhs[2] = { 6.0, 8.0 };
char sense[2] = { 'G', 'L' };
rval = QSadd_rows (p, 2, rmatcnt, rmatbeg, rmatind, rmatval, rhs,
sense, (char **) NULL);
if (rval) {
fprintf (stderr, "Add rows failed, error code %d\n", rval);
} else {
rval = QSwrite_prob (p, "new2small.lp", "LP");
if (rval) {
fprintf (stderr, "Could not write LP, error code %d\n", rval);
}
}
|