XPRSaddcols, XPRSaddcols64
XPRSaddcols, XPRSaddcols64 |
Purpose
Allows columns to be added to the
matrix after passing it to the Optimizer using the input routines.
Synopsis
int XPRS_CC XPRSaddcols(XPRSprob prob, int newcol, int newnz, const double objx[], const int mstart[], const int mrwind[], const double dmatval[], const double bdl[], const double bdu[]);
int XPRS_CC XPRSaddcols64(XPRSprob prob, int newcol, XPRSint64 newnz, const double objx[], const XPRSint64 mstart[], const int mrwind[], const double dmatval[], const double bdl[], const double bdu[]);
Arguments
|
prob
|
The current problem.
|
|
newcol
|
Number of new columns.
|
|
newnz
|
Number of new nonzeros in the added columns.
|
|
objx
|
Double array of length
newcol containing the objective function coefficients of the new columns.
|
|
mstart
|
Integer array of length
newcol containing the offsets in the
mrwind and
dmatval arrays of the start of the elements for each column.
|
|
mrwind
|
Integer array of length
newnz containing the row indices for the elements in each column.
|
|
dmatval
|
Double array of length
newnz containing the element values.
|
|
bdl
|
Double array of length
newcol containing the lower bounds on the added columns.
|
|
bdu
|
Double array of length
newcol containing the upper bounds on the added columns.
|
Related controls
Integer
Double
|
Number of extra columns to be allowed for.
|
|
|
Number of extra matrix elements to be allowed for.
|
|
|
Number of extra global entities to be allowed for.
|
Double
|
Tolerance on matrix elements.
|
Example
In this example, we consider the two problems:
| (a) | maximize: | 2x + y | (b) | maximize: | 2x + y + 3z | |||||
| subject to: | x + 4y | ≤ | 24 | subject to: | x + 4y + 2z | ≤ | 24 | |||
| y | ≤ | 5 | y + z | ≤ | 5 | |||||
| 3x + y | ≤ | 20 | 3x + y | ≤ | 20 | |||||
| x + y | ≤ | 9 | x + y + 3z | ≤ | 9 | |||||
| z | ≤ | 12 |
Using
XPRSaddcols, the following transforms (a) into (b) and then names the new variable using
XPRSaddnames:
obj[0] = 3;
mstart[] = {0};
mrwind[] = {0, 1, 3};
matval[] = {2.0, 1.0, 3};
bdl[0] = XPRS_MINUSINFINITY; bdu[0] = 12;
...
XPRSaddcols(prob,1,3,obj,mstart,mrwind,matval,bdl,bdu);
XPRSaddnames(prob,2,"z",2,2);
Further information
1. The double constants
XPRS_PLUSINFINITY
and
XPRS_MINUSINFINITY
defined in the library header file can be used to represent plus and minus
infinity respectively in the bound arrays.
2. If the columns are added to a MIP problem then they will be continuous variables. Use XPRSchgcoltype to impose integrality conditions on such new columns.
Related topics
© 2001-2019 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation ("FICO"). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.
