Software

Software by Professor M. J. D. Powell

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

Professor Powell kindly authorized me to distribute the code of his optimization software here. The software is also maintained at CCPForge by Professor Nick Gould and me. If you have problems in downloading, please feel free to contact me. In case of technical questions on the code or the algorithms, you may also contact us and we will do our best to help.

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. Plans are underway to provide MATLAB, Python, and (possibly) C interfaces.

Please notice that Professor Powell released his optimization software with the GNU Lesser General Public License. If you are using a version of the software without the license, please update it. If you are archiving the software somewhere else, please make sure to include the license.

  • 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. Single precision only. [.tar.gz] [.zip] [paper] [wikipedia]

  • UOBYQA (Unconstrained Optimization BY Quadratic Approximation), an algorithm that solves unconstrained optimization problems without using derivatives. 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. 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. [.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. [.tar.gz] [.zip] [paper] [wikipedia]

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)