mod additive_independence

module additive_independence

Rank-1 (mean-field) independence-sampler simulated annealing.

This is the unified MCMC+SA point that the separable surrogate enables. A pilot fits an AdditiveSurrogate over all d coordinates; the remaining budget is spent in geometric-temperature epochs. Each epoch draws a block of proposals from the tempered surrogate density by independent per-coordinate inverse-CDF sampling (the global independence Move), mixed with a local_frac Gaussian random walk around the incumbent (the local Move), and every proposal is accepted by a Metropolis rule against the true objective (the Accept slot). Because the surrogate density factorises across coordinates for a separable objective, one global draw places every coordinate at its own tempered optimum at once – the regime a local random-walk proposal, whose efficiency decays like 1/d, cannot reach. The Metropolis accept against the true objective removes the mean-field bias.

Functions

fn additive_independence_sa<O: Objective<f64>>(obj: &O, seed: u64, max_fevals: usize, degree: usize, grid_m: usize, local_frac: f64, n_epochs: usize, n_pilot: usize) -> AdditiveIndependenceResult

Run rank-1 independence-sampler SA on obj under a shared work-unit budget.

max_fevals bounds the total true-objective evaluations (pilot included), so the driver runs at parity with every other point of the algebra. degree is the per-coordinate Chebyshev degree, grid_m the inverse-CDF grid resolution, local_frac the fraction of each epoch’s proposals spent on the local random walk, and n_epochs the number of temperature levels.

Structs and Unions

struct AdditiveIndependenceResult

Result of a rank-1 independence-sampler run.

best_pos: Vec<f64>

Best-seen position.

best_val: f64

Best-seen objective value.

n_evals: usize

True-objective evaluations consumed (pilot + main loop).