-
Notifications
You must be signed in to change notification settings - Fork 121
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
[docs] refactor and re-organize the documentation #574
Conversation
global optimality of the resulting solution (if the solver succeeds. For some | ||
models, the solver may experience numerical difficulty). |
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 is definitely better, but note both solutions said they were "OPTIMAL". I'm not really sure it's just a numeric issue as much as an algorithmic issue; e.g. https://optimization-online.org/wp-content/uploads/2018/07/6695.pdf shows SDPA-GMP failing on some SDP's with a duality gap. Although I've seen SDPA-GMP fail easily on many problems without sufficient presolve so maybe that is a factor there too.
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.
Thanks for citing my blog! I second this comment: I had in fact a similar issue with MOSEK: the problem was not strictly feasible, and as expected MOSEK failed to solve it, but then falsely claimed that it was "OPTIMAL". I submitted a bug report to MOSEK but only managed to get insulted by the CEO.
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.
As for the proof, there's a simpler argument: a matrix A
is positive semidefinite iff A = B'*B
for some matrix B
. Now if A
has a diagonal element equal to zero, then v'*A*v = 0
for some basis vector v
. But v'*A*v = v'*B'*B*v = norm(B*v)^2
, so B*v = 0
, which implies B'*B*v = A*v = 0
, so the entire column must be zero.
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.
ah, that is a nice argument. It may be worth adding that to your blog post, or at least noting that the entire column is zero (and therefore X13 = 0) rather than jumping to X13=0, since providing the intermediate step can help readers figure it out (or figure out what to look up).
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.
Fair enough, I added it to the blog post (as a footnote).
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 don't want to derail this PR with a discussion, so I've added a TODO to #344. Once this PR is merged I'm happy to review other changes.
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.
You could also argue that "if the solver succeeds" is true, and that solvers reporting OPTIMAL
are a bug. That's their problem, not ours.
No description provided.