In traditional Simplex Algorithm notation, we have x at the current basis selection B as so:
xB = AB-1b - AB-1ANxN. How can I compute the AB-1AN term inside a separator in SCIP, or at least iterate over its columns?
I see three helpful methods: getLPColsData, getLPRowsData, getLPBasisInd. I'm just not sure exactly what data those methods represent, particularly the last one, with its negative row indexes. How do I use those to get the value I want?
Do those methods return the same data no matter what LP algorithm is used? Or do I need to account for dual vs primal? How does the use of the "revised" algorithm play into my calculation?
Update: I discovered the getLPBInvARow and getLPBInvRow. That seems to be much closer to what I'm after. I don't yet understand their results; they seem to include more/less dimensions than expected. I'm still looking for understanding at how to use them to get the rays away from the corner.
Update 2: further code at https://github.com/scipopt/scip/issues/31
you are correct that
getLPBInvRoworgetLPBInvARoware the methods you want.getLPBInvARowdirectly returns you a of the simplex tableau, but it is not more efficient to use thangetLPBInvRowand doing the multiplication yourself since the LP solver needs to also compute the actual tableau first.I suggest you look into either
sepa_gomory.corsepa_gmi.cfor examples of how to use these methods. How do they include less dimensions than expected? They both return sparse vectors.