Enable SPRAL(+METIS) option for IpoptSolver #21476
Labels
component: mathematical program
Formulating and solving mathematical programs; our autodiff and symbolic libraries
type: feature request
Is your feature request related to a problem? Please describe.
Ipopt requires a linear solver under the hood. See https://coin-or.github.io/Ipopt/index.html#PREREQUISITES for background.
Currently, Drake's build configures Ipopt to use MUMPS for this purpose. However, the MUMPS build system is kind of a portability disaster (#20429), and its license (LGPL-like) means that we need to ship it as shared libraries in our wheel builds, which also increases brittleness. In an ideal world, we would evict MUMPS from our build.
Describe the solution you'd like
Most of the alternative linear solvers for Ipopt are also unusable, with one exception: the SPRAL package is suitably maintained and licensed, and its required dependency METIS is also available with a suitable license.
We should add the SPRAL solver to our build so that IpoptSolver can opt-in to it. (It has a setting
linear_solver="mumps"
as a default; a user can opt-in to SPRAL by providing a different option.)Once we have some experience with SPRAL, and assuming we like it, we should switch to it by default and deprecate the MUMPS option for removal, eventually removing MUMPS from our build entirely.
Describe alternatives you've considered
Drop support for Ipopt entirely.
Additional context
The end of a related discussion: #4913 (comment).
The text was updated successfully, but these errors were encountered: