Version Checks (indicate both or one)
Issue Description
linopy._compute_infeasibilities_xpress uses enumerate(solver_model.getConstraint()) to create a position-to-constraint mapping, then returns those positions as "linopy labels." But the LP only contains non-masked rows (labels 0, 2, 4... skipping -1), so Xpress row position 1 = LP row "c2" = linopy label 2, not position 1. find_single(1) then maps to the wrong generator coordinate (e.g., 'b' instead of 'c').
Reproducible Example
(I will skip this, because I generated the bug using confidential data)
Expected Behavior
An IIS with a set of constraints that are not even part of the model
Installed Versions
Details
Replace this line.
Version Checks (indicate both or one)
I have confirmed this bug exists on the lastest release of Linopy.
I have confirmed this bug exists on the current
masterbranch of Linopy.Issue Description
linopy._compute_infeasibilities_xpress uses enumerate(solver_model.getConstraint()) to create a position-to-constraint mapping, then returns those positions as "linopy labels." But the LP only contains non-masked rows (labels 0, 2, 4... skipping -1), so Xpress row position 1 = LP row "c2" = linopy label 2, not position 1. find_single(1) then maps to the wrong generator coordinate (e.g., 'b' instead of 'c').
Reproducible Example
Expected Behavior
An IIS with a set of constraints that are not even part of the model
Installed Versions
Details
Replace this line.