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