openopt / copt

A Python library for mathematical optimization
http://openo.pt/copt
Other
135 stars 35 forks source link

Fix primal-dual solver for non-identity L #80

Closed vene closed 3 years ago

vene commented 3 years ago

The code would not even run with L != None because some variables were unset.

The computation of x_incr used the wrong direction of the linear operator I think, and at the very end the dual point was returned instead of the primal point. (Is there an API for returning both? Could be useful.)

I haven't written tests yet, but it works well on this proof-of-concept over the simplex:

https://gist.github.com/vene/ecb2013a6e51524a2e7b47455b2121a3

vene commented 3 years ago

(btw, the Frank-Wolfe algo from my gist could be a nice addition too.

"A Conditional Gradient Framework for Composite Convex
     Minimization with Applications to Semidefinite Programming",
     Alp Yurtsever, Olivier Fercoq, Francesco Locatello, Volkan Cevher.

URL: https://arxiv.org/abs/1804.08544

fabianp commented 3 years ago

Update: the more I test it, the more bugs I discover. It's likely going to take me a couple of days to fix these (and thanks for submitting this, hopefully this time we'll get it right :-)

fabianp commented 3 years ago

I added some tests, fixed some bugs and merged the whole thing

fabianp commented 3 years ago

@vene : i think what we are most lacking are examples and documentation, in case you want to make further contributions ;-)