Do CPXbinvcol and CPXbinvrow in CPLEX's C API calculate the inverse matrix or retrieve a precalculated inverse?

30 Views Asked by At

It is indicated that: "The routine CPXXbinvcol/CPXbinvcol computes the j-th column of the basis inverse." in the documentation on this link: https://www.ibm.com/docs/en/icos/22.1.1?topic=b-cpxxbinvcol-cpxbinvcol

My question is that do the CPXbinvcol and CPXbinvrow routines in CPLEX's C API compute the basis inverse matrix from scratch, or do they retrieve precalculated basis inverse matrix that CPLEX internally generates during the solution process?

STORY:

I need to obtain the basis inverse of linear programs to use in the algorithm I'm designing for the real-time application of L1 regression. I attempted to calculate the inverse using Numpy and Scipy, but they seem to take longer to compute the basis inverse compared to the time GUROBI takes to solve the corresponding LP of the basis.

Furthermore, I learned that GUROBI doesn't offer a routine to directly access the basis inverse (refer to: https://support.gurobi.com/hc/en-us/community/posts/8130531335697-Can-I-get-the-inverse-of-an-LP-basis-from-a-GUROBI-model-object-in-Python-API-). The closest routines I found in GUROBI's C API are GRBBinvRowi and GRBBinvColj, which seem to retrieve the row or column at a specified index of $B^{-1}A$.

This search led me to explore the CPXbinvcol and CPXbinvrow routines in CPLEX's C API. It's crucial for me to clarify whether these routines calculate the basis inverse from scratch when called or if they merely retrieve the row or column at the given index of the basis inverse that was stored during the optimization process.

0

There are 0 best solutions below