AI-Planning / macq

Library for action model acquisition from state trace data.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Partially observable observation token

haz opened this issue · comments

  • Subclass the State class with PartialState
  • 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 of PartialState and State?)
  • (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.