monad-bayes-1.2.0: benchmark/SSM.hs
module Main where
import Control.Monad (forM_)
import Control.Monad.Bayes.Inference.MCMC
import Control.Monad.Bayes.Inference.PMMH as PMMH (pmmh)
import Control.Monad.Bayes.Inference.RMSMC (rmsmcDynamic)
import Control.Monad.Bayes.Inference.SMC
import Control.Monad.Bayes.Inference.SMC2 as SMC2 (smc2)
import Control.Monad.Bayes.Population
import Control.Monad.Bayes.Population (resampleMultinomial, runPopulationT)
import Control.Monad.Bayes.Sampler.Strict (sampleIO, sampleIOfixed, sampleWith)
import Control.Monad.Bayes.Weighted (unweighted)
import Control.Monad.IO.Class (MonadIO (liftIO))
import NonlinearSSM (generateData, model, param)
import NonlinearSSM.Algorithms
import System.Random.Stateful (mkStdGen, newIOGenM)
main :: IO ()
main = sampleIOfixed $ do
dat <- generateData t
let ys = map snd dat
forM_ [SMC, RMSMCDynamic, PMMH, SMC2] $ \alg -> do
liftIO $ print alg
result <- runAlgFixed ys alg
liftIO $ putStrLn result