-
Notifications
You must be signed in to change notification settings - Fork 41
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
Dual infeasibility returned in feasible (and bounded) SDP #113
Comments
I can take a closer look tomorrow.
|
Weirdly, in this case, a feasible (but very far from optimal) point is returned.
I increased the number of iterations, and removed the feasibility check and it does ok:
(I have not changed the default tolerance here, so this is close enough to optimal.)
As one would expect, roughly the same result:
My guess is that somehow, the scaling isn't quite right (or the tolerances are a bit too small) on the dual check. I haven't carefully gone through the code, so I'm not sure. Thank you yet again, by the way, for responding to all of my current issues! (I would absolutely love to use/cite COSMO for this current paper I'm working on, especially since it seems to be, pretty much by far, the fastest of the available solvers I've tried.) |
This is actually a really nice example problem that should showcase COSMO's strengths. Could you provide a bit more context on where these type of problems arise for you? (It would make a nice example for our documentation). Your PSD constraint in
COSMO recognizes this kind of structural constraint on a PSD constraint and tries to split up the PSD constraint on If you set the following settings:
The solver output actually tells you that it found a sparsity pattern and decomposed the constraint into 100 PSD constraints for you**:
The number of operations of the solver at each iteration reduces from
**I just noticed that the counter in the verbose output should say |
Oh, absolutely! In fact, this is why I chose COSMO: I was thinking of implementing some simple ADMM-type problem with the chordal decomposition schemes for the PSD constraint + its projection (I saw Vandenberghe's reference on this, originally) because the SDPs I was solving were way too large for the usual methods that involve projecting the whole matrix variable into the cone.
These examples come from constructing lower bounds for physics problems. (See, e.g. this older paper of mine which reduces to a convex QCQP, but more general bounds are given by SDPs.) In this case, the matrices all have really nice (and compact) chordal decompositions, since many of the sub-blocks are usually discretizations of (local) operators (such as the Laplacian, etc). They usually have some sort of overlapping diagonal block substructure + some other (small number of) terms on the off-diagonals. I'd be happy to give some more concrete examples! (I currently don't really have any since my current approach is not really published anywhere or even available in preprint form—it's rather preliminary work.) On the other hand, some types of variational design problems (e.g., finding a design which minimizes the maximum eigenvalue of a particular physical equation) can be recast as SDPs and has perfect chordal structure. I have some truly horrible class project write-up from a couple of years ago that was somewhat rushed, but discusses some of these problems in the context of quantum mechanics.
Yes, exactly :) . I'll try out the
Indeed, I've already changed both things in the program! Anyways, thank you for the help! It would be wonderful to use COSMO for these types of problems, since it really does exploit a lot of the structure available for these kind of physical problems. |
My understanding of the problem description is that, for any optimising pair Taking therefore the case with Assuming that the above is right (please do check since I was not that thorough), the fact that the optimiser is not obtainable is the root cause of the problem. |
Yes this is indeed true for this problem instance :)
Hmm, I'm afraid I'm not sure about this. Slater's condition should hold (since there exists a feasible |
In fact, picking |
The slater condition tells you something about the optimal values of the primal and dual problems, it doesn't guarantee the existence of a primal optimiser. The problem That same problem can be turned into an SDP to illustrate what I think is the issue you have. Write the same problem as
and then rewrite the inequality to get
A strictly feasible point is
is positive semidefinite (its eigenvalues are |
Apologies! This is indeed very true. (I misremembered the proof of strong duality, which guarantees that a dual optimal value is achievable under Slater's condition for the primal problem, if the optimal value of the primal is finite, but the primal optimal value need not be achievable. See, e.g., B&V's proof.) Of course, it would suffice to prove that both the primal and dual are strictly feasible to have an achievable value for both. Either way, I'm still not fully convinced (though I am, of course, not certain) that the original problem has an optimal value that is not achievable. The main reason is that the problem I gave in the OP is the dual of a nonconvex QCQP, so its dual problem (i.e., the dual of the problem in the OP) should be an SDP relaxation of the original nonconvex QCQP. If this is the case, then the SDP relaxation of a nonconvex QCQP is always strictly feasible, which would imply that the dual value (i.e., the value of the problem in the OP) should be achievable. (So, in this case, there should be an optimal, achievable primal-dual pair.) Thank you both (@migarstka and @goulart-paul), by the way, for taking so much time! :) |
If I set I seemingly have a sequence of primal variables that converge to the feasible set and achieve the optimal value only in the limit. |
Sure! Additionally, setting I wonder why this is the case, though. It's generally surprising to me that this problem is so ill-behaved, but I guess that's just how it goes... Additionally: how were you able to easily compute that Thanks! (I will also close this issue, since it seems to be the case that this is not a problem with the solver, but rather with the problem!) |
I would guess that your dual problem is suspect somehow. Perhaps there are no strictly dual feasible points. Maybe a results like Corollary 5.3.10 in the text by Borwein is helpful to you (I didn't check it though). The condition |
Yeah, I was essentially referencing this result originally (which is why I noted that the dual problem of the one above can achieve its optimal value) and imagined that the dual was also strictly feasible, but, alas, it seems that this latter statement is not true. :( I will try reformulating it in some other way to see if it's possible to avoid this problem! Anyways, thank you yet again! |
I am also having a similar issue as given in #90, but on a general SDP problem. Here is the current one (I'm trying to get a slightly better MWE, but it's a weird one. Setting n=10 in this example succeeds and finds a nearly-feasible point, but larger things like n=100 fail and return a dual infeasibility status.)
I am trying to find a slightly simpler MWE, but small changes will break it. On the other hand, the objective value returned is not terrible. (In fact, the exact value of the objective value should be given by
norm(ones(n))^2
, which is justn
.)The text was updated successfully, but these errors were encountered: