JuliaNLSolvers / Optim.jl

Optimization functions for Julia
Other
1.12k stars 217 forks source link

Mike Powell passing #115

Closed alanedelman closed 8 years ago

alanedelman commented 9 years ago

One of the greats of Optimization, Mike Powell, passed away recently. Seemed an "issue" in his memory was appropriate. I had the pleasure of enjoying many of his talks, and an occasional dinner conversation over the years.

johnmyleswhite commented 9 years ago

That's very sad news. We've even got functions with his name in our test suite.

zaikunzhang commented 10 months ago

Hi, excuse me for revitalizing this old thread.

For your information, the late Professor Powell's renowned derivative-free optimization solvers are available to Julia users now under PRIMA.jl:

https://github.com/JuliaRegistries/General/tree/master/P/PRIMA

PRIMA.jl is a Julia interface to the PRIMA, which is a package for solving general nonlinear optimization problems without using derivatives. It provides the reference implementation for Powell's derivative-free optimization methods, i.e., COBYLA, UOBYQA, NEWUOA, BOBYQA, and LINCOA. PRIMA means Reference Implementation for Powell's methods with Modernization and Amelioration, "P" for Powell.

Professor Powell carefully implemented his derivative-free optimization methods into publicly available solvers, which are genuine masterpieces. They are widely used by engineers and scientists. For instance, see Section 1 of a recent paper on Powell's solvers as well as the Google searches of COBYLA and BOBYQA.

However, Professor Powell's implementation was done in Fortran 77. The code is nontrivial to understand or maintain, let alone extend. For many practitioners, this has become an obstacle to exploiting these solvers in their applications. Even worse, it has hindered researchers from exploring the wealth left by Professor Powell to us.

Before he passed, Professor Powell had asked me and Professor Nick Gould to maintain his solvers. To make the solvers more accessible, I started PRIMA, which aims to provide the reference implementation of Powell's methods in modern languages, including modern Fortran (F2008 or newer), C/C++, Python, MATLAB, Julia, and R. It will be a faithful implementation, in the sense that the code will be mathematically equivalent to Powell’s, except for the bug fixes and improvements made intentionally.

Indeed, PRIMA fixes many bugs in the original Fortran 77 code, and it introduces improvements that boost the performance in terms of the number of function evaluations, which is the standard measure of computational costs in derivative-free optimization.

Currently, the modern Fortran implementation of PRIMA has been finished. Interfaces to Julia, MATLAB, Python, and C are available. Native implementations in these languages will also be provided in the future.

If you are interested in PRIMA, you may check libprima / prima.

Thanks and regards, Zaikun