Source code for flatland.core.transitions

"""
The transitions module defines the base Transitions class and a
derived GridTransitions class, which allows for the specification of
possible transitions over a 2D grid.
"""
from enum import IntEnum


[docs]class Transitions: """ Base Transitions class. Generic class that implements checks to control whether a certain transition is allowed (agent facing a direction `orientation' and moving into direction `orientation`) """
[docs] def get_type(self): raise NotImplementedError()
[docs] def get_transitions(self, cell_transition, orientation): """ Return a tuple of transitions available in a cell specified by `cell_transition' for an agent facing direction `orientation` (e.g., a tuple of size of the maximum number of transitions, with values 0 or 1, or potentially in between, for stochastic transitions). Parameters ---------- cell_transition : [cell content] The object is specific to each derived class (e.g., for GridTransitions, int), and is only manipulated by methods of the Transitions derived classes. orientation : int Orientation of the agent inside the cell. Returns ------- tuple List of the validity of transitions in the cell. """ raise NotImplementedError()
[docs] def set_transitions(self, cell_transition, orientation, new_transitions): """ Return a `cell_transition` specification where the transitions available for an agent facing direction `orientation` are replaced with the tuple `new_transitions'. `new_orientations` must have one element for each possible transition. Parameters ---------- cell_transition : [cell-content] The object is specific to each derived class (e.g., for GridTransitions, int), and is only manipulated by methods of the Transitions derived classes. orientation : int Orientation of the agent inside the cell. new_transitions : tuple Tuple of new transitions validitiy for the cell. Returns ------- [cell-content] An updated class-specific object that replaces the original transitions validity of `cell_transition' with `new_transitions`, for the appropriate `orientation`. """ raise NotImplementedError()
[docs] def get_transition(self, cell_transition, orientation, direction): """ Return the status of whether an agent oriented in directions `orientation' and inside a cell with transitions `cell_transition` can move to the cell in direction `direction` relative to the current cell. Parameters ---------- cell_transition : [cell-content] The object is specific to each derived class (e.g., for GridTransitions, int), and is only manipulated by methods of the Transitions derived classes. orientation : int Orientation of the agent inside the cell. direction : int Direction of movement whose validity is to be tested. Returns ------- int or float (depending on derived class) Validity of the requested transition (e.g., 0/1 allowed/not allowed, a probability in [0,1], etc...) """ raise NotImplementedError()
[docs] def set_transition(self, cell_transition, orientation, direction, new_transition): """ Return a `cell_transition` specification where the status of whether an agent oriented in direction `orientation` and inside a cell with transitions `cell_transition` can move to the cell in direction `direction` relative to the current cell is set to `new_transition`. Parameters ---------- cell_transition : [cell-content] The object is specific to each derived class (e.g., for GridTransitions, int), and is only manipulated by methods of the Transitions derived classes. orientation : int Orientation of the agent inside the cell. direction : int Direction of movement whose validity is to be tested. new_transition : int or float (depending on derived class) Validity of the requested transition (e.g., 0/1 allowed/not allowed, a probability in [0,1], etc...) Returns ------- [cell-content] An updated class-specific object that replaces the original transitions validity of `cell_transition' with `new_transitions`, for the appropriate `orientation' to `direction`. """ raise NotImplementedError()
[docs] def get_direction_enum(self) -> IntEnum: raise NotImplementedError()