Context
simulate_convergence() runs batches of simulations by calling self.simulate(..., append=True) in a loop, but it has no random_seed parameter, so every batch derives a fresh root. A convergence study cannot be reproduced from a seed, and changing the batch size changes which roots each batch uses, so the same max_simulations does not map to the same set of samples.
A possible direction
Add a keyword-only random_seed to simulate_convergence() and use one root for the whole study, deriving each simulation's child from its absolute index the way simulate() already does. This leans on persisting the root for append (filed separately), so the two are probably best done together.
Noticed while reviewing #1054.
Context
simulate_convergence()runs batches of simulations by callingself.simulate(..., append=True)in a loop, but it has norandom_seedparameter, so every batch derives a fresh root. A convergence study cannot be reproduced from a seed, and changing the batch size changes which roots each batch uses, so the samemax_simulationsdoes not map to the same set of samples.A possible direction
Add a keyword-only
random_seedtosimulate_convergence()and use one root for the whole study, deriving each simulation's child from its absolute index the waysimulate()already does. This leans on persisting the root forappend(filed separately), so the two are probably best done together.Noticed while reviewing #1054.