readmps

Scilab Function
Last update : 12/01/2004

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` ,