GLOSS

Global–Local–Unexplored Sampling Strategy — a multi-strategy batch recommender for surrogate-based optimization in vast chemical search spaces.

What it does

Standard batch Bayesian optimization (BO) picks all \(q\) candidates per round by greedily maximizing a single acquisition function. When the surrogate—fit on scarce data—has locked onto a secondary peak rather than the global optimum, the whole batch is wasted.

GLOSS decomposes each \(q\)-point batch across three complementary streams that share one surrogate:

🌐 Global

Exploitation via UCB acquisition \(s \cdot \mu(x) + \kappa \cdot \sigma(x)\).

🎯 Local

BallTree refinement around current best \(x^{*}\), truncated to top-\(K\) candidates (O(K) cost).

🧭 Unexplored

Maximizes geometric distance to observed points. Uses no surrogate signal, so it is robust to overfitting.

Headline numbers

On QM9-100k (5 seeds, 20-round budget):

Algorithm

\(t_{95}\) (rounds)

Reach 95%

GLOSS (4:2:2)

7.2

5/5

UCB-BO

16.6

3/5

BO(EI)

18.4

2/5

2.31× / 2.56× speedup over the two BO variants. See benchmarks.

Quick install

pip install gloss-opt

The PyPI name is gloss-opt (the bare gloss was taken), but the Python import name is gloss:

from gloss import GLOSS

Full installation guide · Quick start · API reference