Scilab Function
Last update : MAY 1998

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