question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

ENH: biteopt algorithm for global optimization

See original GitHub issue

Is your feature request related to a problem? Please describe.

biteopt is a differential evolution like global optimizer which scored first in Scipy’s benchmark suite in an extensive recent benchmark . Besides great accuracy it is also very fast as it is completely implemented in C++: https://scipybiteopt.readthedocs.io/en/latest/Benchmark.html

A scipy.like API for biteopt is available at scipybiteopt based on this wrapper. The python wrapper is implemented based on Python’s C API. Currently, the wrapper does not properly handle Python exceptions or errors. Maybe a ctypes or Cython wrapper would be a more robust alternative?

Describe the solution you’d like.

A function scipy.optimize.biteopt .

Describe alternatives you’ve considered.

No response

Additional context (e.g. screenshots, GIFs)

Using the same benchmarking code in the DIRECT PR, I get the following performance plots for biteopt: 180 solved problems. This is 13 more than for dual_annealing and direct which seem to perform best currently.

Biteopt_Benchmark

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:1
  • Comments:80 (27 by maintainers)

github_iconTop GitHub Comments

1reaction
avaneevcommented, Feb 7, 2022

I’ve updated BiteOpt: instead of virtualizing CBiteOpt I’ve went “C” way so that a function pointer can be passed via the biteopt_minimize() function, so it should be fairly easy to integrate uniform numpy RNG. This approach also did not increase overhead too much compared to virtualization.

1reaction
rkerncommented, Jan 1, 2022

The discussion about replacing the PRNG is not about quality. It’s about being able to use the same pseudorandom stream in all of one’s code. In all of the other places scipy uses pseudorandomness, we use numpy’s PRNG facilities. If we can at all avoid it, we do not want to introduce other PRNG facilities that the user will have to manage in other ways.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Global Optimization Benchmarks 0.1.0 documentation
This section presents a very high-level overview of all the benchmark test suites I have considered and also an extremely high-level analysis of...
Read more >
A Global Optimization Algorithm for Intelligent ... - Hindawi
Abstract. To improve the speed of global optimization algorithm, a class of global optimization algorithms for intelligent electromechanical control system ...
Read more >
scipybiteopt - PyPI
A python wrapper for biteopt. This package provides a scipy.optimize like API for the powerful global optimization algorithm biteopt.
Read more >
Lemurs Optimizer: A New Metaheuristic Algorithm for Global ...
In conclusion, LO is a new optimization algorithm that can be applied to a large variety of global optimization problems efficiently. This ...
Read more >
Latest recommendations for global optimization
Neither are the algorithms specifically implemented in Python by the author (AMPGO, BiteOpt or MCS which @jonathanBieler mentioned to be “the ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found