eriknw / dask-patternsearch

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

Can we support integer dimensions? #6

Closed eriknw closed 7 years ago

eriknw commented 7 years ago

I think this should be possible with the expectation that it's okay to only explore nearby integers. For example, the step sizes along an integer dimensions as the algorithm proceeds may be [-4, 0, 4], [-2, 0, 2], and [-1, 0, 1]. We can do this by rounding the step sizes given by the stencil to the nearest integer away from zero.

I think we may want to tighten the contraction conditions. Currently, we halve the step size and advance the algorithm from the current best point with the reduced step size when the neighboring points in the cardinal directions have been calculated and rejected. For example, in two dimensions and step size s, we halve the step size once (-s, 0), (s, 0), (0, -s), and (0, s) have been calculated and rejected. If these two dimensions are integer dimensions, we may want to require that these additional points have been calculated: (-s, -s), (-s, s), (s, -s), and (s, s). This obviously scales worse than the original contraction conditions--it requires 2**d points instead of 2*d points--but it may be desirable for robustness. Perhaps there is a better way to do this.

eriknw commented 7 years ago

From a convergence perspective, perhaps it would be sufficient(-ish) to randomly choose a subset of the 2**d corners (in addition to the 2*d cardinal directions) to include in the contraction conditions.

eriknw commented 7 years ago

Done.