No subject
Wed Dec 26 11:57:02 EST 2012
ones
include BPMPD (closed source, as stated), IPOPT, OOQP, CLP (all open =
source)
as well as CPLEX, GUROBI both offer very good academic licenses (free =
for 1
year, or something similar). I am not sure on the =91free=92 =
availability of the
other solvers, probably limited time licenses available.
=20
In my opinion if you are comfortable with calling IPOPT from C++, then =
this
is probably the best to stick with, and offers good performance. Just
remember to set the options as suggested by Thomas Vacek. Generating the
Hessian and Gradients is not too difficult for the NLP:
=20
Given a QP of the form min x 0.5*x=92*H*x + f=92*x
St. rl <=3D =
A*x <=3D
ru
lb =
<=3D x <=3D
ub
=20
Then the Hessian is:
Hess =3D 0.5*(H + H=92)
And objective gradient is:
Grad =3D 0.5*(H + H=92)*x + f
=20
And the Jacobian is simply the A matrix from your linear constraints. =
Note
for linear constraints the Hessian of the Lagrangian only contains =
quadratic
terms from the objective (as Hess above), and no constraints feature =
(given
they are all linear). See Ogata Discrete Time Control Systems for more
details on the above.
=20
Alternatively consider looking at OOQP, which I have found to be quite =
an
effective QP solver. If you are a MATLAB user have a look at my OPTI =
Toolbox
(http://www.i2c2.aut.ac.nz/Wiki/OPTI/) which includes CLP, OOQP, SCIP
(academic only) and IPOPT for solving QPs, so you can experiment with =
which
works best for your problems.
=20
Regards,
=20
Jonathan
=20
=20
=20
From: ipopt-bounces at list.coin-or.org =
[mailto:ipopt-bounces at list.coin-or.org]
On Behalf Of Antonello Lobianco
Sent: Friday, 8 February 2013 4:36 a.m.
To: Damien Hocking
Cc: ipopt at list.coin-or.org
Subject: Re: [Ipopt] Suggestions for a quadratic programming solver?
=20
can't really find it...
2013/2/7 Damien Hocking <damien at khubla.com>
Google has their QP solver they use in Maps and StreetView available on
Google Code. =20
Damien
=20
On 07/02/2013 7:58 AM, Antonello Lobianco wrote:
Hello.. I use normally ipopt but for a project I need a solver for a
Quadratic Problem (so I don't need to pass all the extra-information for
general nonlinear programming.. hessian, jacobian..)
For LP I use GLPK, but I am now lost on what to use for QP.. within the
COIN-OR projects I can see Clp, but from the manual I got that QP is not =
at
his core...
Then I found JOptimizer, but again I have no idea of the performances =
nor
how it will be easy to link a java program from a C++ program (I never =
used
Java)..
Any suggestions? I would prefer to find an open source fast QP solver
working on Linux/Win (MinGW).
Thank you...
--=20
Antonello Lobianco
INRA, Laboratoire d'Economie Foresti=E8re
14 Rue Girardet - 54000 Nancy, France
Tel: +33.652392310 <tel:%2B33.652392310>=20
Email: antonello.lobianco at nancy-engref.inra.fr
http://antonello.lobianco.org <http://antonello.lobianco.org/> =20
_______________________________________________
Ipopt mailing list
Ipopt at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/ipopt
=20
_______________________________________________
Ipopt mailing list
Ipopt at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/ipopt
--=20
Antonello Lobianco
INRA, Laboratoire d'Economie Foresti=E8re
14 Rue Girardet - 54000 Nancy, France
Tel: +33.652392310
Email: antonello.lobianco at nancy-engref.inra.fr
http://antonello.lobianco.org <http://antonello.lobianco.org/> =20
------=_NextPart_000_005A_01CE05FE.BCB677F0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1"><meta name=3DGenerator content=3D"Microsoft Word =
14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
mso-fareast-language:EN-NZ;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-NZ link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Hi Antonello,<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>For an indication of performance of available (large, sparse) QP =
solvers have a look at H. Mittelmann’s =
benchmarks:<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><a =
href=3D"http://plato.asu.edu/ftp/qpbench.html">http://plato.asu.edu/ftp/q=
pbench.html</a><o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>From that list (which does not include all QP solvers obviously), =
free ones include BPMPD (closed source, as stated), IPOPT, OOQP, CLP =
(all open source) as well as CPLEX, GUROBI both offer very good academic =
licenses (free for 1 year, or something similar). I am not sure on the =
‘free’ availability of the other solvers, probably limited =
time licenses available.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>In my opinion if you are comfortable with calling IPOPT from C++, =
then this is probably the best to stick with, and offers good =
performance. Just remember to set the options as suggested by Thomas =
Vacek. Generating the Hessian and Gradients is not too difficult for the =
NLP:<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Given a QP of the form min x=A0 0.5*x’*H*x + =
f’*x<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =
St. =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0rl <=3D A*x <=3D =
ru<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =A0 lb <=3D x <=3D =
ub<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Then the Hessian is:<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Hess =3D 0.5*(H + H’)<br><br><o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>And objective gradient is:<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Grad =3D 0.5*(H + H’)*x + f<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>And the Jacobian is simply the A matrix from your linear constraints. =
Note for linear constraints the Hessian of the Lagrangian only contains =
quadratic terms from the objective (as Hess above), and no constraints =
feature (given they are all linear). See Ogata Discrete Time Control =
Systems for more details on the above.<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Alternatively consider looking at OOQP, which I have found to be =
quite an effective QP solver. If you are a MATLAB user have a look at my =
OPTI Toolbox (<a =
href=3D"http://www.i2c2.aut.ac.nz/Wiki/OPTI/">http://www.i2c2.aut.ac.nz/W=
iki/OPTI/</a>) which includes CLP, OOQP, SCIP (academic only) and IPOPT =
for solving QPs, so you can experiment with which works best for your =
problems.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Regards,<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Jonathan<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p> </o:p></span></p><p class=3DMsoNormal><b><span =
lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> =
ipopt-bounces at list.coin-or.org [mailto:ipopt-bounces at list.coin-or.org] =
<b>On Behalf Of </b>Antonello Lobianco<br><b>Sent:</b> Friday, 8 =
February 2013 4:36 a.m.<br><b>To:</b> Damien Hocking<br><b>Cc:</b> =
ipopt at list.coin-or.org<br><b>Subject:</b> Re: [Ipopt] Suggestions for a =
quadratic programming solver?<o:p></o:p></span></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'>can't really find =
it...<o:p></o:p></p><div><p class=3DMsoNormal>2013/2/7 Damien Hocking =
<<a href=3D"mailto:damien at khubla.com" =
target=3D"_blank">damien at khubla.com</a>><o:p></o:p></p><div><p =
class=3DMsoNormal>Google has their QP solver they use in Maps and =
StreetView available on Google Code. =
<br><br>Damien<o:p></o:p></p><div><div><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'><o:p> </o:p></p><div><p =
class=3DMsoNormal>On 07/02/2013 7:58 AM, Antonello Lobianco =
wrote:<o:p></o:p></p></div></div></div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><div><div><p =
class=3DMsoNormal style=3D'margin-bottom:12.0pt'>Hello.. I use normally =
ipopt but for a project I need a solver for a Quadratic Problem (so I =
don't need to pass all the extra-information for general nonlinear =
programming.. hessian, jacobian..)<br><br>For LP I use GLPK, but I am =
now lost on what to use for QP.. within the COIN-OR projects I can see =
Clp, but from the manual I got that QP is not at his core...<br>Then I =
found JOptimizer, but again I have no idea of the performances nor how =
it will be easy to link a java program from a C++ program (I never used =
Java)..<br><br>Any suggestions? I would prefer to find an open source =
fast QP solver working on Linux/Win (MinGW).<br> Thank you...<br =
clear=3Dall><br>-- <br>Antonello Lobianco<br>INRA, Laboratoire =
d'Economie Foresti=E8re<br>14 Rue Girardet - 54000 Nancy, France<br>Tel: =
<a href=3D"tel:%2B33.652392310" =
target=3D"_blank">+33.652392310</a><br>Email: <a =
href=3D"mailto:antonello.lobianco at nancy-engref.inra.fr" =
target=3D"_blank">antonello.lobianco at nancy-engref.inra.fr</a><br><a =
href=3D"http://antonello.lobianco.org/" =
target=3D"_blank">http://antonello.lobianco.org</a> =
<o:p></o:p></p></div></div><pre>_________________________________________=
______<o:p></o:p></pre><pre>Ipopt mailing list<o:p></o:p></pre><pre><a =
href=3D"mailto:Ipopt at list.coin-or.org" =
target=3D"_blank">Ipopt at list.coin-or.org</a><o:p></o:p></pre><pre><a =
href=3D"http://list.coin-or.org/mailman/listinfo/ipopt" =
target=3D"_blank">http://list.coin-or.org/mailman/listinfo/ipopt</a><o:p>=
</o:p></pre></blockquote><p =
class=3DMsoNormal><o:p> </o:p></p></div><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'><br>______________________________________=
_________<br>Ipopt mailing list<br><a =
href=3D"mailto:Ipopt at list.coin-or.org">Ipopt at list.coin-or.org</a><br><a =
href=3D"http://list.coin-or.org/mailman/listinfo/ipopt" =
target=3D"_blank">http://list.coin-or.org/mailman/listinfo/ipopt</a><o:p>=
</o:p></p></div><p class=3DMsoNormal><br><br clear=3Dall><br>-- =
<br>Antonello Lobianco<br>INRA, Laboratoire d'Economie =
Foresti=E8re<br>14 Rue Girardet - 54000 Nancy, France<br>Tel: =
+33.652392310<br>Email: <a =
href=3D"mailto:antonello.lobianco at nancy-engref.inra.fr" =
target=3D"_blank">antonello.lobianco at nancy-engref.inra.fr</a><br><a =
href=3D"http://antonello.lobianco.org/" =
target=3D"_blank">http://antonello.lobianco.org</a> =
<o:p></o:p></p></div></body></html>
------=_NextPart_000_005A_01CE05FE.BCB677F0--
More information about the Ipopt
mailing list