RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.33k stars 1.26k forks source link

add support for IPOPT in optimization problem #316

Closed hongkai-dai closed 8 years ago

hongkai-dai commented 10 years ago

Currently Ipopt with Mumps solver is slower than SNOPT and fmincon on small size problems. Should add test of Ipopt for problems with different sizes. Add try different linear solvers for Ipopt.

RussTedrake commented 8 years ago

we need to decide if we will add support for IPOPT in the c++ optimization stack or not. @hongkai-dai thinks that it is a better alternative than nlopt in terms of performance (but has the downside that it did not have support for windows last time we checked)

RussTedrake commented 8 years ago

(currently we have limited ipopt support in the matlab optimization classes only)

sherm1 commented 8 years ago

IPOPT ... did not have support for windows last time we checked

We didn't have any trouble including IPOPT in Simbody for all platforms, including Windows.

hongkai-dai commented 8 years ago

@sherm1 , did you need to use cygwin or MinGW to compile IPOPT on Windows? I have not found how to install ipopt on Windows without Cygwin or MinGW, according to this page http://www.coin-or.org/Ipopt/documentation/node15.html

sherm1 commented 8 years ago

No, we build it in Visual Studio along with the everything else. @chrisdembia, I know you ported a newer version of IpOpt to Simbody recently -- were you able to build it on Windows?

chrisdembia commented 8 years ago

@chrisdembia, I know you ported a newer version of IpOpt to Simbody recently -- were you able to build it on Windows?

You are correct; I did not try building that newer version of IpOpt on Windows. It seems like the issue is that IpOpt does not use CMake? This website says COIN-OR provides Visual Studio solution files for a number of its projects, but not for IpOpt.

Some other notes about IpOpt:

sherm1 commented 8 years ago

The version of IpOpt that ships with Simbody does build with CMake. We must have added that at some point. @chrisdembia, did you build IpOpt separately with its own build system then and just link with it?

chrisdembia commented 8 years ago

The version of IpOpt that ships with Simbody does build with CMake. We must have added that at some point.

Yeah I think Simbody globs up the IpOpt sources with its own CMakeLists.txt.

@chrisdembia, did you build IpOpt separately with its own build system then and just link with it?

I haven't built or used IpOpt on Windows (aside from within Simbody).

I just checked to see if IpOpt has a Chocolatey package, and it does not. The conda package manager (used mostly for python packages) does have IpOpt binaries (https://anaconda.org/cachemeorg/ipopt_bin).

chrisdembia commented 8 years ago

I just found a link to IpOpt's mailing list from 2014 with CMakeLists files that someone created for Ipopt.

sherm1 commented 8 years ago

Awesome -- thanks, Chris!

hongkai-dai commented 8 years ago

@chrisdembia @sherm1, that is great! Thanks a lot!

ggould-tri commented 8 years ago

Assigning to sammy as he is already working this problem.

sammy-tri commented 8 years ago

Marking as closed. Remaining work is being tracked in #2578 and #2569