You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently the DiscreteUpdater does not check for terminal states.
If isterminal and the simulator are implemented correctly, if we receive an observation, we should be able to conclude that we were not in a terminal state.
I think solvers, belief updaters, and simulators should avoid calling obs_weight or observation when s is terminal. We should not force problem implementers to define obs_weight or observation when s is terminal since it is often not clear what observation distribution should be returned, and it will just force them to write dummy code to handle that case.
Activity
dylan-asmar commentedon Jan 8, 2024
This isn't an issue if the observation function is defined correctly, right?
In
update(bu::DiscreteUpdater, b::DiscreteBelief, a, o)
, we haveMy thoughts are if we aren't expecting an observation if
sp
is terminal, then that should be reflected inop = obs_weight(pomdp, s, a, sp, o)
.Is there a case you saw or were thinking of where this isn't the case?
zsunberg commentedon Jan 9, 2024
I think solvers, belief updaters, and simulators should avoid calling
obs_weight
orobservation
whens
is terminal. We should not force problem implementers to defineobs_weight
orobservation
whens
is terminal since it is often not clear what observation distribution should be returned, and it will just force them to write dummy code to handle that case.dylan-asmar commentedon Jan 10, 2024
That makes sense to me.