-
Notifications
You must be signed in to change notification settings - Fork 6
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
Remove error from feasibility sense #162
base: master
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #162 +/- ##
=======================================
Coverage 94.73% 94.74%
=======================================
Files 13 13
Lines 703 704 +1
=======================================
+ Hits 666 667 +1
Misses 37 37 ☔ View full report in Codecov by Sentry. |
Devils advocate: does a feasibility sense problem have a dual? It doesn't have an objective function. |
I would say there is no dual. |
I agree @odow. The other sane option would be to make a more informative error message such as: error(primal_sense, " does not have a well-defined dual problem. A solution for this problem is to add the objective `Min 0` and assume that it is a minimization problem.") |
Yeah a more informative error sounds good. |
If a user solve a conic problem, he should always try with and without Dualization because it can change lot (it also impacts the low-rank-ness of the solution which is important for instance for Burer-Monteiro-like and ProxSDP). By the way, we should insist more about that in the JuMP doc. I'm going to do it in the SumOfSquares block but this issue is blocking it. |
Why? The user could just set a |
That wouldn't really be an option because SumOfSquares just defines new MOI sets and MOI bridges. The dual of Another option is to have a keyword in |
What was the upstream bug? https://github.com/jump-dev/SumOfSquares.jl/pull/283/files You tried to do import Dualization, SCS
model = SOSModel(() -> Dualization.Optimizer(SCS.Optimizer))
@constraint(model, motzkin >= 0)
optimize!(model) and it didn't work because no objective was set? Then either It currently doesn't work, so it isn't breaking to change an error message. |
jump-dev/SumOfSquares.jl#283 is not about a breaking change in Dualization. The tutorial started failing because of the bug that was fixed in jump-dev/CSDP.jl#89 so I tried SCS but I couldn't because dualization does not support feasibility sense so I went back to using CSDP since I fixed the bug in CSDP. I understand that choosing this objective sense in
|
close #155
@blegat This makes it work but I am not sure what is the formal dual of a feasibility problem.
If we assume feasibility is Min 0 should the dual be the same as if we assume Max 0 or maybe it's whatever. Also, the dual of the dual would not be a feasibility-sense problem.