Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Powell's DFO methods: the Fortran 77 implementation of COBYLA / NEWUOA is unmaintained and buggy; Switch to PRIMA? #1567

Open
zaikunzhang opened this issue Oct 18, 2023 · 1 comment

Comments

@zaikunzhang
Copy link

zaikunzhang commented Oct 18, 2023

Dear Nevergrad maintainers,

This is Dr. Zaikun Zhang from the Hong Kong Polytechnic University. Together with Professor N.I.M. Gould, I am responsible for maintaining the derivative-free optimization (DFO) solvers of the late Professor M.J.D. Powell. I am the author of PRIMA, which provides the modernized reference implementation for these solvers.

Thank you for making COBYLA and NEWUOA available in Nevergrad. I note that the current version is based on the original Fortran 77 implementation, which is not maintained anymore.

Although the Fortran 77 code is truly a masterpiece, it contains many bugs, most of which are due to the language itself. For example, see Section 4.4 of our recent paper and the GitHub issues / requests listed below.

Expected Results

To avoid the problems originating from the Fortran 77 code, I suggest you use the PRIMA implementation of Powell‘s solvers.

PRIMA provides the reference implementation for Powell's renowned derivative-free optimization methods, namely COBYLA, UOBYQA, NEWUOA, BOBYQA, and LINCOA. The current version of PRIMA implements these solvers in Fortran 2008. It fixes bugs in the original Fortran 77 code. In addition, 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.

I also note that there was an interest to include BOBYQA into Nevergrad, but it was not possible due to the license. PRIMA is licensed under the 3-Clause BSD, which I suppose is compatible with MIT.

See the GitHub repo of PRIMA for more information. I will be glad to assist if help is needed.

Thanks.

Best regards,
Zaikun Zhang, Ph.D. and Assistant Professor
Department of Applied Mathematics
The Hong Kong Polytechnic University

@bottler
Copy link
Contributor

bottler commented Oct 19, 2023

Thanks for letting us know about this. I think for nevergrad we should wait and see how the scipy issue gets resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants