This repository deals with 3 different non-reversible continuous Markov Chain Monte Carlo algorothms based on piecewise deterministic Markov processes (see Davis, Markov Models and Optimization). We would like to use them for sampling from a continuous diffusion process (see Notes.pdf). The source folder contains:
- a subfolder Models containing the target distributions we want to sample from (currently only Gaussian)
- PDSamplers.jl contains the implementation of the ZigZag Sampler, Bouncy Particle Sampler and Coordinate Sampler.
- Kernels.jl implements the change of the velocity coordinates when the inhomogeneous Poisson event occours.
- Simulations.jl calls and plots the different algorithms for comparisons
- Faber1.jl implements the sparse matrix we need to create when we want to run the ZigZag for sampling a linear SDE (See Notes.pdf) for explanations.
- Finally Experiment.jl calls the ZigZag inside the coordinates of the basis expansion of the Bridge.
Plots coming from the Script Simulations.jl: Comparison of the three algorithms: respectively Bouncy, ZigZag and Coordinate Sampler with the same internal clock fixed to 1000 units. The target distribution is 2d-Gaussian with zero mean and negative correlation.
Plots coming from the Script Experiment.jl: Final Bridge after 21 seconds of internal clock of ZigZag algorithm and samples every 0.5 seconds from time 1 to time 21 of internal clock (mixing of the algorithm). The target measure is given by the sde
Once you import the folder Source and install the package Ciesielski, you can run both Experiment.jl and Simulations.jl. You can play with the parameters of the Multivariate Gaussian RV and with the coefficients of the Linear sde
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.