backyard/direct/README.md

25 lines
1.3 KiB
Markdown
Raw Permalink Normal View History

2022-06-13 14:21:16 -07:00
**di**viding **rect**angles, and the algorithms that stem from it.
2022-06-13 14:14:14 -07:00
for a description and history of these methods, please refer to
["The DIRECT algorithm: 25 years Later."](https://link.springer.com/article/10.1007/s10898-020-00952-6)
i don't plan on implementing the original DIRECT algorithm itself,
but i've heard through the grapevine that
2022-06-13 14:21:16 -07:00
[scipy](https://docs.scipy.org/doc/scipy/reference/optimize.html#global-optimization)
2022-06-13 14:14:14 -07:00
is getting its own DIRECT implementation soon.
`birect.py` is a modification of DIRECT that divides hyper-rectangles
into halves instead of thirds, and re-uses one point per evaluation.
there's a couple other devils in the details, but that's the gist of it.
`soo.py` allows for an arbitrary (K≥2) number of subdivisions,
behaving somewhat similar to BIRECT (K=2), DIRECT (K=3), and beyond.
SOO stands for **S**imultaneous **O**ptimistic **O**ptimization.
SOO is typically not as efficient as the other algorithms,
2022-06-13 14:35:59 -07:00
but it is simpler to implement, especially when K is fixed to a constant.
2022-06-13 14:14:14 -07:00
curiously, SOO is not covered in the aforementioned article, so please refer to
["Optimistic Optimization of a Deterministic Function
2022-06-13 14:21:16 -07:00
without the Knowledge of its Smoothness."](https://team.inria.fr/sequel/software/soo/)
2022-06-18 00:36:36 -07:00
i'm in the process of writing comments for these files, so
if you have any curiosities, i suggest you take a peek at the code first.