nloptr is an R interface to
NLopt, a free/open-source
library for nonlinear optimization started by Steven G. Johnson,
providing a common interface for a number of different free optimization
routines available online as well as original implementations of various
other algorithms. It can be used to solve general nonlinear programming
problems with nonlinear constraints and lower and upper bounds for the
controls, such as
x∈Rnminf(x),
s.t. g(x)≤0, h(x)=0 and ℓ≤x≤u.
The NLopt library is
available under the GNU Lesser General Public License (LGPL), and the
copyrights are owned by a variety of authors. See the
website for
information on how to cite NLopt and the algorithms you use.
Installation
Windows
On Windows, for old versions of R (R <= 4.1.x), the nloptv2.7.1
from rwinlib is used. For newer
versions of R (R >= 4.2.0), the nlopt version from the corresponding
RTools toolchain is used.
Linux and macOS
On Unix-like platforms, we use pkg-config to find a suitable system
build of NLopt (i.e. with
version >= 2.7.0).
If it is found it is used.
Otherwise, NLopt 2.10.0 is
built from included sources using CMake. In this
case, a binary of CMake stored in environment
variable CMAKE_BIN is searched on the PATH and, alternatively, on
a macOS-specific location. If that variable cannot be set, install
will abort suggesting ways of installing CMake.
The minimal version requirement on cmake is >= 3.15.0.
On macOS, you can install CMake and then run it.
In the menu bar, there is an item How to Install For Command Line
Use which you can click on to have proper instructions on how to
update your PATH. Note that the location of the
CMake binary is always
/Applications/CMake.app/Contents/bin/cmake. Hence,
nloptr knows where to find it
even if you do not update your PATH.
On Linux, it will be automatically added unless you specifically
change the default installation directory before building
CMake.
Alternatively, you can set an environment variable CMAKE_BIN pointing
to a CMake binary of your liking on your computer
for nloptr to use.
nloptr
nloptr is an R interface to NLopt, a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. It can be used to solve general nonlinear programming problems with nonlinear constraints and lower and upper bounds for the controls, such as
x∈Rnminf(x),
s.t. g(x)≤0, h(x)=0 and ℓ≤x≤u.
The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. See the website for information on how to cite NLopt and the algorithms you use.
Installation
Windows
On Windows, for old versions of R (
R <= 4.1.x), the nloptv2.7.1from rwinlib is used. For newer versions of R (R >= 4.2.0), the nlopt version from the correspondingRToolstoolchain is used.Linux and macOS
On Unix-like platforms, we use
pkg-configto find a suitable system build of NLopt (i.e. with version>= 2.7.0).CMAKE_BINis searched on thePATHand, alternatively, on a macOS-specific location. If that variable cannot be set, install will abort suggesting ways of installing CMake. The minimal version requirement oncmakeis>= 3.15.0.Installing CMake (macOS and Linux only)
Minimal version requirement for
cmakeis3.15.0.You can install CMake by following CMake installation instructions. The important thing is that you add the CMake binary to your
PATH:PATH. Note that the location of the CMake binary is always/Applications/CMake.app/Contents/bin/cmake. Hence, nloptr knows where to find it even if you do not update yourPATH.Alternatively, you can set an environment variable
CMAKE_BINpointing to a CMake binary of your liking on your computer for nloptr to use.Installing nloptr
You can install nloptr from CRAN using:
Alternatively, you can install the development version from GitHub:
Acknowledgments
I would like to express my sincere gratitude to Avraham Adler, Dirk Eddelbuettel, Mikael Jagan, Tomas Kalibera, Jeroen Ooms and Jelmer Ypma for their contributions and the very instructive discussions about the pros and cons of various build strategies in R packages.
Reference
Steven G. Johnson, The NLopt nonlinear-optimization package, https://nlopt.readthedocs.io/en/latest/