cylp.cy.CyCoinMpsIO

This module interface COIN-OR’s CoinMpsIO. When you call cylp.cy.CyClpSimplex.readMps() then CoinMpsIO’s readMps is called. The main reason why cylp interfaces this class is to be able to read an mps file without creating a Simplex object. This way it is possible to read a QP using CoinMpsIO and work on the elements of the problem, e.g. the Hessian,…

class cylp.cy.CyCoinMpsIO.CyCoinMpsIO
readMps()

Read an mps file. Check if the file is a QP symmetrisize its Hessian and store it.

>>> import numpy as np
>>> from cylp.cy import CyCoinMpsIO
>>> from cylp.cy.CyCoinMpsIO import getQpsExample
>>> problem = CyCoinMpsIO()
>>> problem.readMps(getQpsExample())
0
>>> problem.nVariables
5
>>> problem.nConstraints
5
>>> signs = problem.constraintSigns
>>> [chr(i) for i in signs] == problem.nConstraints * ['G']
True
>>> c = problem.matrixByRow
>>> (abs(c.elements -
...     np.array([-1., -1., -1., -1., -1.,  10.,  10.,  -3.,
...                5., 4.,  -8., 1., -2., -5., 3., 8., -1., 2.,
...                5., -3.,  -4.,  -2., 3., -5., 1.])) <
...                            10 ** -8).all()
True
>>> (c.indices ==
...       np.array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1,
...                 2, 3, 4, 0, 1, 2, 3, 4], dtype=np.int32)).all()
True
>>> (c.vectorStarts ==
...        np.array([0, 5, 10, 15, 20, 25], dtype=np.int32)).all()
True
>>> (problem.rightHandSide ==
...        np.array([-5., 20., -40., 11., -30.])).all()
True
>>> H = problem.Hessian.todense()
>>> (abs(H -
... np.matrix([[20394., -24908., -2026., 3896., 658.],
...            [-24908., 41818., -3466., -9828., -372.],
...            [-2026., -3466., 3510., 2178., -348.],
...            [3896., -9828., 2178., 3030., -44.],
...            [658., -372., -348., -44., 54.]])) <
...                            10 ** -8).all()
True