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

The old implementation of COBYLA is buggy and challenging to maintain. Switch to the PRIMA implementation? #13

Open
zaikunzhang opened this issue Mar 9, 2023 · 2 comments

Comments

@zaikunzhang
Copy link

Dear csnumrics 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 solvers of late Professor M.J.D. Powell.

Thank you for making COBYLA and BOBYQA available in csnumrics. I note that the current version is based on the original Fortran 77 implementation, the latter being not maintained anymore.

Although Powell's Fortran 77 implementation 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 at the end of this message (not all of them concern csnumrics).

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 "P" in the name stands for Powell, and "RIMA" is an acronym for "Reference Implementation with Modernization and Amelioration".

PRIMA provides the modern implementation of the 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.

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

Thanks.


Issues and requests raised due to bugs in the Fortran 77 implementation (and translation) of Powell's solvers

@anders9ustafsson
Copy link
Contributor

Sorry for the late response, and many thanks for informing about the new PRIMA implementation. Are there any benchmarks that already today confirms that the PRIMA implementations are more reliable and faster than the original implementations?

It would be quite an undertaking to re-implement the C# code based on PRIMA, and I personally do not have the time or commitment necessary to do that right now. But if anyone else is interested in pursuing this, please feel free to share your efforts.

@zaikunzhang
Copy link
Author

zaikunzhang commented May 28, 2023

Are there any benchmarks that already today confirms that the PRIMA implementations are more reliable and faster than the original implementations?

Yes. See the benchmarking results in the README of PRIMA. Thanks.

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

3 participants
@anders9ustafsson @zaikunzhang and others