Process noise¶
State-dependent dynamics noise Q(x): the world can diffuse more in some states than others. CallableProcessNoise carries the Q(x) function; both it and a plain constant satisfy the DynamicsNoise protocol.
DynamicsNoise ¶
Bases: Protocol
How much the dynamics diffuse per step — the process noise covariance Q(x).
The EFE predict step asks for Q at a state. is_fixed flags the constant
case (a plain matrix); a state-dependent Q(x) re-introduces epistemic value
through the internal route (RFC-001 Section8).
CallableProcessNoise
dataclass
¶
State-dependent process noise Q(x) = q_fn(x, q_params).
q_fn holds the functional form (static aux — a callable can't be a traced
leaf); q_params holds the values it is a function of (a pytree leaf, so EFE
is grad-able w.r.t. them — process-noise learning). The rule for what goes where:
a number lives in q_params if you'd ever want to fit it; it's baked into
q_fn only if it's structural and never learned. Pass a module-level q_fn
(a closure/lambda hashes by identity and defeats jit caching).
Source code in src/cpomdp/dynamics.py
noise_at ¶
tree_flatten ¶
tree_unflatten
classmethod
¶
Rebuild without re-validating — leaves may be tracers.