Wrap or Rewrite? Reviving the 1989 GlobalMinimum Bayesian Global-Optimization Library for R and Python
Abstract
The GlobalMinimum library of Jonas Mockus (1989) implements some of the earliest practical Bayesian global-optimization methods -- one-step Bayesian search over a simple surrogate, Wiener-process one-dimensional models, low-discrepancy designs, and clustering multistart. We modernize this Fortran 66/77 codebase along both standard routes: wrapping the original compiled routines behind R and Python packages, and translating the core methods to Rust. First, we release packages in which every optimizer runs the genuine 1989 algorithms, with callback objectives, deterministic seeding, full evaluation traces, and validation that retrofits memory- and I/O-safety onto COMMON-block Fortran. Second, we dissect a translation-fidelity incident: the Rust port of the one-step Bayesian planner ran up to 12x slower than the wrapped Fortran -- initially misattributed to foreign-function overhead. Controlled decomposition shows call overhead is microseconds and backend-neutral; the cause was two dropped pruning rules whose restoration recovers bitwise trajectory agreement and speed parity. The same audit found transposed coefficient matrices in re-implemented Shekel and Hartmann test functions -- quiet correctness bugs of the rewrite route. Third, we benchmark the 1989 methods against modern optimizers in both ecosystems (SciPy, NLopt, CMA-ES, GP-based Bayesian optimization, GenSA, DEoptim, GA) on a COCO-style shifted-instance suite with external validation on BBOB. On classical test functions the coordinate Wiener-model search EXKOR statistically ties dual annealing at the larger budget; on BBOB's non-separable, ill-conditioned functions it drops to mid-field, quantifying the separability dependence. At tight budgets modern annealing and GP expected improvement dominate the 1989 machinery. Code and data are available.
Related
- No-Regret Bayesian Optimization with Finite-Library Input-Warped Kernels
- Transfer learning in bayesian optimization for aircraft design
- Pre-training of Bayesian Optimization Algorithm through Bayesian Optimization
- Energy-aware frugal Bayesian optimization
- MF-SCBO : Multi-fidelity Scalable Constrained Bayesian Optimization
BibTeX
@misc{mockus2026wrap,
title = {{Wrap or Rewrite? Reviving the 1989 GlobalMinimum Bayesian Global-Optimization Library for R and Python}},
author = {Audris Mockus},
howpublished = {arXiv},
year = {2026},
month = nov,
doi = {10.48550/arxiv.2611.08492},
eprint = {2611.08492},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2611.08492},
note = {CC BY 4.0},
}
RIS
TY - UNPB
TI - Wrap or Rewrite? Reviving the 1989 GlobalMinimum Bayesian Global-Optimization Library for R and Python
AU - Audris Mockus
PY - 2026
DA - 2026/11/01
PB - arXiv
DO - 10.48550/arxiv.2611.08492
UR - https://arxiv.org/abs/2611.08492
AB - The GlobalMinimum library of Jonas Mockus (1989) implements some of the earliest practical Bayesian global-optimization methods -- one-step Bayesian search over a simple surrogate, Wiener-process one-dimensional models, low-discrepancy designs, and clustering multistart. We modernize this Fortran 66/77 codebase along both standard routes: wrapping the original compiled routines behind R and Python packages, and translating the core methods to Rust. First, we release packages in which every optimizer runs the genuine 1989 algorithms, with callback objectives, deterministic seeding, full evaluation traces, and validation that retrofits memory- and I/O-safety onto COMMON-block Fortran. Second, we dissect a translation-fidelity incident: the Rust port of the one-step Bayesian planner ran up to 12x slower than the wrapped Fortran -- initially misattributed to foreign-function overhead. Controlled decomposition shows call overhead is microseconds and backend-neutral; the cause was two dropped pruning rules whose restoration recovers bitwise trajectory agreement and speed parity. The same audit found transposed coefficient matrices in re-implemented Shekel and Hartmann test functions -- quiet correctness bugs of the rewrite route. Third, we benchmark the 1989 methods against modern optimizers in both ecosystems (SciPy, NLopt, CMA-ES, GP-based Bayesian optimization, GenSA, DEoptim, GA) on a COCO-style shifted-instance suite with external validation on BBOB. On classical test functions the coordinate Wiener-model search EXKOR statistically ties dual annealing at the larger budget; on BBOB's non-separable, ill-conditioned functions it drops to mid-field, quantifying the separability dependence. At tight budgets modern annealing and GP expected improvement dominate the 1989 machinery. Code and data are available.
ER -