coin-or / Ipopt

COIN-OR Interior Point Optimizer IPOPT
https://coin-or.github.io/Ipopt
Other
1.36k stars 272 forks source link

question: any NLP solvers behind OPOPT has easy to deploy routine? #736

Closed dzmitry-lahoda closed 6 months ago

dzmitry-lahoda commented 6 months ago

seems all NLP solvers are hard to automate to download (named auth)

just came from there https://github.com/scipopt/scip/issues/82

what is best NLP solver to try?

dzmitry-lahoda commented 6 months ago
Ipopt requires at least one of the following solvers for systems of linear equations:

MA27, MA57, HSL_MA77, HSL_MA86, or HSL_MA97 from the [Harwell Subroutines Library](http://hsl.rl.ac.uk/) (HSL). It is recommended to use project [ThirdParty-HSL](https://github.com/coin-or-tools/ThirdParty-HSL) to build a HSL library for use by Ipopt or to use [prebuild macOS/Windows libraries from STFC](https://licences.stfc.ac.uk/product/libhsl), see the [Ipopt installation instruction](https://coin-or.github.io/Ipopt/INSTALL.html#DOWNLOAD_HSL).
[Parallel Sparse Direct Linear Solver](http://www.pardiso-project.org/) (Pardiso). Note, that the Intel Math Kernel Library (MKL) also includes a version of Pardiso, but the one from Pardiso Project often offers better performance.
[Sparse Parallel Robust Algorithms Library](https://github.com/ralna/spral) (SPRAL).
[MUltifrontal Massively Parallel sparse direct Solver](http://mumps.enseeiht.fr/) (MUMPS). It is highly recommended to use project [ThirdParty-Mumps](https://github.com/coin-or-tools/ThirdParty-Mumps) to build a MUMPS library for use by Ipopt.
[Watson Sparse Matrix Package](http://www.research.ibm.com/projects/wsmp)

Default build require HSL.

How to set to use SPRAL or MUMPS

both are OSS

https://github.com/scivision/mumps

https://github.com/ralna/spral

svigerske commented 6 months ago

Installation instructions for Ipopt can be found in the documentation: https://coin-or.github.io/Ipopt/INSTALL.html#EXTERNALCODE

dzmitry-lahoda commented 6 months ago

inrestingly, i see that this build uses AMPL https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/science/math/ipopt/default.nix

whole while when I try to use IPOPT, it tries to load HSL library.

dzmitry-lahoda commented 6 months ago

I assume logic can be you compiled with AMPL headers, but you did not provided AMPL so files, so I will try HSL and fail on it. Or on the way to compile AMPL really was not applied.

@svigerske is AMPL configuration makes HSL code to be ignore (not even compiled into Ipopt), so that if I see HSL AMPL just was not applied?

svigerske commented 6 months ago

AMPL is an algebraic modeling system, HSL is a set of linear algebra routines. They have nothing to do with each other. Whether Ipopt is build with AMPL interface does not affect Ipopt's choice of the linear solver. I explained in https://github.com/scipopt/scip/issues/82#issuecomment-1895393569 why Ipopt may try to load a HSL library.

dzmitry-lahoda commented 6 months ago

thank. it is finally clear. i have build MUMPS with double and int64 support. trying.