Skip to content
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

Objective function bridge #529

Closed
blegat opened this issue Sep 27, 2018 · 8 comments · Fixed by #789
Closed

Objective function bridge #529

blegat opened this issue Sep 27, 2018 · 8 comments · Fixed by #789
Labels
Submodule: Bridges About the Bridges submodule

Comments

@blegat
Copy link
Member

blegat commented Sep 27, 2018

It would be nice to have a bridge that transforms an unsupported objective into a SingleVariable objective with a LessThan (or GreaterThan depending on objective sense) constraint.
See jump-dev/SCS.jl#111 (comment)

@odow odow added the Submodule: Bridges About the Bridges submodule label Nov 18, 2018
@blegat
Copy link
Member Author

blegat commented Jan 12, 2019

It could also bridge SingleVariable to ScalarAffineFunction, it would resolve jump-dev/Cbc.jl#96

@rschwarz
Copy link
Contributor

Nice, we have the same issue in SCIP.jl.

@blegat
Copy link
Member Author

blegat commented Jan 12, 2019

The short term solution is simply converting it to MOI.ScalarAffineFunction like what is done in jump-dev/SCS.jl#116. MOI.ObjectiveFunctionType is wrong though for SCS since it does not remember that it was set as MOI.SingleVariable but that is acceptable as a short term solution.

@arnavs
Copy link

arnavs commented Mar 15, 2019

I just wanted to follow up on this issue and see if there's been any movement. As it stands currently, my Mosek license is basically unusable in Julia, so it would be great to merge stuff even if it's a bit clunky.

@odow
Copy link
Member

odow commented Mar 16, 2019

As it stands currently, my Mosek license is basically unusable in Julia

It looks like you successfully followed the instructions here jump-dev/MosekTools.jl#2?

so it would be great to merge stuff even if it's a bit clunky.

This isn't implemented yet. If you would like to have a go, we can point you in the right direction.

@arnavs
Copy link

arnavs commented Mar 16, 2019

Yeah, the issue with that workaround is that it only holds for problems with all positive eigenvalues, as @blegat points out.

Yeah, would be happy to. If you could briefly describe what needs to be done, I'll give it a shot.

@odow
Copy link
Member

odow commented Mar 16, 2019

Yeah, the issue with that workaround is that it only holds for problems with all positive eigenvalues

Mosek is a convex solver. If the matrix isn't PSD (i.e., it has negative eigenvalues), Mosek can't solve it.

@arnavs
Copy link

arnavs commented Mar 16, 2019

Just to be clear, the problem we're discussing is a quadratic objective z' L z + z' q for some vectors z, q, and some matrix L, with (in my setup) zero or one negative eigenvalues.

I thought I was able to solve this problem before, but maybe we used different parameters. Maybe I was hallucinating.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Submodule: Bridges About the Bridges submodule
Development

Successfully merging a pull request may close this issue.

4 participants