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 Detail

      • 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 Detail

      • 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