CRAN Task View: Optimization and Mathematical Programming

Maintainer:Stefan Theussl and Hans W. Borchers
Contact:R-optimization at

This CRAN task view contains a list of packages which offer facilities for solving optimization problems. Although every regression model in statistics solves an optimization problem they are not part of this view. If you are looking for regression methods, the following views will contain useful starting points: Multivariate, SocialSciences, Robust among others. The focus of this task view is on Optimization Infrastructure Packages , General Purpose Continuous Solvers , Mathematical Programming Solvers and Specific Applications in Optimization . Packages are categorized in these four sections.

Many packages provide functionality for more than one of the subjects listed at the end of this task view. E.g., mixed integer linear programming solvers typically offer standard linear programming routines like the simplex algorithm. Therefore following each package description a list of abbreviations describes the typical features of the optimizer (i.e., the problems which can be solved). The full names of the abbreviations given in square brackets can be found at the end of this task view under Classification According to Subject .

If you think that some package is missing from the list, please let us know.

Optimization Infrastructure Packages

Trying to unify optimization algorithms via a single wrapper function, optimx helps to proper specify the (nonlinear) optimization problem including objective function, gradient function, and scaling. This package supports the (local) optimization of smooth, nonlinear functions with at most box constraints (bounds). optimx depends not only on packages and/or functions mentioned in this section of this task view but also on two packages implemented by the author(s), namely Rcgmin and Rvmmin. Both are "pure R" implementations of conjugate gradient minimization and variable metric nonlinear function minimization algorithms, respectively.

The R Optimization Infrastructure (ROI) package provides a framework for handling optimization problems in R. It uses an object oriented approach to define and solve various optimization tasks in R which can be from different problem classes (e.g., linear, quadratic, non-linear programming problems). This makes optimization transparent for the R user as the corresponding workflow is completely abstracted from the underlying solver. Furthermore, this approach allows for easy switching between solvers, given that corresponding solver plugins are available, and thus enhances comparability.

General Purpose Continuous Solvers

Package stats offers several general purpose optimization routines. For one-dimensional unconstrained function optimization there is optimize() which searches an interval for a minimum or maximum. Function optim() provides an implementation of the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method, bounded BFGS, conjugate gradient (CG), Nelder-Mead, and simulated annealing (SANN) optimization methods. It utilizes gradients, if provided, for faster convergence. Typically it is used for unconstrained optimization but includes an option for box-constrained optimization.

Additionally, for minimizing a function subject to linear inequality constraints, stats contains the routine constrOptim(). Then there is nlm which is used for solving nonlinear unconstrained minimization problems. nlminb() offers box-constrained optimization using the PORT routines. [RGA, QN]

Quadratic Optimization

Optimization Test Functions

Least-Squares Problems

Semidefinite and Convex Solvers

Global and Stochastic Optimization

Mathematical Programming Solvers

This section provides an overview of open source as well as commercial optimizers. Which type of mathematical programming problem can be solved by a certain package or function can be seen from the abbreviations in square brackets. For a classification by subject see the list at the end of this task view.

Interfaces to Open Source Optimizers

Interfaces to Commercial Optimizers

This section surveys interfaces to commercial solvers. Typically, the corresponding libraries have to be installed separately.

Specific Applications in Optimization

Classification According to Subject

What follows is an attempt to provide a by-subject overview of packages. The full name of the subject as well as the corresponding MSC 2010 code (if available) are given in brackets.

CRAN packages:

Related links: