Decision Tree¶
Ask in order:
Do you have a gradient?
No -> classical via
run(Boltzmann/Fast/Gsa) oradditive_independence(if you suspect separability).Yes -> consider
gle_langevinwhen the spectrum is ill-conditioned (one fitted drift matrix fromeindirflattens efficiency fromomega0to 100*=omega0=).
Full details on supplying native gradients (analytic, from PyTorch/JAX, finite differences, etc.) live in the eindir gradients guide. The relevant types are re-exported from ``eindir_core`` (``Gradient``, ``DifferentiableObjective``, ``AnalyticGradient``, etc.).
Is the objective separable (or well approximated by a rank-1 surrogate)?
Yes ->
additive_independence(O(d) per proposal, dimension-free acceptance floor on truly separable problems).
Do you want a single budget knob and automatic allocation across chains?
Yes -> pilot + Bayesian mixer (the
experiments/scripts/demo_bgsa.pypattern or the internalBayesianMixingSampler).
One max_proposals, auto n_chains, per-chain Beta on “produced new global best”, Thompson with 0.05 guard.
Do you need only a deterministic last mile?
Run any stochastic driver to a modest budget, then
qmc_polishorshifted_qmc_polish(or plainpolish) on the best point found.
Do you need GPU scale or large ensembles?
Pass CuPy arrays to
run_device/run_ensemble, or use the host versions for narrow problems (the kernel is identical).
The exposed high-level functions already encode the common good choices. The full portfolio auto-orchestrator (pilot several families, allocate remaining budget to the current winner, final polish) lives in the experiments tree and is described conceptually in the Bayesian tutorial.