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

Projection on polyhedral set #52

Open
panpat opened this issue Mar 9, 2018 · 4 comments
Open

Projection on polyhedral set #52

panpat opened this issue Mar 9, 2018 · 4 comments

Comments

@panpat
Copy link

panpat commented Mar 9, 2018

It would be nice to have it there. I mean for general polyhedral sets
lb<=A*x<=ub
xmin<=x<=xmax

It could either be implemented by calling an external QP solver or solve the dual using e.g., PANOC.
Also there should be an option to warm-start the whole thing.

@lostella
Copy link
Member

This could this be an instance of the more general case g(x) = f(Ax), for convex, proximable f, I guess.

@panpat
Copy link
Author

panpat commented Mar 10, 2018

Even better, although you wouldn't be able to use a QP solver for the prox of f(Ax), only dual PANOC (NAMA). But if it is a QP, then we should be able to have the option to use something like GUROBI for small problems.

@lostella
Copy link
Member

PR #54 contains an implementation of this (no warm-start yet).

@mfalt
Copy link
Collaborator

mfalt commented Mar 27, 2019

I just submitted a paper for a QP solver. It is supposed to be really efficent projecting on Ax=b, Cx<=d, when the set of constraints is relatively small, by solving the dual problem.
The algorithm, completely in julia is found here: https://github.com/mfalt/QPDAS.jl
We could add it as an option for "solver".
The interface is almost the same, we would have to rewrite when lower bound is equal to upper bound to an equality, and there is no added efficiency for using xmin/xmax instead of lb/ub.
And it allows for any of these bounds to be changed without re-factorizing, and warmstart is done automatically.

It should beat OSQP pretty comfortably unless the number of inequalites is large.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants