Skip to main content

BAM Release Notes

Welcome, Anonymous

2026.5.30

Public release of batch evaluation. Users may now ask BAM to hand multiple points to the objective callback at once and evaluate them by whatever means they choose: in parallel across processes, threads, cluster jobs, or laboratory instruments; sequentially; or any mix the experimental setup allows. The single-point callback remains the default; batch evaluation is opt-in.

New features

Batch evaluation is now supported throughout the solver. The BATCHSIZE option controls the maximum number of points BAM hands to the objective callback per call; the callback returns the corresponding objective values, and BAM incorporates the entire batch into the next iteration. The option works in all candidate-generation paths (sampling, model-based candidates, vertex-based candidates, density guarantee, and local search). Certain parts of the algorithm remain inherently sequential by design and result in BAM requesting fewer than BATCHSIZE points or even just one in some iterations of the algorithm.

Bug fixes

Correction to a numerical issue in the local solver.

Documentation

The user manual, the Python API documentation, and the test suite have been updated to reflect batch evaluation.

2026.5.28

Algorithmic improvements

Updated the embedded BARON.

2026.5.27

A major release. The C and Fortran APIs are now complete and supported on all five target platforms. The Python package bam-solver is published on PyPI and installable with pip install bam-solver; pre-built binary wheels bundle the BAM library and its runtime dependencies, so users need neither a compiler nor a separate BAM installation. The user manual has been rewritten and is now also available as HTML.

New features

  • New C API, new native Fortran API, and new Python API, all driving the same solver and exposing the same functionality. The Python API offers three interfaces: a SciPy-style minimize function, a full-control Bam class, and an AskTell interface for externally driven evaluations (laboratory experiments, cluster jobs, simulators in other processes).
  • Runtime introspection through the API: query the library version, the number of function evaluations, total CPU time, license state, license path, the maximum number of variables allowed in free mode, and the full list of status codes and their messages. Host applications and language wrappers should query these rather than parsing the listing file.
  • License handling: LICFNAME is an option (default bamlice.txt), settable at any point in the API lifecycle and preserved across bam_destroy/bam_create cycles. License state is reported as licensed, free with no license file, or free with an invalid license file.
  • Options-file handling: OPTFNAME (default bam.opt) names the options file consulted at the start of each solve; setting it to an empty string suppresses the lookup, recommended in API drivers that should ignore any local bam.opt.
  • Signal-handling architecture for embedding BAM as a library: on entry to a solve, BAM saves the host application's signal dispositions, installs its own flag-and-poll handlers for SIGINT/SIGTERM and a catastrophic-signal catcher for SIGSEGV/SIGABRT/SIGBUS, and restores everything on exit. Hosts that need their own handlers in effect throughout the solve can opt out by setting SIGNAL_HANDLER to 0. On Windows, BAM now removes its console-Ctrl handler on solve exit so the host's Ctrl-C handling is restored.
  • New terminate flag in the objective callback: a callback can request a clean run termination by setting terminate to a nonzero value; BAM returns the best evaluation seen so far with termination code 51. This is distinct from code 50 ("run interrupted by user"), reserved for OS-level signals.

Algorithmic improvements

  • Major performance improvements in MAS local-search internals via algorithmic redesign of the orthogonalization and basis-selection routines. Measured 3 to 15 times speedup on previously slow problems in the Ploskas-Sahinidis mixed-integer benchmark set; some bottleneck-time metrics dropped by 98%.
  • Major bug fixes in the surrogate-model construction path: many ALAMO models that were previously being ignored are now used, including models built during adaptive sampling. This significantly improves solution quality on affected problems.
  • Integration with an improved BARON, paired with refined local-search. Solves approximately 80% of standard benchmark problems to global optimality.
  • BARON is now invoked with options that ensure deterministic behavior across runs; consecutive BAM calls within one process are now bit-identical.

Bug fixes

  • Major fix in initial-sample handling that affected runs supplying user starting data.
  • Major fix in evaluation-budget handling that could lead to memory inconsistencies when MAXEVALS was changed after problem creation.
  • Several smaller fixes throughout the API and the trace-file printing path.

Documentation

  • Complete rewrite of the user manual, including the new Python, C, and Fortran APIs, signal handling, license handling, output files, the algorithm description, comparisons with Bayesian Optimization, DIRECT, and MCS, and the full list of status codes.
  • Manual now available in PDF and HTML.

Platform and packaging

  • Pre-built binary wheels for Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), and Windows (x86_64).
  • In addition to the executable simulators, the distribution now contains source files for the Python, C, and Fortran APIs.
  • LICENSES and THIRD-PARTY-LICENSES files included in the distribution.
  • Automated publishing pipeline for the Python wheels.

2026.4.12

Platform and packaging

Initial implementation of the BAM shared library and the Fortran API, distributed as libbam.so (and platform equivalents). This is a preview of the API work completed in 2026.5.27. All BAM libraries are now compiled with position-independent code.

2026.2.10

New features

  • New local search strategies alternate among different algorithms, depending on problem characteristics.
  • New PRBESTFREQ option controls how often incumbent values appear in the trace file.

Algorithmic improvements

Local search iterations are capped to ensure responsiveness.

Documentation

The trace file now describes supplied information cleanly.

2026.1.7

New features

  • New RESOLUTION (RHO) vector option: BAM avoids proposing new points whose component distances are all smaller than the resolution along each variable, and terminates the search when the largest current box is smaller than the resolution vector. This is what users should set to indicate the smallest physically meaningful spacing for their problem.
  • New algorithms to ensure finite-termination enumeration for small-scale integer-variable problems.

Algorithmic improvements

  • Adaptive sampling within the surrogate-model construction phase: ALAMO now reuses information across nearby iterations.
  • End-game improvement: local search is now allowed to continue until the evaluation budget is exhausted, instead of stopping short. This reduced geometric-mean CPU times by approximately 20% on the standard benchmark set.

Documentation

Incumbent improvements are now marked with a leading * on the corresponding row of the screen output.

2025.12.11

Bug fixes

Production builds no longer print internal solver warnings to the screen.

2025.12.10

Algorithmic improvements

Variable bounds are now enforced on BARON's surrogate-optimization solutions.

Bug fixes

Major fix in surrogate-model construction affecting how variable bounds were computed for the local box; this fix affects solution quality on a wide range of problems.

2025.12.5

Algorithmic improvements

Improvements in the sampling and surrogate fitting steps of the algorithm.

2025.11.28

Algorithmic improvements

  • New embedded BARON, paired with extended local-search functionality. Solves 77% of standard benchmark problems to global optimality.
  • Large-box density-guarantee evaluations are now rate-limited to prevent them from dominating the evaluation budget on some problems.

2025.11.17

Algorithmic improvements

Updated embedded BARON results in BAM solving 70% of standard benchmark problems globally.

2025.10.15

Algorithmic improvements

New ALAMO basis function family options permit the utilization of bilinear, logarithmic, and exponential terms.

2025.10.5

Bug fixes

  • Major bug fix in ALAMO affecting the construction of local surrogate models.
  • Fixes in array-resizing logic that affected correctness on large problems.

2025.9.13

Platform and packaging

License-generator and Windows portability fixes.

2025.8.12

Platform and packaging

  • Improved ARM64 portability: BAM now depends on GLIBC 2.17 instead of 2.38, broadening the range of Linux distributions on which BAM runs without a glibc upgrade.
  • Improved signal handling on Windows.

2025.8.5

New features

The MAXBOUND default is now ignored when the user has provided XMIN and XMAX, so user-supplied bounds are honored exactly.

Platform and packaging

Builds extended to ARM platforms.

2025.7.16

New features

  • New partitioning algorithm for box subdivision, accelerating BAM's main per-iteration data structure.
  • Distribution now includes Windows zip archives.

Platform and packaging

Builds extended to macOS Apple Silicon (with MACOSX_DEPLOYMENT_TARGET=13.0) and macOS Intel (with MACOSX_DEPLOYMENT_TARGET=10.12).

Bug fixes

Trace-file printing fix and source consistency fixes.

2025.7.10

The first BAM release built and distributed for four target platforms: Linux, macOS Intel, macOS Apple Silicon, and Windows. This release establishes BAM as a self-contained, third-party-dependency-free executable. It solves approximately 50% of standard benchmarks and is orders of magnitude faster than all prerelease versions.

New features

  • New parser for BAM's simple-text input file format.
  • New options: PRFREQ (per-evaluation print frequency to the listing file) and MAXNOGAIN (terminate after this many evaluations without improvement; -1 disables).
  • New MAXPROFAILS option: configurable tolerance for consecutive simulator failures before BAM aborts.
  • New NEVALDATA option, distinguished from NDATA: users may supply previously evaluated points (with their objective values) separately from candidate starting points (without objective values).
  • New evaluations file, controlled by EVALSFNAME/PREVALS: one row per evaluation, suitable for plotting convergence curves and for benchmarking BAM against other solvers.

Algorithmic improvements

  • BAM now calls ALAMO through in-memory routines rather than as external processes, eliminating file-based communication and substantially reducing per-iteration overhead. BAM has no third-party dependencies.
  • Sobol sampling, local search via MAS, and clustering are now the default global-search strategy.
  • Comprehensive treatment of numerical edge cases (NaN and Inf handling, zero denominators, safe hypercube-volume calculation, safe projection operations). Many previously unreliable problems now solve reliably.

Documentation

Default trace-file name is the input-file name with the .trc extension.

Platform and packaging

Builds on four target platforms (Linux, macOS Intel, macOS Apple Silicon, Windows). Distribution includes platform-specific executables and over 700 ready-to-use simulator dataproviders for benchmark problems.