Class MultipointHybridMCMC

All Implemented Interfaces:
RandomVectorGenerator, Seedable

public class MultipointHybridMCMC extends AbstractHybridMCMC
A multi-point Hybrid Monte Carlo is an extension of HybridMCMC, where during the proposal generation instead of considering only the last configuration after the dynamics simulation, we pick a proposal from a window of the last M configurations. Consider using ErgodicHybridMCMC if you are experiencing components that deviate little at each step.
See Also:
    • "Jun S. Liu. "Chapter 9.5.2," Monte Carlo Strategies in Scientific Computing. 2002."
    • "Jun S. Liu. "Chapter 10.4," Monte Carlo Strategies in Scientific Computing. 2002."
  • Constructor Details

    • MultipointHybridMCMC

      public MultipointHybridMCMC(RealScalarFunction logF, RealVectorFunction dLogF, Vector m, double dt, int L, int M, Vector w, Vector initialState, RandomLongGenerator uniform)
      Constructs a new instance with the given parameters.
      Parameters:
      logF - the log of the unnormalized target density from which we wish to sample
      dLogF - the derivative of the log target density for use by the LeapFrogging algorithm. You may choose a function that differs from the actual derivative of the log target density (i.e. that of a tempered version of the target density), in order to guide the leap-frogging algorithm
      m - the mass of each component in the dynamics simulation. A lower mass for a given component will result in greater change over the simulated time
      dt - the amount by which we advance time at each dynamics simulation step
      L - the number of dynamics simulation steps
      M - the number of configurations from which we select the candidate after the forward leap-frog iterations (M < L)
      w - a vector of length M, which is used to emphasize certain steps along the leapfrog trajectory, where w(1) is the weight assigned to the to configuration at step L - M and w(M) corresponds to the configuration at step L.
      initialState - the initial state of the algorithm
      uniform - the random long generator to be used
    • MultipointHybridMCMC

      public MultipointHybridMCMC(RealScalarFunction logF, RealVectorFunction dLogF, Vector m, double dt, int L, int M, Vector initialState, RandomLongGenerator uniform)
      Constructs a new instance with equal weights to the M configurations.
      Parameters:
      logF - the log of the unnormalized target density from which we wish to sample
      dLogF - the derivative of the log target density for use by the LeapFrogging algorithm. You may choose a function that differs from the actual derivative of the log target density (i.e. that of a tempered version of the target density), in order to guide the leap-frogging algorithm
      m - the mass of each component in the dynamics simulation. A lower mass for a given component will result in greater change over the simulated time
      dt - the difference in time for each simulation step. A smaller value, will make the simulation more accurate, but a larger value will give better performance by requiring less simulation steps
      L - the number of forward leap-frog iterations at each step
      M - the number of configurations from which we select the candidate after the forward leap-frog iterations (M < L)
      initialState - the initial state of the algorithm
      uniform - the random long generator to be used
  • Method Details

    • nextProposedState

      protected Vector nextProposedState(Vector currentState)
      Description copied from class: AbstractMetropolis
      Proposes a next state for the system.
      Specified by:
      nextProposedState in class AbstractMetropolis
      Parameters:
      currentState - the current state of the system
      Returns:
      the proposed next state
    • isProposalAccepted

      protected boolean isProposalAccepted(Vector currentState, Vector proposedState)
      Description copied from class: AbstractMetropolis
      Decides whether the given proposed state should be accepted, or whether the system should remain in it's current state.
      Specified by:
      isProposalAccepted in class AbstractMetropolis
      Parameters:
      currentState - the current state of the system
      proposedState - the proposed next state of the system
      Returns:
      whether the system should accept the proposed next state