Software

Software by Professor M. J. D. Powell

Professor M. J. D. Powell sadly passed away on April 19th, 2015. We will all miss him very much.

Professor Powell kindly authorized me to distribute the code of his optimization software here. Professor Nick Gould also sets up a collection of optimization software written by Professor Powell at CCPForge. The software is released under the GNU Lesser General Public License (version 2.1 or any later version).

Each package here includes an “email.txt” file. It is an email from Professor Powell giving details of the corresponding software. To use the software, you need a Fortran compiler (e.g., f77, IFORT, GFortran, G95). Makefiles are provided for the usage under Unix, and they might need modifications according to your compiler.

  • TOLMIN, an algorithm that minimizes a general differentiable nonlinear function subject to linear constraints. Implemented in Fortran 77. Released in Apr. 1990. [.tar.gz] [.zip] [paper] [wikipedia]

  • COBYLA (Constrained Optimization BY Linear Approximations), an algorithm that seeks the least value of a nonlinear function subject to nonlinear inequality constraints, without using derivatives of the objective function or the constraints. Implemented in Fortran 77 (single precision only). Released on May 7, 1992. [.tar.gz] [.zip] [paper] [wikipedia]

  • UOBYQA (Unconstrained Optimization BY Quadratic Approximation), an algorithm that solves unconstrained optimization problems without using derivatives. Implemented in Fortran 77. Released in 2000. For general usage, NEWUOA is recommended to replace UOBYQA. [.tar.gz] [.zip] [paper] [wikipedia]

  • NEWUOA, an algorithm that solves unconstrained optimization problems without using derivatives. Implemented in Fortran 77. Released on Dec. 16, 2004. In general it is much more efficient than UOBYQA and is capable of solving problems with several hundreds of variables. [.tar.gz] [.zip] [paper] [wikipedia]

  • BOBYQA (Bound Optimization BY Quadratic Approximation), an algorithm that seeks the least value of a nonlinear function subject to bound constraints, without using derivatives of the objective function. Implemented in Fortran 77. Released on Jan. 5, 2009. [.tar.gz] [.zip] [paper] [wikipedia]

  • LINCOA (LINearly Constrained Optimization Algorithm), an algorithm that seeks the least value of a nonlinear function subject to linear inequality constraints, without using derivatives of the objective function. Implemented in Fortran 77. Released on Dec. 6, 2013. [.tar.gz] [.zip] [paper] [wikipedia]

If you have problems in downloading, please feel free to contact me. For questions on the code or the algorithms, Professor Gould and I will also try to help.

Subroutines by myself

Here are some subroutines by me. They are written in the hope that they will be helpful, but there is no guarantee that they will work properly. They probably call some subroutines that are not provided here. In that case I try to instruct in the comments how to obtain those subroutines.

Optimization

  • A Fortran subroutine to seek an inexact solution to a trust region subproblem

 begin{array}{rl}     min&frac{1}{2} d^top B d + g^top d     textnormal{s.t.}&|d| le Delta. end{array}
  • A Fortran subroutine to seek an inexact solution to a trust region subproblem with box constrains, namely

 begin{array}{rl}     min&frac{1}{2} d^top B d + g^top d     textnormal{s.t.}&|d| le Delta,                      & lle dle u. end{array}

Numerical linear algebra

  • A Fortran subroutine to solve a linear system with a positive definite coefficient matrix.

  • A Fortran subroutine to calculate all the eigenvalues of a symmetric matrix.

  • A Fortran subroutine to calculate the largest k eigenvalues of a symmetric matrix and the corresponding eigenvectors.

Software that I use (and recommend)