Source code for flatland.core.env_observation_builder
"""ObservationBuilder objects are objects that can be passed to environments designed for customizability.The ObservationBuilder-derived custom classes implement 2 functions, reset() and get() or get(handle).+ `reset()` is called after each environment reset, to allow for pre-computing relevant data.+ `get()` is called whenever an observation has to be computed, potentially for each agent independently in case of \multi-agent environments."""fromtypingimportOptional,List,Dict,Generic,TypeVarimportnumpyasnpfromflatland.core.envimportEnvironmentObservationType=TypeVar('ObservationType')AgentHandle=int
[docs]classObservationBuilder(Generic[ObservationType]):""" ObservationBuilder base class. """def__init__(self):self.env:Optional[Environment]=None
[docs]defreset(self):""" Called after each environment reset. """raiseNotImplementedError()
[docs]defget_many(self,handles:Optional[List[AgentHandle]]=None)->Dict[AgentHandle,ObservationType]:""" Called whenever an observation has to be computed for the `env` environment, for each agent with handle in the `handles` list. Parameters ---------- handles : list of handles, optional List with the handles of the agents for which to compute the observation vector. Returns ------- function A dictionary of observation structures, specific to the corresponding environment, with handles from `handles` as keys. """observations={}ifhandlesisNone:handles=[]forhinhandles:observations[h]=self.get(h)returnobservations
[docs]defget(self,handle:AgentHandle=0)->ObservationType:""" Called whenever an observation has to be computed for the `env` environment, possibly for each agent independently (agent id `handle`). Parameters ---------- handle : int, optional Handle of the agent for which to compute the observation vector. Returns ------- function An observation structure, specific to the corresponding environment. """raiseNotImplementedError()
def_get_one_hot_for_agent_direction(self,agent)->np.ndarray:"""Retuns the agent's direction to one-hot encoding."""direction=np.zeros(4)direction[agent.direction]=1returndirection
[docs]classDummyObservationBuilder(ObservationBuilder[bool]):""" DummyObservationBuilder class which returns dummy observations This is used in the evaluation service """def__init__(self):super().__init__()