0 | module Control.Monad.Bayes.Inference.RMSMC
2 | import Control.Monad.Bayes.Interface
3 | import Control.Monad.Bayes.Population
4 | import Control.Monad.Bayes.Sequential
5 | import Control.Monad.Bayes.Weighted
6 | import Control.Monad.Bayes.Traced.Static
7 | import Control.Monad.Bayes.Traced.Basic
8 | import Control.Monad.Bayes.Traced.Dynamic
15 | (n_timesteps : Nat) ->
17 | (n_particles : Nat) ->
19 | (n_mhsteps : Nat) ->
21 | Sequential (Static.Traced (Population m)) a ->
23 | rmsmc n_timesteps n_particles n_mhsteps =
25 | . sis (composeCopies n_mhsteps mhStep . hoistT resampleSystematic) n_timesteps
26 | . Sequential.hoistFirst (hoistT (spawn n_particles >>))
34 | (n_timesteps : Nat) ->
36 | (n_particles : Nat) ->
38 | (n_mhsteps : Nat) ->
40 | Sequential (Basic.Traced (Population m)) a ->
42 | rmsmcBasic n_timesteps n_particles n_mhsteps =
44 | . sis (composeCopies n_mhsteps Basic.mhStep . Basic.hoistT resampleSystematic) n_timesteps
45 | . Sequential.hoistFirst (Basic.hoistT (spawn n_particles >>))
54 | (n_timesteps : Nat) ->
56 | (n_particles : Nat) ->
58 | (n_mhsteps : Nat) ->
60 | Sequential (Dynamic.Traced (Population m)) a ->
62 | rmsmcLocal n_timesteps n_particles n_mhsteps =
64 | . sis (Dynamic.freeze . composeCopies n_mhsteps Dynamic.mhStep . Dynamic.hoistT resampleSystematic) n_timesteps
65 | . Sequential.hoistFirst (Dynamic.hoistT (spawn n_particles >>))