Don't add extra slacks (artificial variables) for ranged rows #98
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When we have a ranged row of the form
l_i <= a_i^T x <= u_i
we convert it to an equality constraint for dual simplex by adding a slack s_i
a_i^T x - s_i = 0, l_i <= s_i <= u_i
We were also adding an additional slack variable for every equality constraint to ensure A was full row rank and we had a slack basis. For ranged rows this was leading to
a_i^T x - s_i + s_k = 0, l_i <= s_i <= u_i, 0 <= s_k <= 0.
This PR makes it so we no longer add s_k to rows that came from ranged rows.