test(history): end-to-end ConvergenceOptions propagation tests
Two integration tests on a 4-team ranked event: - max_iter=1 set on HistoryBuilder produces measurably different posteriors than default, proving the inner loop honors the propagated max_iter - alpha=0.5 with extra iterations reaches the same fixed point as alpha=1.0, proving damping doesn't break correctness on the History path Also updates the alpha doc comment to clarify it applies only to the within-game EP loop, not the outer cross-history sweep.
This commit is contained in:
+8
-3
@@ -9,9 +9,14 @@ pub struct ConvergenceOptions {
|
||||
pub max_iter: usize,
|
||||
pub epsilon: f64,
|
||||
/// EP damping factor in natural-parameter space: each per-factor
|
||||
/// update writes `α·new + (1−α)·old`. `1.0` is undamped (default);
|
||||
/// `< 1.0` stabilises oscillating fixed-point loops at the cost of
|
||||
/// more iterations. Must be in `(0.0, 1.0]`.
|
||||
/// update inside a single game writes `α·new + (1−α)·old`. `1.0` is
|
||||
/// undamped (default); `< 1.0` stabilises oscillating fixed-point
|
||||
/// loops at the cost of more iterations. Must be in `(0.0, 1.0]`.
|
||||
///
|
||||
/// Applies only to the within-game EP loop (`run_chain`). The outer
|
||||
/// `History::converge` cross-history sweep is undamped regardless of
|
||||
/// this value — cross-slice damping is a different concept and not
|
||||
/// in scope.
|
||||
pub alpha: f64,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user