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.0}; bdl[0] = XPRS_MINUSINFINITY; bdu[0] = 12.0; ... 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