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

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

Function solve.qr() (resp. qr.solve()) handles over- and under-determined systems of linear equations, returning least-squares solutions if possible. And package stats provides nls() to determine least-squares estimates of the parameters of a nonlinear model. nls2 enhances function nls() with brute force or grid-based searches, to avoid being dependent on starting parameters or getting stuck in local solutions.

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 According to 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.

Combinatorial Optimization

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: