Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time Aware Inference #284

Open
reubenharry opened this issue Jan 30, 2024 · 0 comments
Open

Time Aware Inference #284

reubenharry opened this issue Jan 30, 2024 · 0 comments

Comments

@reubenharry
Copy link

There are situations where we might want our posterior to itself be a signal network or Rhine rather than a Behavior.

  1. Suppose that we have a model that has two variables. Concretely, suppose that the model describes a ball moving in 2D, but the mean of the process describing the ball also varies, but at a much lower timescale. In this case, there are already two clocks in the prior. I don't see how we would currently express this.
  2. Suppose that we want to incorporation observations (using arrM factor) on a different clock also, perhaps an event based clock even.

I had initially thought I could write something like:

genModel :: MonadMeasure m => Rhine
  m
  (SequentialClock (Millisecond 1000) (SequentialClock (Millisecond 10) (Millisecond 100)))
  ()
  Pos
genModel = prior2d @@ (waitClock :: Millisecond 1000 ) >-- keepLast (0,0) -->
    obs @@ (waitClock :: Millisecond 10)  >-- keepLast (0,0) --> (proc pos -> do
        arrM factor -< undefined
        returnA -< pos) @@ (waitClock :: Millisecond 100)

but it became apparent that this requires various typeclass instances that I don't know how to define (and probably can't be?), for ScheduleT and Clock. Moreover, there doesn't seem to be a way to apply a monad morphism to m, to convert it to IO down the road.

However, conceptually it seems like it should be possible to express a model which has asynchronous parts, and also to envision a particle filter running on it. For example, if I have a Sequential signal network (as in the Rhine above), I could run a particle filter by running particles through the sequential parts in some way. Or maybe not.

(btw, if I am cluttering up the issues with discussion issues like this, feel free to close and we can revert to another channel of communication)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant