Source code for flatland.envs.rail_env_action

from enum import IntEnum
from functools import lru_cache
from typing import NamedTuple
from flatland.core.grid.grid4 import Grid4TransitionsEnum


@lru_cache()
def _is_moving_action(value):
    return value in [RailEnvActions.MOVE_RIGHT, RailEnvActions.MOVE_LEFT, RailEnvActions.MOVE_FORWARD]


[docs] class RailEnvActions(IntEnum): DO_NOTHING = 0 # implies change of direction in a dead-end! MOVE_LEFT = 1 MOVE_FORWARD = 2 MOVE_RIGHT = 3 STOP_MOVING = 4
[docs] @staticmethod def to_char(a: int): return { 0: 'B', 1: 'L', 2: 'F', 3: 'R', 4: 'S', }[a]
[docs] @classmethod def is_action_valid(cls, action): return action in cls._value2member_map_
[docs] def is_moving_action(self): return _is_moving_action(self.value)
RailEnvGridPos = NamedTuple('RailEnvGridPos', [('r', int), ('c', int)]) RailEnvNextAction = NamedTuple('RailEnvNextAction', [('action', RailEnvActions), ('next_position', RailEnvGridPos), ('next_direction', Grid4TransitionsEnum)])