Closed kbarros closed 9 months ago
This might be harder than I initially realized -- because the canonical variables (p,q) are not separable for our spin system, we may not be able to achieve an HMC-like accept/reject step that satisfies the balance condition.
To build an HMC-style accept reject step, we would need to:
This seems like a hard problem, and the usual Langevin dynamics is working reasonably well, so closing for now.
Currently the
step!
function for a Langevin update always performs an in-place update. We should allow for Langevin to only propose a trial update, which would be stored in a separate state array. That proposal could be accepted or rejected by a subsequent algorithm. For example, this would allow for statistically exact sampling of the MALA algorithm. This could in turn, allow us to automatically adapt the step-sizedt
. We would also need trial updates to use Langevin updates within the context of Wang-Landau.A difficult question -- where should these proposal updates be stored? Currently our
Langevin
objects carry no state and can be applied to any system. Should we change that?