-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conflict report #276
Conflict report #276
Conversation
@odow I didn't see any |
@pfetsch for information. I had to use a bit of a weird hack to get the violations by the names generated for the binary variables, but that should work |
The conflict tests have a check for if they can get |
src/MOI_wrapper.jl
Outdated
# we need names for all constraints | ||
for (F, S) in MOI.get(o, MOI.ListOfConstraintTypesPresent()) | ||
for (idx, c_index) in enumerate(MOI.get(o, MOI.ListOfConstraintIndices{F,S}())) | ||
if MOI.get(o, MOI.ConstraintName(), c_index) == "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This won't work for VariableIndex
constraints
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these are currently excluded, because SCIP treats these as variable information and not as constraints, will need further adaptation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I adapted the code to convert all variable constraints to scalar affine functions to be able to compute their infeasibility too
src/MOI_wrapper.jl
Outdated
end | ||
end | ||
end | ||
success = Ref{LibSCIP.SCIP_Bool}(333) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why 333
? Perhaps SCIP.FALSE
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah this was as a flag value to indicate that it hasn't been touched
Yes, |
indeed. The last thing holding this back is that the superindicator transformation is not handling bound constraints if I understand the logic correctly. |
okay thinking about it a bit more, the definition of the SCIP subset of constraints and the minimal subsystem of MOI diverge:
while SCIP provides a set of constraints which had to be relaxed to obtain a feasible solution |
So if K constraints are in conflict and removing any of them resolves it, only one of them will be reported as infeasible by SCIP |
MOI's |
Indeed, the definitions diverge too much. There could be a way to compute an IIS by gradually re-imposing the constraints, but this will be for another time. |
When you look for a point that minimizes a measurement on the infeasibility (max/sum/number), then this is usually called feasibility relaxation (CPLEX feasopt, COPT feasrelax). |
that's true it might be a better name |
Adding support for a conflict report based on solving an auxiliary problem with superindicators