24 lines
1.3 KiB
Markdown
24 lines
1.3 KiB
Markdown
**di**viding **rect**angles, and the algorithms that stem from it.
|
|
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
|
|
[scipy](https://docs.scipy.org/doc/scipy/reference/optimize.html#global-optimization)
|
|
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,
|
|
but it is simpler to implement, especially when K is fixed to a constant.
|
|
curiously, SOO is not covered in the aforementioned article, so please refer to
|
|
["Optimistic Optimization of a Deterministic Function
|
|
without the Knowledge of its Smoothness."](https://team.inria.fr/sequel/software/soo/)
|
|
|
|
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.
|