Click or drag to resize
MPSReader Class
Reads a linear programming problem from an MPS file.
Inheritance Hierarchy
SystemObject
  Imsl.MathMPSReader

Namespace: Imsl.Math
Assembly: ImslCS (in ImslCS.dll) Version: 6.5.2.0
Syntax
[SerializableAttribute]
public class MPSReader

The MPSReader type exposes the following members.

Constructors
  NameDescription
Public methodMPSReader
constructor for MPSReader
Top
Methods
  NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetLowerBound
Returns the lower bound for a variable.
Public methodGetLowerRange
Returns the lower range value for a constraint equation.
Public methodGetNameColumn
Returns the name of a constraint column. Constraint column names are also variable names.
Public methodGetNameRow
Returns the name of a constraint row.
Public methodGetRow
Returns a row of the constraint matrix or a free row.
Public methodGetRowCoefficients
Returns the coefficients of a row.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetTypeVariable
Returns the type of a variable. The variable types are CONTINUOUS_VARIABLE, BINARY_VARIABLE or INTEGER_VARIABLE.
Public methodGetUpperBound
Returns the upper bound for a variable.
Public methodGetUpperRange
Returns the upper range value for a constraint equation.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Protected methodProcessCommand
Process a section of the MPS file.
Public methodRead
Reads and parses the MPS file.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Fields
  NameDescription
Public fieldStatic memberBINARY_VARIABLE
Variable must be either 0 or 1.
Public fieldStatic memberCONTINUOUS_VARIABLE
Variable is a real number.
Public fieldStatic memberINTEGER_VARIABLE
Variable must be an integer.
Top
Properties
  NameDescription
Public propertyName
Returns the name of the MPS problem.
Public propertyNameBounds
The name of the BOUNDS set.
Public propertyNameObjective
The name of the free row containing the objective.
Public propertyNameRanges
The name of the RANGES set.
Public propertyNameRHS
The name of the RHS set used.
Public propertyNumberOfBinaryConstraints
The number of binary constraints.
Public propertyNumberOfColumns
The number of columns in the constraint matrix.
Public propertyNumberOfIntegerConstraints
The number of integer constraints.
Public propertyNumberOfNonZeros
The number of nonzeros in the constraint matrix.
Public propertyNumberOfRows
The number of rows in the constraint matrix.
Public propertyObjective
The objective as a Row.
Public propertyObjectiveCoefficients
The coefficents of the objective row.
Top
Remarks

An MPS file defines a linear or quadratic programming problem. Linear programming problems read using this class are assumed to be of the form:

\mathop{\min}\limits_{x\;\in\;R^n }c^T x
subject to
b_l  \le Ax  \le b_u
\,\,x_l  \le x \le x_u
where c is the objective coefficient vector, A is the coefficient matrix, and the vectors b_l, b_u, x_l, and x_u
             are the lower and upper bounds on the constraints and the variables, respectively.

The following table helps map this notation into use of MPSReader.

CObjective
AConstraint matrix
b_lLower Range
b_uUpper Range
x_lLower Bound
x_uUpper Bound

If the MPS file specifies an equality constraint or bound, the corresponding lower and upper values will be exactly equal.

The problem formulation assumes that the constraints and bounds are two-sided. If a particular constraint or bound has no lower limit, then the corresponding entry in the structure is set to negative machine infinity. If the upper limit is missing, then the corresponding entry in the structure is set to positive machine infinity.

MPS File Format

There is some variability in the MPS format. This section describes the MPS format accepted by this reader.

An MPS file consists of a number of sections. Each section begins with a name in column 1. With the exception of the NAME section, the rest of this line is ignored. Lines with a '*' or '$' in column 1 are considered comment lines and are ignored.

The body of each section consists of lines divided into fields, as follows:

Field NumberColumnsContent
12-3Indicator
25-12Name
315-22Name
425-36Value
540-47Name
650-61Value

The format limits MPS names to 8 characters and values to 12 characters. The names in fields 2, 3 and 5 are case sensitive. Leading and trailing blanks are ignored, but internal spaces are significant.

The sections in an MPS file are as follows:

NAME

ROWS

COLUMNS

RHS

RANGES (optional)

