-
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
WIP: QPTDualize: improve support for non-singular Hessian #20
base: master
Are you sure you want to change the base?
Conversation
@jkruzik I think I have it, modulo |
And for dual
so similar problem as in #12 (comment). However, comparing
So it seems the problem is in KKT evaluation itself or in multipliers |
You are too quick! ;) I opened the issue #13 to discuss how to approach the fix. I am reluctant to make the equivalence of SPD = non-singular. Admittedly, most of the library probably won't work with indefinite Hessian. Moreover, there are parameters MatInvType and MatRegularizationType. It is questionable whether to have these as parameters or options, but if we have regularization, we could regularize semi-definite Hessian before proceeding with the actual dualization. I thought that the solution could be either an option (e.g. "-qpt_dualize_nonsingular 1") or better yet have QPSetOperatorNullSpace() allow setting NULL but setting a flag as well. We can then determine if user wants us to compute the null space (QPSetOperatorNullSpace was used to set NULL) or not. The second approach is somewhat similar to the solution of singular systems in PETSc Manual - section 4.6. |
bb03ef1
to
3567763
Compare
I find discussion above an actual code change more efficient :-)
It's not equivalence, but definitely SPD implies non-singular. If it ever will be important, we can add
The reason why there is no
|
|
Yes, PERMON assumes SPS, but only implicitly - using SPD flag to indicate non-singularity makes the assumption explicit.
It may or may not be equivalent (see e.g., Friedlander, Tseng - Exact Regularization of Convex Programs), but from what I gather solving a regularized problem is useful even when it is not exactly equivalent to solving the original problem.
Should we, by default, assume that the Hessian is singular or non-singular?
I actually prefer to keep it as it is :) |
The problem with |
This comment has been minimized.
This comment has been minimized.
Maybe we can also swap ex3 and ex4. I think it is more natural to start with linear equality constraint. |
It is, but let's keep it like this until they are both merged, and then swap them in a separate minor pull request. It would cause me headaches to swap them right away. |
This comment has been minimized.
This comment has been minimized.
What is the status on this PR? |
This comment has been minimized.
This comment has been minimized.
3567763
to
57c1aad
Compare
TODO
|
If R with no columns is passed or computed, SPD flag is set.
not necessary anymore.
8cd358d
to
6ab351a
Compare
Does allow the current behaviour of setting a nullspace with zero collumns by user (relied on by some software). Can set Hessian SPD to turn off automatic nullspace computation. Heavily based on #20 so adding co-authored Co-authored-by: haplav <vaclav.hapla@erdw.ethz.ch>
Fix #13.