Skip to content

Add HermitianPositiveSemidefiniteConeTriangle with bridges #1962

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

Merged
merged 20 commits into from
Jul 26, 2022
Merged

Conversation

blegat
Copy link
Member

@blegat blegat commented Jul 23, 2022

@blegat blegat mentioned this pull request Jul 23, 2022
Copy link
Member

@odow odow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't dig into the reformulation. But I don't think we want to rush this into MOI v1.7. It's quite complicated.

blegat and others added 11 commits July 24, 2022 00:22
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
Co-authored-by: Oscar Dowson <odow@users.noreply.github.com>
@blegat
Copy link
Member Author

blegat commented Jul 23, 2022

Ok, I'll merge #1959 then

@odow odow added Submodule: Bridges About the Bridges submodule Project: generic number support Issues relating to generic number (e.g., Complex) support labels Jul 24, 2022
@odow odow changed the title Add bridge from hermitian PSD to PSD Add HermitianPositiveSemidefiniteConeTriangle with bridges Jul 24, 2022
@chriscoey
Copy link
Contributor

This PR should allow me to add direct support for this MOI Hermitian PSD cone to Hypatia's MOI interface

@odow
Copy link
Member

odow commented Jul 24, 2022

@odow
Copy link
Member

odow commented Jul 24, 2022

@blegat take another look. I fleshed out the docstring with an example of the reformulation. I think it makes things a bit clearer.

I also removed your note on duality. It was a bit confusing and out of place. Once you see the example of the reformulation it becomes obvious why you can just sum up the elements. The equality constraints are just enforcing parts of the matrix, not anything structural.

@blegat
Copy link
Member Author

blegat commented Jul 25, 2022

Once you see the example of the reformulation it becomes obvious why you can just sum up the elements. The equality constraints are just enforcing parts of the matrix, not anything structural.

Why is that obvious that you don't have to include the dual of ceq ? The way I convince myself is as follows:
For the entry x_{11}, we have P_{11} - P_{'44} as constraints so if \lambda is the dual of this constraint the dual at 11 gets \lambda and at 44, it gets -\lambda. But the dual obtained by multiplying by A* so it's the sum of the dual at 11 + the dual at 44 so you get \lambda - \lambda = 0.
Is there an easier way to get this ?

@odow
Copy link
Member

odow commented Jul 25, 2022

I didn't try to prove haha. It just seemed right. We don't actually implement the reformulated PSD matrix, so in some sense, the equality constraints are a lower-level implementation detail. What we actually ask for is the duals on that PSD matrix.

@blegat blegat merged commit 8c8636f into master Jul 26, 2022
@blegat blegat deleted the bl/hermitian branch July 26, 2022 02:47
@test ≈(MOI.get(model, MOI.VariablePrimal(), x), primal, config)
@test ≈(MOI.get(model, MOI.ConstraintPrimal(), cx), primal, config)
if _supports(config, MOI.ConstraintDual)
dual = zeros(T, 9)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@blegat, some solvers are failing this test: https://github.com/jump-dev/SolverTests/actions/runs/2857418874

Is it possible for the dual to be non-zero?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Project: generic number support Issues relating to generic number (e.g., Complex) support Submodule: Bridges About the Bridges submodule
Development

Successfully merging this pull request may close these issues.

3 participants