BOUNDS (optional)

QUADRATIC (optional)

ENDATA

Sections must occur in the above order.

MPS keywords, section names and indicator values, are case insensitive. Row, column and set names are case sensitive.

NAME Section

The NAME section contains the single line. A problem name can occur anywhere on the line after NAME and before columns 62. The problem name is truncated to 8 characters.

ROWS Section

The ROWS section defines the name and type for each row. Field 1 contains the row type and field 2 contains the row name. Row type values are not case sensitive. Row names are case sensitive. The following row types are allowed:

Row TypeMeaning
EEquality constraint
LLess than or equal constraint
GGreater than or equal constraint
NObjective of a free row

COLUMNS Section

The COLUMNS section defines the nonzero entries in the objective and the constraint matrix. The row names here must have been defined in the ROWS section.

FieldContents
2Column name
3Row name
4Value for the entry whose row and column are given by fields 2 and 3
5Row name
6Value for the entry whose row and column are given by fields 2 and 5

Note: Fields 5 and 6 are optional.

The COLUMNS section can also contain markers. These are indicated by the name 'MARKER' (with the quotes) in field 3 and the marker type in field 4 or 5.

Marker type 'INTORG' (with the quotes) begins an integer group. The marker type 'INTEND' (with the quotes) ends this group. The variables corresponding to the columns defined within this group are required to be integer.

RHS Section

The RHS section defines the right-hand side of the constraints. An MPS file can contain more than one RHS set, distinguished by the RHS set name. The row names here must be defined in the ROWS section.

FieldContents
2RHS name
3Row name
4Value for the entry whose row and column are given by fields 2 and 3
5Row name
6Value for the entry whose row and column are given by fields 2 and 5

Note: Fields 5 and 6 are optional.

RANGES Section

The optional RANGES section defines two-sided constraints. An MPS file can contain more than one range set, distinguished by the range set name. The row names here must have been defined in the ROWS section.

FieldContents
2Range set name
3Row name
4Value for the entry whose row and column are given by fields 2 and 3
5Row name
6Value for the entry whose row and column are given by fields 2 and 5

Note: Fields 5 and 6 are optional.

Ranges change one-sided constraints, defined in the RHS section, into two-sided constraints. The two-sided constraint for row i depends on the range value, r_i, defined in this section. The right-hand side value, b_i, is defined in the RHS section. The two sided constraints for row i are given in the following table:

Row TypeLower ConstraintUpper Constraint
Gb_ib_i+|r_i|
Lb_i-|r_i|b_i
Eb_i+min(0,r_i)b_i+max(0,r_i)

BOUNDS Section

The optional BOUNDS section defines bounds on the variables. By default, the bounds are 0\le x_i\le\infty. The bounds can also be used to indicate that a variable must be an integer.

More than one bound can be set for a single variable. For example, to set 2\le x_i\le 6 use a LO bound with value 2 to set 2\le x_i and an UP bound with value 6 to add the condition x_i \le 6.

An MPS file can contain more than one bounds set, distinguished by the bound set name.

FieldContents
1Bounds type
2Bounds set name
3Column name
4Value for the entry whose set and column are given by fields 2 and 3
5Column name
6Value for the entry whose set and column are given by fields 2 and 5

Note: Fields 5 and 6 are optional.

The bound types are as follows. Here b_i are the bound values defined in this section, the x_i are the variables, and I is the set of integers.

Bound TypeDefinintionFormula
LOLower boundb_i\le
                  x_i
UPUpper boundx_i\le
                  b_i
FXFixed Variablex_i
                  =b_i
FRFree variable
                  -\infty\le x_i\le\infty
MILower bound is minus infinity-\infty\le x_i
PLUpper bound is positive infinityx_i\le\infty
BVBinary variable (variable must be 0 or 1)x_i\in\{0,1\}
UIUpper bound and integerx_i\le b_i and x_i\in I
LILower bound and integerb_i\le x_i and x_i\in I
SCSemicontinuous0 or b_i\le x_i

The bound type names are not case sensitive.

If the bound type is UP or UI and b_i\le x_i then the lower bound is set to -\infty.

ENDATA Section

The ENDATA section ends the MPS file.

See Also

Reference

Other Resources