Purpose
Used to load a
global problem in to the Optimizer data structures.
Integer,
binary,
partial integer,
semi-continuous and
semi-continuous integer variables can be defined,
together with
sets of type 1 and 2. The reference row values for the set members are passed as an array rather
than specifying a reference row.
Synopsis
int XPRS_CC XPRSloadglobal(XPRSprob prob, const char *probname, int ncol, int nrow, const char qrtype[], const double rhs[],
const double range[], const double obj[], const int mstart[], const int mnel[], const int mrwind[], const double dmatval[],
const double dlb[],
const double dub[], int ngents, int nsets, const char qgtype[], const int mgcols[], const double dlim[], const char qstype[],
const int msstart[], const int mscols[], const double dref[]);
Arguments
prob
|
The current problem.
|
probname
|
A string of up to 200 characters containing a name for the problem.
|
ncol
|
Number of structural columns in the matrix.
|
nrow
|
Number of rows in the matrix not (including the objective row). Objective coefficients must be supplied in the obj array, and the objective function should not be included in any of the other arrays.
|
qrtype
|
Character array of length nrow containing the row types:
L
|
indicates a  constraint;
|
E
|
indicates an = constraint;
|
G
|
indicates a  constraint;
|
R
|
indicates a range constraint;
|
N
|
indicates a nonbinding constraint.
|
|
rhs
|
Double array of length nrow containing the right hand side coefficients. The right hand side value for a range row gives the upper bound on the row.
|
range
|
Double array of length nrow containing the range values for range rows. Values for all other rows will be ignored. May be NULL if not required. The lower bound on a range row is the right hand side value minus the range value. The sign of the range
value is ignored - the absolute value is used in all cases.
|
obj
|
Double array of length ncol containing the objective function coefficients.
|
mstart
|
Integer array containing the offsets in the mrwind and dmatval arrays of the start of the elements for each column. This array is of length ncol or, if mnel is NULL, length ncol+1. If mnel is NULL, the extra entry of mstart, mstart[ncol], contains the position in the mrwind and dmatval arrays at which an extra column would start, if it were present. In C, this value is also the length of the mrwind and dmatval arrays.
|
mnel
|
Integer array of length ncol containing the number of nonzero elements in each column. May be NULL if not required. This array is not required if the non-zero coefficients in the mrwind and dmatval arrays are continuous, and the mstart array has ncol+1 entries as described above. It may be NULL if not required.
|
mrwind
|
Integer arrays containing the row indices for the nonzero elements in each column. If the indices are input contiguously,
with the columns in ascending order, then the length of mrwind is mstart[ncol-1]+mnel[ncol-1] or, if mnel is NULL, mstart[ncol].
|
dmatval
|
Double array containing the nonzero element values length as for mrwind.
|
dlb
|
Double array of length ncol containing the lower bounds on the columns. Use XPRS_MINUSINFINITY to represent a lower bound of minus infinity.
|
dub
|
Double array of length ncol containing the upper bounds on the columns. Use XPRS_PLUSINFINITY to represent an upper bound of plus infinity.
|
ngents
|
Number of binary, integer, semi-continuous, semi-continuous integer and partial integer entities.
|
nsets
|
Number of SOS1 and SOS2 sets.
|
qgtype
|
Character array of length ngents containing the entity types:
B
|
binary variables;
|
I
|
integer variables;
|
P
|
partial integer variables;
|
S
|
semi-continuous variables;
|
R
|
semi-continuous integer variables.
|
|
mgcols
|
Integer array length ngents containing the column indices of the global entities.
|
dlim
|
Double array length ngents containing the integer limits for the partial integer variables and lower bounds for semi-continuous and semi-continuous
integer variables (any entries in the positions corresponding to binary and integer variables will be ignored). May be NULL if not required.
|
qstype
|
Character array of length nsets containing the set types:
1
|
SOS1 type sets;
|
2
|
SOS2 type sets.
|
May be NULL if not required.
|
msstart
|
Integer array containing the offsets in the mscols and dref arrays indicating the start of the sets. This array is of length nsets+1, the last member containing the offset where set nsets+1 would start. May be NULL if not required.
|
mscols
|
Integer array of length msstart[nsets]-1 containing the columns in each set. May be NULL if not required.
|
dref
|
Double array of length msstart[nsets]-1 containing the reference row entries for each member of the sets. May be NULL if not required.
|
Related Controls
Integer
|
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.
|
|
Number of extra elements to allow for in presolve.
|
|
Number of extra rows to be allowed for.
|
|
Status for nonbinding rows.
|
|
Type of scaling.
|
Double
|
Zero tolerance on matrix elements.
|
|
Minimum gap between reference row entries.
|
Example
The following specifies an integer problem,
globalEx, corresponding to:
maximize: |
x + 2y |
|
|
subject to: |
3x + 2y |
 |
400 |
|
x + 3y |
 |
200 |
with both
x and
y integral:
char probname[] = "globalEx";
int ncol = 2, nrow = 2;
char qrtype[] = {"L","L"};
double rhs[] = {400.0, 200.0};
int mstart[] = {0, 2, 4};
int mrwind[] = {0, 1, 0, 1};
double dmatval[] = {3.0, 1.0, 2.0, 3.0};
double objcoefs[] = {1.0, 2.0};
double dlb[] = {0.0, 0.0};
double dub[] = {200.0, 200.0};
int ngents = 2;
int nsets = 0;
char qgtype[] = {"I","I"};
int mgcols[] = {0,1};
...
XPRSloadglobal(prob, probname, ncol, nrow, qrtype, rhs, NULL,
objcoefs, mstart, NULL, mrwind,
dmatval, dlb, dub, ngents, nsets, qgtype, mgcols,
NULL, NULL, NULL, NULL, NULL);
Further information
1. The row and column indices follow the usual C convention of going from
0 to nrow-1 and 0 to ncol-1 respectively.
2. The double constants XPRS_PLUSINFINITY and XPRS_MINUSINFINITY
are defined in the Optimizer library header file.
3. Semi-continuous lower bounds are taken from the dlim array. If this is
NULL then they are given a default value of 1.0. If a semi-continuous variable
has a positive lower bound then this will be used as the semi-continuous lower bound and the lower
bound on the variable will be set to zero.
Related topics
If you have any comments or suggestions about these pages,
please send mail to docs@dashoptimization.com.