readmps
readmps — reads a file in MPS format
Calling sequence
mps= readmps (file-name,bounds [,maxsizes]);
Parameters
file-name | :
character string, path of the MPS file |
bounds | : 2-vector
[lowbound,upbound] , default lower ans upper bounds |
maxsizes | : 3-vector [maxm,maxn,maxnza]
Maximum number of contraints and variables, maximum number of
nonzeros entries in the LP constraint matrix. If omitted readmps
reads the file once just to compute these numbers. |
mps | : tlist with following fields irobj | : integer (index of the objective row). | namec | : character string (Name of the objective). | nameb | : character string (Name of the right hand side). | namran | : character string (Name of the ranges section). | nambnd | : character string (Name of the bounds section). | name | : character string (Name of the LP problem). | rownames | : character string column vector (Name of the rows).
colnames : character string row vector (Name of the columns). | rowstat | : integer vector, row types: 1 | row type is "=" | 2 | : row type is ">=" | 3 | : row type is "<=" | 4 | : objective row | 5 | : other free row |
| rowcode | : real matrix [hdrowcd,lnkrow] with hdrowcd | : real vector (Header to the linked list of rows with the same codes). | lnkrow | : integer vector (Linked list of rows with the same codes). |
| colcode | : real matrix [hdcolcd,lnkcol] with hdcolcd | : integer vector (Header to the linked list of columns with the same codes). | lnkcol | : integer vector (Linked list of columns with the same codes). |
| rownmbs | : integer vector (Row numbers of nonzeros in columns of matrix A.) | colpnts | : integer vector (Pointers to the beginning of columns of matrix A). | acoeff | : real vector (Array of nonzero elements for each column). | rhs | :real vector ( Right hand side of the linear program). | ranges | : real vector of constraint ranges. | bounds | : real matrix [lbounds,ubounds] with ubounds | : full column vector of upper bounds | lbounds | : full column vector of lower bounds |
| stavar | : full column vector of variable status 0 | :standard (non negative) variable | 1 | : upper bounded variable | 2 | : lower bounded variable | 3 | : lower and upper bounded variable | 4 | : minus infinity type variable i.e -inf<x<=u | 5 | : plus infinity type variable i.e l<=x< inf | 6 | : fixed type variable i.e l=x=u | -k | : free variable |
|
|
Description
readmps.
Utility function: reads a file containing description of an LP problem
given in MPS format. It is an
interface with the program rdmps1.f of hopdm (J. Gondzio).
For a description of the variables, see the file rdmps1.f.
MPS format is a standard ASCII medium for LP codes.
MPS format is described in more detail in Murtagh's book:
Murtagh B. (1981). Advanced Linear Programming, McGrew-Hill,
New York, 1981.
Examples
//Let the LP problem:
//objective:
// min XONE + 4 YTWO + 9 ZTHREE
//constraints:
// LIM1: XONE + YTWO < = 5
// LIM2: XONE + ZTHREE > = 10
// MYEQN: - YTWO + ZTHREE = 7
//Bounds
// 0 < = XONE < = 4
// -1 < = YTWO < = 1
//Generate MPS file
txt=['NAME TESTPROB'
'ROWS'
' N COST'
' L LIM1'
' G LIM2'
' E MYEQN'
'COLUMNS'
' XONE COST 1 LIM1 1'
' XONE LIM2 1'
' YTWO COST 4 LIM1 1'
' YTWO MYEQN -1'
' ZTHREE COST 9 LIM2 1'
' ZTHREE MYEQN 1'
'RHS'
' RHS1 LIM1 5 LIM2 10'
' RHS1 MYEQN 7'
'BOUNDS'
' UP BND1 XONE 4'
' LO BND1 YTWO -1'
' UP BND1 YTWO 1'
'ENDATA'];
mputl(txt,TMPDIR+'/test.mps')
//Read the MPS file
P=readmps(TMPDIR+'/test.mps',[0 10^30])
//Convert it to linpro format
LP=mps2linpro(P)
//Solve it with linpro
[x,lagr,f]=linpro(LP(2:$))
See also
mps2linpro