Closed segasai closed 3 years ago
That seems like a reasonable choice. If you want to submit a PR for this issue, that'd be great.
Can you provide the reasoning again for this or any other formula ? I really can't as it seems to me just a random placeholder, copied from last time. To me lets say 1/len(saved_logl) makes at least some sense. I'd rather have something at least somewhat justifiable.
Yes. So essentially this is just trying to say that at a given iteration you expect to have a prior volume of X, so you shouldn't be fitting volumes of ellipsoids that are substantially smaller. For a fixed number of live points K, this value is X = exp(-i/K). This has a correspondence with i -> len(saved_logl) and K -> nblive. (Things get more complicated for the dynamic case here where Nlive_eff > Nlive_batch, so this will generally be an underestimate IIRC.)
It looks like the recent change with self.sampler.update(0) leads to issues: see below
The investigation shows that this happens when the subset https://github.com/joshspeagle/dynesty/blob/b3dbd52369a9b9172b20e76cb53ddd7f43bf9a1c/py/dynesty/dynamicsampler.py#L1035 has only one element and therefore the ellipsoid has only one point. It is still not clear to me what value is the most appropriate there. So for my own purposese I've temporarily set the volume to math.exp(-1. * len(saved_logl) / nblive)