-
Notifications
You must be signed in to change notification settings - Fork 87
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
What to do with constants for results of InfeasibilityCertificate #433
Comments
I think this isn't tested because it's a pretty uncommon question to ask. How do solvers like Mosek behave? Will the wrappers get homogenized values back from the solvers or will they have to compute them? |
The solvers seem to return the homogenized values for dual certificates as the MOI tests requires the homogenized values and currently, there has been no complaint. |
Related TODOs:
|
Yes, I think this is the right way to think about it. I'll add a background section on this in the documentation. |
When the status is
InfeasibilityCertificate
, the results should be the result of the homogenized version.For instance, for the problem
with dual
or equivalently
The dual has an infeasibility ray
y = -1
(withz = 1
). When asking for the constraint dual ofx >= 0
, this the value of the constraint1 - y >= 0
in the first case or to the value ofz
in the second case.In the first case, one could think it should be
1 - (-1) = 2
but it should bez = 1
in the second case.The reason is that since it is a ray, it is a feasible solution to the problem with the constant terms removed (which is equivalent to setting the objective of the primal to zero).
By consistency, the when asking for
ConstraintPrimal
when the primal status isInfeasibilityRay
, it should also not take the constant of the function into account.Moreover, if the objective function has a constant, then it should not be included in the value of the objective value / objective bound for
InfeasibilityRay
.Indeed, the objective can be moved to a constrant by adding a new variable and then by consistency, it should not be included since it is in a constraint.
Currently, in
MOI.Test
, we have tests with infeasibility rays in the dual and the values expected by the tests are the correct ones. The reason is that the MOI definition of the dual is the second case of the introduction example above.However, we have not test with the objective of the dual nor with infeasibility ray in the primal and for these it is might be much more confusing.
What do you think ? Do you agree that the constants should be removed from the results of rays in
ConstraintPrimal
and objective value/bound ?If yes, we should:
ConstraintPrimal
ofVectorizeBridge
with aDUAL_INFEASIBLE
example with nonzero constant for a scalar constraintThe text was updated successfully, but these errors were encountered: