andim / scipydirect

Python wrapper to the DIRECT global optimization algorithm with scipy.optimize compatible call syntax
http://scipydirect.readthedocs.io/
MIT License
28 stars 7 forks source link

Inclusion into SciPy? #9

Closed dschmitz89 closed 2 years ago

dschmitz89 commented 3 years ago

Hey Andreas,

thank you for maintaining this wrapper for DIRECT for the python optimization community.

In a recent benchmark of derivative free global optimization algorithms in Python, DIRECT was quite competitive. On the SciPy mailing list, this sparked interest in incorporating DIRECT in SciPy directly. The benchmarks used NLopt's implementation which would be quite complicated to integrate but this Fortran wrapper should be easier.

Would you be interested in spearheading or supporting this? I imagine that most of the code can simply be reused.

Thanks in advance!

Discussion on the SciPy Side: scipy/scipy/issues/14121

andim commented 3 years ago

Hey @dschmitz89 !

Thanks for reaching out. If there is a willingness on the part of the scipy community to directly support this optimization algorithm, I would warmly welcome its inclusion! Indeed, easy exchangeability with other scipy.optimize routines is what inspired me to fork a previous python wrapper of the DIRECT algorithm.

What would need to happen to make this inclusion a reality?

Andreas

rgommers commented 3 years ago

Hi @andim and @dschmitz89, SciPy is always happy to include new high-performance optimization routines, especially if benchmarks show that they're better than what we already have in scipy.optimize for some class of problems. Which is what http://infinity77.net/go_2021/thebenchmarks.html shows is the case for DIRECT.

I commented on https://github.com/scipy/scipy/issues/14121 about what needs to be done. If the two of you would like to collaborate on that, that'd be ideal (a second person familiar with an algorithm to test/review makes the job for SciPy maintainers to get a PR merged a lot easier).

andim commented 2 years ago

Closing this as porting to scipy now complete as of Scipy version 1.9: https://github.com/scipy/scipy/pull/14300