1.3 KiB
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.