backyard/direct
2024-02-15 19:16:15 -08:00
..
birect.py direct: update birect.py 2024-02-15 19:16:15 -08:00
README.md direct: update readme 2022-06-18 09:36:36 +02:00
soo.py direct: add soo.py 2022-06-13 22:58:34 +02:00

dividing rectangles, and the algorithms that stem from it. for a description and history of these methods, please refer to "The DIRECT algorithm: 25 years Later."

i don't plan on implementing the original DIRECT algorithm itself, but i've heard through the grapevine that scipy 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 Simultaneous Optimistic Optimization. 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."

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.