mod bayesian_mixing

module bayesian_mixing

Automatic Bayesian chain-mixing driver.

The public surface deliberately has one tuning knob: a proposal budget. Chain count, incumbent protection, and proposal allocation are derived online from a Beta-Bernoulli posterior over global-best improvements.

Structs and Unions

struct BayesianMixingResult

Result of an automatic Bayesian chain-mixing run.

chain_histories: Vec<History>

One compact history per chain.

best_pos: Vec<f64>

Best-seen position across all chains.

best_val: f64

Best-seen objective value across all chains.

n_chains: usize

Number of chains inferred from the budget and dimension.

proposal_counts: Vec<usize>

Proposal counts allocated to each chain.

Implementations

impl BayesianMixingResult

Functions

fn total_proposals(&self) -> usize

Total proposal calls made after chain initialisation.

struct BayesianMixingSampler<S: Sampler<f64>>

Automatic Bayesian chain mixer around any inner sampler.

sampler: S

Shared inner sampler.

max_proposals: usize

Total proposal budget after chain initialisation.

Implementations

impl<S: Sampler<f64>> BayesianMixingSampler<S>

Functions

fn new(sampler: S, max_proposals: usize) -> Self

Creates a Bayesian mixer with a single user-visible budget.

fn run(&self, seed: u64) -> BayesianMixingResult

Runs the online allocation loop.