eriknw / dask-patternsearch

Scalable pattern search optimization with dask
BSD 3-Clause "New" or "Revised" License
21 stars 2 forks source link

Support oracles #5

Open eriknw opened 7 years ago

eriknw commented 7 years ago

An oracle is an external source (such as a person or another algorithm) that can propose trial points to calculate. Ideally, the oracle knows more about the structure of the problem or is a more sophisticated algorithm, and can propose good trial points given enough information. An example oracle may be an algorithm that estimates the curvature of the local space and periodically proposes a point that it estimates to be the minimum. Another example is a person that submits trial points from a Jupyter notebook while the search algorithm is running.

Given the low-tech nature of pattern searching, it can easily accommodate oracles from a mathematical perspective. It's also okay if oracles provide really, really bad guesses, so they can be used as "best effort". We'll need to develop an API/plugin system that can support algorithmic and human oracles. These oracles will need the current results from the pattern search algorithm and may propose multiple trial points. Trial points may or may not snap to the grid defined by the stencil and target number of halvings. The pattern search algorithm can only use points that snap to this grid, but the oracle may want "pass through" trial points to e.g. calculate derivatives.