Partially observable observation token
haz opened this issue · comments
- Subclass the
State
class withPartialState
- Create a new observation token class that will use partial states instead of the full ones
So there should be two styles of partially observable tokens: one that hides the same subset of fluents in every state and one that hides different subsets each state. I think we can achieve this by passing in a function that "hides stuff", and then have a few default functions that can be used. Something like...
tlist.tokenize(macq.observation.PartiallyObservableState, method=mac.observation.PartiallyObservableState.RANDOM_SUBSET)
...or whatever.
- For the "same subset" method, would a parameter be passed in of which fluents to hide? (Or where would that otherwise be specified?)
- How are we hiding the fluents? I assume just setting
state[fluent] = None
? (And if that's the case, what's different about the functionality ofPartialState
andState
?) - (or are we removing the hidden fluents from the state entirely?)
For the "same subset" method, would a parameter be passed in of which fluents to hide? (Or where would that otherwise be specified?)
Yep, parameter to the tokenization.
How are we hiding the fluents? I assume just setting state[fluent] = None?
Yep.
(And if that's the case, what's different about the functionality of PartialState and State?)
Depends on how they're represented (sets -vs- dict). Either way, PartialState should have functionality to iterate over what's known as what's not known.
(or are we removing the hidden fluents from the state entirely?)
I thought this originally, but I think it's a tad too niche to warrant that usecase. Better to have a single implementation that handles both.