The sparse format to PROC LP is designed to enable you to specify only the nonzero coefficients in the description of linear programs, integer programs, and mixedinteger programs. The SAS data set that describes the sparse model must contain at least four SAS variables:
a type variable
a column variable
a row variable
a coefficient variable
Each observation in the data set associates a type with a row or column, and defines a coefficient or numerical value in the model. The value of the type variable is a keyword that tells PROC LP how to interpret the observation. In addition to the keywords in the dense format, PROC LP also recognizes the keywords RHS, RHSSEN, and RANGE as values of the type variable. Table 5.4 shows the keywords that are recognized by PROC LP and in which variables can appear in the problem data set.
The values of the row and column variables are the names of the rows and columns in the model. The values of the coefficient variables define basic coefficients and lower and upper bounds, and identify model variables with types BASIC, FIXED, BINARY, and INTEGER. All character values in the sparse data input format are case insensitive.
The SAS data set can contain multiple pairs of rows and coefficient variables. In this way, more information about the model can be specified in each observation in the data set. See Example 5.2 for details.
Table 5.4: Variable Keywords Used in the Problem Data Set
TYPE ( 
COL ( 
MIN 

MAX 

EQ 

LE 

GE 

SOSEQ 

SOSLE 

UNRSTRT 

LOWERBD 

UPPERBD 

FIXED 

INTEGER 

BINARY 

BASIC 

PRICESEN 

FREE 

RHS 
_RHS_ 
RHSSEN 
_RHSSEN_ 
RANGE 
_RANGE_ 
xxxxxxx 
Follow these rules for sparse data input:
The order of the observations is unimportant.
Each unique column name appearing in the COL variable defines a unique column in the model.
Each unique row name appearing in the ROW variable defines a unique row in the model.
The type of the row is identified when an observation in which the row name appears (in a ROW variable) has type MIN, MAX, LE, GE, EQ, SOSLE, SOSEQ, LOWERBD, UPPERBD, UNRSTRT, FIXED, BINARY, INTEGER, BASIC, FREE, or PRICESEN.
The type of each row must be identified at least once. If a row is given a type more than once, the multiple definitions must be identical.
When there are multiple rows named in an observation (that is, when there are multiple ROW variables), the TYPE variable applies to each row named in the observation.
The type of a column is identified when an observation in which the column name but no row name appears has the type LOWERBD, UPPERBD, UNRSTRT, FIXED, BINARY, INTEGER, BASIC, RHS, RHSSEN, or RANGE. A column type can also be identified in an observation in which both column and row names appear and the row name has one of the preceding types.
Each column is assumed to be a structural column in the model unless the column is identified as a righthandside vector,
a righthandside change vector, or a range vector. A column can be identified as one of these types using either the keywords
RHS, RHSSEN, or RANGE in the TYPE variable, the special column names _RHS_
, _RHSSEN_
, or _RANGE_
, or the RHS, RHSSEN, or RANGE statements following the PROC LP statement.
A TYPE variable beginning with the character causes the observation to be interpreted as a comment.
When the column names appear in the Variable Summary in the PROC LP output, they are listed in alphabetical order. The row names appear in the order in which they appear in the problem data set.