soplex icon indicating copy to clipboard operation
soplex copied to clipboard

Support for parametric LPs

Open chrhansk opened this issue 2 years ago • 5 comments

For a research project I need to solve LPs which are parametric in their respective variable bounds, i.e. of the type

min c^T x, s.t. lhs <= Ax <= rhs l(a) <= x <= u(a)

where l(a) and u(a) are convex combinations in the parameter a in [0, 1]. Essentially, I would like to compute all vertices on the piecewise linear solution path over a and use them in a subsequent step.

I started to write a parametric solver based on SoPlex, but I think the API is lacking some functionality that I require.

Notably, it seems that LP bases cannot be directly modified by adding / removing variables or constraints. The enter() method of the solver is private and therefore inaccessible. Getting the Basis, manipulating it and setting it afterwards is likely to be inefficient, since it presumably discards the current factorization of the basis matrix.

Could you make it possible for a user to manually enter variables or constraints into the basis?

chrhansk avatar Jul 12 '21 12:07 chrhansk