Learn R Programming

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

s.t. , and .

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, either the latest version 2.7.1 of NLopt from rwinlib (windows-release) or the v2.7.1 build from the rtools42 toolchain (windows2022-devel) is used. So there is nothing else to be done.

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.7.1 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.

Installing CMake (macOS and Linux only)

Minimal version requirement for cmake is 3.2.0.

You can install CMake by following CMake installation instructions. The important thing is that you add the CMake binary to your PATH:

  • 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.

Installing nloptr

You can install nloptr from CRAN using:

install.packages("nloptr")

Alternatively, you can install the development version from GitHub:

# install.packages("remotes")
remotes::install_github("astamm/nloptr")

Acknowledgments

I would like to express my sincere gratitude to Dirk Eddelbuettel, Jeroen Ooms, Tomas Kalibera, Uwe Ligges 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/

Copy Link

Version

Install

install.packages('nloptr')

Monthly Downloads

452,600

Version

2.0.3

License

LGPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

May 26th, 2022

Functions in nloptr (2.0.3)

isres

Improved Stochastic Ranking Evolution Strategy
crs2lm

Controlled Random Search
tnewton

Preconditioned Truncated Newton
lbfgs

Low-storage BFGS
nloptr.print.options

Print description of nloptr options
nloptr.get.default.options

Return a data.frame with all the options that can be supplied to nloptr.
direct

DIviding RECTangles Algorithm for Global Optimization
is.nloptr

R interface to NLopt
varmetric

Shifted Limited-memory Variable-metric
nloptr-package

R interface to NLopt
nl.grad

Numerical Gradients and Jacobians
nloptr

R interface to NLopt
slsqp

Sequential Quadratic Programming (SQP)
auglag

Augmented Lagrangian Algorithm
bobyqa

Bound Optimization by Quadratic Approximation
print.nloptr

Print results after running nloptr
sbplx

Subplex Algorithm
mlsl

Multi-level Single-linkage
cobyla

Constrained Optimization by Linear Approximations
newuoa

New Unconstrained Optimization with quadratic Approximation
mma

Method of Moving Asymptotes
ccsaq

Conservative Convex Separable Approximation with Affine Approximation plus Quadratic Penalty
check.derivatives

Check analytic gradients of a function using finite difference approximations
nl.opts

Setting NL Options
neldermead

Nelder-Mead Simplex
stogo

Stochastic Global Optimization